Ethereum vanilla clients #170
arnaubennassar
started this conversation in
Architecture
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
The goal for this discussion is to come up with a proposal that enables sequencing and syncing EVM flavoured CDKs using existing execution clients or a version/fork that is as unmodified as possible.
Today we use
cdk-erigon
as an executionc client, the problem with the existing soulution is that implements some features that should exist on thecdk
client in order to:A non exhaustive list of things that
cdk-erigon
does and should be decoupled from it, and where to find specs/docs/code/discussions:cdk-erigon
is in charge of sharing the necessary data to reconstruct the state with othercdk-erigon
nodes. Specially when this data is part of the "trusted state". This is done using the DataStreamer protocol. Recently, the CDK client has dropped the DataStreamer interface in favor of the JSON RPC when it comes to sonsume data from the execution client. The main problem forcdk-erigon
owning this functionality, is that it forces other execution clients to implement it if they want to be part of the stack + non EVM flavors could also benefit from this if implemented on CDK. WIP discussioncdk-erigon
syncs from the sequencer (as explaoned on the data distribution bullet point). However, in case of a misbehaving sequencer,cdk-erigon
implements a mechanism in which it can re-construct the state by consuming data posted on a DA backend instead. This is a core functionality of any rollup (in fact, is necessary even to be a stage0 rollup / validium as per l2Beat framework . However this is treated more like a manual recovery functionality, than anything else. The fact that this is implemented oncdk-erigon
is not only bad for re-usability, but for modularity. As we expect the CDK stack to support many DA backends (4844, call data, DAC, Celestia, Avail, ...). Involved in this discussioncdk-erigon
takes care of grouping blocks into batches, batches are a concept that obviously doesn't exist on vanilla clientsOther topics that are worth mentioning:
The op-geth vs geth diff is a fantastic resource to understand the challenge of using a 100% vanilla client to build a rollup, it's worth studying before jumping into this discussion
Beta Was this translation helpful? Give feedback.
All reactions