Input

Struct Input 

Source
pub struct Input {
Show 48 fields pub non_witness_utxo: Option<Transaction>, pub witness_utxo: Option<TxOut>, pub partial_sigs: BTreeMap<PublicKey, Vec<u8>>, pub sighash_type: Option<PsbtSighashType>, pub redeem_script: Option<Script>, pub witness_script: Option<Script>, pub bip32_derivation: BTreeMap<PublicKey, KeySource>, pub final_script_sig: Option<Script>, pub final_script_witness: Option<Vec<Vec<u8>>>, 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 previous_txid: Txid, pub previous_output_index: u32, pub sequence: Option<Sequence>, pub required_time_locktime: Option<Time>, pub required_height_locktime: Option<Height>, pub tap_key_sig: Option<SchnorrSig>, pub tap_script_sigs: BTreeMap<(XOnlyPublicKey, TapLeafHash), SchnorrSig>, pub tap_scripts: BTreeMap<ControlBlock, (Script, LeafVersion)>, pub tap_key_origins: BTreeMap<XOnlyPublicKey, (Vec<TapLeafHash>, KeySource)>, pub tap_internal_key: Option<XOnlyPublicKey>, pub tap_merkle_root: Option<TapNodeHash>, pub issuance_value_amount: Option<u64>, pub issuance_value_comm: Option<PedersenCommitment>, pub issuance_value_rangeproof: Option<Box<RangeProof>>, pub issuance_keys_rangeproof: Option<Box<RangeProof>>, pub pegin_tx: Option<Transaction>, pub pegin_txout_proof: Option<Vec<u8>>, pub pegin_genesis_hash: Option<BlockHash>, pub pegin_claim_script: Option<Script>, pub pegin_value: Option<u64>, pub pegin_witness: Option<Vec<Vec<u8>>>, pub issuance_inflation_keys: Option<u64>, pub issuance_inflation_keys_comm: Option<PedersenCommitment>, pub issuance_blinding_nonce: Option<Tweak>, pub issuance_asset_entropy: Option<[u8; 32]>, pub in_utxo_rangeproof: Option<Box<RangeProof>>, pub in_issuance_blind_value_proof: Option<Box<RangeProof>>, pub in_issuance_blind_inflation_keys_proof: Option<Box<RangeProof>>, pub amount: Option<u64>, pub blind_value_proof: Option<Box<RangeProof>>, pub asset: Option<AssetId>, pub blind_asset_proof: Option<Box<SurjectionProof>>, pub blinded_issuance: Option<u8>, pub proprietary: BTreeMap<ProprietaryKey, Vec<u8>>, pub unknown: BTreeMap<Key, Vec<u8>>,
}
Expand description

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

Fields§

§non_witness_utxo: Option<Transaction>

The non-witness transaction this input spends from. Should only be std::option::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 std::option::Option::Some for inputs which spend segwit outputs, including P2SH embedded ones.

§partial_sigs: BTreeMap<PublicKey, Vec<u8>>

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

§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<Script>

The redeem script for this input.

§witness_script: Option<Script>

The witness script for this input.

§bip32_derivation: 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<Script>

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

§final_script_witness: Option<Vec<Vec<u8>>>

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

§previous_txid: Txid

(PSET) Prevout TXID of the input

§previous_output_index: u32

(PSET) Prevout vout of the input

§sequence: Option<Sequence>

(PSET) Sequence number. If omitted, defaults to 0xffffffff

§required_time_locktime: Option<Time>

(PSET) Minimum required locktime, as a UNIX timestamp. If present, must be greater than or equal to 500000000

§required_height_locktime: Option<Height>

(PSET) Minimum required locktime, as a blockheight. If present, must be less than 500000000

§tap_key_sig: Option<SchnorrSig>

Serialized schnorr signature with sighash type for key spend

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

Map of <xonlypubkey>|<leafhash> with signature

§tap_scripts: BTreeMap<ControlBlock, (Script, 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

§issuance_value_amount: Option<u64>

The issuance value

§issuance_value_comm: Option<PedersenCommitment>

The issuance value commitment

§issuance_value_rangeproof: Option<Box<RangeProof>>

Issuance value rangeproof

§issuance_keys_rangeproof: Option<Box<RangeProof>>

Issuance keys rangeproof

§pegin_tx: Option<Transaction>

Pegin Transaction. Should be a bitcoin::Transaction

§pegin_txout_proof: Option<Vec<u8>>

Pegin Transaction proof

§pegin_genesis_hash: Option<BlockHash>

Pegin genesis hash

§pegin_claim_script: Option<Script>

Claim script

§pegin_value: Option<u64>

Pegin Value

§pegin_witness: Option<Vec<Vec<u8>>>

Pegin Witness

§issuance_inflation_keys: Option<u64>

Issuance inflation keys

§issuance_inflation_keys_comm: Option<PedersenCommitment>

Issuance inflation keys commitment

§issuance_blinding_nonce: Option<Tweak>

Issuance blinding nonce

§issuance_asset_entropy: Option<[u8; 32]>

Issuance asset entropy

§in_utxo_rangeproof: Option<Box<RangeProof>>

input utxo rangeproof

§in_issuance_blind_value_proof: Option<Box<RangeProof>>

Proof that blinded issuance matches the commitment

§in_issuance_blind_inflation_keys_proof: Option<Box<RangeProof>>

Proof that blinded inflation keys matches the corresponding commitment

§amount: Option<u64>

The explicit amount of the input

§blind_value_proof: Option<Box<RangeProof>>

The blind value rangeproof

§asset: Option<AssetId>

The input explicit asset

§blind_asset_proof: Option<Box<SurjectionProof>>

The blind asset surjection proof

§blinded_issuance: Option<u8>

Whether the issuance is blinded

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

Other fields

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

Unknown key-value pairs for this input.

Implementations§

Source§

impl Input

Source

pub fn ecdsa_hash_ty(&self) -> Option<EcdsaSighashType>

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 schnorr_hash_ty(&self) -> Option<SchnorrSighashType>

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

§Errors

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

Source

pub fn from_prevout(outpoint: OutPoint) -> Self

Create a psbt input from prevout without any issuance or pegins

Source

pub fn from_txin(txin: TxIn) -> Self

Create a pset input from TxIn

Source

pub fn issuance_ids(&self) -> (AssetId, AssetId)

Compute the issuance asset ids from pset. This function does not check whether there is an issuance in this input. Returns (asset_id, token_id)

Source

pub fn has_issuance(&self) -> bool

If the pset input has issuance

Source

pub fn is_pegin(&self) -> bool

If the Pset Input is pegin

Source

pub fn asset_issuance(&self) -> AssetIssuance

Get the issuance for this tx input

Source§

impl Input

ELIP0102 LiquiDEX extensions

Source

pub fn set_abf(&mut self, abf: AssetBlindingFactor)

Set Asset Blinding Factor

Source

pub fn get_abf(&self) -> Option<Result<AssetBlindingFactor, Error>>

Get Asset Blinding Factor

Trait Implementations§

Source§

impl Clone for Input

Source§

fn clone(&self) -> Input

Returns a duplicate 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 Decodable for Input

Source§

fn consensus_decode<D: Read>(d: D) -> Result<Self, Error>

Decode an object with a well-defined format
Source§

impl Default for Input

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Encodable for Input

Source§

fn consensus_encode<S: Write>(&self, s: S) -> Result<usize, Error>

Encode an object with a well-defined format, should only ever error if the underlying Write errors. Returns the number of bytes written on success
Source§

impl PartialEq for Input

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Input

Auto Trait Implementations§

§

impl Freeze for Input

§

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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,

Source§

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>,

Source§

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>,

Source§

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V