diff --git a/crates/primitives/src/transaction/mod.rs b/crates/primitives/src/transaction/mod.rs index c23d454f86..1edafaaa2c 100644 --- a/crates/primitives/src/transaction/mod.rs +++ b/crates/primitives/src/transaction/mod.rs @@ -1478,6 +1478,16 @@ impl<'a> arbitrary::Arbitrary<'a> for TransactionSigned { if tx_eip_4844.to != Address::default() { Some(()) } else { None }; } + #[cfg(feature = "optimism")] + // Both `Some(0)` and `None` values are encoded as empty string byte. This introduces + // ambiguity in roundtrip tests. Patch the mint value of deposit transaction here, so that + // it's `None` if zero. + if let Transaction::Deposit(ref mut tx_deposit) = transaction { + if tx_deposit.mint == Some(0) { + tx_deposit.mint = None; + } + } + let signature = Signature::arbitrary(u)?; #[cfg(feature = "optimism")]