Struct BlockHeader
pub struct BlockHeader {
pub version: i32,
pub prev_blockhash: BlockHash,
pub merkle_root: TxMerkleNode,
pub time: u32,
pub bits: u32,
pub nonce: u32,
}
Expand description
Bitcoin block header.
Contains all the block’s information except the actual transactions, but including a root of a merkle tree commiting to all transactions in the block.
§Bitcoin Core References
Fields§
§version: i32
Originally protocol version, but repurposed for soft-fork signaling.
§Relevant BIPs
prev_blockhash: BlockHash
Reference to the previous block in the chain.
merkle_root: TxMerkleNode
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.
Implementations§
§impl BlockHeader
impl BlockHeader
pub fn block_hash(&self) -> BlockHash
pub fn block_hash(&self) -> BlockHash
Returns the block hash.
pub fn target(&self) -> Uint256
pub fn target(&self) -> Uint256
Computes the target [0, T] that a blockhash must land in to be valid.
pub fn u256_from_compact_target(bits: u32) -> Uint256
pub fn u256_from_compact_target(bits: u32) -> Uint256
Computes the target value in Uint256
format, from a compact representation.
use bitcoin::blockdata::block::BlockHeader;
assert_eq!(0x1d00ffff,
BlockHeader::compact_target_from_u256(
&BlockHeader::u256_from_compact_target(0x1d00ffff)
)
);
pub fn compact_target_from_u256(value: &Uint256) -> u32
pub fn compact_target_from_u256(value: &Uint256) -> u32
Computes the target value in float format from Uint256 format.
pub fn difficulty(&self, network: Network) -> u64
pub fn difficulty(&self, network: Network) -> u64
Computes the popular “difficulty” measure for mining.
pub fn validate_pow(
&self,
required_target: &Uint256,
) -> Result<BlockHash, Error>
pub fn validate_pow( &self, required_target: &Uint256, ) -> Result<BlockHash, Error>
Checks that the proof-of-work for the block is valid, returning the block hash.
Trait Implementations§
§impl Clone for BlockHeader
impl Clone for BlockHeader
§fn clone(&self) -> BlockHeader
fn clone(&self) -> BlockHeader
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for BlockHeader
impl Debug for BlockHeader
§impl Decodable for BlockHeader
impl Decodable for BlockHeader
§fn consensus_decode_from_finite_reader<R>(
r: &mut R,
) -> Result<BlockHeader, Error>
fn consensus_decode_from_finite_reader<R>( r: &mut R, ) -> Result<BlockHeader, Error>
Self
from a size-limited reader. Read more§fn consensus_decode<R>(r: &mut R) -> Result<BlockHeader, Error>
fn consensus_decode<R>(r: &mut R) -> Result<BlockHeader, Error>
§impl Encodable for BlockHeader
impl Encodable for BlockHeader
§impl Hash for BlockHeader
impl Hash for BlockHeader
§impl Ord for BlockHeader
impl Ord for BlockHeader
§impl PartialEq for BlockHeader
impl PartialEq for BlockHeader
§impl PartialOrd for BlockHeader
impl PartialOrd for BlockHeader
impl Copy for BlockHeader
impl Eq for BlockHeader
impl StructuralPartialEq for BlockHeader
Auto Trait Implementations§
impl Freeze for BlockHeader
impl RefUnwindSafe for BlockHeader
impl Send for BlockHeader
impl Sync for BlockHeader
impl Unpin for BlockHeader
impl UnwindSafe for BlockHeader
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request