Move p2p::constants::Network to crate root
The `Network` type is not a p2p construct, it is more general, used throughout the codebase to define _which_ Bitcoin network we are operating on.
This commit is contained in:
parent
0f78943ef0
commit
d4e8f49fc3
|
@ -6,7 +6,7 @@ use std::time::{SystemTime, UNIX_EPOCH};
|
||||||
use std::{env, process};
|
use std::{env, process};
|
||||||
|
|
||||||
use bitcoin::consensus::{encode, Decodable};
|
use bitcoin::consensus::{encode, Decodable};
|
||||||
use bitcoin::p2p::{self, address, constants, message, message_network};
|
use bitcoin::p2p::{self, address, message, message_network};
|
||||||
use bitcoin::secp256k1;
|
use bitcoin::secp256k1;
|
||||||
use bitcoin::secp256k1::rand::Rng;
|
use bitcoin::secp256k1::rand::Rng;
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ fn main() {
|
||||||
let version_message = build_version_message(address);
|
let version_message = build_version_message(address);
|
||||||
|
|
||||||
let first_message =
|
let first_message =
|
||||||
message::RawNetworkMessage::new(constants::Network::Bitcoin.magic(), version_message);
|
message::RawNetworkMessage::new(bitcoin::Network::Bitcoin.magic(), version_message);
|
||||||
|
|
||||||
if let Ok(mut stream) = TcpStream::connect(address) {
|
if let Ok(mut stream) = TcpStream::connect(address) {
|
||||||
// Send the message
|
// Send the message
|
||||||
|
@ -47,7 +47,7 @@ fn main() {
|
||||||
println!("Received version message: {:?}", reply.payload());
|
println!("Received version message: {:?}", reply.payload());
|
||||||
|
|
||||||
let second_message = message::RawNetworkMessage::new(
|
let second_message = message::RawNetworkMessage::new(
|
||||||
constants::Network::Bitcoin.magic(),
|
bitcoin::Network::Bitcoin.magic(),
|
||||||
message::NetworkMessage::Verack,
|
message::NetworkMessage::Verack,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ use crate::blockdata::script::witness_version::{self, WitnessVersion};
|
||||||
use crate::blockdata::script::{self, Script, ScriptBuf};
|
use crate::blockdata::script::{self, Script, ScriptBuf};
|
||||||
use crate::crypto::key::{PublicKey, TapTweak, TweakedPublicKey, UntweakedPublicKey};
|
use crate::crypto::key::{PublicKey, TapTweak, TweakedPublicKey, UntweakedPublicKey};
|
||||||
use crate::hash_types::{PubkeyHash, ScriptHash};
|
use crate::hash_types::{PubkeyHash, ScriptHash};
|
||||||
use crate::p2p::constants::Network;
|
use crate::network::Network;
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use crate::taproot::TapNodeHash;
|
use crate::taproot::TapNodeHash;
|
||||||
|
|
||||||
|
@ -996,7 +996,7 @@ mod tests {
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::crypto::key::PublicKey;
|
use crate::crypto::key::PublicKey;
|
||||||
use crate::p2p::constants::Network::{Bitcoin, Testnet};
|
use crate::network::Network::{Bitcoin, Testnet};
|
||||||
|
|
||||||
fn roundtrips(addr: &Address) {
|
fn roundtrips(addr: &Address) {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
|
|
@ -23,7 +23,7 @@ use crate::crypto::key::{self, KeyPair, PrivateKey, PublicKey};
|
||||||
use crate::hash_types::XpubIdentifier;
|
use crate::hash_types::XpubIdentifier;
|
||||||
use crate::internal_macros::impl_bytes_newtype;
|
use crate::internal_macros::impl_bytes_newtype;
|
||||||
use crate::io::Write;
|
use crate::io::Write;
|
||||||
use crate::p2p::constants::Network;
|
use crate::network::Network;
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
/// A chain code
|
/// A chain code
|
||||||
|
@ -866,7 +866,7 @@ mod tests {
|
||||||
use super::ChildNumber::{Hardened, Normal};
|
use super::ChildNumber::{Hardened, Normal};
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::internal_macros::hex;
|
use crate::internal_macros::hex;
|
||||||
use crate::p2p::constants::Network::{self, Bitcoin};
|
use crate::network::Network::{self, Bitcoin};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_parse_derivation_path() {
|
fn test_parse_derivation_path() {
|
||||||
|
|
|
@ -20,7 +20,7 @@ use crate::blockdata::script;
|
||||||
use crate::blockdata::transaction::{OutPoint, Sequence, Transaction, TxIn, TxOut};
|
use crate::blockdata::transaction::{OutPoint, Sequence, Transaction, TxIn, TxOut};
|
||||||
use crate::blockdata::witness::Witness;
|
use crate::blockdata::witness::Witness;
|
||||||
use crate::internal_macros::impl_bytes_newtype;
|
use crate::internal_macros::impl_bytes_newtype;
|
||||||
use crate::p2p::constants::Network;
|
use crate::network::Network;
|
||||||
use crate::pow::CompactTarget;
|
use crate::pow::CompactTarget;
|
||||||
use crate::Amount;
|
use crate::Amount;
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ mod test {
|
||||||
use crate::blockdata::locktime::absolute;
|
use crate::blockdata::locktime::absolute;
|
||||||
use crate::consensus::encode::serialize;
|
use crate::consensus::encode::serialize;
|
||||||
use crate::internal_macros::hex;
|
use crate::internal_macros::hex;
|
||||||
use crate::p2p::constants::Network;
|
use crate::network::Network;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn bitcoin_genesis_first_transaction() {
|
fn bitcoin_genesis_first_transaction() {
|
||||||
|
|
|
@ -68,7 +68,7 @@ impl OutPoint {
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// use bitcoin::constants::genesis_block;
|
/// use bitcoin::constants::genesis_block;
|
||||||
/// use bitcoin::p2p::constants::Network;
|
/// use bitcoin::Network;
|
||||||
///
|
///
|
||||||
/// let block = genesis_block(Network::Bitcoin);
|
/// let block = genesis_block(Network::Bitcoin);
|
||||||
/// let tx = &block.txdata[0];
|
/// let tx = &block.txdata[0];
|
||||||
|
@ -1508,7 +1508,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_is_coinbase() {
|
fn test_is_coinbase() {
|
||||||
use crate::blockdata::constants;
|
use crate::blockdata::constants;
|
||||||
use crate::p2p::constants::Network;
|
use crate::network::Network;
|
||||||
|
|
||||||
let genesis = constants::genesis_block(Network::Bitcoin);
|
let genesis = constants::genesis_block(Network::Bitcoin);
|
||||||
assert!(genesis.txdata[0].is_coinbase());
|
assert!(genesis.txdata[0].is_coinbase());
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
//! chains (such as mainnet, testnet).
|
//! chains (such as mainnet, testnet).
|
||||||
//!
|
//!
|
||||||
|
|
||||||
use crate::p2p::constants::Network;
|
use crate::network::Network;
|
||||||
use crate::pow::Work;
|
use crate::pow::Work;
|
||||||
|
|
||||||
/// Parameters that influence chain consensus.
|
/// Parameters that influence chain consensus.
|
||||||
|
|
|
@ -18,7 +18,7 @@ pub use secp256k1::{self, constants, KeyPair, Parity, Secp256k1, Verification, X
|
||||||
|
|
||||||
use crate::crypto::ecdsa;
|
use crate::crypto::ecdsa;
|
||||||
use crate::hash_types::{PubkeyHash, WPubkeyHash};
|
use crate::hash_types::{PubkeyHash, WPubkeyHash};
|
||||||
use crate::p2p::constants::Network;
|
use crate::network::Network;
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use crate::taproot::{TapNodeHash, TapTweakHash};
|
use crate::taproot::{TapNodeHash, TapTweakHash};
|
||||||
use crate::{base58, io};
|
use crate::{base58, io};
|
||||||
|
@ -741,7 +741,7 @@ mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::address::Address;
|
use crate::address::Address;
|
||||||
use crate::io;
|
use crate::io;
|
||||||
use crate::p2p::constants::Network::{Bitcoin, Testnet};
|
use crate::network::Network::{Bitcoin, Testnet};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_key_derivation() {
|
fn test_key_derivation() {
|
||||||
|
|
|
@ -1120,7 +1120,7 @@ mod tests {
|
||||||
use crate::crypto::key::PublicKey;
|
use crate::crypto::key::PublicKey;
|
||||||
use crate::crypto::sighash::{LegacySighash, TapSighash};
|
use crate::crypto::sighash::{LegacySighash, TapSighash};
|
||||||
use crate::internal_macros::hex;
|
use crate::internal_macros::hex;
|
||||||
use crate::p2p::constants::Network;
|
use crate::network::Network;
|
||||||
use crate::taproot::TapLeafHash;
|
use crate::taproot::TapLeafHash;
|
||||||
|
|
||||||
extern crate serde_json;
|
extern crate serde_json;
|
||||||
|
|
|
@ -106,6 +106,7 @@ pub(crate) mod crypto;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
pub mod hash_types;
|
pub mod hash_types;
|
||||||
pub mod merkle_tree;
|
pub mod merkle_tree;
|
||||||
|
pub mod network;
|
||||||
pub mod policy;
|
pub mod policy;
|
||||||
pub mod pow;
|
pub mod pow;
|
||||||
pub mod psbt;
|
pub mod psbt;
|
||||||
|
@ -146,7 +147,7 @@ pub use crate::hash_types::{
|
||||||
BlockHash, PubkeyHash, ScriptHash, Txid, WPubkeyHash, WScriptHash, Wtxid,
|
BlockHash, PubkeyHash, ScriptHash, Txid, WPubkeyHash, WScriptHash, Wtxid,
|
||||||
};
|
};
|
||||||
pub use crate::merkle_tree::MerkleBlock;
|
pub use crate::merkle_tree::MerkleBlock;
|
||||||
pub use crate::p2p::constants::Network;
|
pub use crate::network::Network;
|
||||||
pub use crate::pow::{CompactTarget, Target, Work};
|
pub use crate::pow::{CompactTarget, Target, Work};
|
||||||
pub use crate::psbt::Psbt;
|
pub use crate::psbt::Psbt;
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,15 @@
|
||||||
// SPDX-License-Identifier: CC0-1.0
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
//! Bitcoin network constants.
|
//! Bitcoin network.
|
||||||
//!
|
//!
|
||||||
//! This module provides various constants relating to the Bitcoin network
|
//! The term "network" is overloaded, here [`Network`] refers to the specific
|
||||||
//! protocol, such as protocol versioning and magic header bytes.
|
//! Bitcoin network we are operating on e.g., signet, regtest. The terms
|
||||||
//!
|
//! "network" and "chain" are often used interchangeably for this concept.
|
||||||
//! The [`Network`][1] type implements the [`Decodable`][2] and
|
|
||||||
//! [`Encodable`][3] traits and encodes the magic bytes of the given
|
|
||||||
//! network.
|
|
||||||
//!
|
|
||||||
//! [1]: enum.Network.html
|
|
||||||
//! [2]: ../../consensus/encode/trait.Decodable.html
|
|
||||||
//! [3]: ../../consensus/encode/trait.Encodable.html
|
|
||||||
//!
|
//!
|
||||||
//! # Example: encoding a network's magic bytes
|
//! # Example: encoding a network's magic bytes
|
||||||
//!
|
//!
|
||||||
//! ```rust
|
//! ```rust
|
||||||
//! use bitcoin::p2p::constants::Network;
|
//! use bitcoin::Network;
|
||||||
//! use bitcoin::consensus::encode::serialize;
|
//! use bitcoin::consensus::encode::serialize;
|
||||||
//!
|
//!
|
||||||
//! let network = Network::Bitcoin;
|
//! let network = Network::Bitcoin;
|
||||||
|
@ -130,7 +123,7 @@ impl Network {
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// use bitcoin::p2p::constants::Network;
|
/// use bitcoin::Network;
|
||||||
/// use bitcoin::blockdata::constants::ChainHash;
|
/// use bitcoin::blockdata::constants::ChainHash;
|
||||||
///
|
///
|
||||||
/// let network = Network::Bitcoin;
|
/// let network = Network::Bitcoin;
|
||||||
|
@ -143,7 +136,7 @@ impl Network {
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// use bitcoin::p2p::constants::Network;
|
/// use bitcoin::Network;
|
||||||
/// use bitcoin::blockdata::constants::ChainHash;
|
/// use bitcoin::blockdata::constants::ChainHash;
|
||||||
/// use std::convert::TryFrom;
|
/// use std::convert::TryFrom;
|
||||||
///
|
///
|
||||||
|
@ -387,7 +380,7 @@ mod tests {
|
||||||
#[derive(Serialize, Deserialize, PartialEq, Debug)]
|
#[derive(Serialize, Deserialize, PartialEq, Debug)]
|
||||||
#[serde(crate = "actual_serde")]
|
#[serde(crate = "actual_serde")]
|
||||||
struct T {
|
struct T {
|
||||||
#[serde(with = "crate::p2p::constants::as_core_arg")]
|
#[serde(with = "crate::network::as_core_arg")]
|
||||||
pub network: Network,
|
pub network: Network,
|
||||||
}
|
}
|
||||||
|
|
|
@ -549,8 +549,8 @@ mod test {
|
||||||
use crate::blockdata::transaction::Transaction;
|
use crate::blockdata::transaction::Transaction;
|
||||||
use crate::consensus::encode::{deserialize, deserialize_partial, serialize};
|
use crate::consensus::encode::{deserialize, deserialize_partial, serialize};
|
||||||
use crate::internal_macros::hex;
|
use crate::internal_macros::hex;
|
||||||
|
use crate::network::Network;
|
||||||
use crate::p2p::address::{AddrV2, AddrV2Message, Address};
|
use crate::p2p::address::{AddrV2, AddrV2Message, Address};
|
||||||
use crate::p2p::constants::Network;
|
|
||||||
use crate::p2p::message_blockdata::{GetBlocksMessage, GetHeadersMessage, Inventory};
|
use crate::p2p::message_blockdata::{GetBlocksMessage, GetHeadersMessage, Inventory};
|
||||||
use crate::p2p::message_bloom::{BloomFlags, FilterAdd, FilterLoad};
|
use crate::p2p::message_bloom::{BloomFlags, FilterAdd, FilterLoad};
|
||||||
use crate::p2p::message_compact_blocks::{GetBlockTxn, SendCmpct};
|
use crate::p2p::message_compact_blocks::{GetBlockTxn, SendCmpct};
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
//! This module defines support for (de)serialization and network transport
|
//! This module defines support for (de)serialization and network transport
|
||||||
//! of Bitcoin data and Bitcoin p2p network messages.
|
//! of Bitcoin data and Bitcoin p2p network messages.
|
||||||
|
|
||||||
pub mod constants;
|
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
pub mod address;
|
pub mod address;
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
|
@ -33,9 +31,8 @@ use internals::{debug_from_display, write_err};
|
||||||
|
|
||||||
use crate::consensus::encode::{self, Decodable, Encodable};
|
use crate::consensus::encode::{self, Decodable, Encodable};
|
||||||
use crate::error::impl_std_error;
|
use crate::error::impl_std_error;
|
||||||
use crate::io;
|
|
||||||
use crate::p2p::constants::Network;
|
|
||||||
use crate::prelude::{Borrow, BorrowMut, String, ToOwned};
|
use crate::prelude::{Borrow, BorrowMut, String, ToOwned};
|
||||||
|
use crate::{io, Network};
|
||||||
|
|
||||||
/// Version of the protocol as appearing in network message headers.
|
/// Version of the protocol as appearing in network message headers.
|
||||||
///
|
///
|
||||||
|
|
|
@ -823,7 +823,7 @@ mod tests {
|
||||||
use crate::blockdata::transaction::{OutPoint, Sequence, Transaction, TxIn, TxOut};
|
use crate::blockdata::transaction::{OutPoint, Sequence, Transaction, TxIn, TxOut};
|
||||||
use crate::blockdata::witness::Witness;
|
use crate::blockdata::witness::Witness;
|
||||||
use crate::internal_macros::hex;
|
use crate::internal_macros::hex;
|
||||||
use crate::p2p::constants::Network::Bitcoin;
|
use crate::network::Network::Bitcoin;
|
||||||
use crate::psbt::map::{Input, Output};
|
use crate::psbt::map::{Input, Output};
|
||||||
use crate::psbt::raw;
|
use crate::psbt::raw;
|
||||||
use crate::psbt::serialize::{Deserialize, Serialize};
|
use crate::psbt::serialize::{Deserialize, Serialize};
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use bitcoin::address::Address;
|
use bitcoin::address::Address;
|
||||||
use bitcoin::blockdata::script;
|
use bitcoin::blockdata::script;
|
||||||
use bitcoin::consensus::encode;
|
use bitcoin::consensus::encode;
|
||||||
use bitcoin::p2p::constants::Network;
|
use bitcoin::Network;
|
||||||
use honggfuzz::fuzz;
|
use honggfuzz::fuzz;
|
||||||
|
|
||||||
fn do_test(data: &[u8]) {
|
fn do_test(data: &[u8]) {
|
||||||
|
|
Loading…
Reference in New Issue