From e6f2d029fa9708f98599c1bd4ef74d232b111c5a Mon Sep 17 00:00:00 2001 From: Shobit Beltangdy Date: Sun, 18 Sep 2022 12:50:24 -0700 Subject: [PATCH] Remove genesis_block lazy initialization This commit contains a change to address issue #752 cargo test runs successfully. --- Cargo.toml | 3 +-- src/blockchain/compact_filters/store.rs | 28 ++++--------------------- src/lib.rs | 3 --- 3 files changed, 5 insertions(+), 29 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9a47f3f2..952fd18a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,6 @@ async-trait = { version = "0.1", optional = true } rocksdb = { version = "0.14", default-features = false, features = ["snappy"], optional = true } cc = { version = ">=1.0.64", optional = true } socks = { version = "0.3", optional = true } -lazy_static = { version = "1.4", optional = true } hwi = { version = "0.2.2", optional = true } bip39 = { version = "1.0.1", optional = true } @@ -57,7 +56,7 @@ verify = ["bitcoinconsensus"] default = ["key-value-db", "electrum"] sqlite = ["rusqlite", "ahash"] sqlite-bundled = ["sqlite", "rusqlite/bundled"] -compact_filters = ["rocksdb", "socks", "lazy_static", "cc"] +compact_filters = ["rocksdb", "socks", "cc"] key-value-db = ["sled"] all-keys = ["keys-bip39"] keys-bip39 = ["bip39"] diff --git a/src/blockchain/compact_filters/store.rs b/src/blockchain/compact_filters/store.rs index eeca28c0..bb42a9c0 100644 --- a/src/blockchain/compact_filters/store.rs +++ b/src/blockchain/compact_filters/store.rs @@ -13,7 +13,6 @@ use std::convert::TryInto; use std::fmt; use std::io::{Read, Write}; use std::marker::PhantomData; -use std::ops::Deref; use std::sync::Arc; use std::sync::RwLock; @@ -22,9 +21,9 @@ use rand::{thread_rng, Rng}; use rocksdb::{Direction, IteratorMode, ReadOptions, WriteBatch, DB}; +use bitcoin::blockdata::constants::genesis_block; use bitcoin::consensus::{deserialize, encode::VarInt, serialize, Decodable, Encodable}; use bitcoin::hash_types::{FilterHash, FilterHeader}; -use bitcoin::hashes::hex::FromHex; use bitcoin::hashes::Hash; use bitcoin::util::bip158::BlockFilter; use bitcoin::util::uint::Uint256; @@ -33,17 +32,8 @@ use bitcoin::BlockHash; use bitcoin::BlockHeader; use bitcoin::Network; -use lazy_static::lazy_static; - use super::CompactFiltersError; -lazy_static! { - static ref MAINNET_GENESIS: Block = deserialize(&Vec::::from_hex("0100000000000000000000000000000000000000000000000000000000000000000000003BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4A29AB5F49FFFF001D1DAC2B7C0101000000010000000000000000000000000000000000000000000000000000000000000000FFFFFFFF4D04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73FFFFFFFF0100F2052A01000000434104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC00000000").unwrap()).unwrap(); - static ref TESTNET_GENESIS: Block = deserialize(&Vec::::from_hex("0100000000000000000000000000000000000000000000000000000000000000000000003BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4ADAE5494DFFFF001D1AA4AE180101000000010000000000000000000000000000000000000000000000000000000000000000FFFFFFFF4D04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73FFFFFFFF0100F2052A01000000434104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC00000000").unwrap()).unwrap(); - static ref REGTEST_GENESIS: Block = deserialize(&Vec::::from_hex("0100000000000000000000000000000000000000000000000000000000000000000000003BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4ADAE5494DFFFF7F20020000000101000000010000000000000000000000000000000000000000000000000000000000000000FFFFFFFF4D04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73FFFFFFFF0100F2052A01000000434104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC00000000").unwrap()).unwrap(); - static ref SIGNET_GENESIS: Block = deserialize(&Vec::::from_hex("0100000000000000000000000000000000000000000000000000000000000000000000003BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4A008F4D5FAE77031E8AD222030101000000010000000000000000000000000000000000000000000000000000000000000000FFFFFFFF4D04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73FFFFFFFF0100F2052A01000000434104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC00000000").unwrap()).unwrap(); -} - pub trait StoreType: Default + fmt::Debug {} #[derive(Default, Debug)] @@ -224,12 +214,7 @@ pub struct ChainStore { impl ChainStore { pub fn new(store: DB, network: Network) -> Result { - let genesis = match network { - Network::Bitcoin => MAINNET_GENESIS.deref(), - Network::Testnet => TESTNET_GENESIS.deref(), - Network::Regtest => REGTEST_GENESIS.deref(), - Network::Signet => SIGNET_GENESIS.deref(), - }; + let genesis = genesis_block(network); let cf_name = "default".to_string(); let cf_handle = store.cf_handle(&cf_name).unwrap(); @@ -647,14 +632,9 @@ impl CfStore { filter_type, }; - let genesis = match headers_store.network { - Network::Bitcoin => MAINNET_GENESIS.deref(), - Network::Testnet => TESTNET_GENESIS.deref(), - Network::Regtest => REGTEST_GENESIS.deref(), - Network::Signet => SIGNET_GENESIS.deref(), - }; + let genesis = genesis_block(headers_store.network); - let filter = BlockFilter::new_script_filter(genesis, |utxo| { + let filter = BlockFilter::new_script_filter(&genesis, |utxo| { Err(bitcoin::util::bip158::Error::UtxoMissing(*utxo)) })?; let first_key = StoreEntry::CFilterTable((filter_type, Some(0))).get_key(); diff --git a/src/lib.rs b/src/lib.rs index 81fd28ea..bed048cf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -231,9 +231,6 @@ extern crate async_trait; #[macro_use] extern crate bdk_macros; -#[cfg(feature = "compact_filters")] -extern crate lazy_static; - #[cfg(feature = "rpc")] pub extern crate bitcoincore_rpc;