Struct bitcoin::util::bip143::SigHashCache[][src]

pub struct SigHashCache<R: Deref<Target = Transaction>> { /* fields omitted */ }
Expand description

A replacement for SigHashComponents which supports all sighash modes

Implementations

Compute the sighash components from an unsigned transaction and auxiliary in a lazy manner when required. For the generated sighashes to be valid, no fields in the transaction may change except for script_sig and witnesses.

Calculate hash for prevouts

Calculate hash for input sequence values

Calculate hash for outputs

Encode the BIP143 signing data for any flag type into a given object implementing a std::io::Write trait.

Compute the BIP143 sighash for any flag type. See SighashComponents::sighash_all simpler API for the most common case

When the SigHashCache is initialized with a mutable reference to a transaction instead of a regular reference, this method is available to allow modification to the witnesses.

This allows in-line signing such as

use bitcoin::blockdata::transaction::{Transaction, SigHashType};
use bitcoin::util::bip143::SigHashCache;
use bitcoin::Script;

let mut tx_to_sign = Transaction { version: 2, lock_time: 0, input: Vec::new(), output: Vec::new() };
let input_count = tx_to_sign.input.len();

let mut sig_hasher = SigHashCache::new(&mut tx_to_sign);
for inp in 0..input_count {
    let prevout_script = Script::new();
    let _sighash = sig_hasher.signature_hash(inp, &prevout_script, 42, SigHashType::All);
    // ... sign the sighash
    sig_hasher.access_witness(inp).push(Vec::new());
}

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.