Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 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
228175a
feat(l2): implement operator fee
avilagaston9 Oct 1, 2025
a364d37
Merge branch 'main' into l2/dont-burn-base-fee
avilagaston9 Oct 2, 2025
88ab25e
Update deployer
avilagaston9 Oct 2, 2025
8d1d5a3
Fix clippy
avilagaston9 Oct 2, 2025
51809e4
Prove that the operator_fee is the configured one
avilagaston9 Oct 2, 2025
84f9d7a
Fix l2 hook
avilagaston9 Oct 2, 2025
b2aa76a
Style
avilagaston9 Oct 2, 2025
c6727ff
Merge branch 'l2/dont-burn-base-fee' into feat/l2/operator_fee
avilagaston9 Oct 2, 2025
dec1042
Set operator fee
avilagaston9 Oct 2, 2025
ff5af2b
Update cargo lock
avilagaston9 Oct 2, 2025
1e94dd6
Set fee vault address
avilagaston9 Oct 2, 2025
1db8ba7
Add operator fee to integration tests
avilagaston9 Oct 2, 2025
de54296
Fix env var
avilagaston9 Oct 2, 2025
6af8e5d
Pass operator fee address
avilagaston9 Oct 2, 2025
62e7148
Add test upgrade
avilagaston9 Oct 2, 2025
4b5dc0a
Fix dockers
avilagaston9 Oct 3, 2025
bd063f6
Fix public input length
avilagaston9 Oct 3, 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
82e4a39
Merge branch 'l2/dont-burn-base-fee' into feat/l2/operator_fee
avilagaston9 Oct 3, 2025
e765d7a
Update docs
avilagaston9 Oct 3, 2025
49b7525
Rename fee vault with base fee vault
avilagaston9 Oct 3, 2025
2537cce
Fix based deployment
avilagaston9 Oct 3, 2025
e955f21
Continue renaming fee vault to base fee vault
avilagaston9 Oct 3, 2025
7b64801
Don't call operator fee if based mode is enabled
avilagaston9 Oct 5, 2025
9abd637
Skip operator fee in tests
avilagaston9 Oct 5, 2025
fd2a5e1
Fix tests
avilagaston9 Oct 5, 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
717d838
Merge branch 'l2/dont-burn-base-fee' into feat/l2/operator_fee
avilagaston9 Oct 14, 2025
0b965c8
Fix clippy
avilagaston9 Oct 14, 2025
432e986
Merge branch 'main' into feat/l2/operator_fee
avilagaston9 Oct 14, 2025
f95a173
remove operator fee from onChainProposer
avilagaston9 Oct 14, 2025
c0652ab
Minor improvements
avilagaston9 Oct 14, 2025
a4ebd37
Change l2 hook behavior
avilagaston9 Oct 15, 2025
71290b6
Update tests
avilagaston9 Oct 15, 2025
d33a2e6
Merge branch 'main' into feat/l2/operator_fee
avilagaston9 Oct 15, 2025
df3bb70
Fix workflow linter
avilagaston9 Oct 15, 2025
a894ce9
Fix clippy
avilagaston9 Oct 15, 2025
c7bcf60
fix endpoint
avilagaston9 Oct 16, 2025
e413c06
Fix integration tests
avilagaston9 Oct 16, 2025
df4dc98
Update docs
avilagaston9 Oct 16, 2025
0fd9b2a
Correct env var
avilagaston9 Oct 16, 2025
64be8db
Fix clippy
avilagaston9 Oct 16, 2025
120698a
Update prover to work with multiple fee configs
avilagaston9 Oct 16, 2025
9635098
Merge branch 'main' into feat/l2/operator_fee
avilagaston9 Oct 16, 2025
121f052
Fix typo
avilagaston9 Oct 17, 2025
ff4a7dc
Merge branch 'main' into feat/l2/operator_fee
avilagaston9 Oct 17, 2025
6bb86e8
Remove GetTransactionByHashTransaction
avilagaston9 Oct 22, 2025
4c76c1a
Change operator fee to u64
avilagaston9 Oct 23, 2025
16d0075
Remove clone
avilagaston9 Oct 23, 2025
8822d68
Improve operator fee disable
avilagaston9 Oct 23, 2025
1576933
Remove unneeded clone
avilagaston9 Oct 23, 2025
42416cd
Remove unneeded clone
avilagaston9 Oct 23, 2025
d9f85ca
Merge branch 'main' into feat/l2/operator_fee
avilagaston9 Oct 23, 2025
2ccc672
Update cli.md
avilagaston9 Oct 23, 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
4 changes: 3 additions & 1 deletion .github/workflows/main_prover.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,9 @@ jobs:
ETHREX_PROPOSER_BLOCK_TIME=12000 \
ETHREX_COMMITTER_COMMIT_TIME=30000 \
ETHREX_WATCHER_WATCH_INTERVAL=1000 \
ETHREX_BLOCK_PRODUCER_FEE_VAULT_ADDRESS=0x000c0d6b7c4516a5b274c51ea331a9410fe69127 \
ETHREX_BLOCK_PRODUCER_BASE_FEE_VAULT_ADDRESS=0x000c0d6b7c4516a5b274c51ea331a9410fe69127 \
ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_VAULT_ADDRESS=0xd5d2a85751b6F158e5b9B8cD509206A865672362 \
ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_PER_GAS=1000000000 \
docker compose up --build --detach --no-deps ethrex_l2

- name: Copy env to host
Expand Down
12 changes: 8 additions & 4 deletions .github/workflows/pr-main_l2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,9 @@ jobs:
export ETHREX_BASED=true
cd ..
else
export ETHREX_BLOCK_PRODUCER_FEE_VAULT_ADDRESS=0x000c0d6b7c4516a5b274c51ea331a9410fe69127
export ETHREX_BLOCK_PRODUCER_BASE_FEE_VAULT_ADDRESS=0x000c0d6b7c4516a5b274c51ea331a9410fe69127
export ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_VAULT_ADDRESS=0xd5d2a85751b6F158e5b9B8cD509206A865672362
export ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_PER_GAS=1000000000
fi
cd crates/l2
DOCKER_ETHREX_WORKDIR=/usr/local/bin \
Expand All @@ -294,7 +296,7 @@ jobs:
- name: Run test
run: |
if [ "${{ matrix.based }}" = true ]; then
export INTEGRATION_TEST_SKIP_FEE_VAULT_CHECK=true
export INTEGRATION_TEST_SKIP_BASE_FEE_VAULT_CHECK=true
fi
sudo chmod -R a+rw crates/l2
cd crates/l2
Expand Down Expand Up @@ -388,7 +390,9 @@ 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_BLOCK_PRODUCER_BASE_FEE_VAULT_ADDRESS=0x000c0d6b7c4516a5b274c51ea331a9410fe69127 \
ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_VAULT_ADDRESS=0xd5d2a85751b6F158e5b9B8cD509206A865672362 \
ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_PER_GAS=1000000000 \
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 Expand Up @@ -521,7 +525,7 @@ jobs:
- name: Run test
run: |
cd crates/l2
INTEGRATION_TEST_SKIP_FEE_VAULT_CHECK=true \
INTEGRATION_TEST_SKIP_BASE_FEE_VAULT_CHECK=true \
PROPOSER_COINBASE_ADDRESS=0x0007a881CD95B1484fca47615B64803dad620C8d \
cargo test l2 --release -- --nocapture --test-threads=1

Expand Down
5 changes: 1 addition & 4 deletions cmd/ethrex/l2/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -345,10 +345,7 @@ impl Command {
"Transaction {:#x} not found",
log.transaction_hash
))?;
l2_blob_hashes.extend(tx.blob_versioned_hashes.ok_or_eyre(format!(
"Blobs not found in transaction {:#x}",
log.transaction_hash
))?);
l2_blob_hashes.extend(tx.tx.blob_versioned_hashes());
}

// Get blobs from block's slot and only keep L2 commitment's blobs
Expand Down
39 changes: 35 additions & 4 deletions cmd/ethrex/l2/initializers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ use crate::initializers::{
self, get_authrpc_socket_addr, get_http_socket_addr, get_local_node_record, get_local_p2p_node,
get_network, get_signer, init_blockchain, init_network, init_store, regenerate_head_state,
};
use crate::l2::L2Options;
use crate::l2::{L2Options, SequencerOptions};
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::types::fee_config::{FeeConfig, OperatorFeeConfig};
use ethrex_common::{Address, types::DEFAULT_BUILDER_GAS_CEIL};
use ethrex_l2::SequencerConfig;
use ethrex_p2p::{
Expand Down Expand Up @@ -156,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 operator_fee_config = get_operator_fee_config(&opts.sequencer_opts).await?;

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

let blockchain_opts = ethrex_blockchain::BlockchainOptions {
Expand Down Expand Up @@ -290,3 +295,29 @@ pub async fn init_l2(
info!("Server shutting down!");
Ok(())
}

pub async fn get_operator_fee_config(
sequencer_opts: &SequencerOptions,
) -> eyre::Result<Option<OperatorFeeConfig>> {
if sequencer_opts.based {
// If based is enabled, operator fee is not applicable
return Ok(None);
}

let fee = sequencer_opts.block_producer_opts.operator_fee_per_gas;

let address = sequencer_opts
.block_producer_opts
.operator_fee_vault_address;

let operator_fee_config =
if let (Some(operator_fee_vault), Some(operator_fee_per_gas)) = (address, fee) {
Some(OperatorFeeConfig {
operator_fee_vault,
operator_fee_per_gas,
})
} else {
None
};
Ok(operator_fee_config)
}
30 changes: 25 additions & 5 deletions cmd/ethrex/l2/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,8 @@ impl TryFrom<SequencerOptions> for SequencerConfig {
.block_producer_opts
.coinbase_address
.ok_or(SequencerOptionsError::NoCoinbaseAddress)?,
fee_vault_address: opts.block_producer_opts.fee_vault_address,
base_fee_vault_address: opts.block_producer_opts.base_fee_vault_address,
operator_fee_vault_address: opts.block_producer_opts.operator_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 @@ -437,12 +438,29 @@ pub struct BlockProducerOptions {
)]
pub coinbase_address: Option<Address>,
#[arg(
long = "block-producer.fee-vault-address",
long = "block-producer.base-fee-vault-address",
value_name = "ADDRESS",
env = "ETHREX_BLOCK_PRODUCER_FEE_VAULT_ADDRESS",
env = "ETHREX_BLOCK_PRODUCER_BASE_FEE_VAULT_ADDRESS",
help_heading = "Block producer options"
)]
pub fee_vault_address: Option<Address>,
pub base_fee_vault_address: Option<Address>,
#[arg(
long = "block-producer.operator-fee-vault-address",
value_name = "ADDRESS",
requires = "operator_fee_per_gas",
env = "ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_VAULT_ADDRESS",
help_heading = "Block producer options"
)]
pub operator_fee_vault_address: Option<Address>,
#[arg(
long,
value_name = "UINT64",
env = "ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_PER_GAS",
requires = "operator_fee_vault_address",
help_heading = "Block producer options",
help = "Fee that the operator will receive for each unit of gas consumed in a block."
)]
pub operator_fee_per_gas: Option<u64>,
#[arg(
long,
default_value = "2",
Expand Down Expand Up @@ -471,7 +489,9 @@ impl Default for BlockProducerOptions {
.parse()
.unwrap(),
),
fee_vault_address: None,
base_fee_vault_address: None,
operator_fee_vault_address: None,
operator_fee_per_gas: None,
elasticity_multiplier: 2,
block_gas_limit: DEFAULT_BUILDER_GAS_CEIL,
}
Expand Down
4 changes: 2 additions & 2 deletions crates/common/types/l2/fee_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use crate::rkyv_utils::{H160Wrapper, OptionH160Wrapper};
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 base_fee_vault: Option<Address>,
pub operator_fee_config: Option<OperatorFeeConfig>,
}

Expand All @@ -22,5 +22,5 @@ pub struct FeeConfig {
pub struct OperatorFeeConfig {
#[rkyv(with=H160Wrapper)]
pub operator_fee_vault: Address,
pub operator_fee: u64,
pub operator_fee_per_gas: u64,
}
7 changes: 5 additions & 2 deletions crates/l2/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ L1_AUTH_PORT=8551
L1_RPC_ADDRESS=0.0.0.0
L2_RPC_ADDRESS=0.0.0.0
PROOF_COORDINATOR_ADDRESS?=127.0.0.1
ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_PER_GAS?=1000000000 \

# Matches the ports used by the blockchain/metrics dir
L2_PROMETHEUS_METRICS_PORT = 3702
Expand Down Expand Up @@ -132,7 +133,9 @@ 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 \
--block-producer.base-fee-vault-address 0x000c0d6b7c4516a5b274c51ea331a9410fe69127 \
--block-producer.operator-fee-vault-address 0xd5d2a85751b6F158e5b9B8cD509206A865672362 \
--block-producer.operator-fee ${ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_PER_GAS} \
--committer.l1-private-key 0x385c546456b6a603a1cfcaa9ec9494ba4832da08dd6bcf4de9a71e4a01b74924 \
--proof-coordinator.l1-private-key 0x39725efee3fb28614de3bacaffe4cc4bd8c436257e2c8bb887c4b5c4be45e76d \
--proof-coordinator.addr ${PROOF_COORDINATOR_ADDRESS}
Expand Down Expand Up @@ -181,7 +184,7 @@ build-prover:
../../target/release/ethrex: $(PROVER_SRC_FILES)
@if [ -z "$$PROVER" ]; then \
echo "Warn: ProverType (PROVER) is missing. Building only with exec mode."; \
echo "Please provide it as an argument:"; \
echo "You can provide it as an argument:"; \
echo "make init-prover PROVER=<prover_type: (risc0, sp1)> G=<true>"; \
echo "The prover can also be run with GPU (G)"; \
fi; \
Expand Down
6 changes: 3 additions & 3 deletions crates/l2/based/block_fetcher.rs
Original file line number Diff line number Diff line change
Expand Up @@ -247,17 +247,17 @@ impl BlockFetcher {
missing_batches_logs.sort_by_key(|(_log, batch_number)| *batch_number);

for (batch_committed_log, batch_number) in missing_batches_logs {
let batch_commit_tx_calldata = self
let tx = self
.eth_client
.get_transaction_by_hash(batch_committed_log.transaction_hash)
.await?
.ok_or(BlockFetcherError::RetrievalError(format!(
"Failed to get the receipt for transaction {:x}",
batch_committed_log.transaction_hash
)))?
.data;
.tx;

let batch = decode_batch_from_calldata(&batch_commit_tx_calldata)?;
let batch = decode_batch_from_calldata(tx.data())?;

self.store_batch(&batch).await?;

Expand Down
2 changes: 1 addition & 1 deletion crates/l2/common/src/prover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pub struct ProverInputData {
pub blob_commitment: blobs_bundle::Commitment,
#[serde_as(as = "[_; 48]")]
pub blob_proof: blobs_bundle::Proof,
pub fee_config: FeeConfig,
pub fee_configs: Vec<FeeConfig>,
}

/// Enum used to identify the different proving systems.
Expand Down
2 changes: 1 addition & 1 deletion crates/l2/docker-compose-l2-store.overrides.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ services:
--datadir /store
--proof-coordinator.addr 0.0.0.0
--block-producer.coinbase-address 0x0007a881CD95B1484fca47615B64803dad620C8d
--block-producer.fee-vault-address 0x000c0d6b7c4516a5b274c51ea331a9410fe69127
--block-producer.base-fee-vault-address 0x000c0d6b7c4516a5b274c51ea331a9410fe69127
--committer.l1-private-key 0x385c546456b6a603a1cfcaa9ec9494ba4832da08dd6bcf4de9a71e4a01b74924
--proof-coordinator.l1-private-key 0x39725efee3fb28614de3bacaffe4cc4bd8c436257e2c8bb887c4b5c4be45e76d
--no-monitor
2 changes: 1 addition & 1 deletion crates/l2/docker-compose-l2-web3signer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ services:
--authrpc.port 8552
--proof-coordinator.addr 0.0.0.0
--block-producer.coinbase-address 0x0007a881CD95B1484fca47615B64803dad620C8d
--block-producer.fee-vault-address 0x000c0d6b7c4516a5b274c51ea331a9410fe69127
--block-producer.base-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
4 changes: 3 additions & 1 deletion crates/l2/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,9 @@ 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_BLOCK_PRODUCER_BASE_FEE_VAULT_ADDRESS
- ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_VAULT_ADDRESS
- ETHREX_BLOCK_PRODUCER_OPERATOR_FEE_PER_GAS
- 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
52 changes: 47 additions & 5 deletions crates/l2/networking/rpc/clients.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
use crate::l2::batch::RpcBatch;
use ethrex_common::Address;
use ethrex_common::H256;
use ethrex_common::U256;
use ethrex_l2_common::l1_messages::L1MessageProof;
use ethrex_rpc::clients::eth::errors::GetOperatorFeeError;
use ethrex_rpc::clients::eth::errors::GetOperatorFeeVaultAddressError;
use ethrex_rpc::types::block_identifier::BlockIdentifier;
use ethrex_rpc::{
EthClient,
clients::{
EthClientError,
eth::{
RpcResponse,
errors::{GetBatchByNumberError, GetFeeVaultAddressError, GetMessageProofError},
errors::{GetBaseFeeVaultAddressError, GetBatchByNumberError, GetMessageProofError},
},
},
utils::RpcRequest,
Expand Down Expand Up @@ -49,15 +53,53 @@ 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);
pub async fn get_base_fee_vault_address(
client: &EthClient,
block: BlockIdentifier,
) -> Result<Address, EthClientError> {
let params = Some(vec![block.into()]);
let request = RpcRequest::new("ethrex_getBaseFeeVaultAddress", params);

match client.send_request(request).await? {
RpcResponse::Success(result) => serde_json::from_value(result.result)
.map_err(GetBaseFeeVaultAddressError::SerdeJSONError)
.map_err(EthClientError::from),
RpcResponse::Error(error_response) => {
Err(GetBaseFeeVaultAddressError::RPCError(error_response.error.message).into())
}
}
}

pub async fn get_operator_fee_vault_address(
client: &EthClient,
block: BlockIdentifier,
) -> Result<Address, EthClientError> {
let params = Some(vec![block.into()]);
let request = RpcRequest::new("ethrex_getOperatorFeeVaultAddress", params);

match client.send_request(request).await? {
RpcResponse::Success(result) => serde_json::from_value(result.result)
.map_err(GetOperatorFeeVaultAddressError::SerdeJSONError)
.map_err(EthClientError::from),
RpcResponse::Error(error_response) => {
Err(GetOperatorFeeVaultAddressError::RPCError(error_response.error.message).into())
}
}
}

pub async fn get_operator_fee(
client: &EthClient,
block: BlockIdentifier,
) -> Result<U256, EthClientError> {
let params = Some(vec![block.into()]);
let request = RpcRequest::new("ethrex_getOperatorFee", params);

match client.send_request(request).await? {
RpcResponse::Success(result) => serde_json::from_value(result.result)
.map_err(GetFeeVaultAddressError::SerdeJSONError)
.map_err(GetOperatorFeeError::SerdeJSONError)
.map_err(EthClientError::from),
RpcResponse::Error(error_response) => {
Err(GetFeeVaultAddressError::RPCError(error_response.error.message).into())
Err(GetOperatorFeeError::RPCError(error_response.error.message).into())
}
}
}
32 changes: 0 additions & 32 deletions crates/l2/networking/rpc/l2/fee_vault.rs

This file was deleted.

Loading