pub enum TransactionSpendingCondition {
Singlesig(SinglesigSpendingCondition),
Multisig(MultisigSpendingCondition),
}
Variants§
Singlesig(SinglesigSpendingCondition)
Multisig(MultisigSpendingCondition)
Implementations§
source§impl TransactionSpendingCondition
impl TransactionSpendingCondition
pub fn new_singlesig_p2pkh( pubkey: Secp256k1PublicKey ) -> Option<TransactionSpendingCondition>
pub fn new_singlesig_p2wpkh( pubkey: Secp256k1PublicKey ) -> Option<TransactionSpendingCondition>
pub fn new_multisig_p2sh( num_sigs: u16, pubkeys: Vec<Secp256k1PublicKey> ) -> Option<TransactionSpendingCondition>
pub fn new_multisig_p2wsh( num_sigs: u16, pubkeys: Vec<Secp256k1PublicKey> ) -> Option<TransactionSpendingCondition>
sourcepub fn new_initial_sighash() -> TransactionSpendingCondition
pub fn new_initial_sighash() -> TransactionSpendingCondition
When committing to the fact that a transaction is sponsored, the origin doesn’t know anything else. Instead, it commits to this sentinel value as its sponsor. It is intractable to calculate a private key that could generate this.
pub fn num_signatures(&self) -> u16
pub fn signatures_required(&self) -> u16
pub fn nonce(&self) -> u64
pub fn tx_fee(&self) -> u64
pub fn set_nonce(&mut self, n: u64)
pub fn set_tx_fee(&mut self, tx_fee: u64)
pub fn get_tx_fee(&self) -> u64
sourcepub fn address_mainnet(&self) -> StacksAddress
pub fn address_mainnet(&self) -> StacksAddress
Get the mainnet account address of the spending condition
sourcepub fn address_testnet(&self) -> StacksAddress
pub fn address_testnet(&self) -> StacksAddress
Get the mainnet account address of the spending condition
pub fn make_sighash_presign( cur_sighash: &Txid, cond_code: &TransactionAuthFlags, tx_fee: u64, nonce: u64 ) -> Txid
pub fn make_sighash_postsign( cur_sighash: &Txid, pubkey: &Secp256k1PublicKey, sig: &MessageSignature ) -> Txid
sourcepub fn next_signature(
cur_sighash: &Txid,
cond_code: &TransactionAuthFlags,
tx_fee: u64,
nonce: u64,
privk: &Secp256k1PrivateKey
) -> Result<(MessageSignature, Txid), Error>
pub fn next_signature( cur_sighash: &Txid, cond_code: &TransactionAuthFlags, tx_fee: u64, nonce: u64, privk: &Secp256k1PrivateKey ) -> Result<(MessageSignature, Txid), Error>
Linear-complexity signing algorithm – we sign a rolling hash over all data committed to by the previous signer (instead of naively re-serializing the transaction each time), as well as over new data provided by this key (excluding its own public key or signature, which are authenticated by the spending condition’s key hash). Calculates and returns the next signature and sighash, which the subsequent private key must sign.
sourcepub fn next_verification(
cur_sighash: &Txid,
cond_code: &TransactionAuthFlags,
tx_fee: u64,
nonce: u64,
key_encoding: &TransactionPublicKeyEncoding,
sig: &MessageSignature
) -> Result<(Secp256k1PublicKey, Txid), Error>
pub fn next_verification( cur_sighash: &Txid, cond_code: &TransactionAuthFlags, tx_fee: u64, nonce: u64, key_encoding: &TransactionPublicKeyEncoding, sig: &MessageSignature ) -> Result<(Secp256k1PublicKey, Txid), Error>
Linear-complexity verifying algorithm – we verify a rolling hash over all data committed to by order of signers (instead of re-serializing the tranasction each time). Calculates the next sighash and public key, which the next verifier must verify. Used by StacksTransaction::verify*
Trait Implementations§
source§impl Clone for TransactionSpendingCondition
impl Clone for TransactionSpendingCondition
source§fn clone(&self) -> TransactionSpendingCondition
fn clone(&self) -> TransactionSpendingCondition
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for TransactionSpendingCondition
impl Debug for TransactionSpendingCondition
source§impl<'de> Deserialize<'de> for TransactionSpendingCondition
impl<'de> Deserialize<'de> for TransactionSpendingCondition
source§fn deserialize<__D>(
__deserializer: __D
) -> Result<TransactionSpendingCondition, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<TransactionSpendingCondition, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
source§impl PartialEq for TransactionSpendingCondition
impl PartialEq for TransactionSpendingCondition
source§fn eq(&self, other: &TransactionSpendingCondition) -> bool
fn eq(&self, other: &TransactionSpendingCondition) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for TransactionSpendingCondition
impl Serialize for TransactionSpendingCondition
source§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,
source§impl StacksMessageCodec for TransactionSpendingCondition
impl StacksMessageCodec for TransactionSpendingCondition
source§fn consensus_serialize<W>(&self, fd: &mut W) -> Result<(), Error>where
W: Write,
fn consensus_serialize<W>(&self, fd: &mut W) -> Result<(), Error>where W: Write,
fd