[−][src]Struct bitcoin::util::merkleblock::MerkleBlock
Data structure that represents a block header paired to a partial merkle tree.
NOTE: This assumes that the given Block has at least 1 transaction. If the Block has 0 txs, it will hit an assertion.
Fields
header: BlockHeader
The block header
txn: PartialMerkleTree
Transactions making up a partial merkle tree
Implementations
impl MerkleBlock
[src]
pub fn from_block(block: &Block, match_txids: &HashSet<Txid>) -> Self
[src]
Create a MerkleBlock from a block, that should contain proofs for the txids.
The block
is a full block containing the header and transactions and match_txids
is a
set containing the transaction ids that should be included in the partial merkle tree.
Examples
use bitcoin::hash_types::Txid; use bitcoin::hashes::hex::FromHex; use bitcoin::{Block, MerkleBlock}; // Block 80000 let block_bytes = Vec::from_hex("01000000ba8b9cda965dd8e536670f9ddec10e53aab14b20bacad2\ 7b9137190000000000190760b278fe7b8565fda3b968b918d5fd997f993b23674c0af3b6fde300b38f33\ a5914ce6ed5b1b01e32f5702010000000100000000000000000000000000000000000000000000000000\ 00000000000000ffffffff0704e6ed5b1b014effffffff0100f2052a01000000434104b68a50eaa0287e\ ff855189f949c1c6e5f58b37c88231373d8a59809cbae83059cc6469d65c665ccfd1cfeb75c6e8e19413\ bba7fbff9bc762419a76d87b16086eac000000000100000001a6b97044d03da79c005b20ea9c0e1a6d9d\ c12d9f7b91a5911c9030a439eed8f5000000004948304502206e21798a42fae0e854281abd38bacd1aee\ d3ee3738d9e1446618c4571d1090db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d\ 5d6cc8d25c6b241501ffffffff0100f2052a010000001976a914404371705fa9bd789a2fcd52d2c580b6\ 5d35549d88ac00000000").unwrap(); let block: Block = bitcoin::consensus::deserialize(&block_bytes).unwrap(); // Create a merkle block containing a single transaction let txid = Txid::from_hex( "5a4ebf66822b0b2d56bd9dc64ece0bc38ee7844a23ff1d7320a88c5fdb2ad3e2").unwrap(); let match_txids = vec![txid].into_iter().collect(); let mb = MerkleBlock::from_block(&block, &match_txids); // Authenticate and extract matched transaction ids let mut matches: Vec<Txid> = vec![]; let mut index: Vec<u32> = vec![]; assert!(mb.extract_matches(&mut matches, &mut index).is_ok()); assert_eq!(txid, matches[0]);
pub fn from_header_txids(
header: &BlockHeader,
block_txids: &[Txid],
match_txids: &HashSet<Txid>
) -> Self
[src]
header: &BlockHeader,
block_txids: &[Txid],
match_txids: &HashSet<Txid>
) -> Self
Create a MerkleBlock from the block's header and txids, that should contain proofs for match_txids.
The header
is the block header, block_txids
is the full list of txids included in the block and
match_txids
is a set containing the transaction ids that should be included in the partial merkle tree.
pub fn extract_matches(
&self,
matches: &mut Vec<Txid>,
indexes: &mut Vec<u32>
) -> Result<(), MerkleBlockError>
[src]
&self,
matches: &mut Vec<Txid>,
indexes: &mut Vec<u32>
) -> Result<(), MerkleBlockError>
Extract the matching txid's represented by this partial merkle tree and their respective indices within the partial tree. returns Ok(()) on success, or error in case of failure
Trait Implementations
impl Clone for MerkleBlock
[src]
pub fn clone(&self) -> MerkleBlock
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for MerkleBlock
[src]
impl Decodable for MerkleBlock
[src]
pub fn consensus_decode<D: Read>(mut d: D) -> Result<Self, Error>
[src]
impl Encodable for MerkleBlock
[src]
impl Eq for MerkleBlock
[src]
impl PartialEq<MerkleBlock> for MerkleBlock
[src]
pub fn eq(&self, other: &MerkleBlock) -> bool
[src]
pub fn ne(&self, other: &MerkleBlock) -> bool
[src]
impl StructuralEq for MerkleBlock
[src]
impl StructuralPartialEq for MerkleBlock
[src]
Auto Trait Implementations
impl RefUnwindSafe for MerkleBlock
[src]
impl Send for MerkleBlock
[src]
impl Sync for MerkleBlock
[src]
impl Unpin for MerkleBlock
[src]
impl UnwindSafe for MerkleBlock
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,