diff --git a/lib/opFns.js b/lib/opFns.js index 993cfadd59..de0def4403 100644 --- a/lib/opFns.js +++ b/lib/opFns.js @@ -258,7 +258,7 @@ module.exports = { return new BN(runState.lastReturned.length) }, RETURNDATACOPY: function (memOffset, returnDataOffset, length, runState) { - if ((returnDataOffset.add(length)).gt(new BN(runState.lastReturned.length))) { + if ((returnDataOffset.add(length)).gtn(runState.lastReturned.length)) { trap(ERROR.OUT_OF_GAS) } @@ -346,7 +346,7 @@ module.exports = { subGas(runState, new BN(fees.sstoreResetGas.v)) } else if (value.length === 0 && found.length) { subGas(runState, new BN(fees.sstoreResetGas.v)) - runState.gasRefund.iadd(new BN(fees.sstoreRefundGas.v)) + runState.gasRefund.iaddn(fees.sstoreRefundGas.v) } else if (value.length !== 0 && !found.length) { subGas(runState, new BN(fees.sstoreSetGas.v)) } else if (value.length !== 0 && found.length) { @@ -546,8 +546,8 @@ module.exports = { } if (!value.isZero()) { - runState.gasLeft.iadd(new BN(fees.callStipend.v)) - options.gasLimit.iadd(new BN(fees.callStipend.v)) + runState.gasLeft.iaddn(fees.callStipend.v) + options.gasLimit.iaddn(fees.callStipend.v) } makeCall(runState, options, localOpts, done) @@ -583,8 +583,8 @@ module.exports = { checkOutOfGas(runState, options) if (!value.isZero()) { - runState.gasLeft.iadd(new BN(fees.callStipend.v)) - options.gasLimit.iadd(new BN(fees.callStipend.v)) + runState.gasLeft.iaddn(fees.callStipend.v) + options.gasLimit.iaddn(fees.callStipend.v) } // load the code @@ -710,7 +710,6 @@ module.exports = { var stateManager = runState.stateManager var contract = runState.contract var contractAddress = runState.address - var zeroBalance = new BN(0) selfdestructToAddress = addressToBuffer(selfdestructToAddress) stateManager.getAccount(selfdestructToAddress, function (err, toAccount) { @@ -726,7 +725,7 @@ module.exports = { return } - if ((new BN(contract.balance)).gt(zeroBalance)) { + if ((new BN(contract.balance)).gtn(0)) { if (!toAccount.exists || empty) { try { subGas(runState, new BN(fees.callNewAccountGas.v)) @@ -739,7 +738,7 @@ module.exports = { // only add to refund if this is the first selfdestruct for the address if (!runState.selfdestruct[contractAddress.toString('hex')]) { - runState.gasRefund = runState.gasRefund.add(new BN(fees.suicideRefundGas.v)) + runState.gasRefund = runState.gasRefund.addn(fees.suicideRefundGas.v) } runState.selfdestruct[contractAddress.toString('hex')] = selfdestructToAddress runState.stopped = true @@ -863,7 +862,7 @@ function memStore (runState, offset, val, valOffset, length, skipSubMem) { var safeLen = 0 if (valOffset.addn(length).gtn(val.length)) { - if (valOffset.gte(new BN(val.length))) { + if (valOffset.gten(val.length)) { safeLen = 0 } else { valOffset = valOffset.toNumber() @@ -910,7 +909,7 @@ function checkCallMemCost (runState, callOptions, localOpts) { } function checkOutOfGas (runState, callOptions) { - const gasAllowed = runState.gasLeft.sub(runState.gasLeft.div(new BN(64))) + const gasAllowed = runState.gasLeft.sub(runState.gasLeft.divn(64)) if (callOptions.gasLimit.gt(gasAllowed)) { callOptions.gasLimit = gasAllowed } diff --git a/lib/runBlock.js b/lib/runBlock.js index c6e4df2c4f..37383bdbff 100644 --- a/lib/runBlock.js +++ b/lib/runBlock.js @@ -189,8 +189,8 @@ module.exports = function (opts, cb) { ommers.forEach(rewardOmmer) // calculate nibling reward - var niblingReward = minerReward.div(new BN(32)) - var totalNiblingReward = niblingReward.mul(new BN(ommers.length)) + var niblingReward = minerReward.divn(32) + var totalNiblingReward = niblingReward.muln(ommers.length) minerAccount = self.stateManager.cache.get(block.header.coinbase) // give miner the block reward minerAccount.balance = new BN(minerAccount.balance) @@ -203,9 +203,9 @@ module.exports = function (opts, cb) { function rewardOmmer (ommer) { // calculate reward var heightDiff = new BN(block.header.number).sub(new BN(ommer.number)) - var reward = ((new BN(8)).sub(heightDiff)).mul(minerReward.div(new BN(8))) + var reward = ((new BN(8)).sub(heightDiff)).mul(minerReward.divn(8)) - if (reward.lt(new BN(0))) { + if (reward.ltn(0)) { reward = new BN(0) }