Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Implement new RPC API spec #12071

Closed
Closed
@jsdw

Description

@jsdw

The Vision

The goal here is to implement Pierre's new RPC API.

The spec is documented here:

https://paritytech.github.io/json-rpc-interface-spec/introduction.html

The repository for said spec:

https://github.com/paritytech/json-rpc-interface-spec/

The Plan

  • Implement and merge the chainSpec_* methods. properties and genesisHash are two easy starting points.
    • This will also give us a crate/area to build on in future steps. Let's try and minimise the risk of merge conflicts w.r.t other substrate work.
  • Implement and merge transaction_* methods.
  • Implement and merge chainHead_* methods.
    • These involve a new concept of "pinning" blocks while a subscription knows about them, and allowing blocks to be unpinned from subscriptions.
    • In general, these methods will be the hardest to implement.
  • Implement and merge archive_* methods.
    • These are lowest priority (ie least useful to UIs and such; subxt for instance will rely mostly on the above for instance).
    • Some of these are undocumented. Let's discuss when we get here what can be skipped, but assume undocumented methods in the spec can be skipped for now.

There will be a bunch of back and forth, especially to begin with. Getting the first implementation work done will give us a better idea on the time taken to do the rest.

There will be some opportunity to parallelise this work after the initial crate and structure are in place.

The existing RPC methods will remain in place for a while after this merges, giving people plenty of time to migrate things over.

If we run into any issues understanding the spec, let's raise issues on the repo (linked above) to help make sure it's super clear.

(Thanks @tomaka for your input in helping create this plan!)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions