From e497577dde9aeee4ac0f7d534648ceaf7037734c Mon Sep 17 00:00:00 2001 From: Riccardo Casatta Date: Mon, 13 Jan 2025 18:07:39 +0100 Subject: [PATCH] Bump bitcoin and elements dep --- Cargo.lock | 129 +++++++++++++++++++++----------- Cargo.toml | 9 +-- src/bin/popular-scripts.rs | 2 +- src/bin/tx-fingerprint-stats.rs | 2 +- src/daemon.rs | 2 +- src/electrum/server.rs | 2 +- src/new_index/precache.rs | 2 +- src/new_index/schema.rs | 10 ++- src/rest.rs | 10 +-- src/util/script.rs | 3 +- src/util/transaction.rs | 2 +- 11 files changed, 107 insertions(+), 66 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1f95506c1..fc38b0fff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -85,6 +85,12 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "ascii" version = "1.1.0" @@ -129,6 +135,16 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" +[[package]] +name = "base58ck" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8d66485a3a2ea485c1913c4572ce0256067a5377ac8c75c4960e1cda98605f" +dependencies = [ + "bitcoin-internals", + "bitcoin_hashes 0.14.0", +] + [[package]] name = "base64" version = "0.10.1" @@ -179,9 +195,9 @@ checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" [[package]] name = "bech32" -version = "0.10.0-beta" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98f7eed2b2781a6f0b5c903471d48e15f56fb4e1165df8a9a2337fd1a59d45ea" +checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" [[package]] name = "bincode" @@ -227,28 +243,37 @@ dependencies = [ [[package]] name = "bitcoin" -version = "0.31.2" +version = "0.32.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c85783c2fe40083ea54a33aa2f0ba58831d90fcd190f5bdc47e74e84d2a96ae" +checksum = "ce6bc65742dea50536e35ad42492b234c27904a27f0abdcbce605015cb4ea026" dependencies = [ - "bech32 0.10.0-beta", + "base58ck", + "bech32 0.11.0", "bitcoin-internals", - "bitcoin_hashes 0.13.0", + "bitcoin-io", + "bitcoin-units", + "bitcoin_hashes 0.14.0", "hex-conservative", "hex_lit", - "secp256k1 0.28.2", + "secp256k1 0.29.1", "serde", ] [[package]] name = "bitcoin-internals" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" +checksum = "30bdbe14aa07b06e6cfeffc529a1f099e5fbe249524f8125358604df99a4bed2" dependencies = [ "serde", ] +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + [[package]] name = "bitcoin-private" version = "0.1.0" @@ -261,6 +286,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c188654f9dce3bc6ce1bfa9c49777ad514bcad37e421b5f53e9d0ee10603f34" +[[package]] +name = "bitcoin-units" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5285c8bcaa25876d07f37e3d30c303f2609179716e11d688f51e8f1fe70063e2" +dependencies = [ + "bitcoin-internals", + "serde", +] + [[package]] name = "bitcoin_hashes" version = "0.10.0" @@ -281,23 +316,23 @@ dependencies = [ [[package]] name = "bitcoin_hashes" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" dependencies = [ - "bitcoin-internals", + "bitcoin-io", "hex-conservative", "serde", ] [[package]] name = "bitcoincore-rpc" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb70725a621848c83b3809913d5314c0d20ca84877d99dd909504b564edab00" +checksum = "aedd23ae0fd321affb4bbbc36126c6f49a32818dc6b979395d24da8c9d4e80ee" dependencies = [ "bitcoincore-rpc-json", - "jsonrpc 0.14.1", + "jsonrpc 0.18.0", "log", "serde", "serde_json", @@ -305,23 +340,23 @@ dependencies = [ [[package]] name = "bitcoincore-rpc-json" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "856ffbee2e492c23bca715d72ea34aae80d58400f2bda26a82015d6bc2ec3662" +checksum = "d8909583c5fab98508e80ef73e5592a651c954993dc6b7739963257d19f0e71a" dependencies = [ - "bitcoin 0.31.2", + "bitcoin 0.32.5", "serde", "serde_json", ] [[package]] name = "bitcoind" -version = "0.34.3" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2542fac51d8cd8fce6109f4a3ffd1acfdaa3394c36d4a8207af15b8b0540e2fc" +checksum = "7ce6620b7c942dbe28cc49c21d95e792feb9ffd95a093205e7875ccfa69c2925" dependencies = [ "anyhow", - "bitcoin_hashes 0.13.0", + "bitcoin_hashes 0.14.0", "bitcoincore-rpc", "flate2", "log", @@ -779,7 +814,7 @@ dependencies = [ "arrayref", "base64 0.22.0", "bincode", - "bitcoin 0.31.2", + "bitcoin 0.32.5", "bitcoin-test-data", "bitcoind", "clap 2.34.0", @@ -792,7 +827,6 @@ dependencies = [ "elementsd", "error-chain", "glob", - "hex-conservative", "hyper", "hyperlocal", "itertools 0.12.1", @@ -852,11 +886,12 @@ dependencies = [ [[package]] name = "elements" -version = "0.24.1" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6b8388053196e6b2702a45418078a654680ce9e1fd91799f51f67a40118ff5" +checksum = "e8ab681914c4d96235d4c30d6a758f4aeb4eace26837f4995ca84bf7ea3189ea" dependencies = [ - "bitcoin 0.31.2", + "bech32 0.11.0", + "bitcoin 0.32.5", "secp256k1-zkp", "serde", "serde_json", @@ -864,9 +899,9 @@ dependencies = [ [[package]] name = "elementsd" -version = "0.9.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b08013ae0b60e4a3ac9d126e230338dec55575ddf7811aeaebb096f7c3abbf" +checksum = "f46bf79f591aad9ce61b72839ba640a8721c8293c2d706b989f9f14fc205efda" dependencies = [ "bitcoin_hashes 0.12.0", "bitcoind", @@ -1107,9 +1142,12 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-conservative" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ed443af458ccb6d81c1e7e661545f94d3176752fb1df2f543b902a1e0f51e2" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] [[package]] name = "hex_lit" @@ -1335,11 +1373,12 @@ dependencies = [ [[package]] name = "jsonrpc" -version = "0.14.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8128f36b47411cd3f044be8c1f5cc0c9e24d1d1bfdc45f0a57897b32513053f2" +checksum = "3662a38d341d77efecb73caf01420cfa5aa63c0253fd7bc05289ef9f6616e1bf" dependencies = [ "base64 0.13.1", + "minreq", "serde", "serde_json", ] @@ -1499,6 +1538,8 @@ dependencies = [ "once_cell", "rustls 0.21.10", "rustls-webpki", + "serde", + "serde_json", "webpki-roots 0.25.4", ] @@ -2140,13 +2181,13 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.28.2" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ - "bitcoin_hashes 0.13.0", + "bitcoin_hashes 0.14.0", "rand 0.8.5", - "secp256k1-sys 0.9.2", + "secp256k1-sys 0.10.1", "serde", ] @@ -2161,34 +2202,34 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.9.2" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" dependencies = [ "cc", ] [[package]] name = "secp256k1-zkp" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e48ef9c98bfbcb98bd15693ffa19676cb3e29426b75eda8b73c05cdd7959f8" +checksum = "52a44aed3002b5ae975f8624c5df3a949cfbf00479e18778b6058fcd213b76e3" dependencies = [ "bitcoin-private", "rand 0.8.5", - "secp256k1 0.28.2", + "secp256k1 0.29.1", "secp256k1-zkp-sys", "serde", ] [[package]] name = "secp256k1-zkp-sys" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ead52f43074bae2ddbd1e0e66e6b170135e76117f5ea9916f33d7bd0b36e29" +checksum = "57f08b2d0b143a22e07f798ae4f0ab20d5590d7c68e0d090f2088a48a21d1654" dependencies = [ "cc", - "secp256k1-sys 0.9.2", + "secp256k1-sys 0.10.1", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index a4fcd78b2..b60988053 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,14 +22,13 @@ arraydeque = "0.5.1" arrayref = "0.3.6" base64 = "0.22" bincode = "1.3.1" -bitcoin = { version = "0.31", features = ["serde"] } +bitcoin = { version = "0.32", features = ["serde"] } clap = "2.33.3" crossbeam-channel = "0.5.0" dirs = "5.0.1" -elements = { version = "0.24", features = ["serde"], optional = true } +elements = { version = "0.25", features = ["serde"], optional = true } error-chain = "0.12.4" glob = "0.3" -hex = { package = "hex-conservative", version = "0.1.1" } itertools = "0.12" lazy_static = "1.3.0" libc = "0.2.81" @@ -61,8 +60,8 @@ zmq = "0.10.0" [dev-dependencies] -bitcoind = { version = "0.34.3", features = ["25_0"] } -elementsd = { version = "0.9.2", features = ["22_1_1"] } +bitcoind = { version = "0.36", features = ["25_0"] } +elementsd = { version = "0.11", features = ["22_1_1"] } electrumd = { version = "0.1.0", features = ["4_5_4"] } ureq = { version = "2.9", default-features = false, features = ["json"] } tempfile = "3.10" diff --git a/src/bin/popular-scripts.rs b/src/bin/popular-scripts.rs index 78b330628..ef550fce5 100644 --- a/src/bin/popular-scripts.rs +++ b/src/bin/popular-scripts.rs @@ -1,11 +1,11 @@ extern crate electrs; +use bitcoin::hex::DisplayHex; use electrs::{ config::Config, new_index::{Store, TxHistoryKey}, util::bincode, }; -use hex::DisplayHex; fn main() { let config = Config::from_args(); diff --git a/src/bin/tx-fingerprint-stats.rs b/src/bin/tx-fingerprint-stats.rs index 0a0399692..9073faec8 100644 --- a/src/bin/tx-fingerprint-stats.rs +++ b/src/bin/tx-fingerprint-stats.rs @@ -62,7 +62,7 @@ fn main() { } let tx: Transaction = deserialize(&value).expect("failed to parse Transaction"); - let txid = tx.txid(); + let txid = tx.compute_txid(); iter.next(); diff --git a/src/daemon.rs b/src/daemon.rs index 3aa1f0f3c..65da53d70 100644 --- a/src/daemon.rs +++ b/src/daemon.rs @@ -10,8 +10,8 @@ use std::time::Duration; use std::{env, fs, io}; use base64::prelude::{Engine, BASE64_STANDARD}; +use bitcoin::hex::FromHex; use error_chain::ChainedError; -use hex::FromHex; use rayon::iter::{IndexedParallelIterator, IntoParallelIterator, ParallelIterator}; use serde_json::{from_str, from_value, Value}; diff --git a/src/electrum/server.rs b/src/electrum/server.rs index 2beae0855..e59babd8b 100644 --- a/src/electrum/server.rs +++ b/src/electrum/server.rs @@ -7,10 +7,10 @@ use std::thread; use std::time::Instant; use bitcoin::hashes::sha256d::Hash as Sha256dHash; +use bitcoin::hex::DisplayHex; use crypto::digest::Digest; use crypto::sha2::Sha256; use error_chain::ChainedError; -use hex::{self, DisplayHex}; use serde_json::{from_str, Value}; #[cfg(not(feature = "liquid"))] diff --git a/src/new_index/precache.rs b/src/new_index/precache.rs index 4db40c27d..595be2805 100644 --- a/src/new_index/precache.rs +++ b/src/new_index/precache.rs @@ -7,7 +7,7 @@ use crypto::digest::Digest; use crypto::sha2::Sha256; use rayon::prelude::*; -use hex::FromHex; +use bitcoin::hex::FromHex; use std::fs::File; use std::io; use std::io::prelude::*; diff --git a/src/new_index/schema.rs b/src/new_index/schema.rs index 1ea2a97ef..600ebae95 100644 --- a/src/new_index/schema.rs +++ b/src/new_index/schema.rs @@ -1,10 +1,10 @@ use bitcoin::hashes::sha256d::Hash as Sha256dHash; +use bitcoin::hex::FromHex; #[cfg(not(feature = "liquid"))] use bitcoin::merkle_tree::MerkleBlock; -use bitcoin::VarInt; + use crypto::digest::Digest; use crypto::sha2::Sha256; -use hex::FromHex; use itertools::Itertools; use rayon::prelude::*; @@ -39,6 +39,12 @@ use crate::new_index::fetch::{start_fetcher, BlockEntry, FetchFrom}; #[cfg(feature = "liquid")] use crate::elements::{asset, peg}; +#[cfg(feature = "liquid")] +use elements::encode::VarInt; + +#[cfg(not(feature = "liquid"))] +use bitcoin::VarInt; + const MIN_HISTORY_ITEMS_TO_CACHE: usize = 100; pub struct Store { diff --git a/src/rest.rs b/src/rest.rs index 0d05a4334..9b82e01d0 100644 --- a/src/rest.rs +++ b/src/rest.rs @@ -15,7 +15,7 @@ use crate::util::{ use bitcoin::consensus::encode; use bitcoin::hashes::FromSliceError as HashError; -use hex::{DisplayHex, FromHex}; +use bitcoin::hex::{self, DisplayHex, FromHex}; use hyper::service::{make_service_fn, service_fn}; use hyper::{Body, Method, Response, Server, StatusCode}; use hyperlocal::UnixServerExt; @@ -319,7 +319,7 @@ impl TxOutValue { "v0_p2wsh" } else if script.is_p2tr() { "v1_p2tr" - } else if script.is_provably_unspendable() { + } else if script.is_op_return() { "provably_unspendable" } else { "unknown" @@ -1264,12 +1264,6 @@ impl From for HttpError { HttpError::from("Invalid hex string".to_string()) } } -impl From for HttpError { - fn from(_e: bitcoin::address::Error) -> Self { - //HttpError::from(e.description().to_string()) - HttpError::from("Invalid Bitcoin address".to_string()) - } -} impl From for HttpError { fn from(e: errors::Error) -> Self { warn!("errors::Error: {:?}", e); diff --git a/src/util/script.rs b/src/util/script.rs index 8d6d42e73..200c1f972 100644 --- a/src/util/script.rs +++ b/src/util/script.rs @@ -27,7 +27,8 @@ pub trait ScriptToAddr { #[cfg(not(feature = "liquid"))] impl ScriptToAddr for bitcoin::Script { fn to_address_str(&self, network: Network) -> Option { - bitcoin::Address::from_script(self, network.into()) + let network: bitcoin::Network = network.into(); + bitcoin::Address::from_script(self, network) .map(|s| s.to_string()) .ok() } diff --git a/src/util/transaction.rs b/src/util/transaction.rs index 4daa8547b..af3d87c98 100644 --- a/src/util/transaction.rs +++ b/src/util/transaction.rs @@ -70,7 +70,7 @@ pub fn has_prevout(txin: &TxIn) -> bool { pub fn is_spendable(txout: &TxOut) -> bool { #[cfg(not(feature = "liquid"))] - return !txout.script_pubkey.is_provably_unspendable(); + return !txout.script_pubkey.is_op_return(); #[cfg(feature = "liquid")] return !txout.is_fee() && !txout.script_pubkey.is_provably_unspendable(); }