Skip to content
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
40948ec
feat(l2): pay base fee to coinbase
MegaRedHand Sep 17, 2025
875ed1b
Revert "feat(l2): pay base fee to coinbase"
Sep 22, 2025
2f11290
feat(l2): pay base_fee to fee_vault
Sep 22, 2025
a99d587
Add fee_vault to blockchain
Sep 22, 2025
d6a8571
Update modules to use fee_vault
Sep 23, 2025
92319c0
Merge branch 'main' into l2/dont-burn-base-fee
Sep 23, 2025
107336d
Impplement feeVault endpoint
Sep 23, 2025
c562dd2
Update replay to use fee_vault
Sep 24, 2025
2fb0a58
Merge branch 'main' into l2/dont-burn-base-fee
Sep 24, 2025
c51c603
Fix tdx
Sep 24, 2025
002f151
Rename fee vault to coinbase in tests
Sep 24, 2025
605f14a
Fix linter
Sep 24, 2025
bb68f7f
Update tests
Sep 24, 2025
33930ee
Fix workflow
Sep 24, 2025
57e8526
Fix integration tests
Sep 24, 2025
818eb12
Fix based workflow
Sep 24, 2025
d7b02b9
Remove fee_Vault from add_block
Sep 24, 2025
df483ca
Rename base_fees to priority fees in test
Sep 24, 2025
d29b1a0
Merge branch 'main' into l2/dont-burn-base-fee
Sep 24, 2025
e7ffedd
Update cli.md
Sep 25, 2025
061a617
Add disclaimer to docs
Sep 25, 2025
80d57dc
Move fee_vault to blockchain struct
Sep 25, 2025
7beb781
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 25, 2025
9aa0407
Fix linter
Sep 25, 2025
6445c83
Use cfg! macro to resolve fee_vault
Sep 25, 2025
9ae2402
separate payload builder interfaces
Sep 25, 2025
65da300
Store fee_vault in l2_hook
Sep 25, 2025
ef38d69
Improve docs
Sep 25, 2025
4316a28
Merge branch 'main' into l2/dont-burn-base-fee
Sep 25, 2025
7c692f2
Add disclaimer
Sep 25, 2025
39d3a1b
Merge branch 'main' into l2/dont-burn-base-fee
Sep 29, 2025
a564e8a
Merge branch 'main' into l2/dont-burn-base-fee
Sep 29, 2025
8f57e41
Add fee_config to blockchain and vm l2 type
Sep 30, 2025
df122ef
Merge branch 'main' into l2/dont-burn-base-fee
Sep 30, 2025
2846e16
Merge branch 'main' into l2/dont-burn-base-fee
Sep 30, 2025
3b3d001
Fix ethrex replay for l2
Sep 30, 2025
aa01211
Fix tdx build
Sep 30, 2025
9eaf648
Minor improvements
Sep 30, 2025
d4dc659
Fix linter
Sep 30, 2025
a364d37
Merge branch 'main' into l2/dont-burn-base-fee
Oct 2, 2025
0075f72
Update docs
Oct 3, 2025
4b536c2
Remove extra line
Oct 3, 2025
39109f6
Update summary
Oct 3, 2025
a02fcde
Merge branch 'main' into l2/dont-burn-base-fee
Oct 3, 2025
ddb9a95
Restore replay
Oct 3, 2025
ca0ce92
restore MAX_MEMPOOL_SIZE_DEFAULT
Oct 11, 2025
39c196f
Merge branch 'main' into l2/dont-burn-base-fee
Oct 11, 2025
7172748
Fix clippy
Oct 11, 2025
652fa08
Restore genesis
Oct 11, 2025
4eafeb4
register default fee vault pk
Oct 11, 2025
950540e
Skip fee vault check in l2 dev tests
Oct 13, 2025
11c9789
Merge branch 'main' into l2/dont-burn-base-fee
Oct 13, 2025
749fda6
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Oct 13, 2025
1b71dd7
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Oct 13, 2025
c22ffc2
Free disk space in based
Oct 13, 2025
29cacdf
Restore based workflow
Oct 13, 2025
26e34c0
Merge based workflow in matrix
Oct 14, 2025
704d9e6
Removed based from all-test
Oct 14, 2025
e098174
Install rex in based
Oct 14, 2025
e034fdc
Don't set fee vault in based
Oct 14, 2025
fa54633
Merge branch 'main' into l2/dont-burn-base-fee
Oct 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/main_prover.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ jobs:
ETHREX_PROPOSER_BLOCK_TIME=12000 \
ETHREX_COMMITTER_COMMIT_TIME=30000 \
ETHREX_WATCHER_WATCH_INTERVAL=1000 \
ETHREX_BLOCK_PRODUCER_FEE_VAULT_ADDRESS=0x000c0d6b7c4516a5b274c51ea331a9410fe69127 \
docker compose up --build --detach --no-deps ethrex_l2

- name: Run test
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/pr-main_l2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ jobs:
ETHREX_WATCHER_BLOCK_DELAY=0 \
ETHREX_COMMITTER_COMMIT_TIME=15000 \
ETHREX_WATCHER_WATCH_INTERVAL=1000 \
ETHREX_BLOCK_PRODUCER_FEE_VAULT_ADDRESS=0x000c0d6b7c4516a5b274c51ea331a9410fe69127 \
docker compose -f ${{ join(matrix.compose_targets, ' -f ') }} up --detach --no-deps ethrex_l2

- name: Run test
Expand Down Expand Up @@ -260,7 +261,9 @@ jobs:
cd crates/l2
RUST_LOG=info,ethrex_prover_lib=debug make init-prover &
docker logs --follow ethrex_l2 &
PROPOSER_COINBASE_ADDRESS=0x0007a881CD95B1484fca47615B64803dad620C8d cargo test l2 --release -- --nocapture --test-threads=1
PROPOSER_COINBASE_ADDRESS=0x0007a881CD95B1484fca47615B64803dad620C8d \
INTEGRATION_TEST_SKIP_FEE_VAULT_CHECK=true \
cargo test l2 --release -- --nocapture --test-threads=1
killall ethrex -s SIGINT

integration-test-tdx:
Expand Down Expand Up @@ -336,6 +339,7 @@ jobs:
ETHREX_WATCHER_BLOCK_DELAY=0 \
PROOF_COORDINATOR_ADDRESS=0.0.0.0 \
ETHREX_COMMITTER_COMMIT_TIME=15000 \
ETHREX_BLOCK_PRODUCER_FEE_VAULT_ADDRESS=0x000c0d6b7c4516a5b274c51ea331a9410fe69127 \
ETHREX_PROOF_COORDINATOR_TDX_PRIVATE_KEY=0x39725efee3fb28614de3bacaffe4cc4bd8c436257e2c8bb887c4b5c4be45e76d \
make init-l2 &
sleep 30
Expand Down
2 changes: 1 addition & 1 deletion cmd/ethrex/bench/build_block_benchmark.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ pub async fn bench_payload(input: &(Arc<Blockchain>, Block, &Store)) -> (Duratio
// 3. engine_newPayload is called, this eventually calls Blockchain::add_block
// which takes transactions from the mempool and fills the block with them.
let since = Instant::now();
blockchain.add_block(&block).await.unwrap();
blockchain.add_block(&block, None).await.unwrap();
let executed = Instant::now();
// EXTRA: Sanity check to not benchmark n empty block.
let hash = &block.hash();
Expand Down
2 changes: 1 addition & 1 deletion cmd/ethrex/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ fn download_contract_deps(contracts_path: &Path) {
&contracts_path
.join("lib/openzeppelin-contracts-upgradeable")
.to_string_lossy(),
None,
Some("release-v5.4"),
true,
)
.expect("Failed to clone openzeppelin-contracts-upgradeable");
Expand Down
2 changes: 1 addition & 1 deletion cmd/ethrex/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ pub async fn import_blocks(
}

blockchain
.add_block(block)
.add_block(block, None)
.await
.inspect_err(|err| match err {
// Block number 1's parent not found, the chain must not belong to the same network as the genesis file
Expand Down
1 change: 1 addition & 0 deletions cmd/ethrex/initializers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ pub async fn init_rpc_api(
get_client_version(),
log_filter_handler,
gas_ceil,
None,
);

tracker.spawn(rpc_api);
Expand Down
3 changes: 3 additions & 0 deletions cmd/ethrex/l2/initializers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ async fn init_rpc_api(
rollup_store: StoreRollup,
log_filter_handler: Option<reload::Handle<EnvFilter, Registry>>,
gas_ceil: Option<u64>,
fee_vault: Option<Address>,
) {
let peer_handler = PeerHandler::new(peer_table);

Expand Down Expand Up @@ -81,6 +82,7 @@ async fn init_rpc_api(
rollup_store,
log_filter_handler,
gas_ceil.unwrap_or(DEFAULT_BUILDER_GAS_CEIL),
fee_vault,
);

tracker.spawn(rpc_api);
Expand Down Expand Up @@ -203,6 +205,7 @@ pub async fn init_l2(
rollup_store.clone(),
log_filter_handler,
Some(opts.sequencer_opts.block_producer_opts.block_gas_limit),
opts.sequencer_opts.block_producer_opts.fee_vault_address,
)
.await;

Expand Down
9 changes: 9 additions & 0 deletions cmd/ethrex/l2/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ impl TryFrom<SequencerOptions> for SequencerConfig {
.block_producer_opts
.coinbase_address
.ok_or(SequencerOptionsError::NoCoinbaseAddress)?,
fee_vault_address: opts.block_producer_opts.fee_vault_address,
elasticity_multiplier: opts.block_producer_opts.elasticity_multiplier,
block_gas_limit: opts.block_producer_opts.block_gas_limit,
},
Expand Down Expand Up @@ -386,6 +387,13 @@ pub struct BlockProducerOptions {
required_unless_present = "dev"
)]
pub coinbase_address: Option<Address>,
#[arg(
long = "block-producer.fee-vault-address",
value_name = "ADDRESS",
env = "ETHREX_BLOCK_PRODUCER_FEE_VAULT_ADDRESS",
help_heading = "Block producer options"
)]
pub fee_vault_address: Option<Address>,
#[arg(
long,
default_value = "2",
Expand Down Expand Up @@ -414,6 +422,7 @@ impl Default for BlockProducerOptions {
.parse()
.unwrap(),
),
fee_vault_address: None,
elasticity_multiplier: 2,
block_gas_limit: DEFAULT_BUILDER_GAS_CEIL,
}
Expand Down
6 changes: 6 additions & 0 deletions cmd/ethrex_replay/src/cache.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use ethrex_common::Address;
use ethrex_common::types::Block;
use ethrex_common::types::ChainConfig;
use ethrex_common::types::blobs_bundle;
Expand All @@ -21,6 +22,7 @@ pub struct L2Fields {
pub blob_commitment: blobs_bundle::Commitment,
#[serde_as(as = "[_; 48]")]
pub blob_proof: blobs_bundle::Proof,
pub fee_vault: Option<Address>,
}
/// Structure holding input data needed to execute or prove blocks.
/// Optional fields are included only when relevant (e.g. L2 or custom chain).
Expand Down Expand Up @@ -70,12 +72,14 @@ impl Cache {
blocks: Vec<Block>,
witness: RpcExecutionWitness,
chain_config: ChainConfig,
fee_vault: Option<Address>,
) -> Self {
let network = network_from_chain_id(chain_config.chain_id);
#[cfg(feature = "l2")]
let l2_fields = Some(L2Fields {
blob_commitment: [0u8; 48],
blob_proof: [0u8; 48],
fee_vault,
});
#[cfg(feature = "l2")]
let chain_config = Some(chain_config);
Expand All @@ -84,6 +88,8 @@ impl Cache {
let l2_fields = None;
#[cfg(not(feature = "l2"))]
let chain_config = None;
#[cfg(not(feature = "l2"))]
let _ = fee_vault; // avoid unused variable warning
Self {
blocks,
witness,
Expand Down
Loading
Loading