diff --git a/examples/CreateAndSignTx.js b/examples/CreateAndSignTx.js new file mode 100644 index 0000000..aa8a746 --- /dev/null +++ b/examples/CreateAndSignTx.js @@ -0,0 +1,210 @@ + + + +var run = function() { + bitcore = typeof (bitcore) === 'undefined' ? require('../bitcore') : bitcore; + + var priv = 'cTgGUrcro89yUtKeG6gHBAS14r3qp25KwTTxG9d4kEzcFxecuZDm'; + var amt = '0.005'; + var toAddress = 'myuAQcCc1REUgXGsCTiYhZvPPc3XxZ36G1'; + var changeAddressString = 'moDz3jEo9q7CxjBDjmb13sL4SKkgo2AACE'; + var feeString = '0.0001'; + + var safeUnspent = [ + { + address: "mqSjTad2TKbPcKQ3Jq4kgCkKatyN44UMgZ", + hash: "2ac165fa7a3a2b535d106a0041c7568d03b531e58aeccdd3199d7289ab12cfc1", + vout: 1, + ts: 1394719301, + scriptPubKey: "76a9146ce4e1163eb18939b1440c42844d5f0261c0338288ac", + amount: 0.01, + confirmations: 2 + } + ] + ; + + console.log('TX Data: BTC:' + amt + ' => '+ toAddress + ', change To:' + changeAddressString ) ; + console.log('Unspends:', safeUnspent); + + var wk = new bitcore.WalletKey({ + network: bitcore.networks.testnet + }); + wk.fromObj({ priv: priv, }); + + var wkObj= wk.storeObj(); + var keyPairs = [{ + key: wkObj.priv, + address: wkObj.addr, + }]; + console.log('KEY DB IS:', keyPairs); + + var Address = bitcore.Address; + var Transaction = bitcore.Transaction; + var Script = bitcore.Script; + var nets = bitcore.networks; + var z = bitcore.bignum(0); + var amt = bitcore.util.parseValue(amt); + + if(z.cmp(amt) === 0 ) + throw "spend amount must be greater than zero"; + + if(!changeAddressString) + throw "change address was not provided"; + + var fee = bitcore.util.parseValue(feeString || '0'); + var total = bitcore.bignum(0).add(amt).add(fee); + var address = new Address(toAddress); + var sendTx = new Transaction(); + var i; + + var unspent = []; + var unspentAmt = bitcore.bignum(0); + + + for(i=0;i -1, we have enough to send the requested amount + if(unspentAmt.cmp(total) > -1) { + break; + } + } + + if(unspentAmt.cmp(total) < 0) { + throw "you do not have enough bitcoins to send this amount"; + } + + var txobj = {}; + txobj.version = 1; + txobj.lock_time = 0; + txobj.ins = []; + txobj.outs = []; + + for(i=0;i '+ toAddress + ', change To:' + changeAddressString ) ; +console.log('Unspends:', safeUnspent); + +var wk = new bitcore.WalletKey({ + network: bitcore.networks.testnet +}); +wk.fromObj({ priv: priv, }); + +var wkObj= wk.storeObj(); +var keyPairs = [{ + key: wkObj.priv, + address: wkObj.addr, +}]; +console.log('KEY DB IS:', keyPairs); + +var Address = bitcore.Address; +var Transaction = bitcore.Transaction; +var Script = bitcore.Script; +var nets = bitcore.networks; +var z = bitcore.bignum(0); +var amt = bitcore.util.parseValue(amt); + +if(z.cmp(amt) === 0 ) + throw "spend amount must be greater than zero"; + +if(!changeAddressString) + throw "change address was not provided"; + +var fee = bitcore.util.parseValue(feeString || '0'); +var total = bitcore.bignum(0).add(amt).add(fee); +var address = new Address(toAddress); +var sendTx = new Transaction(); +var i; + +var unspent = []; +var unspentAmt = bitcore.bignum(0); + + +for(i=0;i -1, we have enough to send the requested amount + if(unspentAmt.cmp(total) > -1) { + break; + } + } + + if(unspentAmt.cmp(total) < 0) { + throw "you do not have enough bitcoins to send this amount"; + } + + var txobj = {}; + txobj.version = 1; + txobj.lock_time = 0; + txobj.ins = []; + txobj.outs = []; + + for(i=0;i + + diff --git a/test/test.examples.js b/test/test.examples.js index 34fbcd0..4115bc7 100644 --- a/test/test.examples.js +++ b/test/test.examples.js @@ -10,6 +10,7 @@ var examples = [ 'PeerManager', 'Rpc', 'SendTx', + 'CreateAndSignTx', 'Script', ];