Struct psbt_v2::v2::input::Input

source ·
pub struct Input {
Show 26 fields pub previous_txid: Txid, pub spent_output_index: u32, pub sequence: Option<Sequence>, pub min_time: Option<Time>, pub min_height: Option<Height>, pub non_witness_utxo: Option<Transaction>, pub witness_utxo: Option<TxOut>, pub partial_sigs: BTreeMap<PublicKey, Signature>, pub sighash_type: Option<PsbtSighashType>, pub redeem_script: Option<ScriptBuf>, pub witness_script: Option<ScriptBuf>, pub bip32_derivations: BTreeMap<PublicKey, KeySource>, pub final_script_sig: Option<ScriptBuf>, pub final_script_witness: Option<Witness>, pub ripemd160_preimages: BTreeMap<Hash, Vec<u8>>, pub sha256_preimages: BTreeMap<Hash, Vec<u8>>, pub hash160_preimages: BTreeMap<Hash, Vec<u8>>, pub hash256_preimages: BTreeMap<Hash, Vec<u8>>, pub tap_key_sig: Option<Signature>, pub tap_script_sigs: BTreeMap<(XOnlyPublicKey, TapLeafHash), Signature>, pub tap_scripts: BTreeMap<ControlBlock, (ScriptBuf, LeafVersion)>, pub tap_key_origins: BTreeMap<XOnlyPublicKey, (Vec<TapLeafHash>, KeySource)>, pub tap_internal_key: Option<XOnlyPublicKey>, pub tap_merkle_root: Option<TapNodeHash>, pub proprietaries: BTreeMap<ProprietaryKey, Vec<u8>>, pub unknowns: BTreeMap<Key, Vec<u8>>,
}
Expand description

A key-value map for an input of the corresponding index in the unsigned transaction.

Fields§

§previous_txid: Txid

The txid of the previous transaction whose output at self.spent_output_index is being spent.

In other words, the output being spent by this Input is:

OutPoint { txid: self.previous_txid, vout: self.spent_output_index }

§spent_output_index: u32

The index of the output being spent in the transaction with the txid of self.previous_txid.

§sequence: Option<Sequence>

The sequence number of this input.

If omitted, assumed to be the final sequence number (Sequence::MAX).

§min_time: Option<Time>

The minimum Unix timestamp that this input requires to be set as the transaction’s lock time.

§min_height: Option<Height>

The minimum block height that this input requires to be set as the transaction’s lock time.

§non_witness_utxo: Option<Transaction>

The non-witness transaction this input spends from. Should only be Option::Some for inputs which spend non-segwit outputs or if it is unknown whether an input spends a segwit output.

§witness_utxo: Option<TxOut>

The transaction output this input spends from. Should only be Option::Some for inputs which spend segwit outputs, including P2SH embedded ones.

§partial_sigs: BTreeMap<PublicKey, Signature>

A map from public keys to their corresponding signature as would be pushed to the stack from a scriptSig or witness for a non-taproot inputs.

§sighash_type: Option<PsbtSighashType>

The sighash type to be used for this input. Signatures for this input must use the sighash type.

§redeem_script: Option<ScriptBuf>

The redeem script for this input.

§witness_script: Option<ScriptBuf>

The witness script for this input.

§bip32_derivations: BTreeMap<PublicKey, KeySource>

A map from public keys needed to sign this input to their corresponding master key fingerprints and derivation paths.

§final_script_sig: Option<ScriptBuf>

The finalized, fully-constructed scriptSig with signatures and any other scripts necessary for this input to pass validation.

§final_script_witness: Option<Witness>

The finalized, fully-constructed scriptWitness with signatures and any other scripts necessary for this input to pass validation.

§ripemd160_preimages: BTreeMap<Hash, Vec<u8>>

TODO: Proof of reserves commitment RIPEMD160 hash to preimage map.

§sha256_preimages: BTreeMap<Hash, Vec<u8>>

SHA256 hash to preimage map.

§hash160_preimages: BTreeMap<Hash, Vec<u8>>

HSAH160 hash to preimage map.

§hash256_preimages: BTreeMap<Hash, Vec<u8>>

HAS256 hash to preimage map.

§tap_key_sig: Option<Signature>

Serialized taproot signature with sighash type for key spend.

§tap_script_sigs: BTreeMap<(XOnlyPublicKey, TapLeafHash), Signature>

Map of <xonlypubkey>|<leafhash> with signature.

§tap_scripts: BTreeMap<ControlBlock, (ScriptBuf, LeafVersion)>

Map of Control blocks to Script version pair.

§tap_key_origins: BTreeMap<XOnlyPublicKey, (Vec<TapLeafHash>, KeySource)>

Map of tap root x only keys to origin info and leaf hashes contained in it.

§tap_internal_key: Option<XOnlyPublicKey>

Taproot Internal key.

§tap_merkle_root: Option<TapNodeHash>

Taproot Merkle root.

§proprietaries: BTreeMap<ProprietaryKey, Vec<u8>>

Proprietary key-value pairs for this input.

§unknowns: BTreeMap<Key, Vec<u8>>

Unknown key-value pairs for this input.

Implementations§

source§

impl Input

source

pub fn new(previous_output: &OutPoint) -> Self

Creates a new Input that spends the previous_output.

source

pub fn funding_utxo(&self) -> Result<&TxOut, FundingUtxoError>

Returns a reference to the funding utxo for this input.

source

pub fn is_finalized(&self) -> bool

Returns true if this input has been finalized.

It checks whether all inputs have complete scriptSigs and scriptWitnesses by checking for the presence of 0x07 Finalized scriptSig and 0x08 Finalized scriptWitness typed records.

Therefore a finalized input must have both final_script_sig and final_script_witness fields set. For legacy transactions the final_script_witness will be an empty Witness.

source

pub fn ecdsa_hash_ty( &self ) -> Result<EcdsaSighashType, NonStandardSighashTypeError>

Obtains the EcdsaSighashType for this input if one is specified. If no sighash type is specified, returns EcdsaSighashType::All.

§Errors

If the sighash_type field is set to a non-standard ECDSA sighash value.

source

pub fn taproot_hash_ty(&self) -> Result<TapSighashType, InvalidSighashTypeError>

Obtains the TapSighashType for this input if one is specified. If no sighash type is specified, returns TapSighashType::Default.

§Errors

If the sighash_type field is set to a invalid Taproot sighash value.

source

pub fn combine(&mut self, other: Self) -> Result<(), CombineError>

Combines this Input with other.

Trait Implementations§

source§

impl Clone for Input

source§

fn clone(&self) -> Input

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Input

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Input

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for Input

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Input

source§

fn eq(&self, other: &Input) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Input

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for Input

source§

impl StructuralPartialEq for Input

Auto Trait Implementations§

§

impl RefUnwindSafe for Input

§

impl Send for Input

§

impl Sync for Input

§

impl Unpin for Input

§

impl UnwindSafe for Input

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.

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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,