From d942e26a9561db881d3cd35ce2c528ea2c6613a7 Mon Sep 17 00:00:00 2001 From: tjchern Date: Tue, 4 Sep 2018 13:40:16 +0800 Subject: [PATCH 1/4] feeLimit <= 0, fali --- src/main/java/org/tron/common/runtime/Runtime.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/org/tron/common/runtime/Runtime.java b/src/main/java/org/tron/common/runtime/Runtime.java index d3dba42c0cc..f409ab340bb 100644 --- a/src/main/java/org/tron/common/runtime/Runtime.java +++ b/src/main/java/org/tron/common/runtime/Runtime.java @@ -348,6 +348,11 @@ private void create() long vmShouldEndInUs = vmStartInUs + thisTxCPULimitInUs; long feeLimit = trx.getRawData().getFeeLimit(); + if (feeLimit <= 0) { + logger.info("feeLimit <= 0"); + throw new ContractValidateException("feeLimit must be > 0"); + } + long energyLimit = getEnergyLimit(creator, feeLimit, callValue); byte[] ops = newSmartContract.getBytecode().toByteArray(); InternalTransaction internalTransaction = new InternalTransaction(trx); @@ -420,6 +425,10 @@ private void call() long vmShouldEndInUs = vmStartInUs + thisTxCPULimitInUs; long feeLimit = trx.getRawData().getFeeLimit(); + if (feeLimit <= 0) { + logger.info("feeLimit <= 0"); + throw new ContractValidateException("feeLimit must be > 0"); + } long energyLimit; if (isCallConstant(contractAddress)) { energyLimit = Constant.MAX_ENERGY_IN_TX; From d6b812993b0bccd404c420b0b4e3e9ae77151790 Mon Sep 17 00:00:00 2001 From: Heng Zhang Date: Tue, 4 Sep 2018 13:50:54 +0800 Subject: [PATCH 2/4] fix feeLimit <= 0. --- src/main/java/org/tron/common/runtime/Runtime.java | 12 ++++++------ .../java/org/tron/core/capsule/ReceiptCapsule.java | 2 +- src/main/java/org/tron/core/db/TransactionTrace.java | 3 +++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/tron/common/runtime/Runtime.java b/src/main/java/org/tron/common/runtime/Runtime.java index f409ab340bb..ec60b3f560a 100644 --- a/src/main/java/org/tron/common/runtime/Runtime.java +++ b/src/main/java/org/tron/common/runtime/Runtime.java @@ -348,9 +348,9 @@ private void create() long vmShouldEndInUs = vmStartInUs + thisTxCPULimitInUs; long feeLimit = trx.getRawData().getFeeLimit(); - if (feeLimit <= 0) { - logger.info("feeLimit <= 0"); - throw new ContractValidateException("feeLimit must be > 0"); + if (feeLimit < 0) { + logger.info("feeLimit < 0"); + throw new ContractValidateException("feeLimit must be >= 0"); } long energyLimit = getEnergyLimit(creator, feeLimit, callValue); @@ -425,9 +425,9 @@ private void call() long vmShouldEndInUs = vmStartInUs + thisTxCPULimitInUs; long feeLimit = trx.getRawData().getFeeLimit(); - if (feeLimit <= 0) { - logger.info("feeLimit <= 0"); - throw new ContractValidateException("feeLimit must be > 0"); + if (feeLimit < 0) { + logger.info("feeLimit < 0"); + throw new ContractValidateException("feeLimit must be >= 0"); } long energyLimit; if (isCallConstant(contractAddress)) { diff --git a/src/main/java/org/tron/core/capsule/ReceiptCapsule.java b/src/main/java/org/tron/core/capsule/ReceiptCapsule.java index d48a5365f48..55dfef3b18c 100644 --- a/src/main/java/org/tron/core/capsule/ReceiptCapsule.java +++ b/src/main/java/org/tron/core/capsule/ReceiptCapsule.java @@ -90,7 +90,7 @@ public long getNetFee() { */ public void payEnergyBill(Manager manager, AccountCapsule origin, AccountCapsule caller, long percent, EnergyProcessor energyProcessor, long now) throws BalanceInsufficientException { - if (0 == receipt.getEnergyUsageTotal()) { + if (0 <= receipt.getEnergyUsageTotal()) { return; } diff --git a/src/main/java/org/tron/core/db/TransactionTrace.java b/src/main/java/org/tron/core/db/TransactionTrace.java index 3c1083631ba..0b7c68d1d11 100644 --- a/src/main/java/org/tron/core/db/TransactionTrace.java +++ b/src/main/java/org/tron/core/db/TransactionTrace.java @@ -93,6 +93,9 @@ public void init() throws TransactionTraceException { //set bill public void setBill(long energyUsage) { + if (energyUsage < 0) { + energyUsage = 0L; + } receipt.setEnergyUsageTotal(energyUsage); } From 1691f376b6ca7dbe1f27bcc01a40f00f58c177c0 Mon Sep 17 00:00:00 2001 From: Heng Zhang Date: Tue, 4 Sep 2018 14:03:19 +0800 Subject: [PATCH 3/4] fix feeLimit <= 0. --- src/main/java/org/tron/core/capsule/ReceiptCapsule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/tron/core/capsule/ReceiptCapsule.java b/src/main/java/org/tron/core/capsule/ReceiptCapsule.java index 55dfef3b18c..2e7c02edca3 100644 --- a/src/main/java/org/tron/core/capsule/ReceiptCapsule.java +++ b/src/main/java/org/tron/core/capsule/ReceiptCapsule.java @@ -90,7 +90,7 @@ public long getNetFee() { */ public void payEnergyBill(Manager manager, AccountCapsule origin, AccountCapsule caller, long percent, EnergyProcessor energyProcessor, long now) throws BalanceInsufficientException { - if (0 <= receipt.getEnergyUsageTotal()) { + if (receipt.getEnergyUsageTotal() >= 0) { return; } From ee546676b6d26e2b80ad18ce4be89e1555692066 Mon Sep 17 00:00:00 2001 From: huzhenyuan <402124323@qq.com> Date: Tue, 4 Sep 2018 14:12:34 +0800 Subject: [PATCH 4/4] Update ReceiptCapsule.java --- src/main/java/org/tron/core/capsule/ReceiptCapsule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/tron/core/capsule/ReceiptCapsule.java b/src/main/java/org/tron/core/capsule/ReceiptCapsule.java index 2e7c02edca3..a1894336242 100644 --- a/src/main/java/org/tron/core/capsule/ReceiptCapsule.java +++ b/src/main/java/org/tron/core/capsule/ReceiptCapsule.java @@ -90,7 +90,7 @@ public long getNetFee() { */ public void payEnergyBill(Manager manager, AccountCapsule origin, AccountCapsule caller, long percent, EnergyProcessor energyProcessor, long now) throws BalanceInsufficientException { - if (receipt.getEnergyUsageTotal() >= 0) { + if (receipt.getEnergyUsageTotal() <= 0) { return; }