From 636405c0049db17265f39938b980fa7214875191 Mon Sep 17 00:00:00 2001 From: Roy van Kaathoven Date: Thu, 23 Aug 2018 13:55:14 +0200 Subject: [PATCH 1/2] include create account fees in the black hole account --- .../org/tron/core/actuator/CreateAccountActuator.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/tron/core/actuator/CreateAccountActuator.java b/src/main/java/org/tron/core/actuator/CreateAccountActuator.java index 06958ac51b5..b1b74d4e14a 100755 --- a/src/main/java/org/tron/core/actuator/CreateAccountActuator.java +++ b/src/main/java/org/tron/core/actuator/CreateAccountActuator.java @@ -28,12 +28,14 @@ public boolean execute(TransactionResultCapsule ret) long fee = calcFee(); try { AccountCreateContract accountCreateContract = contract.unpack(AccountCreateContract.class); - AccountCapsule accountCapsule = new AccountCapsule(accountCreateContract, - dbManager.getHeadBlockTimeStamp()); - dbManager.getAccountStore() - .put(accountCreateContract.getAccountAddress().toByteArray(), accountCapsule); + AccountCapsule accountCapsule = new AccountCapsule(accountCreateContract, dbManager.getHeadBlockTimeStamp()); + + dbManager.getAccountStore().put(accountCreateContract.getAccountAddress().toByteArray(), accountCapsule); dbManager.adjustBalance(accountCreateContract.getOwnerAddress().toByteArray(), -fee); + // Add to blackhole address + dbManager.adjustBalance(dbManager.getAccountStore().getBlackhole().createDbKey(), fee); + ret.setStatus(fee, code.SUCESS); } catch (BalanceInsufficientException e) { logger.debug(e.getMessage(), e); From dc1e98c7ac4ab25715b733782c1ff98d9ac6ff51 Mon Sep 17 00:00:00 2001 From: nanfengpo Date: Wed, 5 Sep 2018 17:53:31 +0800 Subject: [PATCH 2/2] add fee in blackhole --- .../org/tron/core/actuator/ExchangeCreateActuator.java | 9 ++++++++- .../java/org/tron/core/actuator/TransferActuator.java | 1 + .../org/tron/core/actuator/TransferAssetActuator.java | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/tron/core/actuator/ExchangeCreateActuator.java b/src/main/java/org/tron/core/actuator/ExchangeCreateActuator.java index 7f31961519c..1f42e3f2a36 100755 --- a/src/main/java/org/tron/core/actuator/ExchangeCreateActuator.java +++ b/src/main/java/org/tron/core/actuator/ExchangeCreateActuator.java @@ -11,6 +11,7 @@ import org.tron.core.capsule.TransactionResultCapsule; import org.tron.core.config.Parameter.ChainParameters; import org.tron.core.db.Manager; +import org.tron.core.exception.BalanceInsufficientException; import org.tron.core.exception.ContractExeException; import org.tron.core.exception.ContractValidateException; import org.tron.protos.Contract.ExchangeCreateContract; @@ -37,7 +38,7 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException long firstTokenBalance = exchangeCreateContract.getFirstTokenBalance(); long secondTokenBalance = exchangeCreateContract.getSecondTokenBalance(); - long newBalance = accountCapsule.getBalance() - calcFee(); + long newBalance = accountCapsule.getBalance() - fee; if (firstTokenID == "_".getBytes()) { accountCapsule.setBalance(newBalance - firstTokenBalance); @@ -68,7 +69,13 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException dbManager.getExchangeStore().put(exchangeCapsule.createDbKey(), exchangeCapsule); dbManager.getDynamicPropertiesStore().saveLatestExchangeNum(id); + dbManager.adjustBalance(dbManager.getAccountStore().getBlackhole().createDbKey(), fee); + ret.setStatus(fee, code.SUCESS); + } catch (BalanceInsufficientException e) { + logger.debug(e.getMessage(), e); + ret.setStatus(fee, code.FAILED); + throw new ContractExeException(e.getMessage()); } catch (InvalidProtocolBufferException e) { logger.debug(e.getMessage(), e); ret.setStatus(fee, code.FAILED); diff --git a/src/main/java/org/tron/core/actuator/TransferActuator.java b/src/main/java/org/tron/core/actuator/TransferActuator.java index eb5f87451c2..19924d75460 100755 --- a/src/main/java/org/tron/core/actuator/TransferActuator.java +++ b/src/main/java/org/tron/core/actuator/TransferActuator.java @@ -44,6 +44,7 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException fee = fee + dbManager.getDynamicPropertiesStore().getCreateNewAccountFeeInSystemContract(); } dbManager.adjustBalance(ownerAddress, -fee); + dbManager.adjustBalance(dbManager.getAccountStore().getBlackhole().createDbKey(), fee); ret.setStatus(fee, code.SUCESS); dbManager.adjustBalance(ownerAddress, -amount); dbManager.adjustBalance(toAddress, amount); diff --git a/src/main/java/org/tron/core/actuator/TransferAssetActuator.java b/src/main/java/org/tron/core/actuator/TransferAssetActuator.java index 09c2e724ea6..850dce0e549 100644 --- a/src/main/java/org/tron/core/actuator/TransferAssetActuator.java +++ b/src/main/java/org/tron/core/actuator/TransferAssetActuator.java @@ -62,6 +62,7 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException long amount = transferAssetContract.getAmount(); dbManager.adjustBalance(ownerAddress, -fee); + dbManager.adjustBalance(dbManager.getAccountStore().getBlackhole().createDbKey(), fee); AccountCapsule ownerAccountCapsule = accountStore.get(ownerAddress); if (!ownerAccountCapsule.reduceAssetAmount(assetName.toByteArray(), amount)) {