diff --git a/api/bitcoin/all-features.txt b/api/bitcoin/all-features.txt index 42dc57c40..3b34a098f 100644 --- a/api/bitcoin/all-features.txt +++ b/api/bitcoin/all-features.txt @@ -1854,7 +1854,6 @@ impl core::convert::From for bitcoin::address::error::ParseError impl core::convert::From for bitcoin::blockdata::script::witness_version::FromStrError impl core::convert::From for bitcoin::blockdata::script::witness_version::TryFromInstructionError -impl core::convert::From for bech32::primitives::gf32::Fe32 impl core::convert::From for bitcoin::blockdata::opcodes::Opcode impl core::convert::From for bitcoin::blockdata::transaction::InputsIndexError impl core::convert::From for bitcoin::blockdata::transaction::OutputsIndexError @@ -2009,7 +2008,6 @@ impl core::convert::TryFrom for bitcoin::blockdata::trans impl core::convert::TryFrom for bitcoin::p2p::message::CommandString impl core::convert::TryFrom> for bitcoin::taproot::merkle_branch::TaprootMerkleBranch impl core::convert::TryFrom> for bitcoin::blockdata::script::PushBytesBuf -impl core::convert::TryFrom for bitcoin::blockdata::script::witness_version::WitnessVersion impl core::convert::TryFrom for bitcoin::CompressedPublicKey impl core::convert::TryFrom for bitcoin::network::Network impl core::convert::TryFrom for bitcoin::blockdata::script::witness_version::WitnessVersion @@ -7050,7 +7048,6 @@ pub fn alloc::vec::Vec::consensus_decode_from_finite_reader::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn alloc::vec::Vec::from(v: bitcoin::blockdata::script::ScriptBuf) -> Self pub fn alloc::vec::Vec::from(value: bitcoin::blockdata::script::PushBytesBuf) -> Self -pub fn bech32::primitives::gf32::Fe32::from(version: bitcoin::blockdata::script::witness_version::WitnessVersion) -> Self pub fn bitcoin::CompressedPublicKey::clone(&self) -> bitcoin::CompressedPublicKey pub fn bitcoin::CompressedPublicKey::cmp(&self, other: &bitcoin::CompressedPublicKey) -> core::cmp::Ordering pub fn bitcoin::CompressedPublicKey::deserialize>(d: D) -> core::result::Result::Error> @@ -8389,12 +8386,10 @@ pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::fmt(&self, f pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::from_str(s: &str) -> core::result::Result pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::hash<__H: core::hash::Hasher>(&self, state: &mut __H) pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::partial_cmp(&self, other: &bitcoin::blockdata::script::witness_version::WitnessVersion) -> core::option::Option -pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::to_fe(self) -> bech32::primitives::gf32::Fe32 pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::to_num(self) -> u8 pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(instruction: bitcoin::blockdata::script::Instruction<'_>) -> core::result::Result pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(no: u8) -> core::result::Result pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(opcode: bitcoin::blockdata::opcodes::Opcode) -> core::result::Result -pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(value: bech32::primitives::gf32::Fe32) -> core::result::Result pub fn bitcoin::blockdata::script::write_scriptint(out: &mut [u8; 8], n: i64) -> usize pub fn bitcoin::blockdata::transaction::IndexOutOfBoundsError::clone(&self) -> bitcoin::blockdata::transaction::IndexOutOfBoundsError pub fn bitcoin::blockdata::transaction::IndexOutOfBoundsError::eq(&self, other: &bitcoin::blockdata::transaction::IndexOutOfBoundsError) -> bool diff --git a/api/bitcoin/default-features.txt b/api/bitcoin/default-features.txt index 38f161761..d37c022bf 100644 --- a/api/bitcoin/default-features.txt +++ b/api/bitcoin/default-features.txt @@ -1814,7 +1814,6 @@ impl core::convert::From for bitcoin::address::error::ParseError impl core::convert::From for bitcoin::blockdata::script::witness_version::FromStrError impl core::convert::From for bitcoin::blockdata::script::witness_version::TryFromInstructionError -impl core::convert::From for bech32::primitives::gf32::Fe32 impl core::convert::From for bitcoin::blockdata::opcodes::Opcode impl core::convert::From for bitcoin::blockdata::transaction::InputsIndexError impl core::convert::From for bitcoin::blockdata::transaction::OutputsIndexError @@ -1966,7 +1965,6 @@ impl core::convert::TryFrom for bitcoin::blockdata::trans impl core::convert::TryFrom for bitcoin::p2p::message::CommandString impl core::convert::TryFrom> for bitcoin::taproot::merkle_branch::TaprootMerkleBranch impl core::convert::TryFrom> for bitcoin::blockdata::script::PushBytesBuf -impl core::convert::TryFrom for bitcoin::blockdata::script::witness_version::WitnessVersion impl core::convert::TryFrom for bitcoin::CompressedPublicKey impl core::convert::TryFrom for bitcoin::network::Network impl core::convert::TryFrom for bitcoin::blockdata::script::witness_version::WitnessVersion @@ -6744,7 +6742,6 @@ pub fn alloc::vec::Vec::consensus_decode_from_finite_reader::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn alloc::vec::Vec::from(v: bitcoin::blockdata::script::ScriptBuf) -> Self pub fn alloc::vec::Vec::from(value: bitcoin::blockdata::script::PushBytesBuf) -> Self -pub fn bech32::primitives::gf32::Fe32::from(version: bitcoin::blockdata::script::witness_version::WitnessVersion) -> Self pub fn bitcoin::CompressedPublicKey::clone(&self) -> bitcoin::CompressedPublicKey pub fn bitcoin::CompressedPublicKey::cmp(&self, other: &bitcoin::CompressedPublicKey) -> core::cmp::Ordering pub fn bitcoin::CompressedPublicKey::eq(&self, other: &bitcoin::CompressedPublicKey) -> bool @@ -8000,12 +7997,10 @@ pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::fmt(&self, f pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::from_str(s: &str) -> core::result::Result pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::hash<__H: core::hash::Hasher>(&self, state: &mut __H) pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::partial_cmp(&self, other: &bitcoin::blockdata::script::witness_version::WitnessVersion) -> core::option::Option -pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::to_fe(self) -> bech32::primitives::gf32::Fe32 pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::to_num(self) -> u8 pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(instruction: bitcoin::blockdata::script::Instruction<'_>) -> core::result::Result pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(no: u8) -> core::result::Result pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(opcode: bitcoin::blockdata::opcodes::Opcode) -> core::result::Result -pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(value: bech32::primitives::gf32::Fe32) -> core::result::Result pub fn bitcoin::blockdata::script::write_scriptint(out: &mut [u8; 8], n: i64) -> usize pub fn bitcoin::blockdata::transaction::IndexOutOfBoundsError::clone(&self) -> bitcoin::blockdata::transaction::IndexOutOfBoundsError pub fn bitcoin::blockdata::transaction::IndexOutOfBoundsError::eq(&self, other: &bitcoin::blockdata::transaction::IndexOutOfBoundsError) -> bool diff --git a/api/bitcoin/no-features.txt b/api/bitcoin/no-features.txt index a2b304b11..0ef745405 100644 --- a/api/bitcoin/no-features.txt +++ b/api/bitcoin/no-features.txt @@ -1650,7 +1650,6 @@ impl core::convert::From for bitcoin::address::error::ParseError impl core::convert::From for bitcoin::blockdata::script::witness_version::FromStrError impl core::convert::From for bitcoin::blockdata::script::witness_version::TryFromInstructionError -impl core::convert::From for bech32::primitives::gf32::Fe32 impl core::convert::From for bitcoin::blockdata::opcodes::Opcode impl core::convert::From for bitcoin::blockdata::transaction::InputsIndexError impl core::convert::From for bitcoin::blockdata::transaction::OutputsIndexError @@ -1792,7 +1791,6 @@ impl core::convert::TryFrom<&bitcoin::blockdata::script::ScriptBuf> for bitcoin: impl core::convert::TryFrom> for bitcoin::taproot::merkle_branch::TaprootMerkleBranch impl core::convert::TryFrom> for bitcoin::taproot::merkle_branch::TaprootMerkleBranch impl core::convert::TryFrom> for bitcoin::blockdata::script::PushBytesBuf -impl core::convert::TryFrom for bitcoin::blockdata::script::witness_version::WitnessVersion impl core::convert::TryFrom for bitcoin::CompressedPublicKey impl core::convert::TryFrom for bitcoin::network::Network impl core::convert::TryFrom for bitcoin::blockdata::script::witness_version::WitnessVersion @@ -6110,7 +6108,6 @@ pub fn alloc::vec::Vec::consensus_decode_from_finite_reader::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn alloc::vec::Vec::from(v: bitcoin::blockdata::script::ScriptBuf) -> Self pub fn alloc::vec::Vec::from(value: bitcoin::blockdata::script::PushBytesBuf) -> Self -pub fn bech32::primitives::gf32::Fe32::from(version: bitcoin::blockdata::script::witness_version::WitnessVersion) -> Self pub fn bitcoin::CompressedPublicKey::clone(&self) -> bitcoin::CompressedPublicKey pub fn bitcoin::CompressedPublicKey::cmp(&self, other: &bitcoin::CompressedPublicKey) -> core::cmp::Ordering pub fn bitcoin::CompressedPublicKey::eq(&self, other: &bitcoin::CompressedPublicKey) -> bool @@ -7348,12 +7345,10 @@ pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::fmt(&self, f pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::from_str(s: &str) -> core::result::Result pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::hash<__H: core::hash::Hasher>(&self, state: &mut __H) pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::partial_cmp(&self, other: &bitcoin::blockdata::script::witness_version::WitnessVersion) -> core::option::Option -pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::to_fe(self) -> bech32::primitives::gf32::Fe32 pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::to_num(self) -> u8 pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(instruction: bitcoin::blockdata::script::Instruction<'_>) -> core::result::Result pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(no: u8) -> core::result::Result pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(opcode: bitcoin::blockdata::opcodes::Opcode) -> core::result::Result -pub fn bitcoin::blockdata::script::witness_version::WitnessVersion::try_from(value: bech32::primitives::gf32::Fe32) -> core::result::Result pub fn bitcoin::blockdata::script::write_scriptint(out: &mut [u8; 8], n: i64) -> usize pub fn bitcoin::blockdata::transaction::IndexOutOfBoundsError::clone(&self) -> bitcoin::blockdata::transaction::IndexOutOfBoundsError pub fn bitcoin::blockdata::transaction::IndexOutOfBoundsError::eq(&self, other: &bitcoin::blockdata::transaction::IndexOutOfBoundsError) -> bool diff --git a/bitcoin/src/address/mod.rs b/bitcoin/src/address/mod.rs index 1bb77e1ab..99d539e80 100644 --- a/bitcoin/src/address/mod.rs +++ b/bitcoin/src/address/mod.rs @@ -33,6 +33,7 @@ use core::marker::PhantomData; use core::str::FromStr; use bech32::primitives::hrp::Hrp; +use bech32::primitives::gf32::Fe32; use hashes::{sha256, HashEngine}; use secp256k1::{Secp256k1, Verification, XOnlyPublicKey}; @@ -168,7 +169,8 @@ impl fmt::Display for AddressInner { } Segwit { program, hrp } => { let hrp = hrp.to_hrp(); - let version = program.version().to_fe(); + let version = Fe32::try_from(program.version().to_num()) + .expect("version nums 0-16 are valid fe32 values"); let program = program.program().as_ref(); if fmt.alternate() { @@ -829,7 +831,7 @@ impl FromStr for Address { fn from_str(s: &str) -> Result, ParseError> { if let Ok((hrp, witness_version, data)) = bech32::segwit::decode(s) { - let version = WitnessVersion::try_from(witness_version)?; + let version = WitnessVersion::try_from(witness_version.to_u8())?; let program = WitnessProgram::new(version, &data) .expect("bech32 guarantees valid program length for witness"); diff --git a/bitcoin/src/blockdata/script/witness_version.rs b/bitcoin/src/blockdata/script/witness_version.rs index 0974da625..826286929 100644 --- a/bitcoin/src/blockdata/script/witness_version.rs +++ b/bitcoin/src/blockdata/script/witness_version.rs @@ -10,7 +10,6 @@ use core::fmt; use core::str::FromStr; -use bech32::Fe32; use internals::write_err; use units::{parse, ParseIntError}; @@ -71,11 +70,6 @@ impl WitnessVersion { /// version in bitcoin script. Thus, there is no function to directly convert witness version /// into a byte since the conversion requires context (bitcoin script or just a version number). pub fn to_num(self) -> u8 { self as u8 } - - /// Converts this witness version to a GF32 field element. - pub fn to_fe(self) -> Fe32 { - Fe32::try_from(self.to_num()).expect("0-16 are valid fe32 values") - } } /// Prints [`WitnessVersion`] number (from 0 to 16) as integer, without any prefix or suffix. @@ -92,12 +86,6 @@ impl FromStr for WitnessVersion { } } -impl TryFrom for WitnessVersion { - type Error = TryFromError; - - fn try_from(value: Fe32) -> Result { Self::try_from(value.to_u8()) } -} - impl TryFrom for WitnessVersion { type Error = TryFromError; @@ -152,10 +140,6 @@ impl<'a> TryFrom> for WitnessVersion { } } -impl From for Fe32 { - fn from(version: WitnessVersion) -> Self { version.to_fe() } -} - impl From for Opcode { fn from(version: WitnessVersion) -> Opcode { match version {