1use blvm_consensus::block::genesis_block;
6use blvm_consensus::types::{Block, Network};
7
8pub fn mainnet_genesis() -> Block {
10 genesis_block(Network::Mainnet)
11}
12
13pub fn testnet_genesis() -> Block {
15 genesis_block(Network::Testnet)
16}
17
18pub fn regtest_genesis() -> Block {
20 genesis_block(Network::Regtest)
21}
22
23pub fn testnet4_genesis() -> Block {
25 genesis_block(Network::Testnet4)
26}
27
28pub fn signet_genesis() -> Block {
30 genesis_block(Network::Signet)
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36
37 #[test]
38 fn testnet4_genesis_matches_core() {
39 let block = testnet4_genesis();
40 let hash = blvm_consensus::block::block_header_hash(&block.header);
41 let mut display = hash;
42 display.reverse();
43 assert_eq!(
44 hex_encode(&display),
45 "00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043"
46 );
47 let mut merkle = block.header.merkle_root;
48 merkle.reverse();
49 assert_eq!(
50 hex_encode(&merkle),
51 "7aa0a7ae1e223414cb807e40cd57e667b718e42aaf9306db9102fe28912b7b4e"
52 );
53 }
54
55 fn hex_encode(bytes: &[u8]) -> String {
56 const HEX: &[u8; 16] = b"0123456789abcdef";
57 let mut out = String::with_capacity(bytes.len() * 2);
58 for b in bytes {
59 out.push(HEX[(b >> 4) as usize] as char);
60 out.push(HEX[(b & 0xf) as usize] as char);
61 }
62 out
63 }
64}