bitcoin_blk_reader/
lib.rs

1
2use bitcoin_hashes::{
3    Sha256d,
4};
5
6pub mod bitcoin_rest;
7pub use bitcoin_rest::{
8    BitcoinRest,
9    BitcoinRestError,
10};
11pub mod blk_reader;
12pub use blk_reader::{
13    BlkReader,
14};
15
16pub fn block_to_block_hash(block: &[u8]) -> [u8; 32] {
17    if block.len() < 80 {
18        panic!("Block is too short.");
19    }
20    Sha256d::hash(&block[0..80]).to_byte_array()
21}
22
23#[cfg(test)]
24mod tests {
25    use super::*;
26    
27    #[test]
28    fn test_block_to_block_hash() {
29        let block = hex::decode("0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c").unwrap();
30        let mut hash = block_to_block_hash(&block);
31        hash.reverse();
32        assert_eq!(hex::encode(hash), "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f");
33    }
34    
35}