librustzcash/zcash_primitives/src/block.rs

43 lines
897 B
Rust
Raw Normal View History

2018-10-11 15:16:48 -07:00
use hex;
use std::fmt;
2018-10-11 15:14:46 -07:00
use std::ops::Deref;
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub struct BlockHash(pub [u8; 32]);
2018-10-11 15:16:48 -07:00
impl fmt::Display for BlockHash {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
let mut data = self.0.to_vec();
data.reverse();
formatter.write_str(&hex::encode(data))
}
}
2018-10-11 15:14:46 -07:00
/// A Zcash block header.
pub struct BlockHeader(BlockHeaderData);
impl Deref for BlockHeader {
type Target = BlockHeaderData;
fn deref(&self) -> &BlockHeaderData {
&self.0
}
}
pub struct BlockHeaderData {
pub version: i32,
pub prev_block: BlockHash,
pub merkle_root: [u8; 32],
pub final_sapling_root: [u8; 32],
pub time: u32,
pub bits: u32,
pub nonce: [u8; 32],
pub solution: Vec<u8>,
}
impl BlockHeaderData {
pub fn freeze(self) -> BlockHeader {
BlockHeader(self)
}
}