Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Forest OpenRPC FIPs #4038

Open
aatifsyed opened this issue Mar 7, 2024 · 1 comment
Open

Forest OpenRPC FIPs #4038

aatifsyed opened this issue Mar 7, 2024 · 1 comment
Labels
Priority: 2 - High Very important and should be addressed ASAP Type: Feature

Comments

@aatifsyed
Copy link
Contributor

aatifsyed commented Mar 7, 2024

Forest's 2024 roadmap includes the following:

Objective 2: Increase network governance contributions
...
Key results of authoring 5 FIPs, with 2 of them being accepted...

The proposed timeline includes the following:

  1. Q2

    Propose FIP to specify default JSONRPC interface

  2. Q3

    Propose FIP to specify Miner Interface

Forest has attempted to use the results of calling the rpc.discover JSON-RPC method on Lotus to generate a compatible API, but failed1:

  • the returned items are not always correct
  • the returned items do not contain schemas for the required parameters

We have therefore manually implemented our RPC API from scratch.

The interface definition language for JSON-RPC interfaces is OpenRPC: https://open-rpc.org/, which can be the basis for a FIP.

We should not maintain a separate OpenRPC document for our API - it can be generated from our existing code.

This issue tracks

Footnotes

  1. Lotus' OpenRPC definitions are inaccurate #3668
    We also tried codegen from go:
    https://github.com/ChainSafe/forest/tree/5a05dd184a6e8f9eaeb21c8f122b3f9a0b89b974/codegen

@aatifsyed
Copy link
Contributor Author

End goal

  • We have Lotus' seal of approval™️ on the below
  • A complete OpenRPC (JSON) document for a subset of "client interoperability methods"
  • Text of a FIP

Current status

  • forest.openrpc
    • We believe this is structurally correct, given
      • snapshot testing
  • lotus.openrpc
    • We believe this is structurally incomplete

Outstanding work

  • [low risk] @ansermino will document each method
    • Currently in Notion, will be in Google Docs for Lotus review
  • [medium risk] @aatifsyed will find the structural inconsistencies between forest.openrpc and
    lotus.openrpc as a seed for discussion
  • @whom? choosing which methods belong under "client interoperability methods", which
    will synthesise requirements from the following stakeholders
    • Boost (have a list)
    • Curio (have a list)
    • Web3Mine?
    • Glif (have a list)
    • Lotus?
  • Code changes in forest
    • migrate descriptions to forest
    • add tagging functionality to trait RpcEndpoint
  • New repo for spec
  • stretch: generate docs
    • super stretch: nice interactive docs against a public endpoint

@lemmih lemmih added Priority: 2 - High Very important and should be addressed ASAP Type: Feature labels Aug 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: 2 - High Very important and should be addressed ASAP Type: Feature
Projects
None yet
Development

No branches or pull requests

2 participants