diff --git a/actuator/src/main/java/org/tron/core/actuator/AbstractActuator.java b/actuator/src/main/java/org/tron/core/actuator/AbstractActuator.java index b5bdb9bcafc..c9f83c520bd 100644 --- a/actuator/src/main/java/org/tron/core/actuator/AbstractActuator.java +++ b/actuator/src/main/java/org/tron/core/actuator/AbstractActuator.java @@ -122,7 +122,7 @@ public void adjustBalance(AccountStore accountStore, AccountCapsule account, lon Commons.adjustBalance(accountStore, account, amount, this.disableJavaLangMath()); } - private boolean disableJavaLangMath() { + boolean disableJavaLangMath() { return chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath(); } } diff --git a/actuator/src/main/java/org/tron/core/actuator/DelegateResourceActuator.java b/actuator/src/main/java/org/tron/core/actuator/DelegateResourceActuator.java index 547171486ee..9e7b0efa5ce 100755 --- a/actuator/src/main/java/org/tron/core/actuator/DelegateResourceActuator.java +++ b/actuator/src/main/java/org/tron/core/actuator/DelegateResourceActuator.java @@ -162,7 +162,7 @@ public boolean validate() throws ContractValidateException { long netUsage = (long) (accountNetUsage * TRX_PRECISION * ((double) (dynamicStore.getTotalNetWeight()) / dynamicStore.getTotalNetLimit())); long v2NetUsage = getV2NetUsage(ownerCapsule, netUsage, - dynamicStore.disableJavaLangMath()); + this.disableJavaLangMath()); if (ownerCapsule.getFrozenV2BalanceForBandwidth() - v2NetUsage < delegateBalance) { throw new ContractValidateException( "delegateBalance must be less than or equal to available FreezeBandwidthV2 balance"); @@ -176,7 +176,7 @@ public boolean validate() throws ContractValidateException { long energyUsage = (long) (ownerCapsule.getEnergyUsage() * TRX_PRECISION * ((double) (dynamicStore.getTotalEnergyWeight()) / dynamicStore.getTotalEnergyCurrentLimit())); long v2EnergyUsage = getV2EnergyUsage(ownerCapsule, energyUsage, - dynamicStore.disableJavaLangMath()); + this.disableJavaLangMath()); if (ownerCapsule.getFrozenV2BalanceForEnergy() - v2EnergyUsage < delegateBalance) { throw new ContractValidateException( "delegateBalance must be less than or equal to available FreezeEnergyV2 balance"); diff --git a/actuator/src/main/java/org/tron/core/actuator/MarketSellAssetActuator.java b/actuator/src/main/java/org/tron/core/actuator/MarketSellAssetActuator.java index b5b375ee391..d196cdef06f 100644 --- a/actuator/src/main/java/org/tron/core/actuator/MarketSellAssetActuator.java +++ b/actuator/src/main/java/org/tron/core/actuator/MarketSellAssetActuator.java @@ -400,10 +400,9 @@ private void matchSingleOrder(MarketOrderCapsule takerOrderCapsule, // => takerBuyTokenQuantityCurrent_A = takerSellTokenQuantityRemain_TRX * // makerSellTokenQuantity_A/makerBuyTokenQuantity_TRX - boolean disableMath = dynamicStore.disableJavaLangMath(); long takerBuyTokenQuantityRemain = MarketUtils .multiplyAndDivide(takerSellRemainQuantity, makerSellQuantity, makerBuyQuantity, - disableMath); + this.disableJavaLangMath()); if (takerBuyTokenQuantityRemain == 0) { // quantity too small, return sellToken to user @@ -427,7 +426,7 @@ private void matchSingleOrder(MarketOrderCapsule takerOrderCapsule, makerBuyTokenQuantityReceive = MarketUtils .multiplyAndDivide(makerSellRemainQuantity, makerBuyQuantity, makerSellQuantity, - chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath()); + this.disableJavaLangMath()); takerBuyTokenQuantityReceive = makerOrderCapsule.getSellTokenQuantityRemain(); long takerSellTokenLeft = @@ -462,7 +461,7 @@ private void matchSingleOrder(MarketOrderCapsule takerOrderCapsule, // makerSellTokenQuantity_A/makerBuyTokenQuantity_TRX makerBuyTokenQuantityReceive = MarketUtils .multiplyAndDivide(makerSellRemainQuantity, makerBuyQuantity, makerSellQuantity, - chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath()); + this.disableJavaLangMath()); MarketUtils.updateOrderState(makerOrderCapsule, State.INACTIVE, marketAccountStore); if (makerBuyTokenQuantityReceive == 0) { diff --git a/actuator/src/main/java/org/tron/core/actuator/VMActuator.java b/actuator/src/main/java/org/tron/core/actuator/VMActuator.java index bd34c96a9d9..9da41574ff0 100644 --- a/actuator/src/main/java/org/tron/core/actuator/VMActuator.java +++ b/actuator/src/main/java/org/tron/core/actuator/VMActuator.java @@ -603,10 +603,10 @@ private long getAccountEnergyLimitWithFloatRatio(AccountCapsule account, long fe } // can change the calc way long leftEnergyFromFreeze = rootRepository.getAccountLeftEnergyFromFreeze(account); - boolean isStrict2 = VMConfig.disableJavaLangMath(); - callValue = max(callValue, 0, isStrict2); + callValue = max(callValue, 0, VMConfig.disableJavaLangMath()); long energyFromBalance = floorDiv(max( - account.getBalance() - callValue, 0, isStrict2), sunPerEnergy, isStrict2); + account.getBalance() - callValue, 0, VMConfig.disableJavaLangMath()), sunPerEnergy, + VMConfig.disableJavaLangMath()); long energyFromFeeLimit; long totalBalanceForEnergyFreeze = account.getAllFrozenBalanceForEnergy(); diff --git a/actuator/src/main/java/org/tron/core/vm/PrecompiledContracts.java b/actuator/src/main/java/org/tron/core/vm/PrecompiledContracts.java index 5fbbdde3b21..3f72e717f86 100644 --- a/actuator/src/main/java/org/tron/core/vm/PrecompiledContracts.java +++ b/actuator/src/main/java/org/tron/core/vm/PrecompiledContracts.java @@ -636,17 +636,16 @@ public long getEnergyForData(byte[] data) { int expLen = parseLen(data, 1); int modLen = parseLen(data, 2); - boolean allowStrictMath2 = VMConfig.disableJavaLangMath(); byte[] expHighBytes = parseBytes(data, addSafely(ARGS_OFFSET, baseLen), min(expLen, 32, - allowStrictMath2)); + VMConfig.disableJavaLangMath())); - long multComplexity = getMultComplexity(max(baseLen, modLen, allowStrictMath2)); + long multComplexity = getMultComplexity(max(baseLen, modLen, VMConfig.disableJavaLangMath())); long adjExpLen = getAdjustedExponentLength(expHighBytes, expLen); // use big numbers to stay safe in case of overflow BigInteger energy = BigInteger.valueOf(multComplexity) - .multiply(BigInteger.valueOf(max(adjExpLen, 1, allowStrictMath2))) + .multiply(BigInteger.valueOf(max(adjExpLen, 1, VMConfig.disableJavaLangMath()))) .divide(GQUAD_DIVISOR); return isLessThan(energy, BigInteger.valueOf(Long.MAX_VALUE)) ? energy.longValueExact() diff --git a/actuator/src/main/java/org/tron/core/vm/nativecontract/DelegateResourceProcessor.java b/actuator/src/main/java/org/tron/core/vm/nativecontract/DelegateResourceProcessor.java index b711eb427d1..d03af04aaf3 100644 --- a/actuator/src/main/java/org/tron/core/vm/nativecontract/DelegateResourceProcessor.java +++ b/actuator/src/main/java/org/tron/core/vm/nativecontract/DelegateResourceProcessor.java @@ -22,6 +22,7 @@ import org.tron.core.exception.ContractValidateException; import org.tron.core.store.DelegatedResourceAccountIndexStore; import org.tron.core.store.DynamicPropertiesStore; +import org.tron.core.vm.config.VMConfig; import org.tron.core.vm.nativecontract.param.DelegateResourceParam; import org.tron.core.vm.repository.Repository; import org.tron.protos.Protocol; @@ -53,7 +54,7 @@ public void validate(DelegateResourceParam param, Repository repo) throws Contra throw new ContractValidateException("delegateBalance must be greater than or equal to 1 TRX"); } - boolean allowStrictMath2 = dynamicStore.disableJavaLangMath(); + boolean disableJavaLangMath = VMConfig.disableJavaLangMath(); switch (param.getResourceType()) { case BANDWIDTH: { BandwidthProcessor processor = new BandwidthProcessor(ChainBaseManager.getInstance()); @@ -62,7 +63,7 @@ public void validate(DelegateResourceParam param, Repository repo) throws Contra long netUsage = (long) (ownerCapsule.getNetUsage() * TRX_PRECISION * ((double) (repo.getTotalNetWeight()) / dynamicStore.getTotalNetLimit())); - long v2NetUsage = getV2NetUsage(ownerCapsule, netUsage, allowStrictMath2); + long v2NetUsage = getV2NetUsage(ownerCapsule, netUsage, disableJavaLangMath); if (ownerCapsule.getFrozenV2BalanceForBandwidth() - v2NetUsage < delegateBalance) { throw new ContractValidateException( @@ -78,7 +79,7 @@ public void validate(DelegateResourceParam param, Repository repo) throws Contra long energyUsage = (long) (ownerCapsule.getEnergyUsage() * TRX_PRECISION * ((double) (repo.getTotalEnergyWeight()) / dynamicStore.getTotalEnergyCurrentLimit())); - long v2EnergyUsage = getV2EnergyUsage(ownerCapsule, energyUsage, allowStrictMath2); + long v2EnergyUsage = getV2EnergyUsage(ownerCapsule, energyUsage, disableJavaLangMath); if (ownerCapsule.getFrozenV2BalanceForEnergy() - v2EnergyUsage < delegateBalance) { throw new ContractValidateException( diff --git a/actuator/src/main/java/org/tron/core/vm/program/Memory.java b/actuator/src/main/java/org/tron/core/vm/program/Memory.java index 4811bfb6e12..4249a7e2634 100644 --- a/actuator/src/main/java/org/tron/core/vm/program/Memory.java +++ b/actuator/src/main/java/org/tron/core/vm/program/Memory.java @@ -105,17 +105,17 @@ public void extend(int address, int size) { if (size <= 0) { return; } - boolean allowStrictMath2 = VMConfig.disableJavaLangMath(); - final int newSize = addExact(address, size, allowStrictMath2); + final int newSize = addExact(address, size, VMConfig.disableJavaLangMath()); int toAllocate = newSize - internalSize(); if (toAllocate > 0) { - addChunks((int) ceil((double) toAllocate / CHUNK_SIZE, allowStrictMath2)); + addChunks((int) ceil((double) toAllocate / CHUNK_SIZE, VMConfig.disableJavaLangMath())); } toAllocate = newSize - softSize; if (toAllocate > 0) { - toAllocate = (int) ceil((double) toAllocate / WORD_SIZE, allowStrictMath2) * WORD_SIZE; - softSize = addExact(softSize, toAllocate, allowStrictMath2); + toAllocate = (int) ceil((double) toAllocate / WORD_SIZE, + VMConfig.disableJavaLangMath()) * WORD_SIZE; + softSize = addExact(softSize, toAllocate, VMConfig.disableJavaLangMath()); if (programListener != null) { programListener.onMemoryExtend(toAllocate); diff --git a/actuator/src/main/java/org/tron/core/vm/program/Program.java b/actuator/src/main/java/org/tron/core/vm/program/Program.java index 024acb670a0..5da0b02ecb7 100644 --- a/actuator/src/main/java/org/tron/core/vm/program/Program.java +++ b/actuator/src/main/java/org/tron/core/vm/program/Program.java @@ -2170,13 +2170,12 @@ public boolean voteWitness(int witnessArrayOffset, int witnessArrayLength, try { VoteWitnessParam param = new VoteWitnessParam(); param.setVoterAddress(owner); - boolean allowStrictMath2 = VMConfig.disableJavaLangMath(); byte[] witnessArrayData = memoryChunk( - addExact(witnessArrayOffset, DataWord.WORD_SIZE, allowStrictMath2), - multiplyExact(witnessArrayLength, DataWord.WORD_SIZE, allowStrictMath2)); + addExact(witnessArrayOffset, DataWord.WORD_SIZE, VMConfig.disableJavaLangMath()), + multiplyExact(witnessArrayLength, DataWord.WORD_SIZE, VMConfig.disableJavaLangMath())); byte[] amountArrayData = memoryChunk( - addExact(amountArrayOffset, DataWord.WORD_SIZE, allowStrictMath2), - multiplyExact(amountArrayLength, DataWord.WORD_SIZE, allowStrictMath2)); + addExact(amountArrayOffset, DataWord.WORD_SIZE, VMConfig.disableJavaLangMath()), + multiplyExact(amountArrayLength, DataWord.WORD_SIZE, VMConfig.disableJavaLangMath())); for (int i = 0; i < witnessArrayLength; i++) { DataWord witness = new DataWord(Arrays.copyOfRange(witnessArrayData, diff --git a/actuator/src/main/java/org/tron/core/vm/utils/FreezeV2Util.java b/actuator/src/main/java/org/tron/core/vm/utils/FreezeV2Util.java index 28c190e2e7e..762d9318e7b 100644 --- a/actuator/src/main/java/org/tron/core/vm/utils/FreezeV2Util.java +++ b/actuator/src/main/java/org/tron/core/vm/utils/FreezeV2Util.java @@ -144,7 +144,6 @@ public static long queryDelegatableResource(byte[] address, long type, Repositor return 0L; } - boolean allowStrictMath2 = VMConfig.disableJavaLangMath(); AccountCapsule accountCapsule = repository.getAccount(address); if (accountCapsule == null) { return 0L; @@ -166,8 +165,8 @@ public static long queryDelegatableResource(byte[] address, long type, Repositor return frozenV2Resource; } - long v2NetUsage = getV2NetUsage(accountCapsule, usage, allowStrictMath2); - return max(0L, frozenV2Resource - v2NetUsage, allowStrictMath2); + long v2NetUsage = getV2NetUsage(accountCapsule, usage, VMConfig.disableJavaLangMath()); + return max(0L, frozenV2Resource - v2NetUsage, VMConfig.disableJavaLangMath()); } if (type == 1) { @@ -186,8 +185,8 @@ public static long queryDelegatableResource(byte[] address, long type, Repositor return frozenV2Resource; } - long v2EnergyUsage = getV2EnergyUsage(accountCapsule, usage, allowStrictMath2); - return max(0L, frozenV2Resource - v2EnergyUsage, allowStrictMath2); + long v2EnergyUsage = getV2EnergyUsage(accountCapsule, usage, VMConfig.disableJavaLangMath()); + return max(0L, frozenV2Resource - v2EnergyUsage, VMConfig.disableJavaLangMath()); } return 0L; @@ -244,21 +243,21 @@ private static List getTotalWithdrawList(List assetMap = this.account.getAssetMap(); @@ -745,8 +745,8 @@ public boolean addAssetAmountV2(byte[] key, long amount, currentAmount = 0L; } this.account = this.account.toBuilder() - .putAsset(nameKey, addExact(currentAmount, amount, useStrict2)) - .putAssetV2(tokenID, addExact(currentAmount, amount, useStrict2)) + .putAsset(nameKey, addExact(currentAmount, amount, disableJavaLangMath)) + .putAssetV2(tokenID, addExact(currentAmount, amount, disableJavaLangMath)) .build(); } //key is token id @@ -758,19 +758,19 @@ public boolean addAssetAmountV2(byte[] key, long amount, currentAmount = 0L; } this.account = this.account.toBuilder() - .putAssetV2(tokenIDStr, addExact(currentAmount, amount, useStrict2)) + .putAssetV2(tokenIDStr, addExact(currentAmount, amount, disableJavaLangMath)) .build(); } return true; } - public boolean reduceAssetAmount(byte[] key, long amount, boolean useStrict2) { + public boolean reduceAssetAmount(byte[] key, long amount, boolean disableJavaLangMath) { Map assetMap = this.account.getAssetMap(); String nameKey = ByteArray.toStr(key); Long currentAmount = assetMap.get(nameKey); if (amount > 0 && null != currentAmount && amount <= currentAmount) { this.account = this.account.toBuilder() - .putAsset(nameKey, subtractExact(currentAmount, amount, useStrict2)).build(); + .putAsset(nameKey, subtractExact(currentAmount, amount, disableJavaLangMath)).build(); return true; } @@ -781,7 +781,7 @@ public boolean reduceAssetAmountV2(byte[] key, long amount, DynamicPropertiesStore dynamicPropertiesStore, AssetIssueStore assetIssueStore) { importAsset(key); //key is token name - boolean useStrict2 = dynamicPropertiesStore.disableJavaLangMath(); + boolean disableJavaLangMath = dynamicPropertiesStore.disableJavaLangMath(); if (dynamicPropertiesStore.getAllowSameTokenName() == 0) { Map assetMap = this.account.getAssetMap(); AssetIssueCapsule assetIssueCapsule = assetIssueStore.get(key); @@ -790,8 +790,8 @@ public boolean reduceAssetAmountV2(byte[] key, long amount, Long currentAmount = assetMap.get(nameKey); if (amount > 0 && null != currentAmount && amount <= currentAmount) { this.account = this.account.toBuilder() - .putAsset(nameKey, subtractExact(currentAmount, amount, useStrict2)) - .putAssetV2(tokenID, subtractExact(currentAmount, amount, useStrict2)) + .putAsset(nameKey, subtractExact(currentAmount, amount, disableJavaLangMath)) + .putAssetV2(tokenID, subtractExact(currentAmount, amount, disableJavaLangMath)) .build(); return true; } @@ -803,7 +803,7 @@ public boolean reduceAssetAmountV2(byte[] key, long amount, Long currentAmount = assetMapV2.get(tokenID); if (amount > 0 && null != currentAmount && amount <= currentAmount) { this.account = this.account.toBuilder() - .putAssetV2(tokenID, subtractExact(currentAmount, amount, useStrict2)) + .putAssetV2(tokenID, subtractExact(currentAmount, amount, disableJavaLangMath)) .build(); return true; } diff --git a/chainbase/src/main/java/org/tron/core/capsule/ReceiptCapsule.java b/chainbase/src/main/java/org/tron/core/capsule/ReceiptCapsule.java index 73c852805a2..06513a0edc7 100644 --- a/chainbase/src/main/java/org/tron/core/capsule/ReceiptCapsule.java +++ b/chainbase/src/main/java/org/tron/core/capsule/ReceiptCapsule.java @@ -218,13 +218,14 @@ public void payEnergyBill(DynamicPropertiesStore dynamicPropertiesStore, receipt.getEnergyUsageTotal(), receipt.getResult(), energyProcessor, now); return; } - boolean useStrict2 = dynamicPropertiesStore.disableJavaLangMath(); + boolean disableJavaLangMath = dynamicPropertiesStore.disableJavaLangMath(); if ((!Objects.isNull(origin)) && caller.getAddress().equals(origin.getAddress())) { payEnergyBill(dynamicPropertiesStore, accountStore, forkController, caller, receipt.getEnergyUsageTotal(), receipt.getResult(), energyProcessor, now); } else { - long originUsage = multiplyExact(receipt.getEnergyUsageTotal(), percent, useStrict2) / 100; + long originUsage = multiplyExact(receipt.getEnergyUsageTotal(), percent, disableJavaLangMath) + / 100; originUsage = getOriginUsage(dynamicPropertiesStore, origin, originEnergyLimit, energyProcessor, originUsage); @@ -240,18 +241,20 @@ public void payEnergyBill(DynamicPropertiesStore dynamicPropertiesStore, private long getOriginUsage(DynamicPropertiesStore dynamicPropertiesStore, AccountCapsule origin, long originEnergyLimit, EnergyProcessor energyProcessor, long originUsage) { - boolean useStrict2 = dynamicPropertiesStore.disableJavaLangMath(); + boolean disableJavaLangMath = dynamicPropertiesStore.disableJavaLangMath(); if (dynamicPropertiesStore.getAllowTvmFreeze() == 1 || dynamicPropertiesStore.supportUnfreezeDelay()) { - return min(originUsage, min(originEnergyLeft, originEnergyLimit, useStrict2), useStrict2); + return min(originUsage, min(originEnergyLeft, originEnergyLimit, disableJavaLangMath), + disableJavaLangMath); } if (checkForEnergyLimit(dynamicPropertiesStore)) { return min(originUsage, min(energyProcessor.getAccountLeftEnergyFromFreeze(origin), originEnergyLimit, - useStrict2), useStrict2); + disableJavaLangMath), disableJavaLangMath); } - return min(originUsage, energyProcessor.getAccountLeftEnergyFromFreeze(origin), useStrict2); + return min(originUsage, energyProcessor.getAccountLeftEnergyFromFreeze(origin), + disableJavaLangMath); } private void payEnergyBill( diff --git a/chainbase/src/main/java/org/tron/core/db/EnergyProcessor.java b/chainbase/src/main/java/org/tron/core/db/EnergyProcessor.java index b7c6354af37..30d778d0990 100644 --- a/chainbase/src/main/java/org/tron/core/db/EnergyProcessor.java +++ b/chainbase/src/main/java/org/tron/core/db/EnergyProcessor.java @@ -79,10 +79,9 @@ public void updateAdaptiveTotalEnergyLimit() { / AdaptiveResourceLimitConstants.EXPAND_RATE_DENOMINATOR; // logger.info(totalEnergyAverageUsage + "<" + targetTotalEnergyLimit + "\n" + result); } - boolean useStrict2 = dynamicPropertiesStore.disableJavaLangMath(); - result = min(max(result, totalEnergyLimit, useStrict2), + result = min(max(result, totalEnergyLimit, this.disableJavaLangMath()), totalEnergyLimit * dynamicPropertiesStore.getAdaptiveResourceLimitMultiplier(), - useStrict2); + this.disableJavaLangMath()); dynamicPropertiesStore.saveTotalEnergyCurrentLimit(result); logger.debug("Adjust totalEnergyCurrentLimit, old: {}, new: {}.", @@ -178,7 +177,7 @@ public long getAccountLeftEnergyFromFreeze(AccountCapsule accountCapsule) { long newEnergyUsage = recovery(accountCapsule, ENERGY, energyUsage, latestConsumeTime, now); - return max(energyLimit - newEnergyUsage, 0, dynamicPropertiesStore.disableJavaLangMath()); // us + return max(energyLimit - newEnergyUsage, 0, this.disableJavaLangMath()); // us } private long getHeadSlot() { diff --git a/chainbase/src/main/java/org/tron/core/db/ResourceProcessor.java b/chainbase/src/main/java/org/tron/core/db/ResourceProcessor.java index 1d6cd1c7415..7e170f9dab5 100644 --- a/chainbase/src/main/java/org/tron/core/db/ResourceProcessor.java +++ b/chainbase/src/main/java/org/tron/core/db/ResourceProcessor.java @@ -54,7 +54,7 @@ protected long increase(long lastUsage, long usage, long lastTime, long now, lon long delta = now - lastTime; double decay = (windowSize - delta) / (double) windowSize; averageLastUsage = round(averageLastUsage * decay, - dynamicPropertiesStore.disableJavaLangMath()); + this.disableJavaLangMath()); } else { averageLastUsage = 0; } @@ -83,7 +83,7 @@ public long increase(AccountCapsule accountCapsule, ResourceCode resourceCode, long delta = now - lastTime; double decay = (oldWindowSize - delta) / (double) oldWindowSize; averageLastUsage = round(averageLastUsage * decay, - dynamicPropertiesStore.disableJavaLangMath()); + this.disableJavaLangMath()); } else { averageLastUsage = 0; } @@ -116,7 +116,7 @@ public long increaseV2(AccountCapsule accountCapsule, ResourceCode resourceCode, long delta = now - lastTime; double decay = (oldWindowSize - delta) / (double) oldWindowSize; averageLastUsage = round(averageLastUsage * decay, - dynamicPropertiesStore.disableJavaLangMath()); + this.disableJavaLangMath()); } else { averageLastUsage = 0; } @@ -133,7 +133,7 @@ public long increaseV2(AccountCapsule accountCapsule, ResourceCode resourceCode, long newWindowSize = divideCeil( remainUsage * remainWindowSize + usage * this.windowSize * WINDOW_SIZE_PRECISION, newUsage); newWindowSize = min(newWindowSize, this.windowSize * WINDOW_SIZE_PRECISION, - dynamicPropertiesStore.disableJavaLangMath()); + this.disableJavaLangMath()); accountCapsule.setNewWindowSizeV2(resourceCode, newWindowSize); return newUsage; } @@ -196,7 +196,7 @@ public void unDelegateIncreaseV2(AccountCapsule owner, final AccountCapsule rece ownerUsage * remainOwnerWindowSizeV2 + transferUsage * remainReceiverWindowSizeV2, newOwnerUsage); newOwnerWindowSize = min(newOwnerWindowSize, this.windowSize * WINDOW_SIZE_PRECISION, - dynamicPropertiesStore.disableJavaLangMath()); + this.disableJavaLangMath()); owner.setNewWindowSizeV2(resourceCode, newOwnerWindowSize); owner.setUsage(resourceCode, newOwnerUsage); owner.setLatestTime(resourceCode, now); @@ -224,14 +224,14 @@ protected boolean consumeFeeForBandwidth(AccountCapsule accountCapsule, long fee long latestOperationTime = dynamicPropertiesStore.getLatestBlockHeaderTimestamp(); accountCapsule.setLatestOperationTime(latestOperationTime); Commons.adjustBalance(accountStore, accountCapsule, -fee, - dynamicPropertiesStore.disableJavaLangMath()); + this.disableJavaLangMath()); if (dynamicPropertiesStore.supportTransactionFeePool()) { dynamicPropertiesStore.addTransactionFeePool(fee); } else if (dynamicPropertiesStore.supportBlackHoleOptimization()) { dynamicPropertiesStore.burnTrx(fee); } else { Commons.adjustBalance(accountStore, accountStore.getBlackhole().createDbKey(), +fee, - dynamicPropertiesStore.disableJavaLangMath()); + this.disableJavaLangMath()); } return true; @@ -245,12 +245,12 @@ protected boolean consumeFeeForNewAccount(AccountCapsule accountCapsule, long fe long latestOperationTime = dynamicPropertiesStore.getLatestBlockHeaderTimestamp(); accountCapsule.setLatestOperationTime(latestOperationTime); Commons.adjustBalance(accountStore, accountCapsule, -fee, - dynamicPropertiesStore.disableJavaLangMath()); + this.disableJavaLangMath()); if (dynamicPropertiesStore.supportBlackHoleOptimization()) { dynamicPropertiesStore.burnTrx(fee); } else { Commons.adjustBalance(accountStore, accountStore.getBlackhole().createDbKey(), +fee, - dynamicPropertiesStore.disableJavaLangMath()); + this.disableJavaLangMath()); } return true; @@ -258,4 +258,8 @@ protected boolean consumeFeeForNewAccount(AccountCapsule accountCapsule, long fe return false; } } + + protected boolean disableJavaLangMath() { + return dynamicPropertiesStore.disableJavaLangMath(); + } } diff --git a/chainbase/src/main/java/org/tron/core/db/TransactionTrace.java b/chainbase/src/main/java/org/tron/core/db/TransactionTrace.java index a65c814246d..c3776921244 100644 --- a/chainbase/src/main/java/org/tron/core/db/TransactionTrace.java +++ b/chainbase/src/main/java/org/tron/core/db/TransactionTrace.java @@ -244,11 +244,11 @@ public void pay() throws BalanceInsufficientException { callerAccount = callContract.getOwnerAddress().toByteArray(); originAccount = contractCapsule.getOriginAddress(); - boolean disableMath = dynamicPropertiesStore.disableJavaLangMath(); + boolean disableJavaLangMath = dynamicPropertiesStore.disableJavaLangMath(); percent = max(Constant.ONE_HUNDRED - contractCapsule.getConsumeUserResourcePercent( - disableMath), 0, disableMath); + disableJavaLangMath), 0, disableJavaLangMath); percent = min(percent, Constant.ONE_HUNDRED, - disableMath); + disableJavaLangMath); originEnergyLimit = contractCapsule.getOriginEnergyLimit(); break; default: diff --git a/framework/src/main/java/org/tron/core/db/Manager.java b/framework/src/main/java/org/tron/core/db/Manager.java index 4542b96a737..1eecc103874 100644 --- a/framework/src/main/java/org/tron/core/db/Manager.java +++ b/framework/src/main/java/org/tron/core/db/Manager.java @@ -931,20 +931,20 @@ public void consumeMultiSignFee(TransactionCapsule trx, TransactionTrace trace) throws AccountResourceInsufficientException { if (trx.getInstance().getSignatureCount() > 1) { long fee = getDynamicPropertiesStore().getMultiSignFee(); - boolean disableMath = getDynamicPropertiesStore().disableJavaLangMath(); + boolean disableJavaLangMath = getDynamicPropertiesStore().disableJavaLangMath(); List contracts = trx.getInstance().getRawData().getContractList(); for (Contract contract : contracts) { byte[] address = TransactionCapsule.getOwner(contract); AccountCapsule accountCapsule = getAccountStore().get(address); try { if (accountCapsule != null) { - adjustBalance(getAccountStore(), accountCapsule, -fee, disableMath); + adjustBalance(getAccountStore(), accountCapsule, -fee, disableJavaLangMath); if (getDynamicPropertiesStore().supportBlackHoleOptimization()) { getDynamicPropertiesStore().burnTrx(fee); } else { adjustBalance(getAccountStore(), this.getAccountStore().getBlackhole(), +fee, - disableMath); + disableJavaLangMath); } } } catch (BalanceInsufficientException e) { @@ -969,20 +969,20 @@ public void consumeMemoFee(TransactionCapsule trx, TransactionTrace trace) if (fee == 0) { return; } - boolean disableMath = getDynamicPropertiesStore().disableJavaLangMath(); + boolean disableJavaLangMath = getDynamicPropertiesStore().disableJavaLangMath(); List contracts = trx.getInstance().getRawData().getContractList(); for (Contract contract : contracts) { byte[] address = TransactionCapsule.getOwner(contract); AccountCapsule accountCapsule = getAccountStore().get(address); try { if (accountCapsule != null) { - adjustBalance(getAccountStore(), accountCapsule, -fee, disableMath); + adjustBalance(getAccountStore(), accountCapsule, -fee, disableJavaLangMath); if (getDynamicPropertiesStore().supportBlackHoleOptimization()) { getDynamicPropertiesStore().burnTrx(fee); } else { adjustBalance(getAccountStore(), this.getAccountStore().getBlackhole(), +fee, - disableMath); + disableJavaLangMath); } } } catch (BalanceInsufficientException e) {