From 698f895a1633d6b5d0297e243112bb733aa3089b Mon Sep 17 00:00:00 2001 From: halibobo1205 Date: Mon, 24 Feb 2025 14:28:41 +0800 Subject: [PATCH] reactor(actuator):rename allowStrictMath2 to disableJavaLangMath --- .../tron/core/actuator/AbstractActuator.java | 26 +++++++-------- .../actuator/DelegateResourceActuator.java | 5 ++- .../actuator/MarketSellAssetActuator.java | 8 ++--- .../org/tron/core/actuator/VMActuator.java | 32 +++++++++---------- .../org/tron/core/utils/TransactionUtil.java | 4 +-- .../tron/core/vm/PrecompiledContracts.java | 2 +- .../main/java/org/tron/core/vm/VMUtils.java | 4 +-- .../org/tron/core/vm/config/ConfigLoader.java | 2 +- .../DelegateResourceProcessor.java | 3 +- .../UnDelegateResourceProcessor.java | 4 +-- .../UnfreezeBalanceProcessor.java | 4 +-- .../java/org/tron/core/vm/program/Memory.java | 6 ++-- .../org/tron/core/vm/program/Program.java | 10 +++--- .../core/vm/repository/RepositoryImpl.java | 6 ++-- .../org/tron/core/vm/utils/FreezeV2Util.java | 6 ++-- .../java/org/tron/common/utils/Commons.java | 2 +- .../org/tron/common/utils/ForkController.java | 2 +- .../org/tron/core/capsule/AccountCapsule.java | 4 +-- .../tron/core/capsule/ContractCapsule.java | 4 +-- .../core/capsule/ContractStateCapsule.java | 8 ++--- .../org/tron/core/capsule/ReceiptCapsule.java | 6 ++-- .../tron/core/capsule/utils/MarketUtils.java | 8 ++--- .../org/tron/core/db/EnergyProcessor.java | 4 +-- .../org/tron/core/db/ResourceProcessor.java | 18 +++++------ .../org/tron/core/db/TransactionTrace.java | 12 +++---- .../tron/core/service/MortgageService.java | 2 +- .../core/store/DynamicPropertiesStore.java | 8 ++--- .../org/tron/common/runtime/vm/DataWord.java | 4 +-- .../org/tron/core/vm/config/VMConfig.java | 10 +++--- .../src/main/java/org/tron/core/Wallet.java | 14 ++++---- .../main/java/org/tron/core/db/Manager.java | 20 ++++++------ .../test/java/org/tron/common/BaseTest.java | 2 +- .../runtime/vm/BandWidthRuntimeTest.java | 2 +- .../tron/common/runtime/vm/FreezeV2Test.java | 2 +- .../org/tron/common/runtime/vm/VoteTest.java | 4 +-- .../UpdateSettingContractActuatorTest.java | 6 ++-- .../java/org/tron/core/db/ManagerTest.java | 2 +- .../core/services/ProposalServiceTest.java | 4 +-- 38 files changed, 131 insertions(+), 139 deletions(-) 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 2f1bb450d1b..b5bdb9bcafc 100644 --- a/actuator/src/main/java/org/tron/core/actuator/AbstractActuator.java +++ b/actuator/src/main/java/org/tron/core/actuator/AbstractActuator.java @@ -69,15 +69,15 @@ public AbstractActuator setForkUtils(ForkController forkController) { } public long addExact(long x, long y) { - return Maths.addExact(x, y, chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + return Maths.addExact(x, y, this.disableJavaLangMath()); } public long addExact(int x, int y) { - return Maths.addExact(x, y, chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + return Maths.addExact(x, y, this.disableJavaLangMath()); } public long floorDiv(long x, long y) { - return Maths.floorDiv(x, y, chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + return Maths.floorDiv(x, y, this.disableJavaLangMath()); } public long floorDiv(long x, int y) { @@ -85,8 +85,7 @@ public long floorDiv(long x, int y) { } public long multiplyExact(long x, long y) { - return Maths.multiplyExact(x, y, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + return Maths.multiplyExact(x, y, this.disableJavaLangMath()); } public long multiplyExact(long x, int y) { @@ -94,21 +93,19 @@ public long multiplyExact(long x, int y) { } public int multiplyExact(int x, int y) { - return Maths.multiplyExact(x, y, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + return Maths.multiplyExact(x, y, this.disableJavaLangMath()); } public long subtractExact(long x, long y) { - return Maths.subtractExact(x, y, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + return Maths.subtractExact(x, y, this.disableJavaLangMath()); } public int min(int a, int b) { - return Maths.min(a, b, chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + return Maths.min(a, b, this.disableJavaLangMath()); } public long min(long a, long b) { - return Maths.min(a, b, chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + return Maths.min(a, b, this.disableJavaLangMath()); } public void adjustBalance(AccountStore accountStore, byte[] accountAddress, long amount) @@ -122,7 +119,10 @@ public void adjustBalance(AccountStore accountStore, byte[] accountAddress, long */ public void adjustBalance(AccountStore accountStore, AccountCapsule account, long amount) throws BalanceInsufficientException { - Commons.adjustBalance(accountStore, account, amount, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + Commons.adjustBalance(accountStore, account, amount, this.disableJavaLangMath()); + } + + private 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 90e91d8d3b2..547171486ee 100755 --- a/actuator/src/main/java/org/tron/core/actuator/DelegateResourceActuator.java +++ b/actuator/src/main/java/org/tron/core/actuator/DelegateResourceActuator.java @@ -15,7 +15,6 @@ import java.util.Arrays; import java.util.Objects; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ArrayUtils; import org.tron.common.utils.DecodeUtil; import org.tron.common.utils.StringUtil; import org.tron.core.capsule.AccountCapsule; @@ -163,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.allowStrictMath2()); + dynamicStore.disableJavaLangMath()); if (ownerCapsule.getFrozenV2BalanceForBandwidth() - v2NetUsage < delegateBalance) { throw new ContractValidateException( "delegateBalance must be less than or equal to available FreezeBandwidthV2 balance"); @@ -177,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.allowStrictMath2()); + dynamicStore.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 43f21b716d8..b5b375ee391 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,10 @@ private void matchSingleOrder(MarketOrderCapsule takerOrderCapsule, // => takerBuyTokenQuantityCurrent_A = takerSellTokenQuantityRemain_TRX * // makerSellTokenQuantity_A/makerBuyTokenQuantity_TRX - boolean useStrictMath2 = dynamicStore.allowStrictMath2(); + boolean disableMath = dynamicStore.disableJavaLangMath(); long takerBuyTokenQuantityRemain = MarketUtils .multiplyAndDivide(takerSellRemainQuantity, makerSellQuantity, makerBuyQuantity, - useStrictMath2); + disableMath); if (takerBuyTokenQuantityRemain == 0) { // quantity too small, return sellToken to user @@ -427,7 +427,7 @@ private void matchSingleOrder(MarketOrderCapsule takerOrderCapsule, makerBuyTokenQuantityReceive = MarketUtils .multiplyAndDivide(makerSellRemainQuantity, makerBuyQuantity, makerSellQuantity, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath()); takerBuyTokenQuantityReceive = makerOrderCapsule.getSellTokenQuantityRemain(); long takerSellTokenLeft = @@ -462,7 +462,7 @@ private void matchSingleOrder(MarketOrderCapsule takerOrderCapsule, // makerSellTokenQuantity_A/makerBuyTokenQuantity_TRX makerBuyTokenQuantityReceive = MarketUtils .multiplyAndDivide(makerSellRemainQuantity, makerBuyQuantity, makerSellQuantity, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + chainBaseManager.getDynamicPropertiesStore().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 42ddc65c745..bd34c96a9d9 100644 --- a/actuator/src/main/java/org/tron/core/actuator/VMActuator.java +++ b/actuator/src/main/java/org/tron/core/actuator/VMActuator.java @@ -128,7 +128,7 @@ public void validate(Object object) throws ContractValidateException { if (isConstantCall && trx.getRawData().getFeeLimit() > 0) { maxEnergyLimit = min(maxEnergyLimit, trx.getRawData().getFeeLimit() / context.getStoreFactory().getChainBaseManager() - .getDynamicPropertiesStore().getEnergyFee(), VMConfig.allowStrictMath2()); + .getDynamicPropertiesStore().getEnergyFee(), VMConfig.disableJavaLangMath()); } blockCap = context.getBlockCap(); if ((VMConfig.allowTvmFreeze() || VMConfig.allowTvmFreezeV2()) @@ -566,9 +566,9 @@ public long getAccountEnergyLimitWithFixRatio(AccountCapsule account, long feeLi } long energyFromBalance = max(account.getBalance() - callValue, 0, - VMConfig.allowStrictMath2()) / sunPerEnergy; + VMConfig.disableJavaLangMath()) / sunPerEnergy; long availableEnergy = addExact(leftFrozenEnergy, energyFromBalance, - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); long energyFromFeeLimit = feeLimit / sunPerEnergy; if (VMConfig.allowTvmFreezeV2()) { @@ -585,12 +585,12 @@ public long getAccountEnergyLimitWithFixRatio(AccountCapsule account, long feeLi account.setEnergyUsage( energyProcessor.increase(account, ENERGY, account.getEnergyUsage(), min(leftFrozenEnergy, energyFromFeeLimit, - VMConfig.allowStrictMath2()), now, now)); + VMConfig.disableJavaLangMath()), now, now)); receipt.setCallerEnergyMergedUsage(account.getEnergyUsage()); receipt.setCallerEnergyMergedWindowSize(account.getWindowSize(ENERGY)); rootRepository.updateAccount(account.createDbKey(), account); } - return min(availableEnergy, energyFromFeeLimit, VMConfig.allowStrictMath2()); + return min(availableEnergy, energyFromFeeLimit, VMConfig.disableJavaLangMath()); } @@ -603,7 +603,7 @@ private long getAccountEnergyLimitWithFloatRatio(AccountCapsule account, long fe } // can change the calc way long leftEnergyFromFreeze = rootRepository.getAccountLeftEnergyFromFreeze(account); - boolean isStrict2 = VMConfig.allowStrictMath2(); + boolean isStrict2 = VMConfig.disableJavaLangMath(); callValue = max(callValue, 0, isStrict2); long energyFromBalance = floorDiv(max( account.getBalance() - callValue, 0, isStrict2), sunPerEnergy, isStrict2); @@ -627,12 +627,12 @@ private long getAccountEnergyLimitWithFloatRatio(AccountCapsule account, long fe } else { energyFromFeeLimit = addExact( leftEnergyFromFreeze, (feeLimit - leftBalanceForEnergyFreeze) / sunPerEnergy, - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); } } return min(addExact(leftEnergyFromFreeze, energyFromBalance, - VMConfig.allowStrictMath2()), energyFromFeeLimit, VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()), energyFromFeeLimit, VMConfig.disableJavaLangMath()); } public long getTotalEnergyLimit(AccountCapsule creator, AccountCapsule caller, @@ -708,7 +708,7 @@ public long getTotalEnergyLimitWithFixRatio(AccountCapsule creator, AccountCapsu ContractCapsule contractCapsule = rootRepository .getContract(contract.getContractAddress().toByteArray()); long consumeUserResourcePercent = contractCapsule.getConsumeUserResourcePercent( - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); long originEnergyLimit = contractCapsule.getOriginEnergyLimit(); if (originEnergyLimit < 0) { @@ -724,7 +724,7 @@ public long getTotalEnergyLimitWithFixRatio(AccountCapsule creator, AccountCapsu } if (consumeUserResourcePercent <= 0) { creatorEnergyLimit = min(originEnergyLeft, originEnergyLimit, - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); } else { if (consumeUserResourcePercent < VMConstant.ONE_HUNDRED) { // creatorEnergyLimit = @@ -735,8 +735,8 @@ public long getTotalEnergyLimitWithFixRatio(AccountCapsule creator, AccountCapsu BigInteger.valueOf(callerEnergyLimit) .multiply(BigInteger.valueOf(VMConstant.ONE_HUNDRED - consumeUserResourcePercent)) .divide(BigInteger.valueOf(consumeUserResourcePercent)).longValueExact(), - min(originEnergyLeft, originEnergyLimit, VMConfig.allowStrictMath2()), - VMConfig.allowStrictMath2()); + min(originEnergyLeft, originEnergyLimit, VMConfig.disableJavaLangMath()), + VMConfig.disableJavaLangMath()); } } if (VMConfig.allowTvmFreezeV2()) { @@ -758,7 +758,7 @@ public long getTotalEnergyLimitWithFixRatio(AccountCapsule creator, AccountCapsu rootRepository.updateAccount(creator.createDbKey(), creator); } return addExact(callerEnergyLimit, creatorEnergyLimit, - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); } private long getTotalEnergyLimitWithFloatRatio(AccountCapsule creator, AccountCapsule caller, @@ -775,16 +775,16 @@ private long getTotalEnergyLimitWithFloatRatio(AccountCapsule creator, AccountCa ContractCapsule contractCapsule = rootRepository .getContract(contract.getContractAddress().toByteArray()); long consumeUserResourcePercent = contractCapsule.getConsumeUserResourcePercent( - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); if (creatorEnergyLimit * consumeUserResourcePercent > (VMConstant.ONE_HUNDRED - consumeUserResourcePercent) * callerEnergyLimit) { return floorDiv( callerEnergyLimit * VMConstant.ONE_HUNDRED, consumeUserResourcePercent, - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); } else { return addExact(callerEnergyLimit, creatorEnergyLimit, - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); } } diff --git a/actuator/src/main/java/org/tron/core/utils/TransactionUtil.java b/actuator/src/main/java/org/tron/core/utils/TransactionUtil.java index a34afa9d32e..53d6caf5691 100644 --- a/actuator/src/main/java/org/tron/core/utils/TransactionUtil.java +++ b/actuator/src/main/java/org/tron/core/utils/TransactionUtil.java @@ -40,7 +40,6 @@ import org.tron.common.parameter.CommonParameter; import org.tron.common.utils.Sha256Hash; import org.tron.core.ChainBaseManager; -import org.tron.core.Constant; import org.tron.core.capsule.AccountCapsule; import org.tron.core.capsule.TransactionCapsule; import org.tron.core.exception.PermissionException; @@ -53,7 +52,6 @@ import org.tron.protos.Protocol.Transaction.Result.contractResult; import org.tron.protos.contract.SmartContractOuterClass.CreateSmartContract; import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract; -import org.tron.protos.Protocol.Transaction.Contract.ContractType; import org.tron.protos.contract.BalanceContract.DelegateResourceContract; @Slf4j(topic = "capsule") @@ -271,7 +269,7 @@ public static long estimateConsumeBandWidthSize(DynamicPropertiesStore dps, long DelegateResourceContract.Builder builder2 = DelegateResourceContract.newBuilder() .setBalance(TRX_PRECISION); long builder2Size = builder2.build().getSerializedSize(); - long addSize = max(builderSize - builder2Size, 0L, dps.allowStrictMath2()); + long addSize = max(builderSize - builder2Size, 0L, dps.disableJavaLangMath()); return DELEGATE_COST_BASE_SIZE + addSize; } 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 53e2cba90d4..b53a196e0b6 100644 --- a/actuator/src/main/java/org/tron/core/vm/PrecompiledContracts.java +++ b/actuator/src/main/java/org/tron/core/vm/PrecompiledContracts.java @@ -626,7 +626,7 @@ public long getEnergyForData(byte[] data) { int expLen = parseLen(data, 1); int modLen = parseLen(data, 2); - boolean allowStrictMath2 = VMConfig.allowStrictMath2(); + boolean allowStrictMath2 = VMConfig.disableJavaLangMath(); byte[] expHighBytes = parseBytes(data, addSafely(ARGS_OFFSET, baseLen), min(expLen, 32, allowStrictMath2)); diff --git a/actuator/src/main/java/org/tron/core/vm/VMUtils.java b/actuator/src/main/java/org/tron/core/vm/VMUtils.java index 090c4c54898..2f469e0579a 100644 --- a/actuator/src/main/java/org/tron/core/vm/VMUtils.java +++ b/actuator/src/main/java/org/tron/core/vm/VMUtils.java @@ -170,7 +170,7 @@ public static boolean validateForSmartContract(Repository deposit, byte[] ownerA "Validate InternalTransfer error, balance is not sufficient."); } - addExact(toAccount.getBalance(), amount, VMConfig.allowStrictMath2()); + addExact(toAccount.getBalance(), amount, VMConfig.disableJavaLangMath()); } catch (ArithmeticException e) { logger.debug(e.getMessage(), e); throw new ContractValidateException(e.getMessage()); @@ -232,7 +232,7 @@ public static boolean validateForSmartContract(Repository deposit, byte[] ownerA if (assetBalance != null) { try { addExact(assetBalance, amount, - VMConfig.allowStrictMath2()); //check if overflow + VMConfig.disableJavaLangMath()); //check if overflow } catch (Exception e) { logger.debug(e.getMessage(), e); throw new ContractValidateException(e.getMessage()); diff --git a/actuator/src/main/java/org/tron/core/vm/config/ConfigLoader.java b/actuator/src/main/java/org/tron/core/vm/config/ConfigLoader.java index 508bedc34dc..81ed4ba2b8f 100644 --- a/actuator/src/main/java/org/tron/core/vm/config/ConfigLoader.java +++ b/actuator/src/main/java/org/tron/core/vm/config/ConfigLoader.java @@ -42,7 +42,7 @@ public static void load(StoreFactory storeFactory) { VMConfig.initAllowEnergyAdjustment(ds.getAllowEnergyAdjustment()); VMConfig.initAllowStrictMath(ds.getAllowStrictMath()); VMConfig.initAllowTvmCancun(ds.getAllowTvmCancun()); - VMConfig.initAllowStrictMath2(ds.getConsensusLogicOptimization()); + VMConfig.initDisableJavaLangMath(ds.getConsensusLogicOptimization()); } } } 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 164f9711a20..b711eb427d1 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 @@ -10,7 +10,6 @@ import com.google.protobuf.ByteString; import java.util.Arrays; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ArrayUtils; import org.tron.common.utils.DecodeUtil; import org.tron.common.utils.StringUtil; import org.tron.core.ChainBaseManager; @@ -54,7 +53,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.allowStrictMath2(); + boolean allowStrictMath2 = dynamicStore.disableJavaLangMath(); switch (param.getResourceType()) { case BANDWIDTH: { BandwidthProcessor processor = new BandwidthProcessor(ChainBaseManager.getInstance()); diff --git a/actuator/src/main/java/org/tron/core/vm/nativecontract/UnDelegateResourceProcessor.java b/actuator/src/main/java/org/tron/core/vm/nativecontract/UnDelegateResourceProcessor.java index fc95f23cc03..99bcecdbd44 100644 --- a/actuator/src/main/java/org/tron/core/vm/nativecontract/UnDelegateResourceProcessor.java +++ b/actuator/src/main/java/org/tron/core/vm/nativecontract/UnDelegateResourceProcessor.java @@ -117,7 +117,7 @@ public void execute(UnDelegateResourceParam param, Repository repo) { * dynamicStore.getTotalNetLimit() / repo.getTotalNetWeight()); transferUsage = (long) (receiverCapsule.getNetUsage() * ((double) (unDelegateBalance) / receiverCapsule.getAllFrozenBalanceForBandwidth())); - transferUsage = min(unDelegateMaxUsage, transferUsage, VMConfig.allowStrictMath2()); + transferUsage = min(unDelegateMaxUsage, transferUsage, VMConfig.disableJavaLangMath()); receiverCapsule.addAcquiredDelegatedFrozenV2BalanceForBandwidth(-unDelegateBalance); } @@ -141,7 +141,7 @@ public void execute(UnDelegateResourceParam param, Repository repo) { * dynamicStore.getTotalEnergyCurrentLimit() / repo.getTotalEnergyWeight()); transferUsage = (long) (receiverCapsule.getEnergyUsage() * ((double) (unDelegateBalance) / receiverCapsule.getAllFrozenBalanceForEnergy())); - transferUsage = min(unDelegateMaxUsage, transferUsage, VMConfig.allowStrictMath2()); + transferUsage = min(unDelegateMaxUsage, transferUsage, VMConfig.disableJavaLangMath()); receiverCapsule.addAcquiredDelegatedFrozenV2BalanceForEnergy(-unDelegateBalance); } diff --git a/actuator/src/main/java/org/tron/core/vm/nativecontract/UnfreezeBalanceProcessor.java b/actuator/src/main/java/org/tron/core/vm/nativecontract/UnfreezeBalanceProcessor.java index 2167635a28f..53981a22d34 100644 --- a/actuator/src/main/java/org/tron/core/vm/nativecontract/UnfreezeBalanceProcessor.java +++ b/actuator/src/main/java/org/tron/core/vm/nativecontract/UnfreezeBalanceProcessor.java @@ -137,11 +137,11 @@ public long execute(UnfreezeBalanceParam param, Repository repo) { switch (param.getResourceType()) { case BANDWIDTH: receiverCapsule.safeAddAcquiredDelegatedFrozenBalanceForBandwidth(-unfreezeBalance, - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); break; case ENERGY: receiverCapsule.safeAddAcquiredDelegatedFrozenBalanceForEnergy(-unfreezeBalance, - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); break; default: //this should never happen 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 70e4005a54a..4811bfb6e12 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,7 +105,7 @@ public void extend(int address, int size) { if (size <= 0) { return; } - boolean allowStrictMath2 = VMConfig.allowStrictMath2(); + boolean allowStrictMath2 = VMConfig.disableJavaLangMath(); final int newSize = addExact(address, size, allowStrictMath2); int toAllocate = newSize - internalSize(); if (toAllocate > 0) { @@ -194,7 +194,7 @@ public void copy(int destPos, int srcPos, int size) { private int captureMax(int chunkIndex, int chunkOffset, int size, byte[] src, int srcPos) { byte[] chunk = chunks.get(chunkIndex); - int toCapture = min(size, chunk.length - chunkOffset, VMConfig.allowStrictMath2()); + int toCapture = min(size, chunk.length - chunkOffset, VMConfig.disableJavaLangMath()); System.arraycopy(src, srcPos, chunk, chunkOffset, toCapture); return toCapture; @@ -203,7 +203,7 @@ private int captureMax(int chunkIndex, int chunkOffset, int size, byte[] src, in private int grabMax(int chunkIndex, int chunkOffset, int size, byte[] dest, int destPos) { byte[] chunk = chunks.get(chunkIndex); - int toGrab = min(size, chunk.length - chunkOffset, VMConfig.allowStrictMath2()); + int toGrab = min(size, chunk.length - chunkOffset, VMConfig.disableJavaLangMath()); System.arraycopy(chunk, chunkOffset, dest, destPos, toGrab); 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 77326e0d81f..024acb670a0 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 @@ -168,7 +168,7 @@ static String formatBinData(byte[] binData, int startPC) { for (int i = 0; i < binData.length; i += 16) { ret.append(Utils.align("" + Integer.toHexString(startPC + (i)) + ":", ' ', 8, false)); ret.append(Hex.toHexString(binData, i, min(16, binData.length - i, - VMConfig.allowStrictMath2()))).append('\n'); + VMConfig.disableJavaLangMath()))).append('\n'); } return ret.toString(); } @@ -638,7 +638,7 @@ private void withdrawRewardAndCancelVote(byte[] owner, Repository repo) { long balance = ownerCapsule.getBalance(); long allowance = ownerCapsule.getAllowance(); ownerCapsule.setInstance(ownerCapsule.getInstance().toBuilder() - .setBalance(addExact(balance, allowance, VMConfig.allowStrictMath2())) + .setBalance(addExact(balance, allowance, VMConfig.disableJavaLangMath())) .setAllowance(0) .setLatestWithdrawTime(getTimestamp().longValue() * 1000) .build()); @@ -1237,7 +1237,7 @@ public DataWord getContractAddress() { public DataWord getBlockHash(int index) { if (index < this.getNumber().longValue() && index >= max(256, this.getNumber().longValue(), - VMConfig.allowStrictMath2()) - 256) { + VMConfig.disableJavaLangMath()) - 256) { BlockCapsule blockCapsule = contractState.getBlockByNum(index); @@ -2170,7 +2170,7 @@ public boolean voteWitness(int witnessArrayOffset, int witnessArrayLength, try { VoteWitnessParam param = new VoteWitnessParam(); param.setVoterAddress(owner); - boolean allowStrictMath2 = VMConfig.allowStrictMath2(); + boolean allowStrictMath2 = VMConfig.disableJavaLangMath(); byte[] witnessArrayData = memoryChunk( addExact(witnessArrayOffset, DataWord.WORD_SIZE, allowStrictMath2), multiplyExact(witnessArrayLength, DataWord.WORD_SIZE, allowStrictMath2)); @@ -2253,7 +2253,7 @@ public long updateContextContractFactor() { VMConfig.getDynamicEnergyIncreaseFactor(), VMConfig.getDynamicEnergyMaxFactor(), VMConfig.allowStrictMath(), - VMConfig.allowStrictMath2())) { + VMConfig.disableJavaLangMath())) { contractState.updateContractState(getContextAddress(), contractStateCapsule ); } diff --git a/actuator/src/main/java/org/tron/core/vm/repository/RepositoryImpl.java b/actuator/src/main/java/org/tron/core/vm/repository/RepositoryImpl.java index e81aba2a862..a064cbf6c8a 100644 --- a/actuator/src/main/java/org/tron/core/vm/repository/RepositoryImpl.java +++ b/actuator/src/main/java/org/tron/core/vm/repository/RepositoryImpl.java @@ -189,7 +189,7 @@ public long getAccountLeftEnergyFromFreeze(AccountCapsule accountCapsule) { long newEnergyUsage = recover(energyUsage, latestConsumeTime, now, windowSize); - return max(energyLimit - newEnergyUsage, 0, VMConfig.allowStrictMath2()); // us + return max(energyLimit - newEnergyUsage, 0, VMConfig.disableJavaLangMath()); // us } @Override @@ -711,7 +711,7 @@ public long addBalance(byte[] address, long value) { StringUtil.createReadableString(accountCapsule.createDbKey()) + " insufficient balance"); } - accountCapsule.setBalance(addExact(balance, value, VMConfig.allowStrictMath2())); + accountCapsule.setBalance(addExact(balance, value, VMConfig.disableJavaLangMath())); Key key = Key.create(address); accountCache.put(key, Value.create(accountCapsule, accountCache.get(key).getType().addType(Type.DIRTY))); @@ -877,7 +877,7 @@ private long increase(long lastUsage, long usage, long lastTime, long now, long if (lastTime + windowSize > now) { long delta = now - lastTime; double decay = (windowSize - delta) / (double) windowSize; - averageLastUsage = round(averageLastUsage * decay, VMConfig.allowStrictMath2()); + averageLastUsage = round(averageLastUsage * decay, VMConfig.disableJavaLangMath()); } else { averageLastUsage = 0; } 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 753313afe43..28c190e2e7e 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 @@ -136,7 +136,7 @@ public static long queryAvailableUnfreezeV2Size(byte[] address, Repository repos long now = repository.getDynamicPropertiesStore().getLatestBlockHeaderTimestamp(); int unfreezingV2Count = accountCapsule.getUnfreezingV2Count(now); return max(UnfreezeBalanceV2Actuator.getUNFREEZE_MAX_TIMES() - unfreezingV2Count, 0L, - VMConfig.allowStrictMath2()); + VMConfig.disableJavaLangMath()); } public static long queryDelegatableResource(byte[] address, long type, Repository repository) { @@ -144,7 +144,7 @@ public static long queryDelegatableResource(byte[] address, long type, Repositor return 0L; } - boolean allowStrictMath2 = VMConfig.allowStrictMath2(); + boolean allowStrictMath2 = VMConfig.disableJavaLangMath(); AccountCapsule accountCapsule = repository.getAccount(address); if (accountCapsule == null) { return 0L; @@ -223,7 +223,7 @@ public static Triple checkUndelegateResource(byte[] address, l return Triple.of(0L, 0L, 0L); } - amount = min(amount, resourceLimit, VMConfig.allowStrictMath2()); + amount = min(amount, resourceLimit, VMConfig.disableJavaLangMath()); if (resourceLimit <= usagePair.getLeft()) { return Triple.of(0L, amount, usagePair.getRight()); } diff --git a/chainbase/src/main/java/org/tron/common/utils/Commons.java b/chainbase/src/main/java/org/tron/common/utils/Commons.java index 6bcff7ec6e9..b121e84ecfe 100644 --- a/chainbase/src/main/java/org/tron/common/utils/Commons.java +++ b/chainbase/src/main/java/org/tron/common/utils/Commons.java @@ -144,7 +144,7 @@ public static void adjustTotalShieldedPoolValue(long valueBalance, DynamicPropertiesStore dynamicPropertiesStore) throws BalanceInsufficientException { long totalShieldedPoolValue = subtractExact( dynamicPropertiesStore.getTotalShieldedPoolValue(), valueBalance, - dynamicPropertiesStore.allowStrictMath2()); + dynamicPropertiesStore.disableJavaLangMath()); if (totalShieldedPoolValue < 0) { throw new BalanceInsufficientException(String.format( "total shielded pool value can not below 0, actual: %d", totalShieldedPoolValue)); diff --git a/chainbase/src/main/java/org/tron/common/utils/ForkController.java b/chainbase/src/main/java/org/tron/common/utils/ForkController.java index 0a782b31e5b..a702234f4cd 100644 --- a/chainbase/src/main/java/org/tron/common/utils/ForkController.java +++ b/chainbase/src/main/java/org/tron/common/utils/ForkController.java @@ -100,7 +100,7 @@ private boolean passNew(int version) { } } return count >= ceil((double) versionEnum.getHardForkRate() * stats.length / 100, - manager.getDynamicPropertiesStore().allowStrictMath2()); + manager.getDynamicPropertiesStore().disableJavaLangMath()); } diff --git a/chainbase/src/main/java/org/tron/core/capsule/AccountCapsule.java b/chainbase/src/main/java/org/tron/core/capsule/AccountCapsule.java index 26ee5bab34b..2768c06a393 100644 --- a/chainbase/src/main/java/org/tron/core/capsule/AccountCapsule.java +++ b/chainbase/src/main/java/org/tron/core/capsule/AccountCapsule.java @@ -733,7 +733,7 @@ public boolean addAssetAmount(byte[] key, long amount, boolean useStrict) { public boolean addAssetAmountV2(byte[] key, long amount, DynamicPropertiesStore dynamicPropertiesStore, AssetIssueStore assetIssueStore) { importAsset(key); - boolean useStrict2 = dynamicPropertiesStore.allowStrictMath2(); + boolean useStrict2 = dynamicPropertiesStore.disableJavaLangMath(); //key is token name if (dynamicPropertiesStore.getAllowSameTokenName() == 0) { Map assetMap = this.account.getAssetMap(); @@ -781,7 +781,7 @@ public boolean reduceAssetAmountV2(byte[] key, long amount, DynamicPropertiesStore dynamicPropertiesStore, AssetIssueStore assetIssueStore) { importAsset(key); //key is token name - boolean useStrict2 = dynamicPropertiesStore.allowStrictMath2(); + boolean useStrict2 = dynamicPropertiesStore.disableJavaLangMath(); if (dynamicPropertiesStore.getAllowSameTokenName() == 0) { Map assetMap = this.account.getAssetMap(); AssetIssueCapsule assetIssueCapsule = assetIssueStore.get(key); diff --git a/chainbase/src/main/java/org/tron/core/capsule/ContractCapsule.java b/chainbase/src/main/java/org/tron/core/capsule/ContractCapsule.java index be73a338b90..f566a128d6b 100644 --- a/chainbase/src/main/java/org/tron/core/capsule/ContractCapsule.java +++ b/chainbase/src/main/java/org/tron/core/capsule/ContractCapsule.java @@ -109,9 +109,9 @@ public byte[] getOriginAddress() { return this.smartContract.getOriginAddress().toByteArray(); } - public long getConsumeUserResourcePercent(boolean useStrictMath2) { + public long getConsumeUserResourcePercent(boolean disableMath) { long percent = this.smartContract.getConsumeUserResourcePercent(); - return max(0, min(percent, Constant.ONE_HUNDRED, useStrictMath2), useStrictMath2); + return max(0, min(percent, Constant.ONE_HUNDRED, disableMath), disableMath); } public long getOriginEnergyLimit() { diff --git a/chainbase/src/main/java/org/tron/core/capsule/ContractStateCapsule.java b/chainbase/src/main/java/org/tron/core/capsule/ContractStateCapsule.java index 8deeebaa758..bd932ea50ae 100644 --- a/chainbase/src/main/java/org/tron/core/capsule/ContractStateCapsule.java +++ b/chainbase/src/main/java/org/tron/core/capsule/ContractStateCapsule.java @@ -82,13 +82,13 @@ public boolean catchUpToCycle(DynamicPropertiesStore dps) { dps.getDynamicEnergyIncreaseFactor(), dps.getDynamicEnergyMaxFactor(), dps.allowStrictMath(), - dps.allowStrictMath2() + dps.disableJavaLangMath() ); } public boolean catchUpToCycle( long newCycle, long threshold, long increaseFactor, long maxFactor, - boolean useStrictMath, boolean useStrictMath2 + boolean useStrictMath, boolean disableMath ) { long lastCycle = getUpdateCycle(); @@ -115,7 +115,7 @@ public boolean catchUpToCycle( .setEnergyFactor(min( maxFactor, (long) ((getEnergyFactor() + precisionFactor) * increasePercent) - precisionFactor, - useStrictMath2)) + disableMath)) .build(); } @@ -140,7 +140,7 @@ public boolean catchUpToCycle( .setEnergyFactor(max( 0, (long) ((getEnergyFactor() + precisionFactor) * decreasePercent) - precisionFactor, - useStrictMath2)) + disableMath)) .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 29d80cebe3f..73c852805a2 100644 --- a/chainbase/src/main/java/org/tron/core/capsule/ReceiptCapsule.java +++ b/chainbase/src/main/java/org/tron/core/capsule/ReceiptCapsule.java @@ -218,7 +218,7 @@ public void payEnergyBill(DynamicPropertiesStore dynamicPropertiesStore, receipt.getEnergyUsageTotal(), receipt.getResult(), energyProcessor, now); return; } - boolean useStrict2 = dynamicPropertiesStore.allowStrictMath2(); + boolean useStrict2 = dynamicPropertiesStore.disableJavaLangMath(); if ((!Objects.isNull(origin)) && caller.getAddress().equals(origin.getAddress())) { payEnergyBill(dynamicPropertiesStore, accountStore, forkController, caller, @@ -240,7 +240,7 @@ public void payEnergyBill(DynamicPropertiesStore dynamicPropertiesStore, private long getOriginUsage(DynamicPropertiesStore dynamicPropertiesStore, AccountCapsule origin, long originEnergyLimit, EnergyProcessor energyProcessor, long originUsage) { - boolean useStrict2 = dynamicPropertiesStore.allowStrictMath2(); + boolean useStrict2 = dynamicPropertiesStore.disableJavaLangMath(); if (dynamicPropertiesStore.getAllowTvmFreeze() == 1 || dynamicPropertiesStore.supportUnfreezeDelay()) { return min(originUsage, min(originEnergyLeft, originEnergyLimit, useStrict2), useStrict2); @@ -306,7 +306,7 @@ private void payEnergyBill( } else { //send to blackHole Commons.adjustBalance(accountStore, accountStore.getBlackhole(), - energyFee, dynamicPropertiesStore.allowStrictMath2()); + energyFee, dynamicPropertiesStore.disableJavaLangMath()); } } diff --git a/chainbase/src/main/java/org/tron/core/capsule/utils/MarketUtils.java b/chainbase/src/main/java/org/tron/core/capsule/utils/MarketUtils.java index fb86cb1f456..d711ac0d63b 100644 --- a/chainbase/src/main/java/org/tron/core/capsule/utils/MarketUtils.java +++ b/chainbase/src/main/java/org/tron/core/capsule/utils/MarketUtils.java @@ -282,10 +282,10 @@ public static void updateOrderState(MarketOrderCapsule orderCapsule, } } - public static long multiplyAndDivide(long a, long b, long c, boolean useStrictMath2) { + public static long multiplyAndDivide(long a, long b, long c, boolean disableMath) { try { - long tmp = multiplyExact(a, b, useStrictMath2); - return floorDiv(tmp, c, useStrictMath2); + long tmp = multiplyExact(a, b, disableMath); + return floorDiv(tmp, c, disableMath); } catch (ArithmeticException ex) { // do nothing here, because we will use BigInteger to compute again } @@ -307,7 +307,7 @@ public static void returnSellTokenRemain(MarketOrderCapsule orderCapsule, if (Arrays.equals(sellTokenId, "_".getBytes())) { accountCapsule.setBalance(addExact( accountCapsule.getBalance(), sellTokenQuantityRemain, - dynamicStore.allowStrictMath2())); + dynamicStore.disableJavaLangMath())); } else { accountCapsule .addAssetAmountV2(sellTokenId, sellTokenQuantityRemain, dynamicStore, assetIssueStore); 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 ef326977451..b7c6354af37 100644 --- a/chainbase/src/main/java/org/tron/core/db/EnergyProcessor.java +++ b/chainbase/src/main/java/org/tron/core/db/EnergyProcessor.java @@ -79,7 +79,7 @@ public void updateAdaptiveTotalEnergyLimit() { / AdaptiveResourceLimitConstants.EXPAND_RATE_DENOMINATOR; // logger.info(totalEnergyAverageUsage + "<" + targetTotalEnergyLimit + "\n" + result); } - boolean useStrict2 = dynamicPropertiesStore.allowStrictMath2(); + boolean useStrict2 = dynamicPropertiesStore.disableJavaLangMath(); result = min(max(result, totalEnergyLimit, useStrict2), totalEnergyLimit * dynamicPropertiesStore.getAdaptiveResourceLimitMultiplier(), useStrict2); @@ -178,7 +178,7 @@ public long getAccountLeftEnergyFromFreeze(AccountCapsule accountCapsule) { long newEnergyUsage = recovery(accountCapsule, ENERGY, energyUsage, latestConsumeTime, now); - return max(energyLimit - newEnergyUsage, 0, dynamicPropertiesStore.allowStrictMath2()); // us + return max(energyLimit - newEnergyUsage, 0, dynamicPropertiesStore.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 9b446079337..1d6cd1c7415 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.allowStrictMath2()); + dynamicPropertiesStore.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.allowStrictMath2()); + dynamicPropertiesStore.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.allowStrictMath2()); + dynamicPropertiesStore.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.allowStrictMath2()); + dynamicPropertiesStore.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.allowStrictMath2()); + dynamicPropertiesStore.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.allowStrictMath2()); + dynamicPropertiesStore.disableJavaLangMath()); if (dynamicPropertiesStore.supportTransactionFeePool()) { dynamicPropertiesStore.addTransactionFeePool(fee); } else if (dynamicPropertiesStore.supportBlackHoleOptimization()) { dynamicPropertiesStore.burnTrx(fee); } else { Commons.adjustBalance(accountStore, accountStore.getBlackhole().createDbKey(), +fee, - dynamicPropertiesStore.allowStrictMath2()); + dynamicPropertiesStore.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.allowStrictMath2()); + dynamicPropertiesStore.disableJavaLangMath()); if (dynamicPropertiesStore.supportBlackHoleOptimization()) { dynamicPropertiesStore.burnTrx(fee); } else { Commons.adjustBalance(accountStore, accountStore.getBlackhole().createDbKey(), +fee, - dynamicPropertiesStore.allowStrictMath2()); + dynamicPropertiesStore.disableJavaLangMath()); } return true; 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 114197a3407..a65c814246d 100644 --- a/chainbase/src/main/java/org/tron/core/db/TransactionTrace.java +++ b/chainbase/src/main/java/org/tron/core/db/TransactionTrace.java @@ -4,7 +4,6 @@ import static org.tron.common.math.Maths.min; import static org.tron.common.runtime.InternalTransaction.TrxType.TRX_CONTRACT_CALL_TYPE; import static org.tron.common.runtime.InternalTransaction.TrxType.TRX_CONTRACT_CREATION_TYPE; -import static org.tron.core.config.Parameter.ChainConstant.WINDOW_SIZE_PRECISION; import static org.tron.protos.contract.Common.ResourceCode.ENERGY; import java.util.Objects; @@ -41,7 +40,6 @@ import org.tron.protos.Protocol.Transaction; import org.tron.protos.Protocol.Transaction.Contract.ContractType; import org.tron.protos.Protocol.Transaction.Result.contractResult; -import org.tron.protos.contract.Common; import org.tron.protos.contract.SmartContractOuterClass.SmartContract.ABI; import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract; @@ -246,11 +244,11 @@ public void pay() throws BalanceInsufficientException { callerAccount = callContract.getOwnerAddress().toByteArray(); originAccount = contractCapsule.getOriginAddress(); - boolean useStrictMath2 = dynamicPropertiesStore.allowStrictMath2(); + boolean disableMath = dynamicPropertiesStore.disableJavaLangMath(); percent = max(Constant.ONE_HUNDRED - contractCapsule.getConsumeUserResourcePercent( - useStrictMath2), 0, useStrictMath2); + disableMath), 0, disableMath); percent = min(percent, Constant.ONE_HUNDRED, - useStrictMath2); + disableMath); originEnergyLimit = contractCapsule.getOriginEnergyLimit(); break; default: @@ -303,7 +301,7 @@ private void resetAccountUsage(AccountCapsule accountCap, // If area merging happened during suicide, use the current window size long newSize = mergedSize == currentSize ? size : currentSize; // Calc new usage by fixed x-axes - long newUsage = max(0, newArea / newSize, dynamicPropertiesStore.allowStrictMath2()); + long newUsage = max(0, newArea / newSize, dynamicPropertiesStore.disableJavaLangMath()); // Reset account usage and window size accountCap.setEnergyUsage(newUsage); accountCap.setNewWindowSize(ENERGY, newUsage == 0 ? 0L : newSize); @@ -320,7 +318,7 @@ private void resetAccountUsageV2(AccountCapsule accountCap, long newSize = mergedSize == currentSize ? size : currentSize; long newSize2 = mergedSize == currentSize ? size2 : currentSize2; // Calc new usage by fixed x-axes - long newUsage = max(0, newArea / newSize, dynamicPropertiesStore.allowStrictMath2()); + long newUsage = max(0, newArea / newSize, dynamicPropertiesStore.disableJavaLangMath()); // Reset account usage and window size accountCap.setEnergyUsage(newUsage); accountCap.setNewWindowSizeV2(ENERGY, newUsage == 0 ? 0L : newSize2); diff --git a/chainbase/src/main/java/org/tron/core/service/MortgageService.java b/chainbase/src/main/java/org/tron/core/service/MortgageService.java index 233c142f053..b1fd279c2db 100644 --- a/chainbase/src/main/java/org/tron/core/service/MortgageService.java +++ b/chainbase/src/main/java/org/tron/core/service/MortgageService.java @@ -208,7 +208,7 @@ private long computeReward(long beginCycle, long endCycle, AccountCapsule accoun .collect(Collectors.toList()); if (beginCycle < newAlgorithmCycle) { long oldEndCycle = min(endCycle, newAlgorithmCycle, - dynamicPropertiesStore.allowStrictMath2()); + dynamicPropertiesStore.disableJavaLangMath()); reward = getOldReward(beginCycle, oldEndCycle, srAddresses); beginCycle = oldEndCycle; } diff --git a/chainbase/src/main/java/org/tron/core/store/DynamicPropertiesStore.java b/chainbase/src/main/java/org/tron/core/store/DynamicPropertiesStore.java index 8d1fb19ea2b..865555b35a8 100644 --- a/chainbase/src/main/java/org/tron/core/store/DynamicPropertiesStore.java +++ b/chainbase/src/main/java/org/tron/core/store/DynamicPropertiesStore.java @@ -2246,7 +2246,7 @@ public void addTotalNetWeight(long amount) { long totalNetWeight = getTotalNetWeight(); totalNetWeight += amount; if (allowNewReward()) { - totalNetWeight = max(0, totalNetWeight, allowStrictMath2()); + totalNetWeight = max(0, totalNetWeight, disableJavaLangMath()); } saveTotalNetWeight(totalNetWeight); } @@ -2259,7 +2259,7 @@ public void addTotalEnergyWeight(long amount) { long totalEnergyWeight = getTotalEnergyWeight(); totalEnergyWeight += amount; if (allowNewReward()) { - totalEnergyWeight = max(0, totalEnergyWeight, allowStrictMath2()); + totalEnergyWeight = max(0, totalEnergyWeight, disableJavaLangMath()); } saveTotalEnergyWeight(totalEnergyWeight); } @@ -2272,7 +2272,7 @@ public void addTotalTronPowerWeight(long amount) { long totalWeight = getTotalTronPowerWeight(); totalWeight += amount; if (allowNewReward()) { - totalWeight = max(0, totalWeight, allowStrictMath2()); + totalWeight = max(0, totalWeight, disableJavaLangMath()); } saveTotalTronPowerWeight(totalWeight); } @@ -2897,7 +2897,7 @@ public boolean allowStrictMath() { return getAllowStrictMath() == 1L; } - public boolean allowStrictMath2() { + public boolean disableJavaLangMath() { return this.allowConsensusLogicOptimization(); } diff --git a/common/src/main/java/org/tron/common/runtime/vm/DataWord.java b/common/src/main/java/org/tron/common/runtime/vm/DataWord.java index 1601dcaad28..faeae45782e 100644 --- a/common/src/main/java/org/tron/common/runtime/vm/DataWord.java +++ b/common/src/main/java/org/tron/common/runtime/vm/DataWord.java @@ -169,7 +169,7 @@ public byte[] getClonedData() { byte[] ret = ByteUtil.EMPTY_BYTE_ARRAY; if (data != null) { ret = new byte[WORD_SIZE]; - int dataSize = min(data.length, WORD_SIZE, VMConfig.allowStrictMath2()); + int dataSize = min(data.length, WORD_SIZE, VMConfig.disableJavaLangMath()); System.arraycopy(data, 0, ret, 0, dataSize); } return ret; @@ -488,7 +488,7 @@ public int compareTo(DataWord o) { data, 0, data.length, o.getData(), 0, o.getData().length); // Convert result into -1, 0 or 1 as is the convention - return (int) signum(result, VMConfig.allowStrictMath2()); + return (int) signum(result, VMConfig.disableJavaLangMath()); } public void signExtend(byte k) { diff --git a/common/src/main/java/org/tron/core/vm/config/VMConfig.java b/common/src/main/java/org/tron/core/vm/config/VMConfig.java index fa99daf20f4..23210f284c0 100644 --- a/common/src/main/java/org/tron/core/vm/config/VMConfig.java +++ b/common/src/main/java/org/tron/core/vm/config/VMConfig.java @@ -55,7 +55,7 @@ public class VMConfig { private static boolean ALLOW_TVM_CANCUN = false; - private static Boolean ALLOW_STRICT_MATH_2 = false; + private static Boolean DISABLE_JAVA_LANG_MATH = false; private VMConfig() { } @@ -156,8 +156,8 @@ public static void initAllowTvmCancun(long allow) { ALLOW_TVM_CANCUN = allow == 1; } - public static void initAllowStrictMath2(long allow) { - ALLOW_STRICT_MATH_2 = allow == 1; + public static void initDisableJavaLangMath(long allow) { + DISABLE_JAVA_LANG_MATH = allow == 1; } public static boolean getEnergyLimitHardFork() { @@ -248,7 +248,7 @@ public static boolean allowTvmCancun() { return ALLOW_TVM_CANCUN; } - public static boolean allowStrictMath2() { - return ALLOW_STRICT_MATH_2; + public static boolean disableJavaLangMath() { + return DISABLE_JAVA_LANG_MATH; } } diff --git a/framework/src/main/java/org/tron/core/Wallet.java b/framework/src/main/java/org/tron/core/Wallet.java index b7a1bdd9501..27c942bf6b4 100755 --- a/framework/src/main/java/org/tron/core/Wallet.java +++ b/framework/src/main/java/org/tron/core/Wallet.java @@ -903,10 +903,10 @@ public long calcCanDelegatedBandWidthMaxSize( long netUsage = (long) (accountNetUsage * TRX_PRECISION * ((double) (dynamicStore.getTotalNetWeight()) / dynamicStore.getTotalNetLimit())); - long v2NetUsage = getV2NetUsage(ownerCapsule, netUsage, dynamicStore.allowStrictMath2()); + long v2NetUsage = getV2NetUsage(ownerCapsule, netUsage, dynamicStore.disableJavaLangMath()); long maxSize = ownerCapsule.getFrozenV2BalanceForBandwidth() - v2NetUsage; - return max(0, maxSize, dynamicStore.allowStrictMath2()); + return max(0, maxSize, dynamicStore.disableJavaLangMath()); } public long calcCanDelegatedEnergyMaxSize(ByteString ownerAddress) { @@ -924,10 +924,10 @@ public long calcCanDelegatedEnergyMaxSize(ByteString ownerAddress) { (dynamicStore.getTotalEnergyWeight()) / dynamicStore.getTotalEnergyCurrentLimit())); long v2EnergyUsage = getV2EnergyUsage(ownerCapsule, energyUsage, - dynamicStore.allowStrictMath2()); + dynamicStore.disableJavaLangMath()); long maxSize = ownerCapsule.getFrozenV2BalanceForEnergy() - v2EnergyUsage; - return max(0, maxSize, dynamicStore.allowStrictMath2()); + return max(0, maxSize, dynamicStore.disableJavaLangMath()); } public DelegatedResourceAccountIndex getDelegatedResourceAccountIndex(ByteString address) { @@ -3010,7 +3010,7 @@ public Transaction estimateEnergy(TriggerSmartContract triggerSmartContract, txRetBuilder.setResult(true); txRetBuilder.setCode(response_code.SUCCESS); estimateBuilder.setEnergyRequired((long) ceil((double) high / dps.getEnergyFee(), - dps.allowStrictMath2())); + dps.disableJavaLangMath())); } return transaction; @@ -3572,7 +3572,7 @@ public ShieldedTRC20Parameters createShieldedContractParameters( try { totalToAmount = receiveSize == 0 ? scaledToAmount : (addExact( scaledToAmount, shieldedReceives.get(0).getNote().getValue(), - dbManager.getDynamicPropertiesStore().allowStrictMath2())); + dbManager.getDynamicPropertiesStore().disableJavaLangMath())); } catch (ArithmeticException e) { throw new ZksnarkException("Unbalanced burn!"); } @@ -3705,7 +3705,7 @@ public ShieldedTRC20Parameters createShieldedContractParametersWithoutAsk( try { totalToAmount = receiveSize == 0 ? scaledToAmount : addExact( scaledToAmount, shieldedReceives.get(0).getNote().getValue(), - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath()); } catch (ArithmeticException e) { throw new ZksnarkException("Unbalanced burn!"); } 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 096476a1bbe..cb7164a3bac 100644 --- a/framework/src/main/java/org/tron/core/db/Manager.java +++ b/framework/src/main/java/org/tron/core/db/Manager.java @@ -930,20 +930,20 @@ public void consumeMultiSignFee(TransactionCapsule trx, TransactionTrace trace) throws AccountResourceInsufficientException { if (trx.getInstance().getSignatureCount() > 1) { long fee = getDynamicPropertiesStore().getMultiSignFee(); - boolean useStrictMath2 = getDynamicPropertiesStore().allowStrictMath2(); + boolean disableMath = 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, useStrictMath2); + adjustBalance(getAccountStore(), accountCapsule, -fee, disableMath); if (getDynamicPropertiesStore().supportBlackHoleOptimization()) { getDynamicPropertiesStore().burnTrx(fee); } else { adjustBalance(getAccountStore(), this.getAccountStore().getBlackhole(), +fee, - useStrictMath2); + disableMath); } } } catch (BalanceInsufficientException e) { @@ -968,20 +968,20 @@ public void consumeMemoFee(TransactionCapsule trx, TransactionTrace trace) if (fee == 0) { return; } - boolean useStrictMath2 = getDynamicPropertiesStore().allowStrictMath2(); + boolean disableMath = 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, useStrictMath2); + adjustBalance(getAccountStore(), accountCapsule, -fee, disableMath); if (getDynamicPropertiesStore().supportBlackHoleOptimization()) { getDynamicPropertiesStore().burnTrx(fee); } else { adjustBalance(getAccountStore(), this.getAccountStore().getBlackhole(), +fee, - useStrictMath2); + disableMath); } } } catch (BalanceInsufficientException e) { @@ -1871,7 +1871,7 @@ private void payReward(BlockCapsule block) { long transactionFeeReward = floorDiv( chainBaseManager.getDynamicPropertiesStore().getTransactionFeePool(), Constant.TRANSACTION_FEE_POOL_PERIOD, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath()); mortgageService.payTransactionFeeReward(witnessCapsule.getAddress().toByteArray(), transactionFeeReward); chainBaseManager.getDynamicPropertiesStore().saveTransactionFeePool( @@ -1888,7 +1888,7 @@ private void payReward(BlockCapsule block) { long transactionFeeReward = floorDiv( chainBaseManager.getDynamicPropertiesStore().getTransactionFeePool(), Constant.TRANSACTION_FEE_POOL_PERIOD, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath()); account.setAllowance(account.getAllowance() + transactionFeeReward); chainBaseManager.getDynamicPropertiesStore().saveTransactionFeePool( chainBaseManager.getDynamicPropertiesStore().getTransactionFeePool() @@ -2458,9 +2458,9 @@ private void initLiteNode() { transactionCount += trx.getTransactionIds().size(); long blockNum = trx.getNum(); maxBlock = max(maxBlock, blockNum, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath()); minBlock = min(minBlock, blockNum, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath()); item.setBlockNum(blockNum); trx.getTransactionIds().forEach( tid -> chainBaseManager.getTransactionStore().put(Hex.decode(tid), item)); diff --git a/framework/src/test/java/org/tron/common/BaseTest.java b/framework/src/test/java/org/tron/common/BaseTest.java index 9eddef83fba..552808b842c 100644 --- a/framework/src/test/java/org/tron/common/BaseTest.java +++ b/framework/src/test/java/org/tron/common/BaseTest.java @@ -109,6 +109,6 @@ public Protocol.Block getSignedBlock(ByteString witness, long time, byte[] priva public void adjustBalance(AccountStore accountStore, byte[] accountAddress, long amount) throws BalanceInsufficientException { Commons.adjustBalance(accountStore, accountAddress, amount, - chainBaseManager.getDynamicPropertiesStore().allowStrictMath2()); + chainBaseManager.getDynamicPropertiesStore().disableJavaLangMath()); } } diff --git a/framework/src/test/java/org/tron/common/runtime/vm/BandWidthRuntimeTest.java b/framework/src/test/java/org/tron/common/runtime/vm/BandWidthRuntimeTest.java index 9e58233c922..698ba5f2923 100644 --- a/framework/src/test/java/org/tron/common/runtime/vm/BandWidthRuntimeTest.java +++ b/framework/src/test/java/org/tron/common/runtime/vm/BandWidthRuntimeTest.java @@ -251,7 +251,7 @@ public void testMaxContractResultSize() { } Result result = Result.newBuilder().setContractRet(cr).build(); maxSize = max(maxSize, result.getSerializedSize(), - dbManager.getDynamicPropertiesStore().allowStrictMath2()); + dbManager.getDynamicPropertiesStore().disableJavaLangMath()); } Assert.assertEquals(2, maxSize); } diff --git a/framework/src/test/java/org/tron/common/runtime/vm/FreezeV2Test.java b/framework/src/test/java/org/tron/common/runtime/vm/FreezeV2Test.java index 276a4a547f4..907398f163b 100644 --- a/framework/src/test/java/org/tron/common/runtime/vm/FreezeV2Test.java +++ b/framework/src/test/java/org/tron/common/runtime/vm/FreezeV2Test.java @@ -860,7 +860,7 @@ private TVMTestResult unDelegateResource( * ((double) (amount) / oldReceiver.getAllFrozenBalanceForEnergy())); } transferUsage = min(unDelegateMaxUsage, transferUsage, - manager.getDynamicPropertiesStore().allowStrictMath2()); + manager.getDynamicPropertiesStore().disableJavaLangMath()); } DelegatedResourceStore delegatedResourceStore = manager.getDelegatedResourceStore(); diff --git a/framework/src/test/java/org/tron/common/runtime/vm/VoteTest.java b/framework/src/test/java/org/tron/common/runtime/vm/VoteTest.java index fc3b16f8f2e..d6493ed8018 100644 --- a/framework/src/test/java/org/tron/common/runtime/vm/VoteTest.java +++ b/framework/src/test/java/org/tron/common/runtime/vm/VoteTest.java @@ -5,7 +5,6 @@ import static org.tron.protos.Protocol.Transaction.Result.contractResult.REVERT; import static org.tron.protos.Protocol.Transaction.Result.contractResult.SUCCESS; -import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -30,7 +29,6 @@ import org.tron.common.runtime.TVMTestResult; import org.tron.common.runtime.TvmTestUtils; import org.tron.common.utils.Commons; -import org.tron.common.utils.FileUtil; import org.tron.common.utils.StringUtil; import org.tron.common.utils.WalletUtil; import org.tron.common.utils.client.utils.AbiUtil; @@ -865,7 +863,7 @@ private void checkRewardAndWithdraw(byte[] contract, boolean isZero) throws Exce long beginCycle = manager.getDelegationStore().getBeginCycle(contract); long currentCycle = manager.getDynamicPropertiesStore().getCurrentCycleNumber(); long passedCycle = max(0, currentCycle - beginCycle, - manager.getDynamicPropertiesStore().allowStrictMath2()); + manager.getDynamicPropertiesStore().disableJavaLangMath()); Assert.assertTrue(isZero ? rewardBySystem == 0 : rewardBySystem > 0); triggerContract(contract, SUCCESS, getConsumer(">=", rewardBySystem) diff --git a/framework/src/test/java/org/tron/core/actuator/UpdateSettingContractActuatorTest.java b/framework/src/test/java/org/tron/core/actuator/UpdateSettingContractActuatorTest.java index 1f9a9af825c..213bbd6cb85 100644 --- a/framework/src/test/java/org/tron/core/actuator/UpdateSettingContractActuatorTest.java +++ b/framework/src/test/java/org/tron/core/actuator/UpdateSettingContractActuatorTest.java @@ -109,7 +109,7 @@ public void successUpdateSettingContract() { Assert.assertEquals( dbManager.getContractStore().get(ByteArray.fromHexString(CONTRACT_ADDRESS)) .getConsumeUserResourcePercent( - dbManager.getDynamicPropertiesStore().allowStrictMath2()), TARGET_PERCENT); + dbManager.getDynamicPropertiesStore().disableJavaLangMath()), TARGET_PERCENT); } catch (ContractValidateException e) { Assert.assertFalse(e instanceof ContractValidateException); } catch (ContractExeException e) { @@ -246,7 +246,7 @@ public void twiceUpdateSettingContract() { Assert.assertEquals( dbManager.getContractStore().get(ByteArray.fromHexString(CONTRACT_ADDRESS)) .getConsumeUserResourcePercent( - dbManager.getDynamicPropertiesStore().allowStrictMath2()), TARGET_PERCENT); + dbManager.getDynamicPropertiesStore().disableJavaLangMath()), TARGET_PERCENT); // second secondActuator.validate(); @@ -256,7 +256,7 @@ public void twiceUpdateSettingContract() { Assert.assertEquals( dbManager.getContractStore().get(ByteArray.fromHexString(CONTRACT_ADDRESS)) .getConsumeUserResourcePercent( - dbManager.getDynamicPropertiesStore().allowStrictMath2()), 90L); + dbManager.getDynamicPropertiesStore().disableJavaLangMath()), 90L); } catch (ContractValidateException e) { Assert.assertFalse(e instanceof ContractValidateException); diff --git a/framework/src/test/java/org/tron/core/db/ManagerTest.java b/framework/src/test/java/org/tron/core/db/ManagerTest.java index c17cba03304..a7fc2feaf87 100755 --- a/framework/src/test/java/org/tron/core/db/ManagerTest.java +++ b/framework/src/test/java/org/tron/core/db/ManagerTest.java @@ -1196,6 +1196,6 @@ public void blockTrigger() { public void adjustBalance(AccountStore accountStore, byte[] accountAddress, long amount) throws BalanceInsufficientException { Commons.adjustBalance(accountStore, accountAddress, amount, - chainManager.getDynamicPropertiesStore().allowStrictMath2()); + chainManager.getDynamicPropertiesStore().disableJavaLangMath()); } } diff --git a/framework/src/test/java/org/tron/core/services/ProposalServiceTest.java b/framework/src/test/java/org/tron/core/services/ProposalServiceTest.java index c1b0f8bb507..300a38a0916 100644 --- a/framework/src/test/java/org/tron/core/services/ProposalServiceTest.java +++ b/framework/src/test/java/org/tron/core/services/ProposalServiceTest.java @@ -113,7 +113,7 @@ public void testUpdateConsensusLogicOptimization() { Assert.assertEquals(v, 0); Assert.assertTrue(!dbManager.getDynamicPropertiesStore().allowConsensusLogicOptimization()); Assert.assertFalse(dbManager.getDynamicPropertiesStore().allowWitnessSortOptimization()); - Assert.assertFalse(dbManager.getDynamicPropertiesStore().allowStrictMath2()); + Assert.assertFalse(dbManager.getDynamicPropertiesStore().disableJavaLangMath()); long value = 1; Proposal proposal = @@ -128,7 +128,7 @@ public void testUpdateConsensusLogicOptimization() { Assert.assertTrue(dbManager.getDynamicPropertiesStore().allowConsensusLogicOptimization()); Assert.assertTrue(dbManager.getDynamicPropertiesStore().allowWitnessSortOptimization()); - Assert.assertTrue(dbManager.getDynamicPropertiesStore().allowStrictMath2()); + Assert.assertTrue(dbManager.getDynamicPropertiesStore().disableJavaLangMath()); } } \ No newline at end of file