Struct bitcoin::util::merkleblock::MerkleBlock[][src]

pub struct MerkleBlock {
    pub header: BlockHeader,
    pub txn: PartialMerkleTree,
}
Expand description

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

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]);

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.

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Decode an object with a well-defined format

Encode an object with a well-defined format. Returns the number of bytes written on success. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.