[][src]Struct cash_tx_builder::TxBuilder

pub struct TxBuilder<F> where
    F: Fn(&str) -> Option<(Vec<u8>, bool)>, 
{ /* fields omitted */ }

Transaction builder

Methods

impl<F: Fn(&str) -> Option<(Vec<u8>, bool)>> TxBuilder<F>[src]

pub fn new(address_parser: F) -> TxBuilder<F>[src]

Construct new transaction builder

Arguments

  • address_parser - address parser closure

    Arguments

    • address

    Returns

    • hashed public key or hashed redeem script
    • true if address is P2PKH, false if address is P2SH

    or None

pub fn from_tx(tx: &Transaction, address_parser: F) -> Result<TxBuilder<F>>[src]

Construct transaction builder from Transaction

Arguments

  • tx - transaction

  • address_parser - address parser closure

    Arguments

    • address

    Returns

    • hashed public key or hashed redeem script
    • true if address is P2PKH, false if address is P2SH

    or None

Example

let hex = hex!("0100000001339a4b15a25a107057a2aedba3655bfe9aca9dbfc8c4281adbff519764385569010000006a47304402204bdde4960e3733c64b8debc7c2ce609699e418de91e055594a7fd53f07e618b90220066f02e1f9a3e26e76ff4220de3b2b17dab63684c1fb9ef567ed2056ba3a96d44121030a7decd850db8d31c819bd34a0f9934f9c51e1f78718f59c886a3c8389c0d1deffffffff02d7f52d01000000001976a914214ffcd3e7668da243cc4006759f6fe5f3c60bfe88ac10270000000000001976a91492fc13573caf1bd38bd65738428406f4af80793a88ac00000000");
let txid = "7bdc016701e4c5d7ec34e99954ec3921140728d2c58b1da3cf6aa34c760d8a47";
let tx = Transaction::try_from(&hex[..])?;
let txb = TxBuilder::from_tx(&tx, parser)?;
assert_eq!(txb.txid(), txid);

pub fn set_version(&mut self, v: u32)[src]

Set transaction version (default: 2)

Arguments

v - version

Example

txb.set_version(1);
assert_eq!(txb.to_vec()[0..4], (0x01 as u32).to_le_bytes());

pub fn set_fork_id(&mut self, id: u32)[src]

Set fork id (default: 0)

Arguments

  • id - forkid

Example

let hash_type = sig_hash::ALL | sig_hash::FORKID;
txb.set_fork_id(1);
let sighash = txb.witness_v0_hash(hash_type, 0, None, None)?;
assert_eq!(sighash, hex!("e99f87c70a16dfa390ea0ddd0748709a8548b7b97c62f91754d74264c687db62"));

pub fn add_input(
    &mut self,
    txid: &str,
    index: u32,
    value: Option<u64>,
    script: Option<&[u8]>,
    sequence_no: Option<u32>
) -> Result<()>
[src]

Add input

Arguments

  • txid - previous transaction hash
  • index - previous txout-index
  • value - (option) previous value
  • script - (option) previous scriptPubKey
  • sequence_no- (option) sequence number

pub fn set_script_sig(&mut self, index: usize, script: &[u8]) -> Result<()>[src]

Set scriptSig

Arguments

  • index - previous txout-index
  • script - scriptSig

pub fn add_address_output(&mut self, value: u64, address: &str) -> Result<()>[src]

Add output by bitcoin address

Arguments

  • value - satoshi
  • address - bitcoin address

pub fn add_null_data_output(&mut self, data: &[u8]) -> Result<()>[src]

Add output by null data

Arguments

  • data - extra data

Example

txb.add_null_data_output(b"hoge");
assert_eq!(&txb.to_vec()[17..21], b"hoge");

pub fn add_output(&mut self, value: u64, script: &[u8])[src]

Add output by null data

Arguments

  • value - satoshi
  • script - scriptPubKey

Example

let script = hex!("76a91432b57f34861bcbe33a701be9ac3a50288fbc0a3d88ac");
txb.add_output(1000, &script);
assert_eq!(&txb.to_vec()[15..40], script);

pub fn to_vec(&self) -> Vec<u8>[src]

Convert to Vec<u8>

Returns

  • serialized transaction

pub fn witness_v0_hash(
    &self,
    hash_type: u32,
    index: u32,
    prev_value: Option<u64>,
    prev_script: Option<&[u8]>
) -> Result<Vec<u8>>
[src]

Get digest according to bip143
spec

Arguments

  • hash_type - sighash type
  • index - input index
  • prev_value - (option) previous value
  • prev_script - (option) previous script

pub fn txid(&self) -> String[src]

Get txid

Returns

  • txid

Trait Implementations

impl<F: Debug> Debug for TxBuilder<F> where
    F: Fn(&str) -> Option<(Vec<u8>, bool)>, 
[src]

Auto Trait Implementations

impl<F> Send for TxBuilder<F> where
    F: Send

impl<F> Sync for TxBuilder<F> where
    F: Sync

Blanket Implementations

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Same for T

type Output = T

Should always be Self