diff --git a/crates/primitives/src/proofs.rs b/crates/primitives/src/proofs.rs index ed659fe43..0751f9e18 100644 --- a/crates/primitives/src/proofs.rs +++ b/crates/primitives/src/proofs.rs @@ -36,12 +36,14 @@ impl Hasher for KeccakHasher { /// Calculate a transaction root. /// /// `(rlp(index), encoded(tx))` pairs. -pub fn calculate_transaction_root<'a>( - transactions: impl IntoIterator, -) -> H256 { +pub fn calculate_transaction_root(transactions: I) -> H256 +where + I: IntoIterator, + T: AsRef, +{ ordered_trie_root::(transactions.into_iter().map(|tx| { let mut tx_rlp = Vec::new(); - tx.encode_inner(&mut tx_rlp, false); + tx.as_ref().encode_inner(&mut tx_rlp, false); tx_rlp })) } diff --git a/crates/primitives/src/transaction/mod.rs b/crates/primitives/src/transaction/mod.rs index 94f42909d..c5a02eba9 100644 --- a/crates/primitives/src/transaction/mod.rs +++ b/crates/primitives/src/transaction/mod.rs @@ -540,6 +540,12 @@ pub struct TransactionSigned { pub transaction: Transaction, } +impl AsRef for TransactionSigned { + fn as_ref(&self) -> &Self { + self + } +} + // === impl TransactionSigned === impl TransactionSigned {