[][src]Struct bitcoin::blockdata::block::BlockHeader

pub struct BlockHeader {
    pub version: u32,
    pub prev_blockhash: Sha256dHash,
    pub merkle_root: Sha256dHash,
    pub time: u32,
    pub bits: u32,
    pub nonce: u32,
    pub coinbase_txn: Transaction,
    pub block_hash: Sha256dHash,
    pub coinbase_branch_hashes: Vec<Sha256dHash>,
    pub coinbase_branch_side_mask: u32,
    pub blockchain_branch_hashes: Vec<Sha256dHash>,
    pub blockchain_branch_side_mask: u32,
    pub parent_version: u32,
    pub parent_prev_blockhash: Sha256dHash,
    pub parent_merkle_root: Sha256dHash,
    pub parent_time: u32,
    pub parent_bits: u32,
    pub parent_nonce: u32,
}

A block header, which contains all the block's information except the actual transactions

Fields

version: u32

The protocol version. Should always be 1.

prev_blockhash: Sha256dHash

Reference to the previous block in the chain

merkle_root: Sha256dHash

The root hash of the merkle tree of transactions in the block

time: u32

The timestamp of the block, as claimed by the miner

bits: u32

The target value below which the blockhash must lie, encoded as a a float (with well-defined rounding, of course)

nonce: u32

The nonce, selected to obtain a low enough blockhash

coinbase_txn: Transaction

Coinbase transaction that is in the parent block, linking the AuxPOW block to its parent block

block_hash: Sha256dHash

Hash of the parent_block header

coinbase_branch_hashes: Vec<Sha256dHash>

The merkle branch linking the coinbase_txn to the parent block's merkle_root

coinbase_branch_side_mask: u32

Bitmask of which side of the merkle hash function the branch_hash element should go on. Zero means it goes on the right, One means on the left. It is equal to the index of the starting hash within the widest level of the merkle tree for this merkle branch.

blockchain_branch_hashes: Vec<Sha256dHash>

The merkle branch linking this auxiliary blockchain to the others, when used in a merged mining setup with multiple auxiliary chains

blockchain_branch_side_mask: u32

Bitmask of which side of the merkle hash function the branch_hash element should go on. Zero means it goes on the right, One means on the left. It is equal to the index of the starting hash within the widest level of the merkle tree for this merkle branch.

parent_version: u32

Parent block header The protocol version. Should always be 1.

parent_prev_blockhash: Sha256dHash

Reference to the previous block in the chain

parent_merkle_root: Sha256dHash

The root hash of the merkle tree of transactions in the block

parent_time: u32

The timestamp of the block, as claimed by the miner

parent_bits: u32

The target value below which the blockhash must lie, encoded as a a float (with well-defined rounding, of course)

parent_nonce: u32

The nonce, selected to obtain a low enough blockhash

Methods

impl BlockHeader[src]

pub fn target(&self) -> Uint256[src]

Computes the target [0, T] that a blockhash must land in to be valid

pub fn compact_target_from_u256(value: &Uint256) -> u32[src]

Computes the target value in float format from Uint256 format.

pub fn difficulty(&self, network: Network) -> u64[src]

Compute the popular "difficulty" measure for mining

pub fn spv_validate(&self, required_target: &Uint256) -> Result<(), Error>[src]

Performs an SPV validation of a block, which confirms that the proof-of-work is correct, but does not verify that the transactions are valid or encoded correctly.

pub fn work(&self) -> Uint256[src]

Returns the total work of the block

Trait Implementations

impl BitcoinHash for BlockHeader[src]

impl<S: Encoder> Encodable<S> for BlockHeader[src]

impl<D: Decoder> Decodable<D> for BlockHeader[src]

impl Eq for BlockHeader[src]

impl Clone for BlockHeader[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl PartialEq<BlockHeader> for BlockHeader[src]

impl<'_> From<&'_ BlockHeader> for BaseHeader[src]

impl Debug for BlockHeader[src]

Auto Trait Implementations

impl Send for BlockHeader

impl Sync for BlockHeader

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = !

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

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

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

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]