Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ public void validate(Object object) throws ContractValidateException {
}

// Load Config
ConfigLoader.load(context.getStoreFactory());
ConfigLoader.load(context.getStoreFactory(), isConstantCall);
// Warm up registry class
OperationRegistry.init();
trx = context.getTrxCap().getInstance();
Expand Down
8 changes: 8 additions & 0 deletions actuator/src/main/java/org/tron/core/vm/EnergyCost.java
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,10 @@ public static long getVoteWitnessCost(Program program) {
}

public static long getVoteWitnessCost2(Program program) {
if (!VMConfig.allowEnergyAdjustment()) {
return getVoteWitnessCost(program);
}

Stack stack = program.getStack();
long oldMemSize = program.getMemSize();
DataWord amountArrayLength = stack.get(stack.size() - 1).clone();
Expand All @@ -388,6 +392,10 @@ public static long getVoteWitnessCost2(Program program) {
}

public static long getVoteWitnessCost3(Program program) {
if (!VMConfig.allowTvmOsaka()) {
return getVoteWitnessCost2(program);
}

Stack stack = program.getStack();
long oldMemSize = program.getMemSize();
BigInteger amountArrayLength = stack.get(stack.size() - 1).value();
Expand Down
66 changes: 37 additions & 29 deletions actuator/src/main/java/org/tron/core/vm/config/ConfigLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,40 +13,48 @@ public class ConfigLoader {
//only for unit test
public static boolean disable = false;

public static void load(StoreFactory storeFactory) {
// isolate=true: a constant call bound to a non-HEAD (solidity/PBFT) snapshot installs its
// snapshot into a thread-local view instead of the process-wide global, so it cannot pollute
// the flags the block-processing path reads concurrently.
public static void load(StoreFactory storeFactory, boolean isolate) {
if (!disable) {
DynamicPropertiesStore ds = storeFactory.getChainBaseManager().getDynamicPropertiesStore();
VMConfig.setVmTrace(CommonParameter.getInstance().isVmTrace());
if (ds != null) {
VMConfig.initVmHardFork(checkForEnergyLimit(ds));
VMConfig.initAllowMultiSign(ds.getAllowMultiSign());
VMConfig.initAllowTvmTransferTrc10(ds.getAllowTvmTransferTrc10());
VMConfig.initAllowTvmConstantinople(ds.getAllowTvmConstantinople());
VMConfig.initAllowTvmSolidity059(ds.getAllowTvmSolidity059());
VMConfig.initAllowShieldedTRC20Transaction(ds.getAllowShieldedTRC20Transaction());
VMConfig.initAllowTvmIstanbul(ds.getAllowTvmIstanbul());
VMConfig.initAllowTvmFreeze(ds.getAllowTvmFreeze());
VMConfig.initAllowTvmVote(ds.getAllowTvmVote());
VMConfig.initAllowTvmLondon(ds.getAllowTvmLondon());
VMConfig.initAllowTvmCompatibleEvm(ds.getAllowTvmCompatibleEvm());
VMConfig.initAllowHigherLimitForMaxCpuTimeOfOneTx(
ds.getAllowHigherLimitForMaxCpuTimeOfOneTx());
VMConfig.initAllowTvmFreezeV2(ds.supportUnfreezeDelay() ? 1 : 0);
VMConfig.initAllowOptimizedReturnValueOfChainId(
ds.getAllowOptimizedReturnValueOfChainId());
VMConfig.initAllowDynamicEnergy(ds.getAllowDynamicEnergy());
VMConfig.initDynamicEnergyThreshold(ds.getDynamicEnergyThreshold());
VMConfig.initDynamicEnergyIncreaseFactor(ds.getDynamicEnergyIncreaseFactor());
VMConfig.initDynamicEnergyMaxFactor(ds.getDynamicEnergyMaxFactor());
VMConfig.initAllowTvmShangHai(ds.getAllowTvmShangHai());
VMConfig.initAllowEnergyAdjustment(ds.getAllowEnergyAdjustment());
VMConfig.initAllowStrictMath(ds.getAllowStrictMath());
VMConfig.initAllowTvmCancun(ds.getAllowTvmCancun());
VMConfig.initDisableJavaLangMath(ds.getConsensusLogicOptimization());
VMConfig.initAllowTvmBlob(ds.getAllowTvmBlob());
VMConfig.initAllowTvmSelfdestructRestriction(ds.getAllowTvmSelfdestructRestriction());
VMConfig.initAllowTvmOsaka(ds.getAllowTvmOsaka());
VMConfig.initAllowHardenResourceCalculation(ds.getAllowHardenResourceCalculation());
VMConfig.Snapshot snapshot = new VMConfig.Snapshot();
snapshot.allowMultiSign = ds.getAllowMultiSign() == 1;
snapshot.allowTvmTransferTrc10 = ds.getAllowTvmTransferTrc10() == 1;
snapshot.allowTvmConstantinople = ds.getAllowTvmConstantinople() == 1;
snapshot.allowTvmSolidity059 = ds.getAllowTvmSolidity059() == 1;
snapshot.allowShieldedTRC20Transaction = ds.getAllowShieldedTRC20Transaction() == 1;
snapshot.allowTvmIstanbul = ds.getAllowTvmIstanbul() == 1;
snapshot.allowTvmFreeze = ds.getAllowTvmFreeze() == 1;
snapshot.allowTvmVote = ds.getAllowTvmVote() == 1;
snapshot.allowTvmLondon = ds.getAllowTvmLondon() == 1;
snapshot.allowTvmCompatibleEvm = ds.getAllowTvmCompatibleEvm() == 1;
snapshot.allowHigherLimitForMaxCpuTimeOfOneTx =
ds.getAllowHigherLimitForMaxCpuTimeOfOneTx() == 1;
snapshot.allowTvmFreezeV2 = ds.supportUnfreezeDelay();
snapshot.allowOptimizedReturnValueOfChainId = ds.getAllowOptimizedReturnValueOfChainId() == 1;
snapshot.allowDynamicEnergy = ds.getAllowDynamicEnergy() == 1;
snapshot.dynamicEnergyThreshold = ds.getDynamicEnergyThreshold();
snapshot.dynamicEnergyIncreaseFactor = ds.getDynamicEnergyIncreaseFactor();
snapshot.dynamicEnergyMaxFactor = ds.getDynamicEnergyMaxFactor();
snapshot.allowTvmShanghai = ds.getAllowTvmShangHai() == 1;
snapshot.allowEnergyAdjustment = ds.getAllowEnergyAdjustment() == 1;
snapshot.allowStrictMath = ds.getAllowStrictMath() == 1;
snapshot.allowTvmCancun = ds.getAllowTvmCancun() == 1;
snapshot.disableJavaLangMath = ds.getConsensusLogicOptimization() == 1;
snapshot.allowTvmBlob = ds.getAllowTvmBlob() == 1;
snapshot.allowTvmSelfdestructRestriction = ds.getAllowTvmSelfdestructRestriction() == 1;
snapshot.allowTvmOsaka = ds.getAllowTvmOsaka() == 1;
snapshot.allowHardenResourceCalculation = ds.getAllowHardenResourceCalculation() == 1;
if (isolate) {
VMConfig.setLocalSnapshot(snapshot);
} else {
VMConfig.setGlobalSnapshot(snapshot);
}
}
}
}
Expand Down
Loading
Loading