add witness object.
This commit is contained in:
parent
b528965912
commit
0f296394a5
@ -126,7 +126,7 @@ Block.prototype.getCommitmentHash = function getCommitmentHash() {
|
|||||||
var leaves = [];
|
var leaves = [];
|
||||||
var i, witnessNonce, witnessRoot, commitmentHash;
|
var i, witnessNonce, witnessRoot, commitmentHash;
|
||||||
|
|
||||||
witnessNonce = this.txs[0].inputs[0].witness[0];
|
witnessNonce = this.txs[0].inputs[0].witness.items[0];
|
||||||
|
|
||||||
if (!witnessNonce)
|
if (!witnessNonce)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -9,7 +9,6 @@ var bcoin = require('../bcoin');
|
|||||||
var utils = bcoin.utils;
|
var utils = bcoin.utils;
|
||||||
var assert = utils.assert;
|
var assert = utils.assert;
|
||||||
var constants = bcoin.protocol.constants;
|
var constants = bcoin.protocol.constants;
|
||||||
var Script = bcoin.script;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Input
|
* Input
|
||||||
@ -22,9 +21,9 @@ function Input(options, tx) {
|
|||||||
assert(typeof options.script !== 'string');
|
assert(typeof options.script !== 'string');
|
||||||
|
|
||||||
this.prevout = options.prevout;
|
this.prevout = options.prevout;
|
||||||
this.script = options.script || new Script([]);
|
this.script = options.script || new bcoin.script([]);
|
||||||
this.sequence = options.sequence == null ? 0xffffffff : options.sequence;
|
this.sequence = options.sequence == null ? 0xffffffff : options.sequence;
|
||||||
this.witness = options.witness || [];
|
this.witness = options.witness || new bcoin.script.witness([]);
|
||||||
this._size = options._size || 0;
|
this._size = options._size || 0;
|
||||||
this._offset = options._offset || 0;
|
this._offset = options._offset || 0;
|
||||||
this._witnessSize = options._witnessSize || 0;
|
this._witnessSize = options._witnessSize || 0;
|
||||||
@ -58,8 +57,8 @@ Input.prototype.getType = function getType() {
|
|||||||
if (this._type)
|
if (this._type)
|
||||||
return this._type;
|
return this._type;
|
||||||
|
|
||||||
if (this.witness.length > 0)
|
if (this.witness.items.length > 0)
|
||||||
type = bcoin.script.getInputType(this.witness, null, true);
|
type = this.witness.getInputType();
|
||||||
|
|
||||||
if (!type || type === 'unknown')
|
if (!type || type === 'unknown')
|
||||||
type = this.script.getInputType();
|
type = this.script.getInputType();
|
||||||
@ -79,14 +78,14 @@ Input.prototype.getRedeem = function getRedeem() {
|
|||||||
type = this.getType();
|
type = this.getType();
|
||||||
|
|
||||||
if (type === 'witnessscripthash')
|
if (type === 'witnessscripthash')
|
||||||
return bcoin.script.getRedeem(this.witness);
|
return this.witness.getRedeem();
|
||||||
|
|
||||||
if (type === 'scripthash') {
|
if (type === 'scripthash') {
|
||||||
redeem = this.script.getRedeem();
|
redeem = this.script.getRedeem();
|
||||||
if (!redeem)
|
if (!redeem)
|
||||||
return;
|
return;
|
||||||
if (redeem.isWitnessScripthash())
|
if (redeem.isWitnessScripthash())
|
||||||
return bcoin.script.getRedeem(this.witness);
|
return this.witness.getRedeem();
|
||||||
return redeem;
|
return redeem;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -117,8 +116,8 @@ Input.prototype.getAddress = function getAddress() {
|
|||||||
if (this._address)
|
if (this._address)
|
||||||
return this._address;
|
return this._address;
|
||||||
|
|
||||||
if (this.witness.length > 0)
|
if (this.witness.items.length > 0)
|
||||||
address = bcoin.script.getInputAddress(this.witness, null, true);
|
address = this.witness.getInputAdddress();
|
||||||
|
|
||||||
if (!address)
|
if (!address)
|
||||||
address = this.script.getInputAddress();
|
address = this.script.getInputAddress();
|
||||||
@ -227,7 +226,7 @@ Input.prototype.toJSON = function toJSON() {
|
|||||||
},
|
},
|
||||||
output: this.output ? this.output.toJSON() : null,
|
output: this.output ? this.output.toJSON() : null,
|
||||||
script: utils.toHex(this.script.encode()),
|
script: utils.toHex(this.script.encode()),
|
||||||
witness: utils.toHex(bcoin.protocol.framer.witness(this.witness)),
|
witness: utils.toHex(this.witness.encode()),
|
||||||
sequence: this.sequence
|
sequence: this.sequence
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -239,8 +238,8 @@ Input._fromJSON = function _fromJSON(json) {
|
|||||||
index: json.prevout.index
|
index: json.prevout.index
|
||||||
},
|
},
|
||||||
output: json.output ? bcoin.coin._fromJSON(json.output) : null,
|
output: json.output ? bcoin.coin._fromJSON(json.output) : null,
|
||||||
script: new Script(new Buffer(json.script, 'hex')),
|
script: new bcoin.script(new Buffer(json.script, 'hex')),
|
||||||
witness: bcoin.protocol.parser.parseWitness(new Buffer(json.witness, 'hex')),
|
witness: new bcoin.script.witness(new Buffer(json.witness, 'hex')),
|
||||||
sequence: json.sequence
|
sequence: json.sequence
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -274,7 +273,7 @@ Input.fromRaw = function fromRaw(data, enc) {
|
|||||||
|
|
||||||
Input.prototype.toExtended = function toExtended(enc) {
|
Input.prototype.toExtended = function toExtended(enc) {
|
||||||
var input = bcoin.protocol.framer.input(this);
|
var input = bcoin.protocol.framer.input(this);
|
||||||
var witness = bcoin.protocol.framer.witness(this.witness);
|
var witness = this.witness.encode();
|
||||||
var data = new Buffer(data.length + witness.length);
|
var data = new Buffer(data.length + witness.length);
|
||||||
var off = 0;
|
var off = 0;
|
||||||
|
|
||||||
|
|||||||
@ -144,7 +144,7 @@ MTX.prototype.addInput = function addInput(options, index) {
|
|||||||
input.script = options.script.clone();
|
input.script = options.script.clone();
|
||||||
|
|
||||||
if (options.witness)
|
if (options.witness)
|
||||||
input.witness = options.witness.slice();
|
input.witness = options.witness.clone();
|
||||||
|
|
||||||
this.inputs.push(input);
|
this.inputs.push(input);
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ MTX.prototype.scriptInput = function scriptInput(index, addr) {
|
|||||||
// Optimization: Don't bother with any below
|
// Optimization: Don't bother with any below
|
||||||
// calculation if the output is already templated.
|
// calculation if the output is already templated.
|
||||||
// Just say this is "our" output.
|
// Just say this is "our" output.
|
||||||
if (input.script.code.length || input.witness.length)
|
if (input.script.code.length || input.witness.items.length)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Optimization: test output against the
|
// Optimization: test output against the
|
||||||
@ -187,7 +187,7 @@ MTX.prototype.scriptInput = function scriptInput(index, addr) {
|
|||||||
if (addr.program && utils.isEqual(prev.code[1], addr.programHash)) {
|
if (addr.program && utils.isEqual(prev.code[1], addr.programHash)) {
|
||||||
// Witness program nested in regular P2SH.
|
// Witness program nested in regular P2SH.
|
||||||
redeemScript = addr.program.encode();
|
redeemScript = addr.program.encode();
|
||||||
vector = input.witness;
|
vector = input.witness.items;
|
||||||
dummy = new Buffer([]);
|
dummy = new Buffer([]);
|
||||||
assert(addr.program.code[0] === 0, 'Non-zero version passed to address.');
|
assert(addr.program.code[0] === 0, 'Non-zero version passed to address.');
|
||||||
if (addr.program.code[1].length === 32) {
|
if (addr.program.code[1].length === 32) {
|
||||||
@ -212,7 +212,7 @@ MTX.prototype.scriptInput = function scriptInput(index, addr) {
|
|||||||
}
|
}
|
||||||
} else if (prev.isWitnessProgram()) {
|
} else if (prev.isWitnessProgram()) {
|
||||||
// Witness program.
|
// Witness program.
|
||||||
vector = input.witness;
|
vector = input.witness.items;
|
||||||
dummy = new Buffer([]);
|
dummy = new Buffer([]);
|
||||||
|
|
||||||
if (prev.code[0] !== 0)
|
if (prev.code[0] !== 0)
|
||||||
@ -311,7 +311,7 @@ MTX.prototype.scriptInput = function scriptInput(index, addr) {
|
|||||||
// P2WSH requires the witness
|
// P2WSH requires the witness
|
||||||
// script after signatures.
|
// script after signatures.
|
||||||
if (witnessScript)
|
if (witnessScript)
|
||||||
input.witness.push(witnessScript);
|
input.witness.items.push(witnessScript);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
@ -377,14 +377,14 @@ MTX.prototype.signInput = function signInput(index, addr, type) {
|
|||||||
// _has_ to be an empty buffer (what OP_0
|
// _has_ to be an empty buffer (what OP_0
|
||||||
// pushes onto the stack).
|
// pushes onto the stack).
|
||||||
if (prev.isWitnessScripthash()) {
|
if (prev.isWitnessScripthash()) {
|
||||||
prev = bcoin.script.getRedeem(input.witness);
|
prev = input.witness.getRedeem();
|
||||||
vector = input.witness;
|
vector = input.witness.items;
|
||||||
len = vector.length - 1;
|
len = vector.length - 1;
|
||||||
dummy = new Buffer([]);
|
dummy = new Buffer([]);
|
||||||
version = 1;
|
version = 1;
|
||||||
} else if (prev.isWitnessPubkeyhash()) {
|
} else if (prev.isWitnessPubkeyhash()) {
|
||||||
prev = bcoin.script.createPubkeyhash(prev.code[1]);
|
prev = bcoin.script.createPubkeyhash(prev.code[1]);
|
||||||
vector = input.witness;
|
vector = input.witness.items;
|
||||||
len = vector.length;
|
len = vector.length;
|
||||||
dummy = new Buffer([]);
|
dummy = new Buffer([]);
|
||||||
version = 1;
|
version = 1;
|
||||||
@ -667,7 +667,7 @@ MTX.prototype.maxSize = function maxSize(maxM, maxN) {
|
|||||||
// Create copy with 0-script inputs
|
// Create copy with 0-script inputs
|
||||||
for (i = 0; i < copy.inputs.length; i++) {
|
for (i = 0; i < copy.inputs.length; i++) {
|
||||||
copy.inputs[i].script = new Script([]);
|
copy.inputs[i].script = new Script([]);
|
||||||
copy.inputs[i].witness = [];
|
copy.inputs[i].witness = new bcoin.script.witness([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
total = copy.render().length;
|
total = copy.render().length;
|
||||||
@ -700,8 +700,8 @@ MTX.prototype.maxSize = function maxSize(maxM, maxN) {
|
|||||||
// redeem script (if there was one)
|
// redeem script (if there was one)
|
||||||
// is now worth 4 points.
|
// is now worth 4 points.
|
||||||
size *= 4;
|
size *= 4;
|
||||||
if (this.inputs[i].witness.length && prev.isWitnessScripthash()) {
|
if (this.inputs[i].witness.items.length && prev.isWitnessScripthash()) {
|
||||||
prev = bcoin.script.getRedeem(this.inputs[i].witness);
|
prev = this.inputs[i].witness.getRedeem();
|
||||||
size += utils.sizeIntv(prev.getSize()) + prev.getSize();
|
size += utils.sizeIntv(prev.getSize()) + prev.getSize();
|
||||||
} else if (prev.isWitnessPubkeyhash()) {
|
} else if (prev.isWitnessPubkeyhash()) {
|
||||||
prev = bcoin.script.createPubkeyhash(prev.code[1]);
|
prev = bcoin.script.createPubkeyhash(prev.code[1]);
|
||||||
|
|||||||
@ -9,7 +9,6 @@ var bcoin = require('../bcoin');
|
|||||||
var utils = bcoin.utils;
|
var utils = bcoin.utils;
|
||||||
var assert = utils.assert;
|
var assert = utils.assert;
|
||||||
var constants = bcoin.protocol.constants;
|
var constants = bcoin.protocol.constants;
|
||||||
var Script = bcoin.script;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Output
|
* Output
|
||||||
@ -31,7 +30,7 @@ function Output(options, tx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.value = utils.satoshi(value || new bn(0));
|
this.value = utils.satoshi(value || new bn(0));
|
||||||
this.script = options.script || new Script([]);
|
this.script = options.script || new bcoin.script([]);
|
||||||
this._size = options._size || 0;
|
this._size = options._size || 0;
|
||||||
this._offset = options._offset || 0;
|
this._offset = options._offset || 0;
|
||||||
this._mutable = !tx || (tx instanceof bcoin.mtx);
|
this._mutable = !tx || (tx instanceof bcoin.mtx);
|
||||||
@ -127,7 +126,7 @@ Output.prototype.toJSON = function toJSON() {
|
|||||||
Output._fromJSON = function _fromJSON(json) {
|
Output._fromJSON = function _fromJSON(json) {
|
||||||
return {
|
return {
|
||||||
value: utils.satoshi(json.value),
|
value: utils.satoshi(json.value),
|
||||||
script: new Script(new Buffer(json.script, 'hex'))
|
script: new bcoin.script(new Buffer(json.script, 'hex'))
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -572,10 +572,10 @@ Framer.witnessTXSize = function witnessTXSize(tx) {
|
|||||||
if (!witness)
|
if (!witness)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
size += utils.sizeIntv(witness.length);
|
size += utils.sizeIntv(witness.items.length);
|
||||||
|
|
||||||
for (i = 0; i < witness.length; i++) {
|
for (i = 0; i < witness.items.length; i++) {
|
||||||
chunk = witness[i];
|
chunk = witness.items[i];
|
||||||
size += utils.sizeIntv(chunk.length) + chunk.length;
|
size += utils.sizeIntv(chunk.length) + chunk.length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -591,19 +591,19 @@ Framer.witness = function _witness(witness) {
|
|||||||
if (!witness)
|
if (!witness)
|
||||||
return new Buffer([0]);
|
return new Buffer([0]);
|
||||||
|
|
||||||
size += utils.sizeIntv(witness.length);
|
size += utils.sizeIntv(witness.items.length);
|
||||||
|
|
||||||
for (i = 0; i < witness.length; i++) {
|
for (i = 0; i < witness.items.length; i++) {
|
||||||
chunk = witness[i];
|
chunk = witness.items[i];
|
||||||
size += utils.sizeIntv(chunk.length) + chunk.length;
|
size += utils.sizeIntv(chunk.length) + chunk.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = new Buffer(size);
|
p = new Buffer(size);
|
||||||
|
|
||||||
off += utils.writeIntv(p, witness.length, off);
|
off += utils.writeIntv(p, witness.items.length, off);
|
||||||
|
|
||||||
for (i = 0; i < witness.length; i++) {
|
for (i = 0; i < witness.items.length; i++) {
|
||||||
chunk = witness[i];
|
chunk = witness.items[i];
|
||||||
off += utils.writeIntv(p, chunk.length, off);
|
off += utils.writeIntv(p, chunk.length, off);
|
||||||
off += utils.copy(chunk, p, off);
|
off += utils.copy(chunk, p, off);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -498,7 +498,7 @@ Parser.parseTX = function parseTX(p) {
|
|||||||
tx = Parser.parseInput(p);
|
tx = Parser.parseInput(p);
|
||||||
|
|
||||||
txIn[i] = tx;
|
txIn[i] = tx;
|
||||||
txIn[i].witness = [];
|
txIn[i].witness = new bcoin.script.witness([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
outCount = p.readUIntv();
|
outCount = p.readUIntv();
|
||||||
@ -604,7 +604,7 @@ Parser.parseWitness = function parseWitness(p) {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
_size: p.end(),
|
_size: p.end(),
|
||||||
witness: witness
|
witness: new bcoin.script.witness(witness)
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -154,7 +154,7 @@ TX.prototype.hasWitness = function hasWitness() {
|
|||||||
var i;
|
var i;
|
||||||
|
|
||||||
for (i = 0; i < this.inputs.length; i++) {
|
for (i = 0; i < this.inputs.length; i++) {
|
||||||
if (this.inputs[i].witness.length > 0)
|
if (this.inputs[i].witness.items.length > 0)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,7 +195,7 @@ TX.prototype.signatureHashV0 = function signatureHashV0(index, s, type) {
|
|||||||
copy.inputs.push({
|
copy.inputs.push({
|
||||||
prevout: this.inputs[i].prevout,
|
prevout: this.inputs[i].prevout,
|
||||||
script: this.inputs[i].script.clone(),
|
script: this.inputs[i].script.clone(),
|
||||||
witness: this.inputs[i].witness.slice(),
|
witness: this.inputs[i].witness.clone(),
|
||||||
sequence: this.inputs[i].sequence
|
sequence: this.inputs[i].sequence
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -691,7 +691,7 @@ TX.prototype.getSigops = function getSigops(scriptHash, accurate) {
|
|||||||
prev = input.script.getRedeem();
|
prev = input.script.getRedeem();
|
||||||
|
|
||||||
if (prev.isWitnessScripthash()) {
|
if (prev.isWitnessScripthash()) {
|
||||||
prev = bcoin.script.getRedeem(input.witness);
|
prev = input.witness.getRedeem();
|
||||||
cost += prev.getSigops(true);
|
cost += prev.getSigops(true);
|
||||||
} else {
|
} else {
|
||||||
cost += 0;
|
cost += 0;
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var bcoin = require('../');
|
var bcoin = require('../');
|
||||||
var Script = bcoin.script;
|
var Script = bcoin.script;
|
||||||
|
var Stack = bcoin.script.stack;
|
||||||
|
|
||||||
describe('Script', function() {
|
describe('Script', function() {
|
||||||
it('should encode/decode script', function() {
|
it('should encode/decode script', function() {
|
||||||
@ -37,19 +38,19 @@ describe('Script', function() {
|
|||||||
var encoded = new Buffer(hex, 'hex')
|
var encoded = new Buffer(hex, 'hex')
|
||||||
var decoded = new bcoin.script(encoded);
|
var decoded = new bcoin.script(encoded);
|
||||||
assert(decoded.isScripthash())
|
assert(decoded.isScripthash())
|
||||||
})
|
});
|
||||||
|
|
||||||
it('should recognize a Null Data output', function () {
|
it('should recognize a Null Data output', function () {
|
||||||
var hex = '6a28590c080112220a1b353930632e6f7267282a5f5e294f7665726c6179404f7261636c65103b1a010c'
|
var hex = '6a28590c080112220a1b353930632e6f7267282a5f5e294f7665726c6179404f7261636c65103b1a010c'
|
||||||
var encoded = new Buffer(hex, 'hex')
|
var encoded = new Buffer(hex, 'hex')
|
||||||
var decoded = new Script(encoded);
|
var decoded = new Script(encoded);
|
||||||
assert(decoded.isNulldata())
|
assert(decoded.isNulldata())
|
||||||
})
|
});
|
||||||
|
|
||||||
it('should handle if statements correctly', function () {
|
it('should handle if statements correctly', function () {
|
||||||
var inputScript = new Script([1, 2]);
|
var inputScript = new Script([1, 2]);
|
||||||
var prevOutScript = new Script([2, 'equal', 'if', 3, 'else', 4, 'endif', 5]);
|
var prevOutScript = new Script([2, 'equal', 'if', 3, 'else', 4, 'endif', 5]);
|
||||||
var stack = [];
|
var stack = new Stack();
|
||||||
inputScript.execute(stack);
|
inputScript.execute(stack);
|
||||||
var res = prevOutScript.execute(stack);
|
var res = prevOutScript.execute(stack);
|
||||||
assert(res);
|
assert(res);
|
||||||
@ -57,7 +58,7 @@ describe('Script', function() {
|
|||||||
|
|
||||||
var inputScript = new Script([1, 2]);
|
var inputScript = new Script([1, 2]);
|
||||||
var prevOutScript = new Script([9, 'equal', 'if', 3, 'else', 4, 'endif', 5]);
|
var prevOutScript = new Script([9, 'equal', 'if', 3, 'else', 4, 'endif', 5]);
|
||||||
var stack = [];
|
var stack = new Stack();
|
||||||
inputScript.execute(stack);
|
inputScript.execute(stack);
|
||||||
var res = prevOutScript.execute(stack);
|
var res = prevOutScript.execute(stack);
|
||||||
assert(res);
|
assert(res);
|
||||||
@ -65,7 +66,7 @@ describe('Script', function() {
|
|||||||
|
|
||||||
var inputScript = new Script([1, 2]);
|
var inputScript = new Script([1, 2]);
|
||||||
var prevOutScript = new Script([2, 'equal', 'if', 3, 'endif', 5]);
|
var prevOutScript = new Script([2, 'equal', 'if', 3, 'endif', 5]);
|
||||||
var stack = [];
|
var stack = new Stack();
|
||||||
inputScript.execute(stack);
|
inputScript.execute(stack);
|
||||||
var res = prevOutScript.execute(stack);
|
var res = prevOutScript.execute(stack);
|
||||||
assert(res);
|
assert(res);
|
||||||
@ -73,7 +74,7 @@ describe('Script', function() {
|
|||||||
|
|
||||||
var inputScript = new Script([1, 2]);
|
var inputScript = new Script([1, 2]);
|
||||||
var prevOutScript = new Script([9, 'equal', 'if', 3, 'endif', 5]);
|
var prevOutScript = new Script([9, 'equal', 'if', 3, 'endif', 5]);
|
||||||
var stack = [];
|
var stack = new Stack();
|
||||||
inputScript.execute(stack);
|
inputScript.execute(stack);
|
||||||
var res = prevOutScript.execute(stack);
|
var res = prevOutScript.execute(stack);
|
||||||
assert(res);
|
assert(res);
|
||||||
@ -81,10 +82,10 @@ describe('Script', function() {
|
|||||||
|
|
||||||
var inputScript = new Script([1, 2]);
|
var inputScript = new Script([1, 2]);
|
||||||
var prevOutScript = new Script([9, 'equal', 'notif', 3, 'endif', 5]);
|
var prevOutScript = new Script([9, 'equal', 'notif', 3, 'endif', 5]);
|
||||||
var stack = [];
|
var stack = new Stack();
|
||||||
inputScript.execute(stack);
|
inputScript.execute(stack);
|
||||||
var res = prevOutScript.execute(stack);
|
var res = prevOutScript.execute(stack);
|
||||||
assert(res);
|
assert(res);
|
||||||
assert.deepEqual(stack.slice(), [[1], [3], [5]]);
|
assert.deepEqual(stack.slice(), [[1], [3], [5]]);
|
||||||
})
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -499,7 +499,7 @@ describe('Wallet', function() {
|
|||||||
assert.equal(w3.changeAddress.getAddress(), change);
|
assert.equal(w3.changeAddress.getAddress(), change);
|
||||||
|
|
||||||
if (witness)
|
if (witness)
|
||||||
send.inputs[0].witness[2] = new Buffer([]);
|
send.inputs[0].witness.items[2] = new Buffer([]);
|
||||||
else
|
else
|
||||||
send.inputs[0].script.code[2] = 0;
|
send.inputs[0].script.code[2] = 0;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user