5 unstable releases

0.3.0+0.18.0 Jul 20, 2019
0.2.2 May 31, 2017
0.2.1 May 23, 2017
0.2.0 May 23, 2017
0.1.1 May 21, 2017

#160 in #verification

Apache-2.0

9KB
124 lines

bitcoin-consensus

Rust bindings to libbitcoinconsensus

crates.io docs.rs CircleCI

This project allows Bitcoin software to be written in Rust while using the same library for script verification that Bitcoin Core uses.

cargo build will automatically check out the Bitcoin Core GitHub repository, configure and build it, and build the bindings statically linked to libbitcoinconsensus and libsecp256k1.

Currently building against the consensus library from Bitcoin Core v0.18.0.


lib.rs:

Rust bindings to libbitcoinconsensus

use hex::FromHex;
use bitcoin_consensus::{verify_script, ScriptVerificationFlags};

fn main() {
    let pubkey: Vec<u8> = Vec::from_hex("76a9144621d47f08fcb1e6be0b91144202de7a186deade88ac").unwrap();
    let tx: Vec<u8> = Vec::from_hex("01000000015884e5db9de218238671572340b207ee85b628074e7e467096c267266baf77a4000000006a4730440220340f35055aceb14250e4954b23743332f671eb803263f363d1d7272f1d487209022037a0eaf7cb73897ba9069fc538e7275c5ae188e934ae47ca4a70453b64fc836401210234257444bd3aead2b851bda4288d60abe34095a2a8d49aff1d4d19773d22b32cffffffff01a0860100000000001976a9147821c0a3768aa9d1a37e16cf76002aef5373f1a888ac00000000").unwrap();
    match verify_script(&pubkey, &tx, 0, ScriptVerificationFlags::empty()) {
        Ok(_) => println!("transaction verified"),
        Err(e) => panic!("transaction did not verify: {:?}", e)
    }
}

Dependencies

~115KB