diff --git a/src/main/java/org/tron/common/runtime/RuntimeImpl.java b/src/main/java/org/tron/common/runtime/RuntimeImpl.java index 86f2c13fb8b..da60f37ad51 100644 --- a/src/main/java/org/tron/common/runtime/RuntimeImpl.java +++ b/src/main/java/org/tron/common/runtime/RuntimeImpl.java @@ -315,6 +315,11 @@ public long getTotalEnergyLimitWithFixRatio(AccountCapsule creator, AccountCapsu public long getTotalEnergyLimit(AccountCapsule creator, AccountCapsule caller, TriggerSmartContract contract, long feeLimit, long callValue) throws ContractValidateException { + if (VMConfig.allowTvmConstantinople()) { + if (Objects.isNull(creator)) { + return getAccountEnergyLimitWithFixRatio(caller, feeLimit, callValue); + } + } // according to version if (VMConfig.getEnergyLimitHardFork()) { return getTotalEnergyLimitWithFixRatio(creator, caller, contract, feeLimit, callValue); diff --git a/src/main/java/org/tron/core/capsule/ReceiptCapsule.java b/src/main/java/org/tron/core/capsule/ReceiptCapsule.java index 166eb99dc23..fdf58b0875d 100644 --- a/src/main/java/org/tron/core/capsule/ReceiptCapsule.java +++ b/src/main/java/org/tron/core/capsule/ReceiptCapsule.java @@ -1,5 +1,6 @@ package org.tron.core.capsule; +import java.util.Objects; import lombok.Getter; import lombok.Setter; import org.tron.common.runtime.config.VMConfig; @@ -105,6 +106,13 @@ public void payEnergyBill(Manager manager, AccountCapsule origin, AccountCapsule return; } + if (VMConfig.allowTvmConstantinople()) { + if (Objects.isNull(origin)) { + payEnergyBill(manager, caller, receipt.getEnergyUsageTotal(), energyProcessor, now); + return; + } + } + if (caller.getAddress().equals(origin.getAddress())) { payEnergyBill(manager, caller, receipt.getEnergyUsageTotal(), energyProcessor, now); } else {