Skip to content

Determine if Edelweiss can serve as the FVM IDL #719

Open
@raulk

Description

@raulk

See https://github.com/ipld/edelweiss.

Original request

Adapted from our RFP.

We are seeking to adopt or develop technology and components that can serve as an Interface Description Language for the FVM using IPLD schemas that can be attached to (a) state and (b) method inputs and outputs. The IDL will enable use of descriptors in IPLD schema language to reference and retrieve data structures on chain.

This IDL will be used specifically to support the following:

  1. Encoding / Decoding of Actor message parameters - JS libraries (similar to Web3.js, Ethers.js, etc.), that interact with the Filecoin JSON RPC, will be able to build messages for Actors and parse responses. The IDL would specify different behaviors of an Actor, the inputs, outputs, errors, etc.

  2. Filecoin Actor introspection - chain observability tools (chain explorers, databases, etc.) and Actors themselves [??] will be able to dive into the state of other Actors and decode params and return values on chain for messages triggered on those Actors. For example, to find out what sectors a specific Miner Actor currently owns and their recent status, there needs to be schemas for how a Miner Actor currently stores their sector information and how to define function calls to access that.

Supporting foreign interfaces

Ideally —although not needed for a first iteration— this technology would be able to embrace, unify (and supersede?) the ABI/IDLs in use in other chains, such as Solidity ABI, and maybe other ones like the Solana Anchor IDL.

Potential prototype

Definition of success:

The definition of success here would be to pick a builtin-actor with a simple interface, and generate an Edelweiss interface definition such that I could codegen:

  1. a client (i.e. a library to invoke that actor by forming correct messages, interpreting result codes, and deserializing the return value)
  2. a state inspector (i.e. a library to dive and parse the state of an actor)
  3. a message parser (i.e. a library to parse messages and return values observed on chain, likely with some commonalities with the client, probably this parser would be a component of the client)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions