Struct subcoin_script::TransactionSignatureChecker

source ·
pub struct TransactionSignatureChecker<'a> { /* private fields */ }
Expand description

A SignatureChecker implementation for transactions.

Implementations§

source§

impl<'a> TransactionSignatureChecker<'a>

source

pub fn new(tx: &'a Transaction, input_index: usize, input_amount: u64) -> Self

Constructs a new instance of TransactionSignatureChecker.

Trait Implementations§

source§

impl SignatureChecker for TransactionSignatureChecker<'_>

source§

fn check_lock_time(&self, lock_time: ScriptNum) -> bool

This function verifies that the transaction’s nLockTime field meets the conditions specified by the lock_time parameter.

The lock_time can represent either a block height or a Unix timestamp, depending on its value:

  • If lock_time < 500,000,000, it is interpreted as a block height.
  • If lock_time >= 500,000,000, it is interpreted as a Unix timestamp.

The lock is satisfied if:

  1. The lock_time is of the same type (block height or timestamp) as the transaction’s nLockTime.
  2. The lock_time is less than or equal to the transaction’s nLockTime.
  3. The transaction’s nSequence field for the input is not set to the maximum value (0xFFFFFFFF), which would disable the time lock.
§Arguments
  • lock_time - The absolute time lock to check, represented as a [ScriptNum].
§Returns
  • true if the absolute time lock is satisfied.
  • false otherwise.
source§

fn check_sequence(&self, sequence: ScriptNum) -> bool

The lock is satisfied if:

  1. The transaction’s version is at least 2 (BIP 68).
  2. The sequence is of the same type (blocks or seconds) as the input’s nSequence.
  3. The sequence is less than or equal to the input’s nSequence.
§Arguments
  • sequence - The relative time lock to check, represented as a [ScriptNum].
§Returns
  • true if the relative time lock is satisfied.
  • false otherwise.
source§

fn check_ecdsa_signature( &mut self, sig: &EcdsaSignature, pk: &PublicKey, script_pubkey: &Script, sig_version: SigVersion, ) -> Result<bool, SignatureError>

Checks an ECDSA signature in the context of a Bitcoin transaction. Read more
source§

fn check_schnorr_signature( &mut self, sig: &SchnorrSignature, pk: &XOnlyPublicKey, sig_version: SigVersion, exec_data: &ScriptExecutionData, ) -> Result<bool, SignatureError>

Checks a Schnorr signature in the context of a Bitcoin transaction. Read more
source§

fn verify_ecdsa_signature( &self, sig: &EcdsaSignature, msg: &Message, pk: &PublicKey, ) -> bool

Verifies an ECDSA signature against a message and public key. Read more
source§

fn verify_schnorr_signature( &self, sig: &SchnorrSignature, msg: &Message, pk: &XOnlyPublicKey, ) -> bool

Verifies a Schnorr signature against a message and public key. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more