From af31017eb19cadc8072a5efb7cf3f596b2d40bab Mon Sep 17 00:00:00 2001 From: Elichai Turkel Date: Sun, 12 Apr 2020 19:00:55 +0300 Subject: [PATCH] Remove the cursor overhead, write is implemented on vec these days --- src/blockdata/transaction.rs | 3 +-- src/consensus/encode.rs | 6 +++--- src/util/misc.rs | 3 +-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/blockdata/transaction.rs b/src/blockdata/transaction.rs index f24d8727..1317032d 100644 --- a/src/blockdata/transaction.rs +++ b/src/blockdata/transaction.rs @@ -378,10 +378,9 @@ impl Transaction { _ => unreachable!() }; // hash the result - // TODO: Sanity assert that consensus_encode returned length matches the hashed length in the hasher. - let sighash_arr = endian::u32_to_array_le(sighash_u32); let mut engine = SigHash::engine(); tx.consensus_encode(&mut engine).unwrap(); + let sighash_arr = endian::u32_to_array_le(sighash_u32); sighash_arr.consensus_encode(&mut engine).unwrap(); SigHash::from_engine(engine) } diff --git a/src/consensus/encode.rs b/src/consensus/encode.rs index e3a38396..d6dbcb4b 100644 --- a/src/consensus/encode.rs +++ b/src/consensus/encode.rs @@ -149,10 +149,10 @@ impl From for Error { /// Encode an object into a vector pub fn serialize(data: &T) -> Vec { - let mut encoder = Cursor::new(vec![]); + let mut encoder = Vec::new(); let len = data.consensus_encode(&mut encoder).unwrap(); - assert_eq!(len, encoder.get_ref().len()); - encoder.into_inner() + assert_eq!(len, encoder.len()); + encoder } /// Encode an object into a hex-encoded string diff --git a/src/util/misc.rs b/src/util/misc.rs index 5a925e34..98e0f709 100644 --- a/src/util/misc.rs +++ b/src/util/misc.rs @@ -59,11 +59,10 @@ pub fn script_find_and_remove(haystack: &mut Vec, needle: &[u8]) -> usize { /// Hash message for signature using Bitcoin's message signing format pub fn signed_msg_hash(msg: &str) -> sha256d::Hash { - let msg_len = encode::VarInt(msg.len() as u64); - // TODO: Sanity assert that consensus_encode returned length matches the hashed length in the hasher. let mut engine = sha256d::Hash::engine(); engine.input(MSG_SIGN_PREFIX); + let msg_len = encode::VarInt(msg.len() as u64); msg_len.consensus_encode(&mut engine).unwrap(); engine.input(msg.as_bytes());