bitcoinjs-lib/latest/spend_p2sh_p2wsh_multisig.js
Thomas Kerin b27b72d775 examples
2016-11-12 19:26:26 +01:00

51 lines
1.6 KiB
JavaScript

var bitcoin = require('../src/index.js')
var bscript = bitcoin.script
var crypto = bitcoin.crypto
var networks = bitcoin.networks
var TransactionBuilder = bitcoin.TransactionBuilder
var TxSigner = bitcoin.TxSigner
var network = networks.testnet
var entropy = new Buffer('14bdfeac14bdfeac14bdfeac14bdfeac14bdfeac14bdfeac14bdfeac14bdfeac')
var root = bitcoin.HDNode.fromSeedBuffer(entropy, network)
var root2 = root.derive(1)
// var address = root.keyPair.getAddress()
// var wif = root.keyPair.toWIF()
// console.log(address)
// console.log(wif)
var multisig = bscript.multisig.output.encode(2, [root.getPublicKeyBuffer(), root2.getPublicKeyBuffer()])
var p2shScript = bscript.witnessScriptHash.output.encode(crypto.sha256(multisig))
var scriptPubKey = bscript.scriptHash.output.encode(crypto.hash160(p2shScript))
var txid = '5d614b47c75ca29a16086e7866de7522e59a09491bbd7e914923f5aabc62616a'
var vout = 0
var txOut = {
script: scriptPubKey,
value: 15000
}
var builder = new TransactionBuilder(network)
builder.addInput(txid, vout, 0xffffffff, txOut.script)
builder.addOutput('2N6stcWuMpLgt4nkiaEFXP6p9J9VKRHCwDJ', 10000)
var unsigned = builder.buildIncomplete()
var signer = new TxSigner(unsigned)
var opts = {
scriptPubKey: txOut.script,
value: txOut.value,
redeemScript: p2shScript,
witnessScript: multisig
}
signer.sign(0, root.keyPair, opts)
signer.sign(0, root2.keyPair, opts)
var txd = signer.done()
console.log(txd.toBuffer().toString('hex'))
var testSigner = new TxSigner(txd)
console.log(testSigner.signer(0, opts).isFullySigned())
console.log(testSigner.done().toBuffer().equals(txd.toBuffer()))