ethereum / execution-apis

Collection of APIs provided by Ethereum execution layer clients
Creative Commons Zero v1.0 Universal
966 stars 380 forks source link

Make the spec EIP #562

Closed yorickdowne closed 4 months ago

yorickdowne commented 4 months ago

Hello there!

I was chatting with Barnabas about client testing and the fact that RPC interop is hardly a thing, and he told me there wasn’t testing for RPC being done on the EF side, though client teams may.

He was under the impression there isn’t a spec, and I thought there was. This repo may well be that spec.

His feedback was that in order for the spec to be implemented by clients and to achieve RPC interop, it needs to become an EIP, be championed and be included in a hard fork.

Which from a client team perspective should be a “small” EIP - basically just formalize what’s already there and clean up where it doesn’t conform. EIP would likely state that clients SHALL conform to spec for methods covered in the EIP and MAY introduce new methods and extensions of existing ones and SHOULD work towards getting new methods and extensions into the spec and a future version of the EIP.

From a node operator perspective, it’s too often “run Geth if you want your app to work”. I’d love to see a more formal RPC standard.

lightclient commented 4 months ago

and he told me there wasn’t testing for RPC being done on the EF side, though client teams may

This isn't true, we have a pretty thorough compatibility test suite for the RPC. It just isn't high prio for clients to be completely compatible (and in fairness, in many cases it is quite hard). You can find the results of that test here https://hivetests2.ethdevops.io/#suite=rpc-compat

I’d love to see a more formal RPC standard.

What exactly do you have in mind? The execution-apis repo was born out of the desire to move away from the EIP process for EL RPC. It is a formal definition of the RPC in openrpc. The spec is a living thing and it doesn't fit well into the EIP process. Had we continued making EIPs, it would be very difficult for anyone beyond client devs to understand what the full picture of the RPC is, because it would kind of require piecing together many different EIPs (sort of like figuring out the current mainnet spec :wink:).

I’d love to see a more formal RPC standard.

IMO the issue is less the lack of a formal RPC standard (we have it in this repo), but more the lack of desire in clients to be perfectly compatible. I think a big piece of this is that we don't have someone driving this forward.

Open to more feedback and suggestions, but generally the current process feels better than using EIPs.

yorickdowne commented 4 months ago

Those are all good points, thank you. I get the limits of the EIP process, now that you’ve explained them.

Which then begs the question why there is a perception of “there is no spec”. As you say, an “interop champion” is what may be missing.

I’ll close this issue.