@@ -13,7 +13,6 @@ use std::convert::TryInto;
13
13
use std:: fmt;
14
14
use std:: io:: { Read , Write } ;
15
15
use std:: marker:: PhantomData ;
16
- use std:: ops:: Deref ;
17
16
use std:: sync:: Arc ;
18
17
use std:: sync:: RwLock ;
19
18
@@ -22,9 +21,9 @@ use rand::{thread_rng, Rng};
22
21
23
22
use rocksdb:: { Direction , IteratorMode , ReadOptions , WriteBatch , DB } ;
24
23
24
+ use bitcoin:: blockdata:: constants:: genesis_block;
25
25
use bitcoin:: consensus:: { deserialize, encode:: VarInt , serialize, Decodable , Encodable } ;
26
26
use bitcoin:: hash_types:: { FilterHash , FilterHeader } ;
27
- use bitcoin:: hashes:: hex:: FromHex ;
28
27
use bitcoin:: hashes:: Hash ;
29
28
use bitcoin:: util:: bip158:: BlockFilter ;
30
29
use bitcoin:: util:: uint:: Uint256 ;
@@ -33,17 +32,8 @@ use bitcoin::BlockHash;
33
32
use bitcoin:: BlockHeader ;
34
33
use bitcoin:: Network ;
35
34
36
- use lazy_static:: lazy_static;
37
-
38
35
use super :: CompactFiltersError ;
39
36
40
- lazy_static ! {
41
- static ref MAINNET_GENESIS : Block = deserialize( & Vec :: <u8 >:: from_hex( "0100000000000000000000000000000000000000000000000000000000000000000000003BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4A29AB5F49FFFF001D1DAC2B7C0101000000010000000000000000000000000000000000000000000000000000000000000000FFFFFFFF4D04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73FFFFFFFF0100F2052A01000000434104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC00000000" ) . unwrap( ) ) . unwrap( ) ;
42
- static ref TESTNET_GENESIS : Block = deserialize( & Vec :: <u8 >:: from_hex( "0100000000000000000000000000000000000000000000000000000000000000000000003BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4ADAE5494DFFFF001D1AA4AE180101000000010000000000000000000000000000000000000000000000000000000000000000FFFFFFFF4D04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73FFFFFFFF0100F2052A01000000434104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC00000000" ) . unwrap( ) ) . unwrap( ) ;
43
- static ref REGTEST_GENESIS : Block = deserialize( & Vec :: <u8 >:: from_hex( "0100000000000000000000000000000000000000000000000000000000000000000000003BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4ADAE5494DFFFF7F20020000000101000000010000000000000000000000000000000000000000000000000000000000000000FFFFFFFF4D04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73FFFFFFFF0100F2052A01000000434104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC00000000" ) . unwrap( ) ) . unwrap( ) ;
44
- static ref SIGNET_GENESIS : Block = deserialize( & Vec :: <u8 >:: from_hex( "0100000000000000000000000000000000000000000000000000000000000000000000003BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4A008F4D5FAE77031E8AD222030101000000010000000000000000000000000000000000000000000000000000000000000000FFFFFFFF4D04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73FFFFFFFF0100F2052A01000000434104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC00000000" ) . unwrap( ) ) . unwrap( ) ;
45
- }
46
-
47
37
pub trait StoreType : Default + fmt:: Debug { }
48
38
49
39
#[ derive( Default , Debug ) ]
@@ -224,12 +214,7 @@ pub struct ChainStore<T: StoreType> {
224
214
225
215
impl ChainStore < Full > {
226
216
pub fn new ( store : DB , network : Network ) -> Result < Self , CompactFiltersError > {
227
- let genesis = match network {
228
- Network :: Bitcoin => MAINNET_GENESIS . deref ( ) ,
229
- Network :: Testnet => TESTNET_GENESIS . deref ( ) ,
230
- Network :: Regtest => REGTEST_GENESIS . deref ( ) ,
231
- Network :: Signet => SIGNET_GENESIS . deref ( ) ,
232
- } ;
217
+ let genesis = genesis_block ( network) ;
233
218
234
219
let cf_name = "default" . to_string ( ) ;
235
220
let cf_handle = store. cf_handle ( & cf_name) . unwrap ( ) ;
@@ -647,14 +632,9 @@ impl CfStore {
647
632
filter_type,
648
633
} ;
649
634
650
- let genesis = match headers_store. network {
651
- Network :: Bitcoin => MAINNET_GENESIS . deref ( ) ,
652
- Network :: Testnet => TESTNET_GENESIS . deref ( ) ,
653
- Network :: Regtest => REGTEST_GENESIS . deref ( ) ,
654
- Network :: Signet => SIGNET_GENESIS . deref ( ) ,
655
- } ;
635
+ let genesis = genesis_block ( headers_store. network ) ;
656
636
657
- let filter = BlockFilter :: new_script_filter ( genesis, |utxo| {
637
+ let filter = BlockFilter :: new_script_filter ( & genesis, |utxo| {
658
638
Err ( bitcoin:: util:: bip158:: Error :: UtxoMissing ( * utxo) )
659
639
} ) ?;
660
640
let first_key = StoreEntry :: CFilterTable ( ( filter_type, Some ( 0 ) ) ) . get_key ( ) ;
0 commit comments