Final work on Txid and other hashes
Fixing issue with external dependency and hash_newtype macro implementation Reverting back to the bitcoin_hashes crate after new version release
This commit is contained in:
parent
d20ab1dbc4
commit
4746ccb88e
|
@ -295,7 +295,7 @@ impl Transaction {
|
||||||
/// this will give the correct txid (not including witnesses) while `bitcoin_hash`
|
/// this will give the correct txid (not including witnesses) while `bitcoin_hash`
|
||||||
/// will also hash witnesses.
|
/// will also hash witnesses.
|
||||||
pub fn txid(&self) -> Txid {
|
pub fn txid(&self) -> Txid {
|
||||||
let mut enc = sha256d::Hash::engine();
|
let mut enc = Txid::engine();
|
||||||
self.version.consensus_encode(&mut enc).unwrap();
|
self.version.consensus_encode(&mut enc).unwrap();
|
||||||
self.input.consensus_encode(&mut enc).unwrap();
|
self.input.consensus_encode(&mut enc).unwrap();
|
||||||
self.output.consensus_encode(&mut enc).unwrap();
|
self.output.consensus_encode(&mut enc).unwrap();
|
||||||
|
@ -440,7 +440,7 @@ impl Transaction {
|
||||||
|
|
||||||
impl BitcoinHash<Txid> for Transaction {
|
impl BitcoinHash<Txid> for Transaction {
|
||||||
fn bitcoin_hash(&self) -> Txid {
|
fn bitcoin_hash(&self) -> Txid {
|
||||||
let mut enc = sha256d::Hash::engine();
|
let mut enc = Txid::engine();
|
||||||
self.consensus_encode(&mut enc).unwrap();
|
self.consensus_encode(&mut enc).unwrap();
|
||||||
Txid::from_engine(enc)
|
Txid::from_engine(enc)
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,9 @@ use std::io;
|
||||||
|
|
||||||
use consensus::encode::{Encodable, Decodable, Error};
|
use consensus::encode::{Encodable, Decodable, Error};
|
||||||
use hashes::{sha256, sha256d, hash160, Hash};
|
use hashes::{sha256, sha256d, hash160, Hash};
|
||||||
|
|
||||||
|
// Do not remove: required in order to get hash types implementation macros to work correctly
|
||||||
|
#[allow(unused_imports)]
|
||||||
use hashes::hex::{ToHex, FromHex};
|
use hashes::hex::{ToHex, FromHex};
|
||||||
|
|
||||||
macro_rules! impl_hashencode {
|
macro_rules! impl_hashencode {
|
||||||
|
|
|
@ -375,8 +375,8 @@ mod test {
|
||||||
NetworkMessage::GetAddr,
|
NetworkMessage::GetAddr,
|
||||||
NetworkMessage::Ping(15),
|
NetworkMessage::Ping(15),
|
||||||
NetworkMessage::Pong(23),
|
NetworkMessage::Pong(23),
|
||||||
NetworkMessage::GetCFilters(GetCFilters{filter_type: 2, start_height: 52, stop_hash: hash([42u8; 32])}),
|
NetworkMessage::GetCFilters(GetCFilters{filter_type: 2, start_height: 52, stop_hash: hash([42u8; 32]).into()}),
|
||||||
NetworkMessage::CFilter(CFilter{filter_type: 7, block_hash: hash([25u8; 32]), filter: vec![1,2,3]}),
|
NetworkMessage::CFilter(CFilter{filter_type: 7, block_hash: hash([25u8; 32]).into(), filter: vec![1,2,3]}),
|
||||||
NetworkMessage::GetCFHeaders(GetCFHeaders{filter_type: 4, start_height: 102, stop_hash: hash([47u8; 32])}),
|
NetworkMessage::GetCFHeaders(GetCFHeaders{filter_type: 4, start_height: 102, stop_hash: hash([47u8; 32])}),
|
||||||
NetworkMessage::CFHeaders(CFHeaders{filter_type: 13, stop_hash: hash([53u8; 32]), previous_filter: hash([12u8; 32]), filter_hashes: vec![hash([4u8; 32]), hash([12u8; 32])]}),
|
NetworkMessage::CFHeaders(CFHeaders{filter_type: 13, stop_hash: hash([53u8; 32]), previous_filter: hash([12u8; 32]), filter_hashes: vec![hash([4u8; 32]), hash([12u8; 32])]}),
|
||||||
NetworkMessage::GetCFCheckpt(GetCFCheckpt{filter_type: 17, stop_hash: hash([25u8; 32])}),
|
NetworkMessage::GetCFCheckpt(GetCFCheckpt{filter_type: 17, stop_hash: hash([25u8; 32])}),
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
//!
|
//!
|
||||||
//! BIP157 Client Side Block Filtering network messages
|
//! BIP157 Client Side Block Filtering network messages
|
||||||
//!
|
//!
|
||||||
|
|
||||||
|
use hash_types::BlockHash;
|
||||||
use hashes::sha256d;
|
use hashes::sha256d;
|
||||||
|
|
||||||
#[derive(PartialEq, Eq, Clone, Debug)]
|
#[derive(PartialEq, Eq, Clone, Debug)]
|
||||||
|
@ -11,7 +13,7 @@ pub struct GetCFilters {
|
||||||
/// The height of the first block in the requested range
|
/// The height of the first block in the requested range
|
||||||
pub start_height: u32,
|
pub start_height: u32,
|
||||||
/// The hash of the last block in the requested range
|
/// The hash of the last block in the requested range
|
||||||
pub stop_hash: sha256d::Hash,
|
pub stop_hash: BlockHash,
|
||||||
}
|
}
|
||||||
impl_consensus_encoding!(GetCFilters, filter_type, start_height, stop_hash);
|
impl_consensus_encoding!(GetCFilters, filter_type, start_height, stop_hash);
|
||||||
|
|
||||||
|
@ -21,7 +23,7 @@ pub struct CFilter {
|
||||||
/// Byte identifying the type of filter being returned
|
/// Byte identifying the type of filter being returned
|
||||||
pub filter_type: u8,
|
pub filter_type: u8,
|
||||||
/// Block hash of the Bitcoin block for which the filter is being returned
|
/// Block hash of the Bitcoin block for which the filter is being returned
|
||||||
pub block_hash: sha256d::Hash,
|
pub block_hash: BlockHash,
|
||||||
/// The serialized compact filter for this block
|
/// The serialized compact filter for this block
|
||||||
pub filter: Vec<u8>,
|
pub filter: Vec<u8>,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue