How to use bitcoinjs-lib - 10 common examples

To help you get started, we’ve selected a few bitcoinjs-lib examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github BlueWallet / BlueWallet / tests / unit / signer.js View on Github external
it('should return valid tx hex for RBF-able segwit transactions', function (done) {
      let signer = require('../../models/signer')
      let utxos = [{ txid: '1e1a8cced5580eecd0ac15845fc3adfafbb0f5944a54950e4a16b8f6d1e9b715', vout: 1, address: '3Bsssbs4ANCGNETvGLJ3Fvri6SiVnH1fbi', account: '3Bsssbs4ANCGNETvGLJ3Fvri6SiVnH1fbi', scriptPubKey: 'a9146fbf1cee74734503297e46a0db3e3fbb06f2e9d387', amount: 0.1, confirmations: 108, spendable: false, solvable: false, safe: true }]
      let txhex = signer.createSegwitTransaction(utxos, '1Pb81K1xJnMjUfFgKUbva6gr1HCHXxHVnr', 0.001, 0.0001, 'KyWpryAKPiXXbipxWhtprZjSLVjp22sxbVnJssq2TCNQxs1SuMeD', '3Bsssbs4ANCGNETvGLJ3Fvri6SiVnH1fbi', 0)
      assert.equal(txhex, '0100000000010115b7e9d1f6b8164a0e95544a94f5b0fbfaadc35f8415acd0ec0e58d5ce8c1a1e0100000017160014f90e5bca5635b84bd828064586bd7eb117fee9a90000000002905f0100000000001976a914f7c6c1f9f6142107ed293c8fbf85fbc49eb5f1b988ace00f97000000000017a9146fbf1cee74734503297e46a0db3e3fbb06f2e9d38702483045022100bd687693e57161282a80affb82f18386cbf319bca72ca2c16320b0f3b087bee802205e22a9a16b86628ea08eab83aebec1348c476e9d0c90cd41aa73c47f50d86aab0121039425479ea581ebc7f55959da8c2e1a1063491768860386335dd4630b5eeacfc500000000')
      // now, testing change addess, destination address, amounts & fees...
      let tx = bitcoinjs.Transaction.fromHex(txhex)
      assert.equal(bitcoinjs.address.fromOutputScript(tx.outs[0].script), '1Pb81K1xJnMjUfFgKUbva6gr1HCHXxHVnr')
      assert.equal(bitcoinjs.address.fromOutputScript(tx.outs[1].script), '3Bsssbs4ANCGNETvGLJ3Fvri6SiVnH1fbi')
      assert.equal(tx.outs[0].value, 90000) // 0.0009 because we deducted fee 0.0001
      assert.equal(tx.outs[1].value, 9900000) // 0.099 because 0.1 - 0.001
      done()
    })
github blockstack / blockstack.js / tests / unitTests / src / unitTestsOperations.js View on Github external
.then(([estimatedCost, hexTX]) => {
        const tx = btc.Transaction.fromHex(hexTX)
        const txLen = hexTX.length / 2
        const outputVals = sumOutputValues(tx)
        const inputVals = getInputVals(tx)
        const fee = inputVals - outputVals

        // change address is the 3rd output usually...
        const change = tx.outs[2].value

        t.equal(btc.address.fromOutputScript(tx.outs[2].script), testAddresses[1].address,
                'Payer change should be third output')
        t.equal(inputVals - change, estimatedCost, 'Estimated cost should match actual.')
        t.equal(tx.ins.length, 2, 'Should use both payer utxos')
        t.equal(Math.floor(fee / txLen), 1000,
                `Paid fee of ${fee} for tx of length ${txLen} should equal 1k satoshi/byte`)
      })
      .catch((err) => { console.log(err.stack); throw err })
github flow-typed / flow-typed / definitions / npm / bitcoinjs-lib_v2.x.x / test_bitcoinjs-lib_v2.x.x.js View on Github external
var Gx = new BigInteger('1');
var Gy = new BigInteger('1');
var n = new BigInteger('1');
var h = new BigInteger('1');
var p: Point = new Curve(pi, a, b, Gx, Gy, n, h).G;

(new ECPair(b): ECPair);
(new ECPair(null, p): ECPair);

// $ExpectError
(new ECPair(new Buffer(1)): ECPair);
// $ExpectError
(new ECPair(null, new Buffer(1)): ECPair);

// $ExpectError
(ECPair(new Buffer(1)): ECPair);

(ECPair.fromPublicKeyBuffer(new Buffer(1)): ECPair);

var pair = ECPair.makeRandom();
(pair.verify(new Buffer(1), new ECSignature(new BigInteger('1'), new BigInteger('1'))): boolean);

// $ExpectError
(pair.verify(new Buffer(1)): boolean);
// $ExpectError
(pair.verify(new Buffer(1), new Buffer(1)): boolean);

(new HDNode(pair, new Buffer(1)): HDNode);

// $ExpectError
(new HDNode(pair): HDNode);
github flow-typed / flow-typed / definitions / npm / bitcoinjs-lib_v2.x.x / test_bitcoinjs-lib_v2.x.x.js View on Github external
(new HDNode(pair): HDNode);

var bitcoinNetwork = {
  messagePrefix: '\x18Bitcoin Signed Message:\n',
  bip32: {
    public: 0x0488b21e,
    private: 0x0488ade4
  },
  pubKeyHash: 0x00,
  scriptHash: 0x05,
  wif: 0x80,
  dustThreshold: 546
};

(HDNode.fromBase58('xpub123'): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork): HDNode);

// $ExpectError
(HDNode.fromBase58(new Buffer(1)): HDNode);

(HDNode.fromBase58('xpub123', bitcoinNetwork).getAddress(): string);

var t: Transaction = Transaction.fromHex('1234');
var input = {
  script: new Buffer(1),
  hash: new Buffer(1),
  index: 1,
  sequence: 1
};

t.ins.push(input);
github flow-typed / flow-typed / definitions / npm / bitcoinjs-lib_v2.x.x / test_bitcoinjs-lib_v2.x.x.js View on Github external
messagePrefix: '\x18Bitcoin Signed Message:\n',
  bip32: {
    public: 0x0488b21e,
    private: 0x0488ade4
  },
  pubKeyHash: 0x00,
  scriptHash: 0x05,
  wif: 0x80,
  dustThreshold: 546
};

(HDNode.fromBase58('xpub123'): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork): HDNode);

// $ExpectError
(HDNode.fromBase58(new Buffer(1)): HDNode);

(HDNode.fromBase58('xpub123', bitcoinNetwork).getAddress(): string);

var t: Transaction = Transaction.fromHex('1234');
var input = {
  script: new Buffer(1),
  hash: new Buffer(1),
  index: 1,
  sequence: 1
};

t.ins.push(input);

// $ExpectError
t.addInput(input);
github flow-typed / flow-typed / definitions / npm / bitcoinjs-lib_v2.x.x / test_bitcoinjs-lib_v2.x.x.js View on Github external
public: 0x0488b21e,
    private: 0x0488ade4
  },
  pubKeyHash: 0x00,
  scriptHash: 0x05,
  wif: 0x80,
  dustThreshold: 546
};

(HDNode.fromBase58('xpub123'): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork): HDNode);

// $ExpectError
(HDNode.fromBase58(new Buffer(1)): HDNode);

(HDNode.fromBase58('xpub123', bitcoinNetwork).getAddress(): string);

var t: Transaction = Transaction.fromHex('1234');
var input = {
  script: new Buffer(1),
  hash: new Buffer(1),
  index: 1,
  sequence: 1
};

t.ins.push(input);

// $ExpectError
t.addInput(input);

t.addInput(new Buffer(1), 1);
github flow-typed / flow-typed / definitions / npm / bitcoinjs-lib_v2.x.x / test_bitcoinjs-lib_v2.x.x.js View on Github external
// $ExpectError
(new HDNode(pair): HDNode);

var bitcoinNetwork = {
  messagePrefix: '\x18Bitcoin Signed Message:\n',
  bip32: {
    public: 0x0488b21e,
    private: 0x0488ade4
  },
  pubKeyHash: 0x00,
  scriptHash: 0x05,
  wif: 0x80,
  dustThreshold: 546
};

(HDNode.fromBase58('xpub123'): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork): HDNode);

// $ExpectError
(HDNode.fromBase58(new Buffer(1)): HDNode);

(HDNode.fromBase58('xpub123', bitcoinNetwork).getAddress(): string);

var t: Transaction = Transaction.fromHex('1234');
var input = {
  script: new Buffer(1),
  hash: new Buffer(1),
  index: 1,
  sequence: 1
};

t.ins.push(input);
github quartzjer / pennybank / hb-sample.js View on Github external
var crypto = require('crypto');
var bitcoin = require("bitcoinjs-lib")
var helloblock = require('helloblock-js')({
  network: 'testnet'
})

// placeholder! this is just some op_return sample code from helloblock-js

function done(err)
{
  if(err) console.log("ERR",err);
  process.exit(0);
}

var key = bitcoin.ECKey.fromWIF("L1uyy5qTuGrVXrmrsvHWHgVzW9kKdrp27wBC7Vs6nZDTF2BRUVwy")
var address = key.pub.getAddress(bitcoin.networks.testnet).toString()

helloblock.faucet.withdraw(address, 2e4, function(err) {
  if (err) return done(err)

  helloblock.addresses.getUnspents(address, function(err, _, unspents) {
    if (err) return done(err)

    // filter small unspents
    unspents = unspents.filter(function(unspent) { return unspent.value > 1e4 })

    // use the oldest unspent
    var unspent = unspents.pop();
//    helloblock.transactions.get(unspent.txHash, function(err, res, transaction) {
//      if (err) return done(err)
//        console.log("unspent",unspent,transaction);
//    });
github blocktrail / blocktrail-sdk-nodejs / examples / not_so_simple_payment_api_usage.js View on Github external
/* jshint -W101 */
var blocktrail = require('../'); // require('blocktrail-sdk') when trying example from in your own project
var bitcoin = require('bitcoinjs-lib');

var client = blocktrail.BlocktrailSDK({
    apiKey : "YOUR_APIKEY_HERE",
    apiSecret : "YOUR_APISECRET_HERE",
    testnet : true
});

/*
 * this example is for when you're storing the primary private and backup public key yourself
 */
var primaryPrivateKey = bitcoin.HDNode.fromBase58("tprv8ZgxMBicQKsPdMD2AYgpezVQZNi5kxsRJDpQWc5E9mxp747KgzekJbCkvhqv6sBTDErTjkWqZdY14rLP1YL3cJawEtEp2dufHxPhr1YUoeS", bitcoin.networks.testnet);
var backupPublicKey = bitcoin.HDNode.fromBase58("tpubD6NzVbkrYhZ4Y6Ny2VF2o5wkBGuZLQAsGPn88Y4JzKZH9siB85txQyYq3sDjRBFwnE1YhdthmHWWAurJu7EetmdeJH9M5jz3Chk7Ymw2oyf", bitcoin.networks.testnet);

var sendTransaction = function(wallet) {
    wallet.getNewAddress(function(err, address, path) {
        if (err) {
            return console.log("getNewAddress ERR", err);
        }

        console.log('new address', address, path);

        var pay = {};
        pay[address] = blocktrail.toSatoshi(0.001);

        wallet.pay(pay, function(err, result) {
            if (err) {
                return console.log("pay ERR", err);
github bitcoin-studio / Bitcoin-Programming-with-BitcoinJS / code / swap_on2off_p2wsh_redeem.js View on Github external
// Prepare transaction
const tx = txb.buildIncomplete()

// Prepare signature hash
const sigHash = bitcoin.Transaction.SIGHASH_ALL
signatureHash = tx.hashForWitnessV0(0, Buffer.from(WITNESS_SCRIPT, 'hex'), 12e2, sigHash)
console.log('Signature hash:')
console.log(signatureHash.toString('hex'))
console.log()

// Happy case: Swap Provider is able to spend the P2WSH
const witnessStackClaimBranch = bitcoin.payments.p2wsh({
  redeem: {
    input: bitcoin.script.compile([
      bitcoin.script.signature.encode(keyPairSwapProvider.sign(signatureHash), sigHash),
      Buffer.from(PREIMAGE, 'hex')
    ]),
    output: Buffer.from(WITNESS_SCRIPT, 'hex')
  }
}).witness
console.log('Happy case witness stack:')
console.log(witnessStackClaimBranch.map(x => x.toString('hex')))
console.log()

// Failure case: User ask a refund after the timelock has expired
const witnessStackRefundBranch = bitcoin.payments.p2wsh({
  redeem: {
    input: bitcoin.script.compile([
      bitcoin.script.signature.encode(keyPairUser.sign(signatureHash), sigHash),
      Buffer.from(PREIMAGE, 'hex')
    ]),