diff --git a/Cargo.toml b/Cargo.toml index 2ec400191..db8a3671e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -97,6 +97,7 @@ async-trait = "0.1.83" unsigned-varint = "0.8.0" spin = { version = "0.9.8", features = ["mutex"] } derive_more = { version = "1.0", default-features = false } +similar-asserts = "1.6" # tracing tracing-subscriber = "0.3.18" diff --git a/crates/rpc-types/Cargo.toml b/crates/rpc-types/Cargo.toml index 643518d42..20a497bab 100644 --- a/crates/rpc-types/Cargo.toml +++ b/crates/rpc-types/Cargo.toml @@ -41,6 +41,7 @@ arbitrary = { workspace = true, features = ["derive"] } alloy-consensus = { workspace = true, features = ["arbitrary"] } alloy-primitives = { workspace = true, features = ["arbitrary"] } alloy-rpc-types-eth = { workspace = true, features = ["arbitrary"] } +similar-asserts.workspace = true [features] default = ["std"] diff --git a/crates/rpc-types/src/transaction.rs b/crates/rpc-types/src/transaction.rs index 47586fa84..d4da1c2f7 100644 --- a/crates/rpc-types/src/transaction.rs +++ b/crates/rpc-types/src/transaction.rs @@ -62,14 +62,18 @@ impl ConsensusTransaction for Transaction { self.inner.priority_fee_or_price() } - fn to(&self) -> Option
{ - self.inner.to() + fn is_dynamic_fee(&self) -> bool { + self.inner.is_dynamic_fee() } fn kind(&self) -> TxKind { self.inner.kind() } + fn to(&self) -> Option
{ + self.inner.to() + } + fn value(&self) -> U256 { self.inner.value() } @@ -93,10 +97,6 @@ impl ConsensusTransaction for Transaction { fn authorization_list(&self) -> Option<&[SignedAuthorization]> { self.inner.authorization_list() } - - fn is_dynamic_fee(&self) -> bool { - self.inner.is_dynamic_fee() - } } impl alloy_network_primitives::TransactionResponse for Transaction { @@ -296,7 +296,7 @@ mod tests { fn can_deserialize_deposit() { // cast rpc eth_getTransactionByHash // 0xbc9329afac05556497441e2b3ee4c5d4da7ca0b2a4c212c212d0739e94a24df9 --rpc-url optimism - let rpc_tx = r#"{"blockHash":"0x9d86bb313ebeedf4f9f82bf8a19b426be656a365648a7c089b618771311db9f9","blockNumber":"0x798ad0b","hash":"0xbc9329afac05556497441e2b3ee4c5d4da7ca0b2a4c212c212d0739e94a24df9","transactionIndex":"0x0","type":"0x7e","nonce":"0x152ea95","input":"0x440a5e200000146b000f79c50000000000000003000000006725333f000000000141e287000000000000000000000000000000000000000000000000000000012439ee7e0000000000000000000000000000000000000000000000000000000063f363e973e96e7145ff001c81b9562cba7b6104eeb12a2bc4ab9f07c27d45cd81a986620000000000000000000000006887246668a3b87f54deb3b94ba47a6f63f32985","mint":"0x0","sourceHash":"0x04e9a69416471ead93b02f0c279ab11ca0b635db5c1726a56faf22623bafde52","r":"0x0","s":"0x0","v":"0x0","gas":"0xf4240","from":"0xdeaddeaddeaddeaddeaddeaddeaddeaddead0001","to":"0x4200000000000000000000000000000000000015","depositReceiptVersion":"0x1","value":"0x0","gasPrice":"0x0"}"#; + let rpc_tx = r#"{"blockHash":"0x9d86bb313ebeedf4f9f82bf8a19b426be656a365648a7c089b618771311db9f9","blockNumber":"0x798ad0b","hash":"0xbc9329afac05556497441e2b3ee4c5d4da7ca0b2a4c212c212d0739e94a24df9","transactionIndex":"0x0","type":"0x7e","nonce":"0x152ea95","input":"0x440a5e200000146b000f79c50000000000000003000000006725333f000000000141e287000000000000000000000000000000000000000000000000000000012439ee7e0000000000000000000000000000000000000000000000000000000063f363e973e96e7145ff001c81b9562cba7b6104eeb12a2bc4ab9f07c27d45cd81a986620000000000000000000000006887246668a3b87f54deb3b94ba47a6f63f32985","mint":"0x0","sourceHash":"0x04e9a69416471ead93b02f0c279ab11ca0b635db5c1726a56faf22623bafde52","r":"0x0","s":"0x0","v":"0x0","yParity":"0x0","gas":"0xf4240","from":"0xdeaddeaddeaddeaddeaddeaddeaddeaddead0001","to":"0x4200000000000000000000000000000000000015","depositReceiptVersion":"0x1","value":"0x0","gasPrice":"0x0"}"#; let tx = serde_json::from_str::(rpc_tx).unwrap(); @@ -305,5 +305,10 @@ mod tests { }; assert_eq!(tx.from, inner.from); assert_eq!(tx.deposit_nonce, Some(22211221)); + assert_eq!(tx.inner.effective_gas_price, Some(0)); + + let deserialized = serde_json::to_value(&tx).unwrap(); + let expected = serde_json::from_str::(rpc_tx).unwrap(); + similar_asserts::assert_eq!(deserialized, expected); } }