clone mtx properly.

This commit is contained in:
Christopher Jeffrey 2016-03-31 05:24:10 -07:00
parent 5cab304a59
commit f7bdcfdfb2

View File

@ -63,7 +63,14 @@ function MTX(options) {
utils.inherits(MTX, bcoin.tx); utils.inherits(MTX, bcoin.tx);
MTX.prototype.clone = function clone() { MTX.prototype.clone = function clone() {
return new MTX(this); var tx = new MTX(this);
tx.locktime = this.locktime;
tx.ts = this.ts;
tx.block = this.block;
tx.index = this.index;
tx.ps = this.ps;
tx.height = this.height;
return tx;
}; };
MTX.prototype.hash = function hash(enc) { MTX.prototype.hash = function hash(enc) {
@ -118,6 +125,8 @@ MTX.prototype.getVirtualSize = function getVirtualSize() {
MTX.prototype.addInput = function addInput(options, index) { MTX.prototype.addInput = function addInput(options, index) {
var input; var input;
assert(this.ts === 0, 'Cannot modify a confirmed tx.');
if (options instanceof MTX) if (options instanceof MTX)
options = bcoin.coin(options, index); options = bcoin.coin(options, index);
@ -146,6 +155,8 @@ MTX.prototype.addInput = function addInput(options, index) {
MTX.prototype.scriptInput = function scriptInput(index, addr) { MTX.prototype.scriptInput = function scriptInput(index, addr) {
var input, prev, n, i, redeemScript, witnessScript, vector, dummy; var input, prev, n, i, redeemScript, witnessScript, vector, dummy;
assert(this.ts === 0, 'Cannot modify a confirmed tx.');
if (typeof index !== 'number') if (typeof index !== 'number')
index = this.inputs.indexOf(index); index = this.inputs.indexOf(index);
@ -338,6 +349,8 @@ MTX.prototype.signInput = function signInput(index, addr, type) {
var input, prev, signature, ki, signatures, i; var input, prev, signature, ki, signatures, i;
var len, m, n, keys, vector, dummy, version; var len, m, n, keys, vector, dummy, version;
assert(this.ts === 0, 'Cannot modify a confirmed tx.');
if (typeof index !== 'number') if (typeof index !== 'number')
index = this.inputs.indexOf(index); index = this.inputs.indexOf(index);
@ -626,6 +639,8 @@ MTX.prototype.sign = function sign(index, addr, type) {
MTX.prototype.addOutput = function addOutput(obj, value) { MTX.prototype.addOutput = function addOutput(obj, value) {
var options, output; var options, output;
assert(this.ts === 0, 'Cannot modify a confirmed tx.');
if ((obj instanceof bcoin.wallet) || (obj instanceof bcoin.address)) if ((obj instanceof bcoin.wallet) || (obj instanceof bcoin.address))
obj = obj.getAddress(); obj = obj.getAddress();
@ -650,6 +665,8 @@ MTX.prototype.addOutput = function addOutput(obj, value) {
MTX.prototype.scriptOutput = function scriptOutput(index, options) { MTX.prototype.scriptOutput = function scriptOutput(index, options) {
var output; var output;
assert(this.ts === 0, 'Cannot modify a confirmed tx.');
if (options instanceof bcoin.output) if (options instanceof bcoin.output)
return; return;
@ -939,6 +956,8 @@ MTX.prototype.fill = function fill(coins, options) {
var self = this; var self = this;
var result, err; var result, err;
assert(this.ts === 0, 'Cannot modify a confirmed tx.');
if (!options || typeof options !== 'object') { if (!options || typeof options !== 'object') {
options = { options = {
changeAddress: arguments[1], changeAddress: arguments[1],
@ -980,6 +999,8 @@ MTX.prototype.fill = function fill(coins, options) {
MTX.prototype.sortMembers = function sortMembers() { MTX.prototype.sortMembers = function sortMembers() {
var changeOutput; var changeOutput;
assert(this.ts === 0, 'Cannot modify a confirmed tx.');
if (this.changeIndex !== -1) { if (this.changeIndex !== -1) {
changeOutput = this.outputs[this.changeIndex]; changeOutput = this.outputs[this.changeIndex];
assert(changeOutput); assert(changeOutput);
@ -1023,6 +1044,8 @@ MTX.prototype.avoidFeeSniping = function avoidFeeSniping(height) {
MTX.prototype.setLocktime = function setLocktime(locktime) { MTX.prototype.setLocktime = function setLocktime(locktime) {
var i, input; var i, input;
assert(this.ts === 0, 'Cannot modify a confirmed tx.');
for (i = 0; i < this.inputs.length; i++) { for (i = 0; i < this.inputs.length; i++) {
input = this.inputs[i]; input = this.inputs[i];
if (input.sequence === 0xffffffff) if (input.sequence === 0xffffffff)