use blvm_consensus::block::genesis_block;
use blvm_consensus::types::{Block, Network};
pub fn mainnet_genesis() -> Block {
genesis_block(Network::Mainnet)
}
pub fn testnet_genesis() -> Block {
genesis_block(Network::Testnet)
}
pub fn regtest_genesis() -> Block {
genesis_block(Network::Regtest)
}
pub fn testnet4_genesis() -> Block {
genesis_block(Network::Testnet4)
}
pub fn signet_genesis() -> Block {
genesis_block(Network::Signet)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn testnet4_genesis_matches_core() {
let block = testnet4_genesis();
let hash = blvm_consensus::block::block_header_hash(&block.header);
let mut display = hash;
display.reverse();
assert_eq!(
hex_encode(&display),
"00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043"
);
let mut merkle = block.header.merkle_root;
merkle.reverse();
assert_eq!(
hex_encode(&merkle),
"7aa0a7ae1e223414cb807e40cd57e667b718e42aaf9306db9102fe28912b7b4e"
);
}
fn hex_encode(bytes: &[u8]) -> String {
const HEX: &[u8; 16] = b"0123456789abcdef";
let mut out = String::with_capacity(bytes.len() * 2);
for b in bytes {
out.push(HEX[(b >> 4) as usize] as char);
out.push(HEX[(b & 0xf) as usize] as char);
}
out
}
}