gbt: fix deps check. do not mutate version.
This commit is contained in:
parent
89cbdac61e
commit
2e4a759487
@ -1068,7 +1068,7 @@ RPC.prototype.getBlockTemplate = co(function* getBlockTemplate(args, help) {
|
||||
var data = valid.buf('data');
|
||||
var rules = valid.array('rules');
|
||||
var capabilities = valid.array('capabilities');
|
||||
var version = valid.u32('maxversion', -1);
|
||||
var maxVersion = valid.u32('maxversion', -1);
|
||||
var coinbase = false;
|
||||
var txnCap = false;
|
||||
var valueCap = false;
|
||||
@ -1103,7 +1103,7 @@ RPC.prototype.getBlockTemplate = co(function* getBlockTemplate(args, help) {
|
||||
}
|
||||
|
||||
if (rules)
|
||||
version = -1;
|
||||
maxVersion = -1;
|
||||
|
||||
if (capabilities) {
|
||||
for (i = 0; i < capabilities.length; i++) {
|
||||
@ -1157,20 +1157,21 @@ RPC.prototype.getBlockTemplate = co(function* getBlockTemplate(args, help) {
|
||||
if (lpid)
|
||||
yield this.handleLongpoll(lpid);
|
||||
|
||||
return yield this.createTemplate(version, coinbase, rules);
|
||||
return yield this.createTemplate(maxVersion, coinbase, rules);
|
||||
});
|
||||
|
||||
RPC.prototype.createTemplate = co(function* createTemplate(version, coinbase, rules) {
|
||||
RPC.prototype.createTemplate = co(function* createTemplate(maxVersion, coinbase, rules) {
|
||||
var unlock = yield this.locker.lock();
|
||||
try {
|
||||
return yield this._createTemplate(version, coinbase, rules);
|
||||
return yield this._createTemplate(maxVersion, coinbase, rules);
|
||||
} finally {
|
||||
unlock();
|
||||
}
|
||||
});
|
||||
|
||||
RPC.prototype._createTemplate = co(function* _createTemplate(version, coinbase, rules) {
|
||||
RPC.prototype._createTemplate = co(function* _createTemplate(maxVersion, coinbase, rules) {
|
||||
var attempt = yield this.getTemplate();
|
||||
var version = attempt.version;
|
||||
var scale = attempt.witness ? 1 : consensus.WITNESS_SCALE_FACTOR;
|
||||
var mutable = ['time', 'transactions', 'prevblock'];
|
||||
var txs = [];
|
||||
@ -1184,7 +1185,7 @@ RPC.prototype._createTemplate = co(function* _createTemplate(version, coinbase,
|
||||
// The miner doesn't support
|
||||
// versionbits. Force them to
|
||||
// encode our version.
|
||||
if (version >= 2)
|
||||
if (maxVersion >= 2)
|
||||
mutable.push('version/force');
|
||||
|
||||
// Allow the miner to change
|
||||
@ -1212,7 +1213,7 @@ RPC.prototype._createTemplate = co(function* _createTemplate(version, coinbase,
|
||||
for (j = 0; j < tx.inputs.length; j++) {
|
||||
input = tx.inputs[j];
|
||||
dep = index[input.prevout.hash];
|
||||
if (dep != null && deps.indexOf(dep) === -1) {
|
||||
if (dep != null && deps.indexOf(dep + 1) === -1) {
|
||||
assert(dep < i);
|
||||
deps.push(dep + 1);
|
||||
}
|
||||
@ -1240,11 +1241,11 @@ RPC.prototype._createTemplate = co(function* _createTemplate(version, coinbase,
|
||||
case common.thresholdStates.FAILED:
|
||||
break;
|
||||
case common.thresholdStates.LOCKED_IN:
|
||||
attempt.version |= 1 << deploy.bit;
|
||||
version |= 1 << deploy.bit;
|
||||
case common.thresholdStates.STARTED:
|
||||
if (!deploy.force) {
|
||||
if (!rules || rules.indexOf(name) === -1)
|
||||
attempt.version &= ~(1 << deploy.bit);
|
||||
version &= ~(1 << deploy.bit);
|
||||
name = '!' + name;
|
||||
}
|
||||
vbavailable[name] = deploy.bit;
|
||||
@ -1265,12 +1266,12 @@ RPC.prototype._createTemplate = co(function* _createTemplate(version, coinbase,
|
||||
}
|
||||
}
|
||||
|
||||
attempt.version >>>= 0;
|
||||
version >>>= 0;
|
||||
|
||||
json = {
|
||||
capabilities: ['proposal'],
|
||||
mutable: mutable,
|
||||
version: attempt.version,
|
||||
version: version,
|
||||
rules: vbrules,
|
||||
vbavailable: vbavailable,
|
||||
vbrequired: 0,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user