diff --git a/sdk-core/src/main/java/org/fisco/bcos/sdk/utils/Hex.java b/sdk-core/src/main/java/org/fisco/bcos/sdk/utils/Hex.java index e1a6a2e27..794faa388 100644 --- a/sdk-core/src/main/java/org/fisco/bcos/sdk/utils/Hex.java +++ b/sdk-core/src/main/java/org/fisco/bcos/sdk/utils/Hex.java @@ -16,6 +16,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.util.Objects; import org.fisco.bcos.sdk.utils.exceptions.DecoderException; import org.fisco.bcos.sdk.utils.exceptions.EncoderException; @@ -23,6 +24,13 @@ public class Hex { private static final HexEncoder encoder = new HexEncoder(); + public static String trimPrefix(String data) { + if (Objects.nonNull(data) && data.startsWith("0x")) { + return data.substring(2); + } + return data; + } + public static String toHexString(byte[] data) { return toHexString(data, 0, data.length); } diff --git a/sdk-service/src/main/java/org/fisco/bcos/sdk/BcosSDK.java b/sdk-service/src/main/java/org/fisco/bcos/sdk/BcosSDK.java index 1f75d263a..b66ac8856 100644 --- a/sdk-service/src/main/java/org/fisco/bcos/sdk/BcosSDK.java +++ b/sdk-service/src/main/java/org/fisco/bcos/sdk/BcosSDK.java @@ -33,13 +33,13 @@ public ConfigOption getConfig() { return config; } -// public org.fisco.bcos.sdk.jni.BcosSDK getJniBcosSdk() { -// return jniBcosSdk; -// } -// -// public void setJniBcosSdk(org.fisco.bcos.sdk.jni.BcosSDK jniBcosSdk) { -// this.jniBcosSdk = jniBcosSdk; -// } + // public org.fisco.bcos.sdk.jni.BcosSDK getJniBcosSdk() { + // return jniBcosSdk; + // } + // + // public void setJniBcosSdk(org.fisco.bcos.sdk.jni.BcosSDK jniBcosSdk) { + // this.jniBcosSdk = jniBcosSdk; + // } /** * Build BcosSDK instance diff --git a/sdk-service/src/main/java/org/fisco/bcos/sdk/client/ClientImpl.java b/sdk-service/src/main/java/org/fisco/bcos/sdk/client/ClientImpl.java index 54be7fa4d..a5124a422 100644 --- a/sdk-service/src/main/java/org/fisco/bcos/sdk/client/ClientImpl.java +++ b/sdk-service/src/main/java/org/fisco/bcos/sdk/client/ClientImpl.java @@ -37,6 +37,7 @@ import org.fisco.bcos.sdk.model.JsonRpcResponse; import org.fisco.bcos.sdk.model.Response; import org.fisco.bcos.sdk.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.utils.Hex; import org.fisco.bcos.sdk.utils.ObjectMapperFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,7 +72,7 @@ protected void initGroupInfo() { if (nodeList == null || nodeList.isEmpty()) { logger.error("There has no nodes in the group, groupID: {}, groupInfo: {}", groupInfo); throw new ClientException( - "There has no nodes in the group, please check the group, groupID: " + "There has no nodes in the group, maybe the group has been removed, groupID: " + this.groupID); } @@ -246,7 +247,10 @@ public Call call(String node, Transaction transaction) { new JsonRpcRequest( JsonRpcMethods.CALL, Arrays.asList( - this.groupID, node, transaction.getTo(), transaction.getData())), + this.groupID, + node, + Hex.trimPrefix(transaction.getTo()), + transaction.getData())), Call.class); } @@ -262,7 +266,12 @@ public void callAsync(String node, Transaction transaction, RespCallback c this.groupID, node, new JsonRpcRequest( - JsonRpcMethods.CALL, Arrays.asList(this.groupID, node, transaction)), + JsonRpcMethods.CALL, + Arrays.asList( + this.groupID, + node, + Hex.trimPrefix(transaction.getTo()), + transaction.getData())), Call.class, callback); } @@ -307,10 +316,12 @@ public Code getCode(String address) { @Override public Code getCode(String node, String address) { node = Objects.isNull(node) ? "" : node; + // create request JsonRpcRequest request = new JsonRpcRequest( - JsonRpcMethods.GET_CODE, Arrays.asList(this.groupID, node, address)); + JsonRpcMethods.GET_CODE, + Arrays.asList(this.groupID, node, Hex.trimPrefix(address))); return this.callRemoteMethod(this.groupID, node, request, Code.class); } @@ -326,7 +337,8 @@ public void getCodeAsync(String node, String address, RespCallback callbac this.groupID, node, new JsonRpcRequest( - JsonRpcMethods.GET_CODE, Arrays.asList(this.groupID, node, address)), + JsonRpcMethods.GET_CODE, + Arrays.asList(this.groupID, node, Hex.trimPrefix(address))), Code.class, callback); } diff --git a/sdk-transaction/src/main/java/org/fisco/bcos/sdk/transaction/builder/TransactionBuilderService.java b/sdk-transaction/src/main/java/org/fisco/bcos/sdk/transaction/builder/TransactionBuilderService.java index 4eb64738a..faca14844 100644 --- a/sdk-transaction/src/main/java/org/fisco/bcos/sdk/transaction/builder/TransactionBuilderService.java +++ b/sdk-transaction/src/main/java/org/fisco/bcos/sdk/transaction/builder/TransactionBuilderService.java @@ -24,6 +24,7 @@ import org.fisco.bcos.sdk.codec.ABICodecException; import org.fisco.bcos.sdk.crypto.CryptoSuite; import org.fisco.bcos.sdk.transaction.codec.encode.TransactionEncoderService; +import org.fisco.bcos.sdk.utils.Hex; public class TransactionBuilderService implements TransactionBuilderInterface { private Client client; @@ -88,7 +89,13 @@ public TransactionData createTransaction( Random r = ThreadLocalRandom.current(); BigInteger randomId = new BigInteger(250, r); return new TransactionData( - 0, chainId, groupId, blockLimit.intValue(), randomId.toString(), to, data); + 0, + chainId, + groupId, + blockLimit.intValue(), + randomId.toString(), + Hex.trimPrefix(to), + data); } /** @return the client */ diff --git a/sdk-transaction/src/main/java/org/fisco/bcos/sdk/transaction/manager/AssembleTransactionProcessor.java b/sdk-transaction/src/main/java/org/fisco/bcos/sdk/transaction/manager/AssembleTransactionProcessor.java index a82b58a52..6900e656f 100644 --- a/sdk-transaction/src/main/java/org/fisco/bcos/sdk/transaction/manager/AssembleTransactionProcessor.java +++ b/sdk-transaction/src/main/java/org/fisco/bcos/sdk/transaction/manager/AssembleTransactionProcessor.java @@ -364,7 +364,7 @@ public TransactionData getRawTransaction( String to, String abi, String functionName, List params) throws ABICodecException { return this.transactionBuilder.createTransaction( - to, + Hex.trimPrefix(to), this.abiCodec.encodeMethod(abi, functionName, params), this.chainId, this.groupId); @@ -376,7 +376,7 @@ public TransactionData getRawTransaction( throws ABICodecException { return this.transactionBuilder.createTransaction( blockLimit, - to, + Hex.trimPrefix(to), this.abiCodec.encodeMethod(abi, functionName, params), this.chainId, this.groupId); diff --git a/src/integration-test/java/org/fisco/bcos/sdk/BcosSDKTest.java b/src/integration-test/java/org/fisco/bcos/sdk/BcosSDKTest.java index 8ee4b89ee..589cb8e11 100644 --- a/src/integration-test/java/org/fisco/bcos/sdk/BcosSDKTest.java +++ b/src/integration-test/java/org/fisco/bcos/sdk/BcosSDKTest.java @@ -359,7 +359,7 @@ public void testGetGroupList() throws ConfigException, JniException { System.out.println("getGroupList: " + groupList); BcosSDK bcosSDK = new BcosSDK(configOption); - for(String groupId: groupList) { + for (String groupId : groupList) { Client client = bcosSDK.getClient(groupId); System.out.println("build client, groupId: " + groupId); System.out.println("getBlockNumber, blk: " + client.getBlockNumber().getBlockNumber());