checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" dependencies = [ "bitcoin_hashes 0.11.0", "serde", "unicode-normalization", ] [[package]] name = "bitcoin" version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e99ff7289b20a7385f66a0feda78af2fc119d28fb56aea8886a9cd0a4abdd75" dependencies = [ "bech32", "bitcoin-private", "bitcoin_hashes 0.12.0", "hex_lit", "secp256k1", "serde", ] [[package]] name = "bitcoin-private" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" [[package]] name = "bitcoin_hashes" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" [[package]] name = "bitcoin_hashes" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501" #44,990,513text bitcoincore_rpc::jsonrpc::error::RpcError { code: -8, .. }, ))) => Ok(None), Err(bitcoincore_rpc::Error::JsonRpc(bitcoincore_rpc::jsonrpc::error::Error::Rpc( bitcoincore_rpc::jsonrpc::error::RpcError { message, .. }, ))) if message.ends_with("not found") => { Ok(None) } Err(err) => Err(err.into()), } } } pub(crate) struct Index { client: Client, database: Database, durability: redb::Durability, first_inscription_height: u32, genesis_block_coinbase_transaction: Transaction, genesis_block_coinbase_txid: Txid, height_limit: Option<u32>, index_runes: bool, index_sats: bool, options: Options, path: PathBuf, unrecoverably_reorged: AtomicBool, } impl Index { pub(crate) fn open(options: &Options) -> Result<Self> { let client = options.bitcoin_rpc_client()?; let path = if let Some(path) = &options.index { path.clone() } else { options.data_dir()?.join("index.redb") }; if let Err(err) = fs::create_dir_all(path.parent().unwrap()) { #44,990,118textdependencies = [ "anyhow", "async-channel", "base64 0.13.1", "futures-lite", "infer", "pin-project-lite", "rand 0.7.3", "serde", "serde_json", "serde_qs", "serde_urlencoded", "url", ] [[package]] name = "httparse" version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "humantime" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", "futures-core", #44,986,629textuse super::*; fn target_as_block_hash(target: bitcoin::Target) -> BlockHash { BlockHash::from_raw_hash(Hash::from_byte_array(target.to_le_bytes())) } #[derive(Boilerplate)] pub(crate) struct BlockHtml { hash: BlockHash, target: BlockHash, best_height: Height, block: Block, height: Height, inscription_count: usize, featured_inscriptions: Vec<InscriptionId>, } impl BlockHtml { pub(crate) fn new( block: Block, height: Height, best_height: Height, inscription_count: usize, featured_inscriptions: Vec<InscriptionId>, ) -> Self { Self { hash: block.header.block_hash(), target: target_as_block_hash(block.header.target()), block, height, best_height, inscription_count, featured_inscriptions, } } } #[derive(Debug, PartialEq, Serialize, Deserialize)] pub struct BlockJson { pub hash: BlockHash, pub target: BlockHash, pub best_height: u32, pub height: u32, pub inscriptions: Vec<InscriptionId>, } impl BlockJson { pub(crate) fn new(#44,986,627textInscription #41581469#41,581,469pngInscription #41574015#41,574,015pngtransfer5.x.ai#16,630,789brc-20transfer10.x.ai#16,628,839brc-20mint1.x.ai#16,622,371brc-20mint1.x.ai#16,622,344brc-20mint1.x.ai#16,622,336brc-20mint1.x.ai#16,622,320brc-20mint1.x.ai#16,622,311brc-20mint1.x.ai#16,622,248brc-20mint1.x.ai#16,622,192brc-20mint1.x.ai#16,622,177brc-20mint1.x.ai#16,622,172brc-20mint1.x.ai#16,622,171brc-20transfer48.bxnz#14,644,145brc-20