diff --git a/Cargo.lock b/Cargo.lock index 6824e02f76..be698d2788 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2771,6 +2771,7 @@ dependencies = [ "revm", "rstest", "serde", + "serde_json", "sha2 0.10.8", ] diff --git a/crates/optimism/Cargo.toml b/crates/optimism/Cargo.toml index 195f19ee95..165e5c9c5e 100644 --- a/crates/optimism/Cargo.toml +++ b/crates/optimism/Cargo.toml @@ -38,6 +38,7 @@ indicatif.workspace = true rstest.workspace = true alloy-sol-types.workspace = true sha2.workspace = true +serde_json = { workspace = true, features = ["alloc"] } [features] default = ["std", "c-kzg", "secp256k1", "portable", "blst"] @@ -46,10 +47,14 @@ std = [ "revm/std", "alloy-sol-types/std", "once_cell/std", - "sha2/std" + "sha2/std", + "serde_json/std" ] hashbrown = ["revm/hashbrown"] -serde = ["dep:serde", "revm/serde"] +serde = [ + "dep:serde", + "revm/serde", +] portable = ["revm/portable"] dev = [ diff --git a/crates/optimism/src/transaction/deposit.rs b/crates/optimism/src/transaction/deposit.rs index fcd1b2a646..192041e527 100644 --- a/crates/optimism/src/transaction/deposit.rs +++ b/crates/optimism/src/transaction/deposit.rs @@ -19,3 +19,26 @@ impl DepositTransactionParts { } } } + +#[cfg(all(test, feature = "serde"))] +mod tests { + use super::*; + use revm::primitives::b256; + + #[test] + fn serialize_json_deposit_tx_parts() { + let response = r#"{"source_hash":"0xe927a1448525fb5d32cb50ee1408461a945ba6c39bd5cf5621407d500ecc8de9","mint":52,"is_system_transaction":false}"#; + + let deposit_tx_parts: DepositTransactionParts = serde_json::from_str(response).unwrap(); + assert_eq!( + deposit_tx_parts, + DepositTransactionParts { + source_hash: b256!( + "0xe927a1448525fb5d32cb50ee1408461a945ba6c39bd5cf5621407d500ecc8de9" + ), + mint: Some(0x34), + is_system_transaction: false, + } + ); + } +}