Implement new RPC API spec #12071
Description
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
andgenesisHash
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!)