Skip to content
Merged
Show file tree
Hide file tree
Changes from 45 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"
avilagaston9 Sep 22, 2025
2f11290
feat(l2): pay base_fee to fee_vault
avilagaston9 Sep 22, 2025
a99d587
Add fee_vault to blockchain
avilagaston9 Sep 22, 2025
d6a8571
Update modules to use fee_vault
avilagaston9 Sep 23, 2025
92319c0
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 23, 2025
107336d
Impplement feeVault endpoint
avilagaston9 Sep 23, 2025
c562dd2
Update replay to use fee_vault
avilagaston9 Sep 24, 2025
2fb0a58
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 24, 2025
c51c603
Fix tdx
avilagaston9 Sep 24, 2025
002f151
Rename fee vault to coinbase in tests
avilagaston9 Sep 24, 2025
605f14a
Fix linter
avilagaston9 Sep 24, 2025
bb68f7f
Update tests
avilagaston9 Sep 24, 2025
33930ee
Fix workflow
avilagaston9 Sep 24, 2025
57e8526
Fix integration tests
avilagaston9 Sep 24, 2025
818eb12
Fix based workflow
avilagaston9 Sep 24, 2025
d7b02b9
Remove fee_Vault from add_block
avilagaston9 Sep 24, 2025
df483ca
Rename base_fees to priority fees in test
avilagaston9 Sep 24, 2025
d29b1a0
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 24, 2025
e7ffedd
Update cli.md
avilagaston9 Sep 25, 2025
061a617
Add disclaimer to docs
avilagaston9 Sep 25, 2025
80d57dc
Move fee_vault to blockchain struct
avilagaston9 Sep 25, 2025
7beb781
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 25, 2025
9aa0407
Fix linter
avilagaston9 Sep 25, 2025
6445c83
Use cfg! macro to resolve fee_vault
avilagaston9 Sep 25, 2025
9ae2402
separate payload builder interfaces
avilagaston9 Sep 25, 2025
65da300
Store fee_vault in l2_hook
avilagaston9 Sep 25, 2025
ef38d69
Improve docs
avilagaston9 Sep 25, 2025
4316a28
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 25, 2025
7c692f2
Add disclaimer
avilagaston9 Sep 25, 2025
39d3a1b
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 29, 2025
a564e8a
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 29, 2025
8f57e41
Add fee_config to blockchain and vm l2 type
avilagaston9 Sep 30, 2025
df122ef
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 30, 2025
2846e16
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Sep 30, 2025
3b3d001
Fix ethrex replay for l2
avilagaston9 Sep 30, 2025
aa01211
Fix tdx build
avilagaston9 Sep 30, 2025
9eaf648
Minor improvements
avilagaston9 Sep 30, 2025
d4dc659
Fix linter
avilagaston9 Sep 30, 2025
a364d37
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Oct 2, 2025
0075f72
Update docs
avilagaston9 Oct 3, 2025
4b536c2
Remove extra line
avilagaston9 Oct 3, 2025
39109f6
Update summary
avilagaston9 Oct 3, 2025
a02fcde
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Oct 3, 2025
ddb9a95
Restore replay
avilagaston9 Oct 3, 2025
ca0ce92
restore MAX_MEMPOOL_SIZE_DEFAULT
avilagaston9 Oct 11, 2025
39c196f
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Oct 11, 2025
7172748
Fix clippy
avilagaston9 Oct 11, 2025
652fa08
Restore genesis
avilagaston9 Oct 11, 2025
4eafeb4
register default fee vault pk
avilagaston9 Oct 11, 2025
950540e
Skip fee vault check in l2 dev tests
avilagaston9 Oct 13, 2025
11c9789
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 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
avilagaston9 Oct 13, 2025
29cacdf
Restore based workflow
avilagaston9 Oct 13, 2025
26e34c0
Merge based workflow in matrix
avilagaston9 Oct 14, 2025
704d9e6
Removed based from all-test
avilagaston9 Oct 14, 2025
e098174
Install rex in based
avilagaston9 Oct 14, 2025
e034fdc
Don't set fee vault in based
avilagaston9 Oct 14, 2025
fa54633
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 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: Copy env to host
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 @@ -169,6 +169,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 @@ -275,7 +276,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 @@ -352,6 +355,7 @@ jobs:
ETHREX_WATCHER_WATCH_INTERVAL=1000 \
DOCKER_ETHREX_WORKDIR=/usr/local/bin \
ETHREX_COMMITTER_COMMIT_TIME=15000 \
ETHREX_BLOCK_PRODUCER_FEE_VAULT_ADDRESS=0x000c0d6b7c4516a5b274c51ea331a9410fe69127 \
ETHREX_PROOF_COORDINATOR_ADDRESS=0.0.0.0 \
docker compose -f docker-compose.yaml -f docker-compose-l2-tdx.yaml up --detach --no-deps ethrex_l2

Expand Down
4 changes: 2 additions & 2 deletions cmd/ethrex/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use std::{

use clap::{ArgAction, Parser as ClapParser, Subcommand as ClapSubcommand};
use ethrex_blockchain::{BlockchainOptions, BlockchainType, error::ChainError};
use ethrex_common::types::{Block, Genesis};
use ethrex_common::types::{Block, Genesis, fee_config::FeeConfig};
use ethrex_p2p::sync::SyncMode;
use ethrex_p2p::types::Node;
use ethrex_rlp::encode::RLPEncode;
Expand Down Expand Up @@ -336,7 +336,7 @@ impl Subcommand {
let network = get_network(opts);
let genesis = network.get_genesis()?;
let blockchain_type = if l2 {
BlockchainType::L2
BlockchainType::L2(FeeConfig::default())
} else {
BlockchainType::L1
};
Expand Down
8 changes: 7 additions & 1 deletion cmd/ethrex/l2/initializers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use crate::utils::{
NodeConfigFile, get_client_version, init_datadir, read_jwtsecret_file, store_node_config_file,
};
use ethrex_blockchain::{Blockchain, BlockchainType};
use ethrex_common::types::fee_config::FeeConfig;
use ethrex_common::{Address, types::DEFAULT_BUILDER_GAS_CEIL};
use ethrex_l2::SequencerConfig;
use ethrex_p2p::{
Expand Down Expand Up @@ -155,9 +156,14 @@ pub async fn init_l2(
let store = init_store(&datadir, genesis).await;
let rollup_store = init_rollup_store(&rollup_store_dir).await;

let fee_config = FeeConfig {
fee_vault: opts.sequencer_opts.block_producer_opts.fee_vault_address,
..Default::default()
};

let blockchain_opts = ethrex_blockchain::BlockchainOptions {
max_mempool_size: opts.node_opts.mempool_max_size,
r#type: BlockchainType::L2,
r#type: BlockchainType::L2(fee_config),
perf_logs_enabled: true,
};

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 @@ -387,6 +388,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 @@ -415,6 +423,7 @@ impl Default for BlockProducerOptions {
.parse()
.unwrap(),
),
fee_vault_address: None,
elasticity_multiplier: 2,
block_gas_limit: DEFAULT_BUILDER_GAS_CEIL,
}
Expand Down
11 changes: 7 additions & 4 deletions crates/blockchain/blockchain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ use error::MempoolError;
use error::{ChainError, InvalidBlockError};
use ethrex_common::constants::{GAS_PER_BLOB, MAX_RLP_BLOCK_SIZE, MIN_BASE_FEE_PER_BLOB_GAS};
use ethrex_common::types::block_execution_witness::ExecutionWitness;
use ethrex_common::types::fee_config::FeeConfig;
use ethrex_common::types::requests::{EncodedRequests, Requests, compute_requests_hash};
use ethrex_common::types::{
AccountUpdate, Block, BlockHash, BlockHeader, BlockNumber, ChainConfig, EIP4844Transaction,
Expand Down Expand Up @@ -48,7 +49,7 @@ use ethrex_metrics::metrics_blocks::METRICS_BLOCKS;
use ethrex_common::types::BlobsBundle;

const MAX_PAYLOADS: usize = 10;
const MAX_MEMPOOL_SIZE_DEFAULT: usize = 10_000;
pub const MAX_MEMPOOL_SIZE_DEFAULT: usize = 10_000;

//TODO: Implement a struct Chain or BlockChain to encapsulate
//functionality and canonical chain state and config
Expand All @@ -57,7 +58,7 @@ const MAX_MEMPOOL_SIZE_DEFAULT: usize = 10_000;
pub enum BlockchainType {
#[default]
L1,
L2,
L2(FeeConfig),
}

#[derive(Debug)]
Expand Down Expand Up @@ -221,7 +222,9 @@ impl Blockchain {
let logger = Arc::new(DatabaseLogger::new(Arc::new(Mutex::new(Box::new(vm_db)))));
let mut vm = match self.options.r#type {
BlockchainType::L1 => Evm::new_from_db_for_l1(logger.clone()),
BlockchainType::L2 => Evm::new_from_db_for_l2(logger.clone()),
BlockchainType::L2(fee_config) => {
Evm::new_from_db_for_l2(logger.clone(), fee_config)
}
};

// Re-execute block with logger
Expand Down Expand Up @@ -901,7 +904,7 @@ impl Blockchain {
pub fn new_evm(&self, vm_db: StoreVmDatabase) -> Result<Evm, EvmError> {
let evm = match self.options.r#type {
BlockchainType::L1 => Evm::new_for_l1(vm_db),
BlockchainType::L2 => Evm::new_for_l2(vm_db)?,
BlockchainType::L2(fee_config) => Evm::new_for_l2(vm_db, fee_config)?,
};
Ok(evm)
}
Expand Down
2 changes: 1 addition & 1 deletion crates/blockchain/payload.rs
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ impl PayloadBuildContext {
let vm_db = StoreVmDatabase::new(storage.clone(), payload.header.parent_hash);
let vm = match blockchain_type {
BlockchainType::L1 => Evm::new_for_l1(vm_db),
BlockchainType::L2 => Evm::new_for_l2(vm_db)?,
BlockchainType::L2(fee_config) => Evm::new_for_l2(vm_db, fee_config)?,
};

Ok(PayloadBuildContext {
Expand Down
17 changes: 17 additions & 0 deletions crates/common/rkyv_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,23 @@ impl Hash for ArchivedH160Wrapper {
}
}

#[derive(Archive, Serialize, Deserialize)]
#[rkyv(remote = Option<H160>)]
pub enum OptionH160Wrapper {
Some(#[rkyv(with = H160Wrapper)] H160),
None,
}

impl From<OptionH160Wrapper> for Option<H160> {
fn from(value: OptionH160Wrapper) -> Self {
if let OptionH160Wrapper::Some(x) = value {
Some(x)
} else {
None
}
}
}

#[derive(
Archive, Serialize, Deserialize, Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord,
)]
Expand Down
2 changes: 2 additions & 0 deletions crates/common/types/l2.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
pub mod batch;
pub mod fee_config;
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
use crate::{H256, types::BlobsBundle};
use serde::{Deserialize, Serialize};

use crate::H256;

use super::BlobsBundle;

#[derive(Clone, Serialize, Deserialize, Debug, Default)]
pub struct Batch {
pub number: u64,
Expand Down
26 changes: 26 additions & 0 deletions crates/common/types/l2/fee_config.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
use ethereum_types::Address;
use rkyv::{Archive, Deserialize as RDeserialize, Serialize as RSerialize};
use serde::{Deserialize, Serialize};

use crate::rkyv_utils::{H160Wrapper, OptionH160Wrapper};

#[derive(
Serialize, Deserialize, RDeserialize, RSerialize, Archive, Clone, Copy, Debug, Default,
)]
pub struct FeeConfig {
/// If set, the base fee is sent to this address instead of being burned.
#[rkyv(with=OptionH160Wrapper)]
pub fee_vault: Option<Address>,
pub operator_fee_config: Option<OperatorFeeConfig>,
}

/// Configuration for operator fees on L2
/// The operator fee is an additional fee on top of the base fee
/// that is sent to the operator fee vault.
/// This is used to pay for the cost of running the L2 network.
#[derive(Serialize, Deserialize, RDeserialize, RSerialize, Archive, Clone, Copy, Debug)]
pub struct OperatorFeeConfig {
#[rkyv(with=H160Wrapper)]
pub operator_fee_vault: Address,
pub operator_fee: u64,
}
3 changes: 2 additions & 1 deletion crates/common/types/mod.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
mod account;
mod account_update;
pub mod batch;
pub mod blobs_bundle;
mod block;
pub mod block_execution_witness;
mod constants;
mod fork_id;
mod genesis;
pub mod l2;
pub mod payload;
mod receipt;
pub mod requests;
Expand All @@ -20,6 +20,7 @@ pub use block::*;
pub use constants::*;
pub use fork_id::*;
pub use genesis::*;
pub use l2::*;
pub use receipt::*;
pub use transaction::*;
pub use tx_fields::*;
1 change: 1 addition & 0 deletions crates/l2/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ init-l2: ## 🚀 Initializes an L2 Lambda ethrex Client
--l1.on-chain-proposer-address ${DEFAULT_ON_CHAIN_PROPOSER_ADDRESS} \
--eth.rpc-url ${L1_RPC_URL} \
--block-producer.coinbase-address 0x0007a881CD95B1484fca47615B64803dad620C8d \
--block-producer.fee-vault-address 0x000c0d6b7c4516a5b274c51ea331a9410fe69127 \
--committer.l1-private-key 0x385c546456b6a603a1cfcaa9ec9494ba4832da08dd6bcf4de9a71e4a01b74924 \
--proof-coordinator.l1-private-key 0x39725efee3fb28614de3bacaffe4cc4bd8c436257e2c8bb887c4b5c4be45e76d \
--proof-coordinator.addr ${PROOF_COORDINATOR_ADDRESS}
Expand Down
1 change: 1 addition & 0 deletions crates/l2/docker-compose-l2-store.overrides.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ services:
--datadir /store
--proof-coordinator.addr 0.0.0.0
--block-producer.coinbase-address 0x0007a881CD95B1484fca47615B64803dad620C8d
--block-producer.fee-vault-address 0x000c0d6b7c4516a5b274c51ea331a9410fe69127
--committer.l1-private-key 0x385c546456b6a603a1cfcaa9ec9494ba4832da08dd6bcf4de9a71e4a01b74924
--proof-coordinator.l1-private-key 0x39725efee3fb28614de3bacaffe4cc4bd8c436257e2c8bb887c4b5c4be45e76d
--no-monitor
1 change: 1 addition & 0 deletions crates/l2/docker-compose-l2-web3signer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ services:
--authrpc.port 8552
--proof-coordinator.addr 0.0.0.0
--block-producer.coinbase-address 0x0007a881CD95B1484fca47615B64803dad620C8d
--block-producer.fee-vault-address 0x000c0d6b7c4516a5b274c51ea331a9410fe69127
--committer.remote-signer-url http://web3signer:9000
--committer.remote-signer-public-key 02eadbea0cdb17fda8d56fc9c51df8a6158c2ab157aabf2ca57c3a32cd69f98bbc
--proof-coordinator.remote-signer-url http://web3signer:9000
Expand Down
1 change: 1 addition & 0 deletions crates/l2/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ services:
- ETHREX_DEPLOYER_PICO_DEPLOY_VERIFIER=${ETHREX_DEPLOYER_PICO_DEPLOY_VERIFIER:-false}
- ETHREX_WATCHER_BLOCK_DELAY=${ETHREX_WATCHER_BLOCK_DELAY:-0}
- ETHREX_BASED=${ETHREX_BASED:-false}
- ETHREX_BLOCK_PRODUCER_FEE_VAULT_ADDRESS
- ETHREX_STATE_UPDATER_SEQUENCER_REGISTRY=${ETHREX_STATE_UPDATER_SEQUENCER_REGISTRY:-0x0000000000000000000000000000000000000000}
- ETHREX_COMMITTER_COMMIT_TIME=${ETHREX_COMMITTER_COMMIT_TIME:-60000}
- ETHREX_WATCHER_WATCH_INTERVAL=${ETHREX_WATCHER_WATCH_INTERVAL:-12000}
Expand Down
16 changes: 15 additions & 1 deletion crates/l2/networking/rpc/clients.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::l2::batch::RpcBatch;
use ethrex_common::Address;
use ethrex_common::H256;
use ethrex_l2_common::l1_messages::L1MessageProof;
use ethrex_rpc::{
Expand All @@ -7,7 +8,7 @@ use ethrex_rpc::{
EthClientError,
eth::{
RpcResponse,
errors::{GetBatchByNumberError, GetMessageProofError},
errors::{GetBatchByNumberError, GetFeeVaultAddressError, GetMessageProofError},
},
},
utils::RpcRequest,
Expand Down Expand Up @@ -47,3 +48,16 @@ pub async fn get_batch_by_number(
}
}
}

pub async fn get_fee_vault_address(client: &EthClient) -> Result<Option<Address>, EthClientError> {
let request = RpcRequest::new("ethrex_getFeeVaultAddress", None);

match client.send_request(request).await? {
RpcResponse::Success(result) => serde_json::from_value(result.result)
.map_err(GetFeeVaultAddressError::SerdeJSONError)
.map_err(EthClientError::from),
RpcResponse::Error(error_response) => {
Err(GetFeeVaultAddressError::RPCError(error_response.error.message).into())
}
}
}
32 changes: 32 additions & 0 deletions crates/l2/networking/rpc/l2/fee_vault.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
use serde_json::Value;

use crate::{
rpc::{RpcApiContext, RpcHandler},
utils::RpcErr,
};

pub struct GetFeeVaultAddress;

impl RpcHandler for GetFeeVaultAddress {
fn parse(_params: &Option<Vec<Value>>) -> Result<GetFeeVaultAddress, RpcErr> {
Ok(GetFeeVaultAddress)
}

async fn handle(&self, context: RpcApiContext) -> Result<Value, RpcErr> {
let fee_vault_address = match context.l1_ctx.blockchain.options.r#type {
ethrex_blockchain::BlockchainType::L1 => None,
ethrex_blockchain::BlockchainType::L2(fee_config) => fee_config.fee_vault,
};

Ok(
serde_json::to_value(fee_vault_address.map(|addr| format!("{:#x}", addr))).map_err(
|e| {
ethrex_rpc::RpcErr::Internal(format!(
"Failed to serialize fee vault address: {}",
e
))
},
)?,
)
}
}
1 change: 1 addition & 0 deletions crates/l2/networking/rpc/l2/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
pub mod batch;
pub mod fee_vault;
pub mod l1_message;
pub mod transaction;
2 changes: 2 additions & 0 deletions crates/l2/networking/rpc/rpc.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::l2::batch::{BatchNumberRequest, GetBatchByBatchNumberRequest};
use crate::l2::fee_vault::GetFeeVaultAddress;
use crate::l2::l1_message::GetL1MessageProof;
use crate::utils::{RpcErr, RpcNamespace, resolve_namespace};
use axum::extract::State;
Expand Down Expand Up @@ -216,6 +217,7 @@ pub async fn map_l2_requests(req: &RpcRequest, context: RpcApiContext) -> Result
"ethrex_getMessageProof" => GetL1MessageProof::call(req, context).await,
"ethrex_batchNumber" => BatchNumberRequest::call(req, context).await,
"ethrex_getBatchByNumber" => GetBatchByBatchNumberRequest::call(req, context).await,
"ethrex_getFeeVaultAddress" => GetFeeVaultAddress::call(req, context).await,
unknown_ethrex_l2_method => {
Err(ethrex_rpc::RpcErr::MethodNotFound(unknown_ethrex_l2_method.to_owned()).into())
}
Expand Down
Loading
Loading