From af787e76609ec6e8578c026d72f4dc006cdb5760 Mon Sep 17 00:00:00 2001 From: CodingCattwo <847701726@qq.com> Date: Fri, 5 May 2023 16:08:13 +0800 Subject: [PATCH 1/2] fix pure in v0.6 above version --- .../webase/front/transaction/TransService.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/webank/webase/front/transaction/TransService.java b/src/main/java/com/webank/webase/front/transaction/TransService.java index 4c83db753..7f88bd205 100644 --- a/src/main/java/com/webank/webase/front/transaction/TransService.java +++ b/src/main/java/com/webank/webase/front/transaction/TransService.java @@ -180,7 +180,13 @@ public Object transHandleWithSign(int groupId, String signUserId, userAddress = keyStoreService.getCredentialsForQuery().getAddress(); } - boolean isTxConstant = this.getABIDefinition(abiStr, funcName).isConstant(); + ABIDefinition abiDefinition = this.getABIDefinition(abiStr, funcName); + boolean isTxConstant = abiDefinition.isConstant(); + if (abiDefinition.getStateMutability().equals("pure") + || abiDefinition.getStateMutability().equals("constant") + || abiDefinition.getStateMutability().equals("view")) { + isTxConstant = true; + } if (isTxConstant) { return this.handleCall(groupId, userAddress, contractAddress, encodeFunction, abiStr, funcName); } else { @@ -290,7 +296,13 @@ public Object transHandleLocal(ReqTransHandle req) { String encodeFunction = this.encodeFunction2Str(abiStr, funcName, funcParam); - boolean isTxConstant = this.getABIDefinition(abiStr, funcName).isConstant(); + ABIDefinition abiDefinition = this.getABIDefinition(abiStr, funcName); + boolean isTxConstant = abiDefinition.isConstant(); + if (abiDefinition.getStateMutability().equals("pure") + || abiDefinition.getStateMutability().equals("constant") + || abiDefinition.getStateMutability().equals("view")) { + isTxConstant = true; + } // get privateKey CryptoKeyPair cryptoKeyPair = getCredentials(isTxConstant, userAddress); From 495ddb5ab8ca077781e7e7cf6669727eebe00061 Mon Sep 17 00:00:00 2001 From: CodingCattwo <847701726@qq.com> Date: Mon, 8 May 2023 16:27:58 +0800 Subject: [PATCH 2/2] fix tx constant of pure in 0.6 above --- .../front/transaction/TransService.java | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/webank/webase/front/transaction/TransService.java b/src/main/java/com/webank/webase/front/transaction/TransService.java index 7f88bd205..4042e2af5 100644 --- a/src/main/java/com/webank/webase/front/transaction/TransService.java +++ b/src/main/java/com/webank/webase/front/transaction/TransService.java @@ -180,13 +180,7 @@ public Object transHandleWithSign(int groupId, String signUserId, userAddress = keyStoreService.getCredentialsForQuery().getAddress(); } - ABIDefinition abiDefinition = this.getABIDefinition(abiStr, funcName); - boolean isTxConstant = abiDefinition.isConstant(); - if (abiDefinition.getStateMutability().equals("pure") - || abiDefinition.getStateMutability().equals("constant") - || abiDefinition.getStateMutability().equals("view")) { - isTxConstant = true; - } + boolean isTxConstant = this.getABIDefinition(abiStr, funcName).isConstant(); if (isTxConstant) { return this.handleCall(groupId, userAddress, contractAddress, encodeFunction, abiStr, funcName); } else { @@ -296,13 +290,7 @@ public Object transHandleLocal(ReqTransHandle req) { String encodeFunction = this.encodeFunction2Str(abiStr, funcName, funcParam); - ABIDefinition abiDefinition = this.getABIDefinition(abiStr, funcName); - boolean isTxConstant = abiDefinition.isConstant(); - if (abiDefinition.getStateMutability().equals("pure") - || abiDefinition.getStateMutability().equals("constant") - || abiDefinition.getStateMutability().equals("view")) { - isTxConstant = true; - } + boolean isTxConstant = this.getABIDefinition(abiStr, funcName).isConstant(); // get privateKey CryptoKeyPair cryptoKeyPair = getCredentials(isTxConstant, userAddress); @@ -595,8 +583,13 @@ private ABIDefinition getABIDefinition(String abiStr, String functionName) { throw new FrontException(ConstantCode.IN_FUNCTION_ERROR); } // abi only contain one function, so get first one - ABIDefinition function = abiDefinitionList.get(0); - return function; + ABIDefinition abiDefinition = abiDefinitionList.get(0); + if (abiDefinition.getStateMutability().equals("pure") + || abiDefinition.getStateMutability().equals("constant") + || abiDefinition.getStateMutability().equals("view")) { + abiDefinition.setConstant(true); + } + return abiDefinition; } public Object handleCall(int groupId, String userAddress, String contractAddress,