What changed, and why it matters
This commit is a simple code reorganization. It moves four Bitcoin address-version constants (the numeric prefixes that identify mainnet/testnet and pubkey/script addresses) from the main `bitcoin` crate into a new `addresses` crate, then makes the old `bitcoin` constants point to the new ones so existing code keeps working. The actual numeric values do not change.
No security action required. Treat as ordinary maintenance/refactoring.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch relocates PUBKEY_ADDRESS_PREFIX_MAIN, SCRIPT_ADDRESS_PREFIX_MAIN, PUBKEY_ADDRESS_PREFIX_TEST, and SCRIPT_ADDRESS_PREFIX_TEST from bitcoin/src/blockdata/constants.rs to addresses/src/lib.rs. The original bitcoin constants are redefined as aliases to the addresses crate constants. Values remain identical (0, 5, 111, 196). This is a pure refactor with no functional or security behavior change.
Changed components
addresses/src/lib.rsbitcoin/src/blockdata/constants.rsInspect captured patch +13 / −4
diff --git a/addresses/src/lib.rs b/addresses/src/lib.rs
index 3319238a..8fe1de01 100644
--- a/addresses/src/lib.rs
+++ b/addresses/src/lib.rs
@@ -39,6 +39,15 @@ use taproot_primitives::{TapNodeHash, TapTweak as _};
#[cfg(feature = "alloc")]
use witness_program::WitnessProgram;
+/// Mainnet (bitcoin) pubkey address prefix.
+pub const PUBKEY_ADDRESS_PREFIX_MAIN: u8 = 0; // 0x00
+/// Mainnet (bitcoin) script address prefix.
+pub const SCRIPT_ADDRESS_PREFIX_MAIN: u8 = 5; // 0x05
+/// Test (testnet, signet, regtest) pubkey address prefix.
+pub const PUBKEY_ADDRESS_PREFIX_TEST: u8 = 111; // 0x6f
+/// Test (testnet, signet, regtest) script address prefix.
+pub const SCRIPT_ADDRESS_PREFIX_TEST: u8 = 196; // 0xc4
+
/// Extension functionality for the [`ScriptPubKeyBuf`] type.
#[cfg(feature = "alloc")]
pub trait ScriptPubKeyBufExt: sealed::Sealed {
diff --git a/bitcoin/src/blockdata/constants.rs b/bitcoin/src/blockdata/constants.rs
index 0adbfd67..64326966 100644
--- a/bitcoin/src/blockdata/constants.rs
+++ b/bitcoin/src/blockdata/constants.rs
@@ -28,13 +28,13 @@ pub const WITNESS_SCALE_FACTOR: usize = units::weight::WITNESS_SCALE_FACTOR;
/// The maximum allowed number of signature check operations in a block.
pub const MAX_BLOCK_SIGOPS_COST: i64 = 80_000;
/// Mainnet (bitcoin) pubkey address prefix.
-pub const PUBKEY_ADDRESS_PREFIX_MAIN: u8 = 0; // 0x00
+pub const PUBKEY_ADDRESS_PREFIX_MAIN: u8 = addresses::PUBKEY_ADDRESS_PREFIX_MAIN; // 0x00
/// Mainnet (bitcoin) script address prefix.
-pub const SCRIPT_ADDRESS_PREFIX_MAIN: u8 = 5; // 0x05
+pub const SCRIPT_ADDRESS_PREFIX_MAIN: u8 = addresses::SCRIPT_ADDRESS_PREFIX_MAIN; // 0x05
/// Test (testnet, signet, regtest) pubkey address prefix.
-pub const PUBKEY_ADDRESS_PREFIX_TEST: u8 = 111; // 0x6f
+pub const PUBKEY_ADDRESS_PREFIX_TEST: u8 = addresses::PUBKEY_ADDRESS_PREFIX_TEST; // 0x6f
/// Test (testnet, signet, regtest) script address prefix.
-pub const SCRIPT_ADDRESS_PREFIX_TEST: u8 = 196; // 0xc4
+pub const SCRIPT_ADDRESS_PREFIX_TEST: u8 = addresses::SCRIPT_ADDRESS_PREFIX_TEST; // 0xc4
/// The maximum allowed redeem script size for a P2SH output.
pub const MAX_REDEEM_SCRIPT_SIZE: usize = primitives::script::MAX_REDEEM_SCRIPT_SIZE; // 520
/// The maximum allowed redeem script size of the witness script.
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.