mirror of https://github.com/BTCPrivate/copay.git
createTX to wallet
This commit is contained in:
parent
cf1732fc44
commit
88d8ad285c
|
@ -6,6 +6,7 @@ var Address = bitcore.Address;
|
|||
var Script = bitcore.Script;
|
||||
var coinUtil = bitcore.util;
|
||||
var Transaction = bitcore.Transaction;
|
||||
var buffertools = bitcore.buffertools;
|
||||
|
||||
var Storage = imports.Storage || require('./Storage');
|
||||
var log = imports.log || console.log;
|
||||
|
@ -47,7 +48,7 @@ function Wallet(opts) {
|
|||
|
||||
|
||||
Wallet.getRandomId = function () {
|
||||
return coinUtil.generateNonce().toString('hex');
|
||||
return buffertools.toHex(coinUtil.generateNonce());
|
||||
};
|
||||
|
||||
Wallet.decrypt = function (passphrase, encPayload) {
|
||||
|
@ -265,9 +266,9 @@ Wallet.prototype.getAddresses = function() {
|
|||
return ret;
|
||||
};
|
||||
|
||||
Wallet.prototype.createTx = function(utxos,outs) {
|
||||
Wallet.prototype.createTx = function(utxos,outs, changeAddress) {
|
||||
var opts = {
|
||||
remainderAddress: this.createAddress(1),
|
||||
remainderAddress: changeAddress || this.createAddress(1),
|
||||
};
|
||||
return Transaction.create(utxos, outs, opts);
|
||||
};
|
||||
|
|
|
@ -1,33 +1,40 @@
|
|||
'use strict';
|
||||
|
||||
var chai = chai || require('chai');
|
||||
var should = chai.should();
|
||||
var bitcore = bitcore || require('../node_modules/bitcore');
|
||||
var chai = chai || require('chai');
|
||||
var should = chai.should();
|
||||
var bitcore = bitcore || require('../node_modules/bitcore');
|
||||
var Address = bitcore.Address;
|
||||
var buffertools = bitcore.buffertools;
|
||||
var cosign = cosign || {};
|
||||
var fakeStorage = require('./FakeStorage');
|
||||
var Wallet = cosign.Wallet || require('soop').load('../js/models/Wallet', {Storage: fakeStorage});
|
||||
|
||||
var cosign = cosign || {};
|
||||
var aMasterPrivKey = 'tprv8ZgxMBicQKsPdSVTiWXEqCCzqRaRr9EAQdn5UVMpT9UHX67Dh1FmzEMbavPumpAicsUm2XvC6NTdcWB89yN5DUWx5HQ7z3KByUg7Ht74VRZ';
|
||||
|
||||
var Address = bitcore.Address;
|
||||
var fakeStorage = require('./FakeStorage');
|
||||
var Wallet = cosign.Wallet || require('soop').load('../js/models/Wallet', {Storage: fakeStorage});
|
||||
|
||||
|
||||
var config = {
|
||||
network:'livenet',
|
||||
};
|
||||
|
||||
var createW = function () {
|
||||
var createW = function (network, bytes) {
|
||||
|
||||
var config = {
|
||||
network: network || 'livenet',
|
||||
};
|
||||
if (bytes) config.bytes = bytes;
|
||||
|
||||
var w = new Wallet(config);
|
||||
should.exist(w);
|
||||
|
||||
var cosigners = [];
|
||||
for(var i=0; i<4; i++) {
|
||||
delete config['bytes'];
|
||||
var c = new Wallet(config);
|
||||
w.haveAllRequiredPubKeys().should.equal(false);
|
||||
|
||||
w.addCosignerExtendedPubKey(c.getMasterExtendedPubKey());
|
||||
cosigners.push(c);
|
||||
}
|
||||
|
||||
return {w:w, cosigners: cosigners};
|
||||
};
|
||||
|
||||
|
@ -142,6 +149,48 @@ describe('Wallet model', function() {
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
it('should create a TX', function () {
|
||||
var k = createW('testnet', aMasterPrivKey);
|
||||
var w = k.w;
|
||||
var as=[], j=0;
|
||||
for(var isChange=0; isChange<2; isChange++)
|
||||
for(var i=0; i<6; i++)
|
||||
as[j++] = w.createAddress(isChange);
|
||||
|
||||
var utxos = [
|
||||
{
|
||||
address: as[0],
|
||||
txid: "2ac165fa7a3a2b535d106a0041c7568d03b531e58aeccdd3199d7289ab12cfc1",
|
||||
scriptPubKey: "76a9146ce4e1163eb18939b1440c42844d5f0261c0338288ac",
|
||||
vout: 1,
|
||||
amount: 1,
|
||||
confirmations: 3
|
||||
},
|
||||
{
|
||||
address: as[1],
|
||||
txid: "2ac165fa7a3a2b535d106a0041c7568d03b531e58aeccdd3199d7289ab12cfc1",
|
||||
scriptPubKey: "76a9146ce4e1163eb18939b1440c42844d5f0261c0338288ac",
|
||||
vout: 1,
|
||||
amount: 1.01,
|
||||
confirmations: 7
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
var outs=[{
|
||||
address: 'mfwSGKeLEGdd1YwsZ1TkoEeKNk8TTWqXLC',
|
||||
amount: 1.5,
|
||||
}];
|
||||
var ret = w.createTx(utxos, outs, '2Mu1GwdF9X1LLxXNxtfNChi5ngBMJxi2csv');
|
||||
var tx=ret.tx;
|
||||
should.exist(tx);
|
||||
tx.ins.length.should.equal(2);
|
||||
tx.outs.length.should.equal(2);
|
||||
buffertools.toHex(tx.serialize()).should.equal('0100000002c1cf12ab89729d19d3cdec8ae531b5038d56c741006a105d532b3a7afa65c12a0100000000ffffffffc1cf12ab89729d19d3cdec8ae531b5038d56c741006a105d532b3a7afa65c12a0100000000ffffffff0280d1f008000000001976a91404a154d56e5455dc87f15e293b8872f31d03a12c88acb00b0a030000000017a914134ce4e4ea92b6cb0008803cafe25f197ff1dcb98700000000');
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue