-
Notifications
You must be signed in to change notification settings - Fork 152
Support for Fusaka #666
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
base: develop
Are you sure you want to change the base?
Support for Fusaka #666
Conversation
Cargo.toml
Outdated
reth-payload-util = { git = "https://github.com/paradigmxyz/reth", tag = "v1.4.8" } | ||
reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth", tag = "v1.4.8" } | ||
reth-testing-utils = { git = "https://github.com/paradigmxyz/reth", tag = "v1.4.8" } | ||
reth-chainspec = { git = "https://github.com/bharath-123/reth", branch = "bharath/fusaka-revm-fix" } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current reth fusaka-devnet-2
branch breaks with rbuilder because of breaking changes in revm with eip-7097. This should be resolved by fusaka-devnet-3
. We are temporarily using a fork of reth for now.
blobs_sidecar: Arc::new(BlobTransactionSidecarVariant::Eip4844( | ||
BlobTransactionSidecar::default(), | ||
)), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We ideally need to know which fork we are currently at, in order to create an EIP-4844 type sidecar or EIP-7954 sidecar. We unfortunately don't have this info here.
let blob_sidecar = pool | ||
.get_blob(*tx.inner().hash())? | ||
.and_then(|b| b.as_eip4844().cloned()); | ||
let mut blobs = pool.get_all_blobs(vec![*tx.inner().hash()])?; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pool.get_blob
wasn't able to retrive the blob in my testing. using pool.get_all_blobs
worked in this case.
This PR updates rbuilder to support Fusaka. These changes have been tested locally using Kurtosis
Things to consider in rbuilder:
Breaking changes:
U256
representation alloy-rs/nybbles#17 updates the internal representation ofNibble
from aSmallVec<[u8; 64]>
to aU256
. This breaks code in the merkle eth sparse tree as the code indexes a lot into theSmallVec
representationBlobTransactionSidecarVariant
enum which contains PeerDas type blob sidecars too. The only different b/w EIP-7954 sidecars from EIP-4844 sidecars is EIP-7954 sidecars usecell_proofs
instead ofproofs
. rbuilder just usesBlobTransactionSidecar
which breaks with the fulu hard fork.BlockNumber
andTimestamp
to useU256
instead ofu64
. There are inconsistencies in code where u64 is used for block number which fails to build as a result.CodeSize
field to theAccountInfo
. It was previously anOption
but the mentioned commit makes it a mandatory field.Database
trait in the alloy/evm repo now implementsstd::fmt::Debug
implemented by alloy-rs/evm@3d6a01b. This broke code since a dependency was using the updatedDatabase
trait from alloy/evm. Using theDatabase
trait from alloy/evm seems to have fixed this.step
method has been removed from theaccess_list_inspector
. We need to update therevm-inspectors
crate.bytecode_by_hash
is now defined in traitBytecodeReader
rather than in theStateProvider
Notes
BlobsBundleV2
to the relay. https://github.com/alloy-rs/alloy/blob/fusaka/devnet2/crates/rpc-types-engine/src/payload.rs#L906SignedBidSubmissionV5
to the relay overall: https://github.com/alloy-rs/alloy/blob/main/crates/rpc-types-beacon/src/relay.rs#L183✅ I have completed the following steps:
make lint
make test