mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: add operator fee params on RPC L1BlockInfo (#14269)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
26
Cargo.lock
generated
26
Cargo.lock
generated
@ -5481,9 +5481,9 @@ checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
|
||||
|
||||
[[package]]
|
||||
name = "op-alloy-consensus"
|
||||
version = "0.10.2"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1363dd2454f473e2a2a6ee5eda585ecf94209319e35529bd703ddc5072798eb4"
|
||||
checksum = "23f7ff02e5f3ba62c8dd5d9a630c818f50147bca7b0d78e89de59ed46b5d02e1"
|
||||
dependencies = [
|
||||
"alloy-consensus",
|
||||
"alloy-eips",
|
||||
@ -5499,15 +5499,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "op-alloy-flz"
|
||||
version = "0.10.2"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3419796a04a6bcc4752b9ba26b89d6ba4d46d7b69476ddcac3692aa44a558574"
|
||||
checksum = "740324977f089db5b2cd96975260308c3f52daeaa103570995211748d282e560"
|
||||
|
||||
[[package]]
|
||||
name = "op-alloy-network"
|
||||
version = "0.10.2"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9fc2e8a7501b1e9c0e83bde80b5b9866bf4418caceaf64d919bd608b66ecaa16"
|
||||
checksum = "eab4dd4e260be40a7ab8debf5300baf1f02f1d2a6e0c1ab5741732d612de7d6e"
|
||||
dependencies = [
|
||||
"alloy-consensus",
|
||||
"alloy-network",
|
||||
@ -5520,9 +5520,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "op-alloy-rpc-jsonrpsee"
|
||||
version = "0.10.2"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cd3f3b1b0decc0be5d766144df2b8297b22fada5b4a1bcbafa76f0aec7ac5d24"
|
||||
checksum = "725e79490887d768e5f22badf93d8c8d12349aca6db63a050acb3472f2535e6c"
|
||||
dependencies = [
|
||||
"alloy-primitives",
|
||||
"jsonrpsee",
|
||||
@ -5530,9 +5530,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "op-alloy-rpc-types"
|
||||
version = "0.10.2"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77979abf2b8b2be8996da3b434b09d770edbcceccd59251c3373ef553e743cf0"
|
||||
checksum = "9ed9af4583c4b3ea93f54092ebfe41172974de2042672e9850500f4d1f99844e"
|
||||
dependencies = [
|
||||
"alloy-consensus",
|
||||
"alloy-eips",
|
||||
@ -5548,14 +5548,16 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "op-alloy-rpc-types-engine"
|
||||
version = "0.10.2"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2e4fe1929b0e39130da37cb975c98d70418904ba7991a061799ad971dbd09fe"
|
||||
checksum = "20120c629465e52e5cdb0ac8df0ba45e184b456fcd55d17ea9ec1247d6968bb4"
|
||||
dependencies = [
|
||||
"alloy-consensus",
|
||||
"alloy-eips",
|
||||
"alloy-primitives",
|
||||
"alloy-rpc-types-engine",
|
||||
"alloy-serde",
|
||||
"derive_more",
|
||||
"ethereum_ssz",
|
||||
"op-alloy-consensus",
|
||||
"serde",
|
||||
|
||||
12
Cargo.toml
12
Cargo.toml
@ -468,12 +468,12 @@ alloy-transport-ipc = { version = "0.11.0", default-features = false }
|
||||
alloy-transport-ws = { version = "0.11.0", default-features = false }
|
||||
|
||||
# op
|
||||
op-alloy-rpc-types = { version = "0.10.0", default-features = false }
|
||||
op-alloy-rpc-types-engine = { version = "0.10.0", default-features = false }
|
||||
op-alloy-network = { version = "0.10.0", default-features = false }
|
||||
op-alloy-consensus = { version = "0.10.0", default-features = false }
|
||||
op-alloy-flz = { version = "0.10.0", default-features = false }
|
||||
op-alloy-rpc-jsonrpsee = { version = "0.10.0", default-features = false }
|
||||
op-alloy-rpc-types = { version = "0.10.3", default-features = false }
|
||||
op-alloy-rpc-types-engine = { version = "0.10.3", default-features = false }
|
||||
op-alloy-network = { version = "0.10.3", default-features = false }
|
||||
op-alloy-consensus = { version = "0.10.3", default-features = false }
|
||||
op-alloy-flz = { version = "0.10.3", default-features = false }
|
||||
op-alloy-rpc-jsonrpsee = { version = "0.10.3", default-features = false }
|
||||
|
||||
# misc
|
||||
aquamarine = "0.6"
|
||||
|
||||
@ -445,4 +445,31 @@ mod tests {
|
||||
assert_eq!(l1_block_info.l1_blob_base_fee, l1_blob_base_fee);
|
||||
assert_eq!(l1_block_info.l1_blob_base_fee_scalar, l1_blob_base_fee_scalar);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_l1_info_isthmus() {
|
||||
// rig
|
||||
|
||||
// L1 block info from a devnet with Isthmus activated
|
||||
const DATA: &[u8] = &hex!("098999be00000558000c5fc500000000000000030000000067a9f765000000000000002900000000000000000000000000000000000000000000000000000000006a6d09000000000000000000000000000000000000000000000000000000000000000172fcc8e8886636bdbe96ba0e4baab67ea7e7811633f52b52e8cf7a5123213b6f000000000000000000000000d3f2c5afb2d76f5579f326b0cd7da5f5a4126c3500004e2000000000000001f4");
|
||||
|
||||
// expected l1 block info verified against expected l1 fee and operator fee for tx.
|
||||
let l1_base_fee = U256::from(6974729);
|
||||
let l1_base_fee_scalar = U256::from(1368);
|
||||
let l1_blob_base_fee = Some(U256::from(1));
|
||||
let l1_blob_base_fee_scalar = Some(U256::from(810949));
|
||||
let operator_fee_scalar = Some(U256::from(20000));
|
||||
let operator_fee_constant = Some(U256::from(500));
|
||||
|
||||
// test
|
||||
|
||||
let l1_block_info = parse_l1_info(DATA).unwrap();
|
||||
|
||||
assert_eq!(l1_block_info.l1_base_fee, l1_base_fee);
|
||||
assert_eq!(l1_block_info.l1_base_fee_scalar, l1_base_fee_scalar);
|
||||
assert_eq!(l1_block_info.l1_blob_base_fee, l1_blob_base_fee);
|
||||
assert_eq!(l1_block_info.l1_blob_base_fee_scalar, l1_blob_base_fee_scalar);
|
||||
assert_eq!(l1_block_info.operator_fee_scalar, operator_fee_scalar);
|
||||
assert_eq!(l1_block_info.operator_fee_constant, operator_fee_constant);
|
||||
}
|
||||
}
|
||||
|
||||
@ -85,6 +85,10 @@ pub struct OpReceiptFieldsBuilder {
|
||||
pub l1_blob_base_fee: Option<u128>,
|
||||
/// The current L1 blob base fee scalar.
|
||||
pub l1_blob_base_fee_scalar: Option<u128>,
|
||||
/// The current operator fee scalar.
|
||||
pub operator_fee_scalar: Option<u128>,
|
||||
/// The current L1 blob base fee scalar.
|
||||
pub operator_fee_constant: Option<u128>,
|
||||
}
|
||||
|
||||
impl OpReceiptFieldsBuilder {
|
||||
@ -102,6 +106,8 @@ impl OpReceiptFieldsBuilder {
|
||||
l1_base_fee_scalar: None,
|
||||
l1_blob_base_fee: None,
|
||||
l1_blob_base_fee_scalar: None,
|
||||
operator_fee_scalar: None,
|
||||
operator_fee_constant: None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -139,6 +145,10 @@ impl OpReceiptFieldsBuilder {
|
||||
self.l1_blob_base_fee = l1_block_info.l1_blob_base_fee.map(|fee| fee.saturating_to());
|
||||
self.l1_blob_base_fee_scalar =
|
||||
l1_block_info.l1_blob_base_fee_scalar.map(|scalar| scalar.saturating_to());
|
||||
self.operator_fee_scalar =
|
||||
l1_block_info.operator_fee_scalar.map(|scalar| scalar.saturating_to());
|
||||
self.operator_fee_constant =
|
||||
l1_block_info.operator_fee_constant.map(|constant| constant.saturating_to());
|
||||
|
||||
Ok(self)
|
||||
}
|
||||
@ -169,6 +179,8 @@ impl OpReceiptFieldsBuilder {
|
||||
l1_base_fee_scalar,
|
||||
l1_blob_base_fee,
|
||||
l1_blob_base_fee_scalar,
|
||||
operator_fee_scalar,
|
||||
operator_fee_constant,
|
||||
} = self;
|
||||
|
||||
OpTransactionReceiptFields {
|
||||
@ -180,6 +192,8 @@ impl OpReceiptFieldsBuilder {
|
||||
l1_base_fee_scalar,
|
||||
l1_blob_base_fee,
|
||||
l1_blob_base_fee_scalar,
|
||||
operator_fee_scalar,
|
||||
operator_fee_constant,
|
||||
},
|
||||
deposit_nonce,
|
||||
deposit_receipt_version,
|
||||
@ -282,6 +296,8 @@ mod test {
|
||||
l1_base_fee_scalar: Some(5227),
|
||||
l1_blob_base_fee: Some(1),
|
||||
l1_blob_base_fee_scalar: Some(1014213),
|
||||
operator_fee_scalar: None,
|
||||
operator_fee_constant: None,
|
||||
},
|
||||
deposit_nonce: None,
|
||||
deposit_receipt_version: None,
|
||||
@ -323,6 +339,8 @@ mod test {
|
||||
l1_base_fee_scalar,
|
||||
l1_blob_base_fee,
|
||||
l1_blob_base_fee_scalar,
|
||||
operator_fee_scalar,
|
||||
operator_fee_constant,
|
||||
} = receipt_meta.l1_block_info;
|
||||
|
||||
assert_eq!(
|
||||
@ -356,6 +374,16 @@ mod test {
|
||||
TX_META_TX_1_OP_MAINNET_BLOCK_124665056.l1_block_info.l1_blob_base_fee_scalar,
|
||||
"incorrect l1 blob base fee scalar"
|
||||
);
|
||||
assert_eq!(
|
||||
operator_fee_scalar,
|
||||
TX_META_TX_1_OP_MAINNET_BLOCK_124665056.l1_block_info.operator_fee_scalar,
|
||||
"incorrect operator fee scalar"
|
||||
);
|
||||
assert_eq!(
|
||||
operator_fee_constant,
|
||||
TX_META_TX_1_OP_MAINNET_BLOCK_124665056.l1_block_info.operator_fee_constant,
|
||||
"incorrect operator fee constant"
|
||||
);
|
||||
}
|
||||
|
||||
// <https://github.com/paradigmxyz/reth/issues/12177>
|
||||
@ -389,6 +417,8 @@ mod test {
|
||||
l1_base_fee_scalar,
|
||||
l1_blob_base_fee,
|
||||
l1_blob_base_fee_scalar,
|
||||
operator_fee_scalar,
|
||||
operator_fee_constant,
|
||||
} = receipt_meta.l1_block_info;
|
||||
|
||||
assert_eq!(l1_gas_price, Some(14121491676), "incorrect l1 base fee (former gas price)");
|
||||
@ -398,5 +428,7 @@ mod test {
|
||||
assert_eq!(l1_base_fee_scalar, Some(2269), "incorrect l1 base fee scalar");
|
||||
assert_eq!(l1_blob_base_fee, Some(1324954204), "incorrect l1 blob base fee");
|
||||
assert_eq!(l1_blob_base_fee_scalar, Some(1055762), "incorrect l1 blob base fee scalar");
|
||||
assert_eq!(operator_fee_scalar, None, "incorrect operator fee scalar");
|
||||
assert_eq!(operator_fee_constant, None, "incorrect operator fee constant");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user