From 006c3fa3b46f6cc25ef4cf006d96be2898b87385 Mon Sep 17 00:00:00 2001 From: renjithpta Date: Thu, 14 Apr 2022 13:25:12 +0000 Subject: [PATCH] Java erc20 chaincode implementation Signed-off-by: renjithpta Signed-off-by: renjithpta --- .../gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 .../fabric/samples/erc20/ERC20TokenContract.java | 15 ++++++++------- 3 files changed, 8 insertions(+), 7 deletions(-) mode change 100644 => 100755 token-erc-20/chaincode-java/gradle/wrapper/gradle-wrapper.jar mode change 100644 => 100755 token-erc-20/chaincode-java/gradle/wrapper/gradle-wrapper.properties diff --git a/token-erc-20/chaincode-java/gradle/wrapper/gradle-wrapper.jar b/token-erc-20/chaincode-java/gradle/wrapper/gradle-wrapper.jar old mode 100644 new mode 100755 diff --git a/token-erc-20/chaincode-java/gradle/wrapper/gradle-wrapper.properties b/token-erc-20/chaincode-java/gradle/wrapper/gradle-wrapper.properties old mode 100644 new mode 100755 diff --git a/token-erc-20/chaincode-java/src/main/java/org/hyperledger/fabric/samples/erc20/ERC20TokenContract.java b/token-erc-20/chaincode-java/src/main/java/org/hyperledger/fabric/samples/erc20/ERC20TokenContract.java index 79998335..75c6b2ce 100644 --- a/token-erc-20/chaincode-java/src/main/java/org/hyperledger/fabric/samples/erc20/ERC20TokenContract.java +++ b/token-erc-20/chaincode-java/src/main/java/org/hyperledger/fabric/samples/erc20/ERC20TokenContract.java @@ -88,8 +88,8 @@ public final class ERC20TokenContract implements ContractInterface { if (!stringIsNullOrEmpty(currentBalanceStr)) { currentBalance = Long.parseLong(currentBalanceStr); } - - long updatedBalance = currentBalance + amount; + // Used safe math . + long updatedBalance = Math.addExact(currentBalance, amount); stub.putStringState(balanceKey.toString(), String.valueOf(updatedBalance)); // Increase totalSupply @@ -98,7 +98,8 @@ public final class ERC20TokenContract implements ContractInterface { if (!stringIsNullOrEmpty(totalSupplyStr)) { totalSupply = Long.parseLong(totalSupplyStr); } - totalSupply = totalSupply + amount; + // Used safe math . + totalSupply = Math.addExact(totalSupply, amount); stub.putStringState(TOTAL_SUPPLY_KEY.getValue(), String.valueOf(totalSupply)); Transfer transferEvent = new Transfer("0x0", minter, amount); stub.setEvent(TRANSFER_EVENT.getValue(), transferEvent.toJSONString().getBytes(UTF_8)); @@ -136,7 +137,7 @@ public final class ERC20TokenContract implements ContractInterface { throw new ChaincodeException("The balance does not exist", BALANCE_NOT_FOUND.toString()); } long currentBalance = Long.parseLong(currentBalanceStr); - long updatedBalance = currentBalance - amount; + long updatedBalance = Math.subtractExact(currentBalance, amount); stub.putStringState(balanceKey.toString(), String.valueOf(updatedBalance)); @@ -145,7 +146,7 @@ public final class ERC20TokenContract implements ContractInterface { if (stringIsNullOrEmpty(totalSupplyBytes)) { throw new ChaincodeException("TotalSupply does not exist", NOT_FOUND.toString()); } - long totalSupply = Long.parseLong(totalSupplyBytes) - amount; + long totalSupply = Math.subtractExact(Long.parseLong(totalSupplyBytes), amount); stub.putStringState(TOTAL_SUPPLY_KEY.getValue(), String.valueOf(totalSupply)); // Emit the Transfer event @@ -364,8 +365,8 @@ public final class ERC20TokenContract implements ContractInterface { } // Update the balance - long fromUpdatedBalance = fromCurrentBalance - value; - long toUpdatedBalance = toCurrentBalance + value; + long fromUpdatedBalance = Math.subtractExact(fromCurrentBalance, value); + long toUpdatedBalance = Math.addExact(toCurrentBalance, value); stub.putStringState(fromBalanceKey.toString(), String.valueOf(fromUpdatedBalance));