From c178db41ee82fa46ff9801a2b4d7a06034675536 Mon Sep 17 00:00:00 2001 From: sean-liu55 Date: Thu, 10 May 2018 14:33:15 +0800 Subject: [PATCH 1/2] fix createTime error --- .../java/org/tron/core/actuator/TransferActuator.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/tron/core/actuator/TransferActuator.java b/src/main/java/org/tron/core/actuator/TransferActuator.java index f79351f02e3..3ebefb9d5f4 100755 --- a/src/main/java/org/tron/core/actuator/TransferActuator.java +++ b/src/main/java/org/tron/core/actuator/TransferActuator.java @@ -44,6 +44,14 @@ public boolean execute(TransactionResultCapsule ret) throws ContractExeException long fee = calcFee(); try { + // if account with to_address is not existed, create it. + AccountCapsule toAccount = dbManager.getAccountStore() + .get(transferContract.getToAddress().toByteArray()); + if (toAccount == null) { + toAccount = new AccountCapsule(ByteString.copyFrom(toAddress), AccountType.Normal, + dbManager.getHeadBlockTimeStamp()); + dbManager.getAccountStore().put(toAddress, toAccount); + } dbManager.adjustBalance(transferContract.getOwnerAddress().toByteArray(), -calcFee()); ret.setStatus(fee, code.SUCESS); dbManager.adjustBalance(transferContract.getOwnerAddress().toByteArray(), @@ -113,9 +121,6 @@ public boolean validate() throws ContractValidateException { throw new ContractValidateException( "For a non-existent account transfer, the minimum amount is 1 TRX"); } - toAccount = new AccountCapsule(ByteString.copyFrom(toAddress), AccountType.Normal, - dbManager.getHeadBlockTimeStamp()); - dbManager.getAccountStore().put(toAddress, toAccount); } else { //check to account balance if overflow balance = Math.addExact(toAccount.getBalance(), amount); From 1e21b3fecd9e1bd5ad36bad0fbaf7b15a61465f6 Mon Sep 17 00:00:00 2001 From: sean-liu55 Date: Thu, 10 May 2018 14:44:58 +0800 Subject: [PATCH 2/2] fix test conflict --- src/test/java/org/tron/core/actuator/TransferActuatorTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/org/tron/core/actuator/TransferActuatorTest.java b/src/test/java/org/tron/core/actuator/TransferActuatorTest.java index 16761c70eb0..b88d3aabd9d 100755 --- a/src/test/java/org/tron/core/actuator/TransferActuatorTest.java +++ b/src/test/java/org/tron/core/actuator/TransferActuatorTest.java @@ -311,11 +311,10 @@ public void noExitToAccount() { .get(ByteArray.fromHexString(To_ACCOUNT_INVALIATE)); Assert.assertTrue(null == noExitAccount); actuator.validate(); + actuator.execute(ret); noExitAccount = dbManager.getAccountStore() .get(ByteArray.fromHexString(To_ACCOUNT_INVALIATE)); Assert.assertFalse(null == noExitAccount); //Had created. - Assert.assertEquals(noExitAccount.getBalance(), 0); - actuator.execute(ret); AccountCapsule owner = dbManager.getAccountStore() .get(ByteArray.fromHexString(OWNER_ADDRESS)); AccountCapsule toAccount = dbManager.getAccountStore()