Skip to content

Commit

Permalink
feat: add operator fee params on RPC L1BlockInfo (paradigmxyz#14269)
Browse files Browse the repository at this point in the history
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
  • Loading branch information
2 people authored and 18aaddy committed Feb 12, 2025
1 parent 6010224 commit 4889c35
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 18 deletions.
26 changes: 14 additions & 12 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
27 changes: 27 additions & 0 deletions crates/optimism/evm/src/l1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
32 changes: 32 additions & 0 deletions crates/optimism/rpc/src/eth/receipt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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,
}
}

Expand Down Expand Up @@ -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)
}
Expand Down Expand Up @@ -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 {
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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!(
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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)");
Expand All @@ -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");
}
}

0 comments on commit 4889c35

Please sign in to comment.