From 7945f3e2f24eaad5d84de67e8f360b11ca72ae97 Mon Sep 17 00:00:00 2001 From: rustaceanrob Date: Thu, 17 Jul 2025 09:55:18 +0100 Subject: [PATCH] Bump `bitcoin` version Uses a more recent commit to make use of the `p2p` message types. --- accumulator/Cargo.toml | 4 ++-- p2p/Cargo.toml | 3 ++- p2p/examples/update_accumulator.rs | 10 +++++----- p2p/src/lib.rs | 21 ++++++++++++--------- p2p/src/net.rs | 9 +++++---- p2p/src/tokio_ext.rs | 7 ++++--- p2p/src/validation.rs | 3 ++- p2p/tests/tests.rs | 8 +++----- peers/Cargo.toml | 2 +- utxo_verifier/Cargo.toml | 3 ++- utxo_verifier/src/job.rs | 10 +++++----- 11 files changed, 43 insertions(+), 37 deletions(-) diff --git a/accumulator/Cargo.toml b/accumulator/Cargo.toml index ff159e9..c31d64c 100644 --- a/accumulator/Cargo.toml +++ b/accumulator/Cargo.toml @@ -4,8 +4,8 @@ version = "0.1.0" edition = "2024" [dependencies] -bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = false, rev = "2b07f59545de16b66b3bf8ee988757c2d0c14afb" } +bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = false, rev = "2bb9bb6bc99ba07ed3d543a512ec3d2a9462770d" } [dev-dependencies] -bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = true, rev = "2b07f59545de16b66b3bf8ee988757c2d0c14afb" } +bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = true, rev = "2bb9bb6bc99ba07ed3d543a512ec3d2a9462770d" } rusqlite = { version = "0.36.0", features = ["bundled"] } diff --git a/p2p/Cargo.toml b/p2p/Cargo.toml index 77b71c5..61c33e0 100644 --- a/p2p/Cargo.toml +++ b/p2p/Cargo.toml @@ -9,7 +9,8 @@ categories = ["cryptography::cryptocurrencies"] rust-version = "1.75.0" [dependencies] -bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = true, rev = "2b07f59545de16b66b3bf8ee988757c2d0c14afb" } +bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = true, rev = "2bb9bb6bc99ba07ed3d543a512ec3d2a9462770d" } +p2p = { package = "bitcoin-p2p-messages", git = "https://github.com/rust-bitcoin/rust-bitcoin", rev = "2bb9bb6bc99ba07ed3d543a512ec3d2a9462770d" } tokio = { version = "1", default-features = false, optional = true, features = [ "sync", "io-util", diff --git a/p2p/examples/update_accumulator.rs b/p2p/examples/update_accumulator.rs index f72c84c..d564e6a 100644 --- a/p2p/examples/update_accumulator.rs +++ b/p2p/examples/update_accumulator.rs @@ -6,14 +6,14 @@ use std::{ use accumulator::Accumulator; use bitcoin::{ block::BlockUncheckedExt, - p2p::{ - message::NetworkMessage, - message_blockdata::{GetBlocksMessage, Inventory}, - ServiceFlags, - }, secp256k1::rand::{seq::SliceRandom, thread_rng}, BlockHash, Network, OutPoint, }; +use p2p::{ + message::NetworkMessage, + message_blockdata::{GetBlocksMessage, Inventory}, + ServiceFlags, +}; use peers::{ dns::{DnsQuery, TokioDnsExt}, PortExt, diff --git a/p2p/src/lib.rs b/p2p/src/lib.rs index 1f5cc71..67a5344 100644 --- a/p2p/src/lib.rs +++ b/p2p/src/lib.rs @@ -3,14 +3,11 @@ use std::{ time::{Duration, Instant, SystemTime, UNIX_EPOCH}, }; -use bitcoin::{ - consensus, - p2p::{ - message::{CommandString, NetworkMessage, RawNetworkMessage}, - message_network::VersionMessage, - Address, Magic, ServiceFlags, - }, - FeeRate, Network, +use bitcoin::{consensus, FeeRate, Network}; +use p2p::{ + message::{CommandString, NetworkMessage, RawNetworkMessage}, + message_network::VersionMessage, + Address, Magic, ServiceFlags, }; use validation::ValidationExt; @@ -639,7 +636,7 @@ macro_rules! define_version_message_logic { } let mut negotiation = Negotiation::default(); - let magic = Magic::from_params($conn.network); + let magic = Magic::from_params($conn.network).expect("unknown network"); let mut write_half = WriteHalf::V1(magic); let mut read_half = ReadHalf::V1(magic); let nonce = rand::random(); @@ -723,6 +720,7 @@ macro_rules! define_version_message_logic { }}; } +#[cfg(feature = "tokio")] macro_rules! async_awaiter { ($e:expr) => { $e.await @@ -735,6 +733,7 @@ macro_rules! blocking_awaiter { }; } +#[cfg(feature = "tokio")] macro_rules! read_message_async { ($reader:expr, $magic:expr) => { $crate::define_read_message_logic!(async_awaiter, $reader, $magic) @@ -753,15 +752,19 @@ macro_rules! version_handshake_blocking { }; } +#[cfg(feature = "tokio")] macro_rules! version_handshake_async { ($reader:expr, $conn:ident) => { $crate::define_version_message_logic!(async_awaiter, $reader, $conn) }; } +#[cfg(feature = "tokio")] pub(crate) use async_awaiter; pub(crate) use blocking_awaiter; +#[cfg(feature = "tokio")] pub(crate) use read_message_async; pub(crate) use read_message_blocking; +#[cfg(feature = "tokio")] pub(crate) use version_handshake_async; pub(crate) use version_handshake_blocking; diff --git a/p2p/src/net.rs b/p2p/src/net.rs index 6038d9a..f9057ec 100644 --- a/p2p/src/net.rs +++ b/p2p/src/net.rs @@ -3,11 +3,12 @@ use std::{ net::{SocketAddr, TcpStream}, }; -use bitcoin::p2p::message::NetworkMessage; -use bitcoin::p2p::message::RawNetworkMessage; -use bitcoin::p2p::Magic; +use bitcoin::consensus; use bitcoin::secp256k1::rand; -use bitcoin::{consensus, p2p::message_compact_blocks::SendCmpct}; +use p2p::message::NetworkMessage; +use p2p::message::RawNetworkMessage; +use p2p::message_compact_blocks::SendCmpct; +use p2p::Magic; use crate::{ blocking_awaiter, interpret_first_message, make_version, version_handshake_blocking, diff --git a/p2p/src/tokio_ext.rs b/p2p/src/tokio_ext.rs index cca390f..94a90f5 100644 --- a/p2p/src/tokio_ext.rs +++ b/p2p/src/tokio_ext.rs @@ -1,10 +1,11 @@ use ::std::fmt::{Debug, Display}; use std::net::SocketAddr; -use bitcoin::p2p::message::{NetworkMessage, RawNetworkMessage}; -use bitcoin::p2p::message_compact_blocks::SendCmpct; +use bitcoin::consensus; use bitcoin::secp256k1::rand; -use bitcoin::{consensus, p2p::Magic}; +use p2p::message::{NetworkMessage, RawNetworkMessage}; +use p2p::message_compact_blocks::SendCmpct; +use p2p::Magic; use tokio::io::AsyncWriteExt; use tokio::net::tcp::{OwnedReadHalf, OwnedWriteHalf}; use tokio::{ diff --git a/p2p/src/validation.rs b/p2p/src/validation.rs index d53aeb9..57686ef 100644 --- a/p2p/src/validation.rs +++ b/p2p/src/validation.rs @@ -1,4 +1,5 @@ -use bitcoin::{block::HeaderExt, p2p::message_blockdata::Inventory, BlockHeader}; +use bitcoin::{block::HeaderExt, BlockHeader}; +use p2p::message_blockdata::Inventory; pub(crate) trait ValidationExt { fn is_valid(&self) -> bool; diff --git a/p2p/tests/tests.rs b/p2p/tests/tests.rs index 6f18625..32fb64f 100644 --- a/p2p/tests/tests.rs +++ b/p2p/tests/tests.rs @@ -1,10 +1,8 @@ use std::net::SocketAddrV4; -use bitcoin::{ - p2p::{message::NetworkMessage, ServiceFlags}, - BlockHash, Network, -}; +use bitcoin::{BlockHash, Network}; use corepc_node::{exe_path, P2P}; +use p2p::{message::NetworkMessage, ServiceFlags}; use swiftsync_p2p::ConnectionBuilder; #[derive(Debug, Clone)] @@ -61,7 +59,7 @@ fn filters_unsupported_messages() { let err = tcp_stream.write_message(NetworkMessage::MemPool, &mut ctx); assert!(err.is_err()); let err = tcp_stream.write_message( - NetworkMessage::GetCFilters(bitcoin::p2p::message_filter::GetCFilters { + NetworkMessage::GetCFilters(p2p::message_filter::GetCFilters { filter_type: 0x00, start_height: 0.into(), stop_hash: BlockHash::from_byte_array([0; 32]), diff --git a/peers/Cargo.toml b/peers/Cargo.toml index 878cdf8..51c92d4 100644 --- a/peers/Cargo.toml +++ b/peers/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] -bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = true, rev = "2b07f59545de16b66b3bf8ee988757c2d0c14afb" } +bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = true, rev = "2bb9bb6bc99ba07ed3d543a512ec3d2a9462770d" } tokio = { version = "1", default-features = false, optional = true, features = [ "io-util", "net", diff --git a/utxo_verifier/Cargo.toml b/utxo_verifier/Cargo.toml index 7e4a9ee..881de8c 100644 --- a/utxo_verifier/Cargo.toml +++ b/utxo_verifier/Cargo.toml @@ -5,9 +5,10 @@ edition = "2024" [dependencies] accumulator = { path = "../accumulator/" } -bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = true, rev = "2b07f59545de16b66b3bf8ee988757c2d0c14afb" } +bitcoin = { git = "https://github.com/rust-bitcoin/rust-bitcoin", default-features = true, rev = "2bb9bb6bc99ba07ed3d543a512ec3d2a9462770d" } peers = { path = "../peers/", default-features = false } p2p = { path = "../p2p/", package = "swiftsync-p2p", default-features = false } +p2p-messages = { package = "bitcoin-p2p-messages", git = "https://github.com/rust-bitcoin/rust-bitcoin", rev = "2bb9bb6bc99ba07ed3d543a512ec3d2a9462770d" } tracing = "0.1" tracing-subscriber = "0.3" rusqlite = { version = "0.36.0", features = ["bundled"] } diff --git a/utxo_verifier/src/job.rs b/utxo_verifier/src/job.rs index 673c540..38cbdc9 100644 --- a/utxo_verifier/src/job.rs +++ b/utxo_verifier/src/job.rs @@ -7,11 +7,6 @@ use std::{ use bitcoin::{ BlockHash, OutPoint, - p2p::{ - ServiceFlags, - message::{InventoryPayload, NetworkMessage}, - message_blockdata::Inventory, - }, script::ScriptExt, secp256k1::rand::{seq::IteratorRandom, thread_rng}, transaction::TransactionExt, @@ -20,6 +15,11 @@ use p2p::{ ConnectionBuilder, net::{ConnectionExt, ReadExt, WriteExt}, }; +use p2p_messages::{ + ServiceFlags, + message::{InventoryPayload, NetworkMessage}, + message_blockdata::Inventory, +}; use peers::PortExt; use crate::{AccumulatorUpdate, NETWORK};