pub enum EcdsaSighashType {
All = 1,
None = 2,
Single = 3,
AllPlusAnyoneCanPay = 129,
NonePlusAnyoneCanPay = 130,
SinglePlusAnyoneCanPay = 131,
}Expand description
Hashtype of an input’s signature, encoded in the last byte of the signature.
Fixed values so they can be cast as integer types for encoding (see also
TapSighashType).
Variants§
All = 1
0x1: Sign all outputs.
None = 2
0x2: Sign no outputs — anyone can choose the destination.
Single = 3
0x3: Sign the output whose index matches this input’s index. If none exists,
sign the hash 0000000000000000000000000000000000000000000000000000000000000001.
(This rule is probably an unintentional C++ism, but it’s consensus so we have
to follow it.)
AllPlusAnyoneCanPay = 129
0x81: Sign all outputs but only this input.
NonePlusAnyoneCanPay = 130
0x82: Sign no outputs and only this input.
SinglePlusAnyoneCanPay = 131
0x83: Sign one output and only this input (see Single for what “one output” means).
Implementations§
Source§impl EcdsaSighashType
impl EcdsaSighashType
Sourcepub fn is_single(&self) -> bool
pub fn is_single(&self) -> bool
Checks if the sighash type is Self::Single or Self::SinglePlusAnyoneCanPay.
This matches Bitcoin Core’s behavior where SIGHASH_SINGLE bug check is based on the base type (after masking with 0x1f), regardless of the ANYONECANPAY flag.
See: https://github.com/bitcoin/bitcoin/blob/e486597/src/script/interpreter.cpp#L1618-L1619
Sourcepub fn from_consensus(n: u32) -> EcdsaSighashType
pub fn from_consensus(n: u32) -> EcdsaSighashType
Creates a EcdsaSighashType from a raw u32.
Note: this replicates consensus behaviour, for current standardness rules correctness
you probably want Self::from_standard.
This might cause unexpected behavior because it does not roundtrip. That is,
EcdsaSighashType::from_consensus(n) as u32 != n for non-standard values of n. While
verifying signatures, the user should retain the n and use it compute the signature hash
message.
Sourcepub fn from_standard(
n: u32,
) -> Result<EcdsaSighashType, NonStandardSighashTypeError>
pub fn from_standard( n: u32, ) -> Result<EcdsaSighashType, NonStandardSighashTypeError>
Sourcepub fn to_u32(self) -> u32
pub fn to_u32(self) -> u32
Converts EcdsaSighashType to a u32 sighash flag.
The returned value is guaranteed to be a valid according to standardness rules.
Trait Implementations§
Source§impl<'a> Arbitrary<'a> for EcdsaSighashType
Available on crate feature arbitrary only.
impl<'a> Arbitrary<'a> for EcdsaSighashType
arbitrary only.Source§fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>
fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>
Self from the given unstructured data. Read moreSource§fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
Self from the entirety of the given
unstructured data. Read moreSource§fn size_hint(depth: usize) -> (usize, Option<usize>)
fn size_hint(depth: usize) -> (usize, Option<usize>)
Unstructured this type
needs to construct itself. Read moreSource§fn try_size_hint(
depth: usize,
) -> Result<(usize, Option<usize>), MaxRecursionReached>
fn try_size_hint( depth: usize, ) -> Result<(usize, Option<usize>), MaxRecursionReached>
Unstructured this type
needs to construct itself. Read moreSource§impl Clone for EcdsaSighashType
impl Clone for EcdsaSighashType
Source§fn clone(&self) -> EcdsaSighashType
fn clone(&self) -> EcdsaSighashType
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EcdsaSighashType
impl Debug for EcdsaSighashType
Source§impl<'de> Deserialize<'de> for EcdsaSighashType
impl<'de> Deserialize<'de> for EcdsaSighashType
Source§fn deserialize<D>(deserializer: D) -> Result<EcdsaSighashType, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<EcdsaSighashType, D::Error>where
D: Deserializer<'de>,
Source§impl Display for EcdsaSighashType
impl Display for EcdsaSighashType
Source§impl From<EcdsaSighashType> for PsbtSighashType
impl From<EcdsaSighashType> for PsbtSighashType
Source§fn from(ecdsa_hash_ty: EcdsaSighashType) -> Self
fn from(ecdsa_hash_ty: EcdsaSighashType) -> Self
Source§impl From<EcdsaSighashType> for TapSighashType
impl From<EcdsaSighashType> for TapSighashType
Source§fn from(s: EcdsaSighashType) -> Self
fn from(s: EcdsaSighashType) -> Self
Source§impl FromStr for EcdsaSighashType
impl FromStr for EcdsaSighashType
Source§impl Hash for EcdsaSighashType
impl Hash for EcdsaSighashType
Source§impl PartialEq for EcdsaSighashType
impl PartialEq for EcdsaSighashType
Source§fn eq(&self, other: &EcdsaSighashType) -> bool
fn eq(&self, other: &EcdsaSighashType) -> bool
self and other values to be equal, and is used by ==.