Matias Alejo Garcia
11 years ago
3 changed files with 107 additions and 5 deletions
@ -0,0 +1,104 @@ |
|||
|
|||
var run = function() { |
|||
bitcore = typeof (bitcore) === 'undefined' ? require('../bitcore') : bitcore; |
|||
var networks = require('../networks'); |
|||
var WalletKey = bitcore.WalletKey; |
|||
var Script = bitcore.Script; |
|||
var Builder = bitcore.TransactionBuilder; |
|||
var opts = {network: networks.testnet}; |
|||
|
|||
console.log('## Network: ' + opts.network.name); |
|||
|
|||
var input = {}; |
|||
input.addr = "n2hoFVbPrYQf7RJwiRy1tkbuPPqyhAEfbp"; |
|||
input.priv = "cS62Ej4SobZnpFQYN1PEEBr2KWf5sgRYYnELtumcG6WVCfxno39V"; |
|||
|
|||
// Complete with the corresponding UTXO you want to use
|
|||
var utxos = [ |
|||
{ |
|||
address: input.addr, |
|||
txid: "a2a1b0bfbbe769253787d83c097adf61e6d77088e295249e9c3f1ca8a035c639", |
|||
vout: 0, |
|||
ts: 1396288753, |
|||
scriptPubKey: "76a914e867aad8bd361f57c50adc37a0c018692b5b0c9a88ac", |
|||
amount: 0.63, |
|||
confirmations: 2 |
|||
} |
|||
]; |
|||
|
|||
var privs = [ |
|||
"cP6JBHuQf7yqeqtdKRd22ibF3VehDv7G6BdzxSNABgrv3jFJUGoN", |
|||
"cQfRwF7XLSM5xGUpF8PZvob2MZyULvZPA2j5cat2RKDJrja7FtCZ", |
|||
"cUkYub4jtFVYymHh38yMMW36nJB4pXG5Pzd5QjResq79kAndkJcg", |
|||
"cMyBgowsyrJRufoKWob73rMQB1PBqDdwFt8z4TJ6APN2HkmX1Ttm", |
|||
"cN9yZCom6hAZpHtCp8ovE1zFa7RqDf3Cr4W6AwH2tp59Jjh9JcXu", |
|||
]; |
|||
|
|||
var pubkeys = [] |
|||
privs.forEach(function(p) { |
|||
var wk = new WalletKey(opts); |
|||
wk.fromObj({priv: p}); |
|||
pubkeys.push(bitcore.buffertools.toHex(wk.privKey.public)); |
|||
}); |
|||
|
|||
|
|||
var outs = [{nreq:3, pubkeys:pubkeys, amount:0.05}]; |
|||
var tx = new Builder(opts) |
|||
.setUnspent(utxos) |
|||
.setOutputs(outs) |
|||
.sign([input.priv]) |
|||
.build(); |
|||
var txHex = tx.serialize().toString('hex'); |
|||
console.log('1) SEND TO MULSISIG TX: ', txHex); |
|||
console.log('[this example originally generated TXID: ff5c8b4912f6d056f0cf8431ec27032a73df22c167726267dd4cc0d7817a1e7d on testnet]\n\n\thttp://test.bitcore.io/tx/ff5c8b4912f6d056f0cf8431ec27032a73df22c167726267dd4cc0d7817a1e7d\n\n'); |
|||
|
|||
|
|||
//save scriptPubKey
|
|||
var scriptPubKey = tx.outs[0].s.toString('hex'); |
|||
|
|||
/* |
|||
* |
|||
* REDDEEM TX |
|||
*/ |
|||
var utxos2 = [ |
|||
{ |
|||
address: input.addr, |
|||
txid: "ff5c8b4912f6d056f0cf8431ec27032a73df22c167726267dd4cc0d7817a1e7d", |
|||
vout: 0, |
|||
ts: 1396288753, |
|||
scriptPubKey: scriptPubKey, |
|||
amount: 0.05, |
|||
confirmations: 2 |
|||
} |
|||
]; |
|||
|
|||
outs = [{address:input.addr, amount:0.04}]; |
|||
var b = new Builder(opts) |
|||
.setUnspent(utxos2) |
|||
.setOutputs(outs) |
|||
.sign(privs); |
|||
|
|||
|
|||
tx= b.build(); |
|||
|
|||
|
|||
var txHex = tx.serialize().toString('hex'); |
|||
console.log('2) REDEEM SCRIPT: ', txHex); |
|||
console.log('=> Is signed status:', b.isFullySigned(), b.countInputMultiSig(0) ); |
|||
|
|||
console.log('[this example originally generated TXID: 2813c5a670d2c9d0527718f9d0ea896c78c3c8fc57b409e67308744fc7a7a98e on testnet]\n\n\thttp://test.bitcore.io/tx/2813c5a670d2c9d0527718f9d0ea896c78c3c8fc57b409e67308744fc7a7a98e'); |
|||
|
|||
}; |
|||
|
|||
// This is just for browser & mocha compatibility
|
|||
if (typeof module !== 'undefined') { |
|||
module.exports.run = run; |
|||
if (require.main === module) { |
|||
run(); |
|||
} |
|||
} else { |
|||
run(); |
|||
} |
|||
|
|||
////
|
|||
|
Loading…
Reference in new issue