simplify use of bignum in TransactionBuilder
This commit is contained in:
parent
d035b54418
commit
ec2fda2a22
|
@ -231,7 +231,7 @@ TransactionBuilder.prototype._selectUnspent = function(neededAmountSat) {
|
||||||
if (this.spendUnconfirmed) minConfirmationSteps.push(0);
|
if (this.spendUnconfirmed) minConfirmationSteps.push(0);
|
||||||
|
|
||||||
var sel = [],
|
var sel = [],
|
||||||
totalSat = new bignum(0),
|
totalSat = bignum(0),
|
||||||
fulfill = false,
|
fulfill = false,
|
||||||
maxConfirmations = null,
|
maxConfirmations = null,
|
||||||
l = this.utxos.length;
|
l = this.utxos.length;
|
||||||
|
@ -246,9 +246,9 @@ TransactionBuilder.prototype._selectUnspent = function(neededAmountSat) {
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var sat = u.amountSat || util.parseValue(u.amount);
|
var sat = u.amountSat || util.parseValue(u.amount);
|
||||||
totalSat = totalSat.add(new bignum(sat));
|
totalSat = totalSat.add(sat);
|
||||||
sel.push(u);
|
sel.push(u);
|
||||||
if (totalSat.cmp(new bignum(neededAmountSat)) >= 0) {
|
if (totalSat.cmp(neededAmountSat) >= 0) {
|
||||||
fulfill = true;
|
fulfill = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -268,11 +268,11 @@ TransactionBuilder.prototype._selectUnspent = function(neededAmountSat) {
|
||||||
TransactionBuilder.prototype._setInputs = function(txobj) {
|
TransactionBuilder.prototype._setInputs = function(txobj) {
|
||||||
var ins = this.selectedUtxos;
|
var ins = this.selectedUtxos;
|
||||||
var l = ins.length;
|
var l = ins.length;
|
||||||
var valueInSat = new bignum(0);
|
var valueInSat = bignum(0);
|
||||||
|
|
||||||
txobj.ins = [];
|
txobj.ins = [];
|
||||||
for (var i = 0; i < l; i++) {
|
for (var i = 0; i < l; i++) {
|
||||||
valueInSat = valueInSat.add(new bignum(util.parseValue(ins[i].amount)));
|
valueInSat = valueInSat.add(util.parseValue(ins[i].amount));
|
||||||
|
|
||||||
var txin = {};
|
var txin = {};
|
||||||
txin.s = util.EMPTY_BUFFER;
|
txin.s = util.EMPTY_BUFFER;
|
||||||
|
@ -297,9 +297,9 @@ TransactionBuilder.prototype._setFee = function(feeSat) {
|
||||||
throw new Error('valueOutSat undefined');
|
throw new Error('valueOutSat undefined');
|
||||||
|
|
||||||
|
|
||||||
var valueOutSat = this.valueOutSat.add(new bignum(feeSat));
|
var valueOutSat = this.valueOutSat.add(feeSat);
|
||||||
|
|
||||||
if (this.valueInSat.cmp(new bignum(valueOutSat)) < 0) {
|
if (this.valueInSat.cmp(valueOutSat) < 0) {
|
||||||
var inv = this.valueInSat.toString();
|
var inv = this.valueInSat.toString();
|
||||||
var ouv = valueOutSat.toString();
|
var ouv = valueOutSat.toString();
|
||||||
throw new Error('transaction input amount is less than outputs: ' +
|
throw new Error('transaction input amount is less than outputs: ' +
|
||||||
|
@ -316,16 +316,16 @@ TransactionBuilder.prototype._setRemainder = function(txobj, remainderIndex) {
|
||||||
throw new Error('valueInSat / valueOutSat undefined');
|
throw new Error('valueInSat / valueOutSat undefined');
|
||||||
|
|
||||||
/* add remainder (without modifying outs[]) */
|
/* add remainder (without modifying outs[]) */
|
||||||
var remainderSat = this.valueInSat.sub(new bignum(this.valueOutSat)).sub(new bignum(this.feeSat));
|
var remainderSat = this.valueInSat.sub(this.valueOutSat).sub(this.feeSat);
|
||||||
var l = txobj.outs.length;
|
var l = txobj.outs.length;
|
||||||
this.remainderSat = new bignum(0);
|
this.remainderSat = bignum(0);
|
||||||
|
|
||||||
/*remove old remainder? */
|
/*remove old remainder? */
|
||||||
if (l > remainderIndex) {
|
if (l > remainderIndex) {
|
||||||
txobj.outs.pop();
|
txobj.outs.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remainderSat.cmp(new bignum(0)) > 0) {
|
if (remainderSat.cmp(0) > 0) {
|
||||||
var remainderOut = this.remainderOut || this.selectedUtxos[0];
|
var remainderOut = this.remainderOut || this.selectedUtxos[0];
|
||||||
var value = util.bigIntToValue(remainderSat);
|
var value = util.bigIntToValue(remainderSat);
|
||||||
var script = TransactionBuilder._scriptForOut(remainderOut);
|
var script = TransactionBuilder._scriptForOut(remainderOut);
|
||||||
|
@ -352,7 +352,7 @@ TransactionBuilder.prototype._setFeeAndRemainder = function(txobj) {
|
||||||
var feeSat = this.givenFeeSat ?
|
var feeSat = this.givenFeeSat ?
|
||||||
this.givenFeeSat : maxSizeK * FEE_PER_1000B_SAT;
|
this.givenFeeSat : maxSizeK * FEE_PER_1000B_SAT;
|
||||||
|
|
||||||
var neededAmountSat = this.valueOutSat.add(new bignum(feeSat));
|
var neededAmountSat = this.valueOutSat.add(feeSat);
|
||||||
|
|
||||||
this._selectUnspent(neededAmountSat)
|
this._selectUnspent(neededAmountSat)
|
||||||
._setInputs(txobj)
|
._setInputs(txobj)
|
||||||
|
@ -381,7 +381,7 @@ TransactionBuilder.prototype._setFeeAndRemainder = function(txobj) {
|
||||||
//
|
//
|
||||||
|
|
||||||
TransactionBuilder.prototype.setOutputs = function(outs) {
|
TransactionBuilder.prototype.setOutputs = function(outs) {
|
||||||
var valueOutSat = new bignum(0);
|
var valueOutSat = bignum(0);
|
||||||
|
|
||||||
var txobj = {};
|
var txobj = {};
|
||||||
txobj.version = 1;
|
txobj.version = 1;
|
||||||
|
@ -401,7 +401,7 @@ TransactionBuilder.prototype.setOutputs = function(outs) {
|
||||||
txobj.outs.push(txout);
|
txobj.outs.push(txout);
|
||||||
|
|
||||||
var sat = outs[i].amountSat || util.parseValue(outs[i].amount);
|
var sat = outs[i].amountSat || util.parseValue(outs[i].amount);
|
||||||
valueOutSat = valueOutSat.add(new bignum(sat));
|
valueOutSat = valueOutSat.add(sat);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.valueOutSat = valueOutSat;
|
this.valueOutSat = valueOutSat;
|
||||||
|
|
Loading…
Reference in New Issue