use bitcoin::hashes::{sha256d, Hash};
use std::fmt;
pub mod block;
pub mod header;
pub mod script;
pub mod tx;
pub mod varuint;
pub trait ToRaw {
fn to_bytes(&self) -> Vec<u8>;
}
pub struct Hashed<T> {
pub hash: sha256d::Hash,
pub value: T,
}
impl<T: ToRaw> Hashed<T> {
#[inline]
pub fn double_sha256(value: T) -> Hashed<T> {
let hash = sha256d::Hash::hash(&value.to_bytes());
Hashed { hash, value }
}
}
impl<T: fmt::Debug> fmt::Debug for Hashed<T> {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.debug_struct("Hashed")
.field("hash", &self.hash)
.field("value", &self.value)
.finish()
}
}
pub struct MerkleBranch {
pub hashes: Vec<[u8; 32]>,
pub side_mask: u32,
}
impl MerkleBranch {
#[inline]
pub fn new(hashes: Vec<[u8; 32]>, side_mask: u32) -> Self {
Self { hashes, side_mask }
}
}