From 10e9e620f5ef371270191472f48a28aca51b1628 Mon Sep 17 00:00:00 2001 From: Kyon <32325790+kyonRay@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:18:31 +0800 Subject: [PATCH] (jni): perf jni code fommat. (#220) --- bindings/java/jni/build.gradle | 8 +- .../org/fisco/bcos/sdk/jni/BcosSDKJniObj.java | 118 ++--- .../org/fisco/bcos/sdk/jni/BlockNotifier.java | 16 +- .../fisco/bcos/sdk/jni/amop/AmopJniObj.java | 66 +-- .../sdk/jni/amop/AmopRequestCallback.java | 18 +- .../sdk/jni/amop/AmopResponseCallback.java | 2 +- .../fisco/bcos/sdk/jni/common/JniConfig.java | 348 ++++++------- .../bcos/sdk/jni/common/JniException.java | 6 +- .../bcos/sdk/jni/common/JniLibLoader.java | 405 ++++++++-------- .../fisco/bcos/sdk/jni/common/Response.java | 80 +-- .../bcos/sdk/jni/event/EventSubCallback.java | 14 +- .../bcos/sdk/jni/event/EventSubJniObj.java | 54 +-- .../bcos/sdk/jni/event/EventSubParams.java | 72 +-- .../bcos/sdk/jni/perf/CreateSignedTx.java | 204 ++++---- .../fisco/bcos/sdk/jni/rpc/RpcCallback.java | 14 +- .../org/fisco/bcos/sdk/jni/rpc/RpcJniObj.java | 131 ++--- .../bcos/sdk/jni/rpc/RpcServiceJniObj.java | 26 +- .../jni/utilities/keypair/KeyPairJniObj.java | 32 +- .../receipt/ReceiptBuilderJniObj.java | 102 ++-- .../utilities/signature/SignatureJniObj.java | 24 +- .../tx/TransactionBuilderJniObj.java | 307 ++++++------ .../tx/TransactionBuilderServiceJniObj.java | 80 +-- .../tx/TransactionBuilderV1JniObj.java | 456 +++++++++--------- .../jni/utilities/tx/TransactionDataV1.java | 140 +++--- .../jni/utilities/tx/TransactionDataV2.java | 22 +- .../tx/TransactionStructBuilderJniObj.java | 165 +++---- .../jni/utilities/tx/TransactionVersion.java | 42 +- .../bcos/sdk/jni/utilities/tx/TxPair.java | 38 +- .../org/fisco/bcos/sdk/jni/test/Utility.java | 104 ++-- .../bcos/sdk/jni/test/amop/Broadcast.java | 52 +- .../org/fisco/bcos/sdk/jni/test/amop/Pub.java | 84 ++-- .../org/fisco/bcos/sdk/jni/test/amop/Sub.java | 70 +-- .../bcos/sdk/jni/test/eventsub/EventSub.java | 124 ++--- .../fisco/bcos/sdk/jni/test/rpc/GetBlock.java | 94 ++-- .../bcos/sdk/jni/test/tx/TestTxStruct.java | 409 ++++++++-------- .../bcos/sdk/jni/test/tx/TestTxStructV1.java | 454 ++++++++--------- .../bcos/sdk/jni/test/tx/TestTxStructV2.java | 61 ++- test/testTransactionStructV2.cpp | 19 + 38 files changed, 2270 insertions(+), 2191 deletions(-) diff --git a/bindings/java/jni/build.gradle b/bindings/java/jni/build.gradle index 3a10e4a3c..4e605cccf 100644 --- a/bindings/java/jni/build.gradle +++ b/bindings/java/jni/build.gradle @@ -13,6 +13,13 @@ println("Notice: current gradle version is " + gradle.gradleVersion) sourceCompatibility = 1.8 targetCompatibility = 1.8 +googleJavaFormat { + toolVersion = '1.7' + options style: 'AOSP' + source = sourceSets*.allJava + include '**/*.java' +} + [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8' repositories { @@ -25,7 +32,6 @@ repositories { dependencies { api ('org.slf4j:slf4j-api:1.7.36') api ('com.fasterxml.jackson.core:jackson-databind:2.14.2') - implementation 'org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:2.9.1' testCompile ('org.slf4j:slf4j-log4j12:1.7.36') testCompile ('junit:junit:4.13.2') } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/BcosSDKJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/BcosSDKJniObj.java index e356a6ba2..f9aba2f7a 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/BcosSDKJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/BcosSDKJniObj.java @@ -21,80 +21,80 @@ public class BcosSDKJniObj { - private static final Logger logger = LoggerFactory.getLogger(BcosSDKJniObj.class); - - static { - JniLibLoader.loadJniLibrary(); - } - - protected BcosSDKJniObj() {} - - /** - * @param jniConfig - * @return - */ - public static BcosSDKJniObj build(JniConfig jniConfig) throws JniException { - long nativePointer = create(jniConfig); - BcosSDKJniObj bcosSDKJniObj = new BcosSDKJniObj(); - bcosSDKJniObj.setNativePointer(nativePointer); - logger.info("newNativePointer, nativePointer: {}, jniConfig: {}", nativePointer, jniConfig); - return bcosSDKJniObj; - } - - /** - * destroy interface - * - * @param nativePointer - */ - public static void destroy(long nativePointer) { - if (nativePointer != 0L) { - BcosSDKJniObj bcosSDKJniObj = new BcosSDKJniObj(); - bcosSDKJniObj.setNativePointer(nativePointer); - bcosSDKJniObj.destroy(); + private static final Logger logger = LoggerFactory.getLogger(BcosSDKJniObj.class); + + static { + JniLibLoader.loadJniLibrary(); } - } - private long nativePointer = 0L; + protected BcosSDKJniObj() {} + + /** + * @param jniConfig + * @return + */ + public static BcosSDKJniObj build(JniConfig jniConfig) throws JniException { + long nativePointer = create(jniConfig); + BcosSDKJniObj bcosSDKJniObj = new BcosSDKJniObj(); + bcosSDKJniObj.setNativePointer(nativePointer); + logger.info("newNativePointer, nativePointer: {}, jniConfig: {}", nativePointer, jniConfig); + return bcosSDKJniObj; + } - public long getNativePointer() { - return nativePointer; - } + /** + * destroy interface + * + * @param nativePointer + */ + public static void destroy(long nativePointer) { + if (nativePointer != 0L) { + BcosSDKJniObj bcosSDKJniObj = new BcosSDKJniObj(); + bcosSDKJniObj.setNativePointer(nativePointer); + bcosSDKJniObj.destroy(); + } + } - private void setNativePointer(long nativePointer) { - this.nativePointer = nativePointer; - } + private long nativePointer = 0L; - public static int localProtocolInfo(long nativePointer) { - BcosSDKJniObj bcosSDKJniObj = new BcosSDKJniObj(); - bcosSDKJniObj.setNativePointer(nativePointer); - return bcosSDKJniObj.localProtocolInfo(); - } + public long getNativePointer() { + return nativePointer; + } - public static int negotiatedProtocolInfo(long nativePointer) { - BcosSDKJniObj bcosSDKJniObj = new BcosSDKJniObj(); - bcosSDKJniObj.setNativePointer(nativePointer); - return bcosSDKJniObj.negotiatedProtocolInfo(); - } + private void setNativePointer(long nativePointer) { + this.nativePointer = nativePointer; + } + + public static int localProtocolInfo(long nativePointer) { + BcosSDKJniObj bcosSDKJniObj = new BcosSDKJniObj(); + bcosSDKJniObj.setNativePointer(nativePointer); + return bcosSDKJniObj.localProtocolInfo(); + } + + public static int negotiatedProtocolInfo(long nativePointer) { + BcosSDKJniObj bcosSDKJniObj = new BcosSDKJniObj(); + bcosSDKJniObj.setNativePointer(nativePointer); + return bcosSDKJniObj.negotiatedProtocolInfo(); + } - // ------------------------native method list------------------------------------------- + // ------------------------native method list------------------------------------------- - public static native long create(JniConfig config); + public static native long create(JniConfig config); - public native void start(); + public native void start(); - public native void stop(); + public native void stop(); - public native void destroy(); + public native void destroy(); - public native int localProtocolInfo(); + public native int localProtocolInfo(); - public native int negotiatedProtocolInfo(); + public native int negotiatedProtocolInfo(); - // -------------------------native method end------------------------------------------- + // -------------------------native method end------------------------------------------- - // ------------------------ block notifier begin---------------------------------------- + // ------------------------ block notifier begin---------------------------------------- - public native void registerBlockNotifier(String group, BlockNotifier callback); + public native void registerBlockNotifier(String group, BlockNotifier callback); - // ------------------------ block notifier end------------------------------------------ + // ------------------------ block notifier end------------------------------------------ } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/BlockNotifier.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/BlockNotifier.java index c2147bdf6..ba7574b58 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/BlockNotifier.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/BlockNotifier.java @@ -3,12 +3,12 @@ import java.math.BigInteger; public interface BlockNotifier { - /** - * receive block notifier - * - * @param groupId - * @param blockNumber - * @return void - */ - void onResponse(String groupId, BigInteger blockNumber); + /** + * receive block notifier + * + * @param groupId + * @param blockNumber + * @return void + */ + void onResponse(String groupId, BigInteger blockNumber); } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopJniObj.java index cc8777a66..730ee12ce 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopJniObj.java @@ -21,55 +21,55 @@ import org.slf4j.LoggerFactory; public class AmopJniObj { - private static final Logger logger = LoggerFactory.getLogger(AmopJniObj.class); + private static final Logger logger = LoggerFactory.getLogger(AmopJniObj.class); - /** - * @param nativePointer - * @return - * @throws JniException - */ - public static AmopJniObj build(long nativePointer) { - AmopJniObj amop = new AmopJniObj(); - amop.setNativePointer(nativePointer); + /** + * @param nativePointer + * @return + * @throws JniException + */ + public static AmopJniObj build(long nativePointer) { + AmopJniObj amop = new AmopJniObj(); + amop.setNativePointer(nativePointer); - logger.info(" nativePointer: {}", nativePointer); - return amop; - } + logger.info(" nativePointer: {}", nativePointer); + return amop; + } - private AmopJniObj() {} + private AmopJniObj() {} - private long nativePointer = 0L; + private long nativePointer = 0L; - public long getNativePointer() { - return nativePointer; - } + public long getNativePointer() { + return nativePointer; + } - private void setNativePointer(long nativePointer) { - this.nativePointer = nativePointer; - } + private void setNativePointer(long nativePointer) { + this.nativePointer = nativePointer; + } - // ----------------------------- Amop interface begin -------------------------------------- + // ----------------------------- Amop interface begin -------------------------------------- - public native void start(); + public native void start(); - public native void stop(); + public native void stop(); - public native void subscribeTopic(Set topicsName); + public native void subscribeTopic(Set topicsName); - public native void subscribeTopic(String topicName, AmopRequestCallback callback); + public native void subscribeTopic(String topicName, AmopRequestCallback callback); - public native void unsubscribeTopic(Set topicsName); + public native void unsubscribeTopic(Set topicsName); - public native void setCallback(AmopRequestCallback cb); + public native void setCallback(AmopRequestCallback cb); - public native void sendAmopMsg( - String topic, byte[] data, int timeout, AmopResponseCallback callback); + public native void sendAmopMsg( + String topic, byte[] data, int timeout, AmopResponseCallback callback); - public native void broadcastAmopMsg(String topic, byte[] data); + public native void broadcastAmopMsg(String topic, byte[] data); - public native void sendResponse(String endPoint, String seq, byte[] data); + public native void sendResponse(String endPoint, String seq, byte[] data); - public native Set getSubTopics(); + public native Set getSubTopics(); - // ----------------------------- Amop interface end -------------------------------------- + // ----------------------------- Amop interface end -------------------------------------- } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopRequestCallback.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopRequestCallback.java index 2df048e49..39b8a82f8 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopRequestCallback.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopRequestCallback.java @@ -16,13 +16,13 @@ package org.fisco.bcos.sdk.jni.amop; public interface AmopRequestCallback { - /** - * recieve amop request message - * - * @param endpoint - * @param seq - * @param data - * @return void - */ - void onRequest(String endpoint, String seq, byte[] data); + /** + * recieve amop request message + * + * @param endpoint + * @param seq + * @param data + * @return void + */ + void onRequest(String endpoint, String seq, byte[] data); } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopResponseCallback.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopResponseCallback.java index a93659c74..2fa045835 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopResponseCallback.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/amop/AmopResponseCallback.java @@ -3,5 +3,5 @@ import org.fisco.bcos.sdk.jni.common.Response; public interface AmopResponseCallback { - void onResponse(Response response); + void onResponse(Response response); } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniConfig.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniConfig.java index 7cdfcc199..e1f12041f 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniConfig.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniConfig.java @@ -5,220 +5,220 @@ /** Config items need by fisco-bcos-sdk-jni module */ public class JniConfig { - /** thread pool size for network send/recv/handle message */ - private int threadPoolSize = 4; + /** thread pool size for network send/recv/handle message */ + private int threadPoolSize = 4; + + private int reconnectPeriodMs = 20000; + private int heartbeatPeriodMs = 20000; + private int messageTimeoutMs = 10000; + + private boolean sendRpcRequestToHighestBlockNode = true; + + /** if disable the ssl connection */ + private boolean disableSsl = false; + /** ssl or sm_ssl */ + private String sslType; + /** ssl cert config items */ + private CertConfig certConfig; + /** sm cert config items */ + private SMCertConfig smCertConfig; + /** connected peers list */ + private List peers; + + /** cert for sm ssl connection */ + public static class CertConfig { + private String caCert; + private String nodeKey; + private String nodeCert; - private int reconnectPeriodMs = 20000; - private int heartbeatPeriodMs = 20000; - private int messageTimeoutMs = 10000; + public String getCaCert() { + return caCert; + } - private boolean sendRpcRequestToHighestBlockNode = true; + public void setCaCert(String caCert) { + this.caCert = caCert; + } - /** if disable the ssl connection */ - private boolean disableSsl = false; - /** ssl or sm_ssl */ - private String sslType; - /** ssl cert config items */ - private CertConfig certConfig; - /** sm cert config items */ - private SMCertConfig smCertConfig; - /** connected peers list */ - private List peers; + public String getNodeKey() { + return nodeKey; + } - /** cert for sm ssl connection */ - public static class CertConfig { - private String caCert; - private String nodeKey; - private String nodeCert; + public void setNodeKey(String nodeKey) { + this.nodeKey = nodeKey; + } - public String getCaCert() { - return caCert; + public String getNodeCert() { + return nodeCert; + } + + public void setNodeCert(String nodeCert) { + this.nodeCert = nodeCert; + } + + @Override + public String toString() { + return "CertConfig{}"; + } + } + + /** cert for sm ssl connection */ + public static class SMCertConfig { + private String caCert; + private String nodeCert; + private String nodeKey; + private String enNodeCert; + private String enNodeKey; + + public String getCaCert() { + return caCert; + } + + public void setCaCert(String caCert) { + this.caCert = caCert; + } + + public String getNodeCert() { + return nodeCert; + } + + public void setNodeCert(String nodeCert) { + this.nodeCert = nodeCert; + } + + public String getNodeKey() { + return nodeKey; + } + + public void setNodeKey(String nodeKey) { + this.nodeKey = nodeKey; + } + + public String getEnNodeCert() { + return enNodeCert; + } + + public void setEnNodeCert(String enNodeCert) { + this.enNodeCert = enNodeCert; + } + + public String getEnNodeKey() { + return enNodeKey; + } + + public void setEnNodeKey(String enNodeKey) { + this.enNodeKey = enNodeKey; + } + + @Override + public String toString() { + return "SMCertConfig{}"; + } + }; + + public int getThreadPoolSize() { + return threadPoolSize; } - public void setCaCert(String caCert) { - this.caCert = caCert; + public void setThreadPoolSize(int threadPoolSize) { + this.threadPoolSize = threadPoolSize; } - public String getNodeKey() { - return nodeKey; + public int getReconnectPeriodMs() { + return reconnectPeriodMs; } - public void setNodeKey(String nodeKey) { - this.nodeKey = nodeKey; + public void setReconnectPeriodMs(int reconnectPeriodMs) { + this.reconnectPeriodMs = reconnectPeriodMs; } - public String getNodeCert() { - return nodeCert; + public int getHeartbeatPeriodMs() { + return heartbeatPeriodMs; } - public void setNodeCert(String nodeCert) { - this.nodeCert = nodeCert; + public void setHeartbeatPeriodMs(int heartbeatPeriodMs) { + this.heartbeatPeriodMs = heartbeatPeriodMs; } - @Override - public String toString() { - return "CertConfig{}"; + public int getMessageTimeoutMs() { + return messageTimeoutMs; } - } - /** cert for sm ssl connection */ - public static class SMCertConfig { - private String caCert; - private String nodeCert; - private String nodeKey; - private String enNodeCert; - private String enNodeKey; + public void setMessageTimeoutMs(int messageTimeoutMs) { + this.messageTimeoutMs = messageTimeoutMs; + } + + public boolean isDisableSsl() { + return disableSsl; + } - public String getCaCert() { - return caCert; + public void setDisableSsl(boolean disableSsl) { + this.disableSsl = disableSsl; } - public void setCaCert(String caCert) { - this.caCert = caCert; + public String getSslType() { + return sslType; } - public String getNodeCert() { - return nodeCert; + public void setSslType(String sslType) { + this.sslType = sslType; } - public void setNodeCert(String nodeCert) { - this.nodeCert = nodeCert; + public CertConfig getCertConfig() { + return certConfig; } - public String getNodeKey() { - return nodeKey; + public void setCertConfig(CertConfig certConfig) { + this.certConfig = certConfig; } - public void setNodeKey(String nodeKey) { - this.nodeKey = nodeKey; + public SMCertConfig getSmCertConfig() { + return smCertConfig; } - public String getEnNodeCert() { - return enNodeCert; + public void setSmCertConfig(SMCertConfig smCertConfig) { + this.smCertConfig = smCertConfig; } - public void setEnNodeCert(String enNodeCert) { - this.enNodeCert = enNodeCert; + public List getPeers() { + return peers; } - public String getEnNodeKey() { - return enNodeKey; + public void setPeers(List peers) { + this.peers = peers; } - public void setEnNodeKey(String enNodeKey) { - this.enNodeKey = enNodeKey; + public boolean isSendRpcRequestToHighestBlockNode() { + return sendRpcRequestToHighestBlockNode; + } + + public void setSendRpcRequestToHighestBlockNode(boolean sendRpcRequestToHighestBlockNode) { + this.sendRpcRequestToHighestBlockNode = sendRpcRequestToHighestBlockNode; } @Override public String toString() { - return "SMCertConfig{}"; - } - }; - - public int getThreadPoolSize() { - return threadPoolSize; - } - - public void setThreadPoolSize(int threadPoolSize) { - this.threadPoolSize = threadPoolSize; - } - - public int getReconnectPeriodMs() { - return reconnectPeriodMs; - } - - public void setReconnectPeriodMs(int reconnectPeriodMs) { - this.reconnectPeriodMs = reconnectPeriodMs; - } - - public int getHeartbeatPeriodMs() { - return heartbeatPeriodMs; - } - - public void setHeartbeatPeriodMs(int heartbeatPeriodMs) { - this.heartbeatPeriodMs = heartbeatPeriodMs; - } - - public int getMessageTimeoutMs() { - return messageTimeoutMs; - } - - public void setMessageTimeoutMs(int messageTimeoutMs) { - this.messageTimeoutMs = messageTimeoutMs; - } - - public boolean isDisableSsl() { - return disableSsl; - } - - public void setDisableSsl(boolean disableSsl) { - this.disableSsl = disableSsl; - } - - public String getSslType() { - return sslType; - } - - public void setSslType(String sslType) { - this.sslType = sslType; - } - - public CertConfig getCertConfig() { - return certConfig; - } - - public void setCertConfig(CertConfig certConfig) { - this.certConfig = certConfig; - } - - public SMCertConfig getSmCertConfig() { - return smCertConfig; - } - - public void setSmCertConfig(SMCertConfig smCertConfig) { - this.smCertConfig = smCertConfig; - } - - public List getPeers() { - return peers; - } - - public void setPeers(List peers) { - this.peers = peers; - } - - public boolean isSendRpcRequestToHighestBlockNode() { - return sendRpcRequestToHighestBlockNode; - } - - public void setSendRpcRequestToHighestBlockNode(boolean sendRpcRequestToHighestBlockNode) { - this.sendRpcRequestToHighestBlockNode = sendRpcRequestToHighestBlockNode; - } - - @Override - public String toString() { - return "JniConfig{" - + "threadPoolSize=" - + threadPoolSize - + ", reconnectPeriodMs=" - + reconnectPeriodMs - + ", heartbeatPeriodMs=" - + heartbeatPeriodMs - + ", messageTimeoutMs=" - + messageTimeoutMs - + ", sendRpcRequestToHighestBlockNode=" - + sendRpcRequestToHighestBlockNode - + ", disableSsl=" - + disableSsl - + ", sslType='" - + sslType - + '\'' - + ", certConfig=" - + certConfig - + ", smCertConfig=" - + smCertConfig - + ", peers=" - + peers - + '}'; - } + return "JniConfig{" + + "threadPoolSize=" + + threadPoolSize + + ", reconnectPeriodMs=" + + reconnectPeriodMs + + ", heartbeatPeriodMs=" + + heartbeatPeriodMs + + ", messageTimeoutMs=" + + messageTimeoutMs + + ", sendRpcRequestToHighestBlockNode=" + + sendRpcRequestToHighestBlockNode + + ", disableSsl=" + + disableSsl + + ", sslType='" + + sslType + + '\'' + + ", certConfig=" + + certConfig + + ", smCertConfig=" + + smCertConfig + + ", peers=" + + peers + + '}'; + } } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniException.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniException.java index a30193462..3c3bcca20 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniException.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniException.java @@ -1,7 +1,7 @@ package org.fisco.bcos.sdk.jni.common; public class JniException extends Exception { - public JniException(String message) { - super(message); - } + public JniException(String message) { + super(message); + } } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniLibLoader.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniLibLoader.java index fc34e19aa..021d42188 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniLibLoader.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/JniLibLoader.java @@ -33,237 +33,248 @@ * @author octopus */ public final class JniLibLoader { - private static final Logger logger = LoggerFactory.getLogger(JniLibLoader.class); + private static final Logger logger = LoggerFactory.getLogger(JniLibLoader.class); - public static final String LINUX = "linux"; - public static final String MAC = "mac"; - public static final String WIN = "win"; + public static final String LINUX = "linux"; + public static final String MAC = "mac"; + public static final String WIN = "win"; - public static final String NATIVE_RESOURCE_LIB_NAME = "bcos-sdk-jni"; - public static final String NATIVE_RESOURCE_HOME = "/META-INF/native"; - public static final String NATIVE_WIN_DEPS_DIR = NATIVE_RESOURCE_HOME + "/win/"; - public static final String WIN_DEPS_FILE_LIST = "file.list"; + public static final String NATIVE_RESOURCE_LIB_NAME = "bcos-sdk-jni"; + public static final String NATIVE_RESOURCE_HOME = "/META-INF/native"; + public static final String NATIVE_WIN_DEPS_DIR = NATIVE_RESOURCE_HOME + "/win/"; + public static final String WIN_DEPS_FILE_LIST = "file.list"; - public static final String OS_NAME = getOs(); - public static final String ARCH_NAME = getArch(); + public static final String OS_NAME = getOs(); + public static final String ARCH_NAME = getArch(); - private static File WORKDIR; + private static File WORKDIR; - static { - // 1. initialize workdir + static { + // 1. initialize workdir - // -Dorg.fisco.bcos.workdir - String workdir = System.getProperty("org.fisco.bcos.workdir"); - if (workdir != null) { - try { - File f = new File(workdir); - f.mkdirs(); - WORKDIR = f; - logger.info("initialize workdir, -Dorg.fisco.bcos.workdir: {}", WORKDIR); - } catch (Exception e) { - logger.debug("initialize workdir, cannot mkdir workdir: {}, e: ", workdir, e); - workdir = null; - } - } + // -Dorg.fisco.bcos.workdir + String workdir = System.getProperty("org.fisco.bcos.workdir"); + if (workdir != null) { + try { + File f = new File(workdir); + f.mkdirs(); + WORKDIR = f; + logger.info("initialize workdir, -Dorg.fisco.bcos.workdir: {}", WORKDIR); + } catch (Exception e) { + logger.debug("initialize workdir, cannot mkdir workdir: {}, e: ", workdir, e); + workdir = null; + } + } - // default -Djava.io.tmpdir - if (workdir == null) { - workdir = System.getProperty("java.io.tmpdir"); - File f = new File(workdir); - f.mkdirs(); - WORKDIR = f; + // default -Djava.io.tmpdir + if (workdir == null) { + workdir = System.getProperty("java.io.tmpdir"); + File f = new File(workdir); + f.mkdirs(); + WORKDIR = f; - logger.info("initialize workdir, -Djava.io.tmpdirs: {}", WORKDIR); + logger.info("initialize workdir, -Djava.io.tmpdirs: {}", WORKDIR); + } } - } - public static String getArch() { - String archName = System.getProperty("os.arch", ""); - if (archName.contains("aarch64") || archName.contains("arm64")) { - return "arm"; - } else { - return ""; + public static String getArch() { + String archName = System.getProperty("os.arch", ""); + if (archName.contains("aarch64") || archName.contains("arm64")) { + return "arm"; + } else { + return ""; + } } - } - public static String getLibName(String baseName) { - String osName = OS_NAME; - String archName = ARCH_NAME; + public static String getLibName(String baseName) { + String osName = OS_NAME; + String archName = ARCH_NAME; - logger.debug("osName: {}, archName: {}", osName, archName); - - if (osName.contains(WIN)) { - return baseName + ".dll"; - } else if (osName.contains(LINUX)) { - String arch = getArch(); - if ("arm".equals(arch)) { - return "lib" + baseName + "-aarch64" + ".so"; - } - return "lib" + baseName + ".so"; - } else if (osName.contains(MAC)) { - String arch = getArch(); - if ("arm".equals(arch)) { - return "lib" + baseName + "-aarch64" + ".dylib"; - } - return "lib" + baseName + ".dylib"; - } else { - throw new RuntimeException("unrecognized OS: " + osName); - } - } + logger.debug("osName: {}, archName: {}", osName, archName); - public static String getOs() { - String osName = System.getProperty("os.name").toLowerCase(); - if (osName.contains(WIN)) { - return WIN; - } else if (osName.contains(LINUX)) { - return LINUX; - } else if (osName.contains(MAC)) { - return MAC; - } else { - throw new RuntimeException("unrecognized OS: " + osName); + if (osName.contains(WIN)) { + return baseName + ".dll"; + } else if (osName.contains(LINUX)) { + String arch = getArch(); + if ("arm".equals(arch)) { + return "lib" + baseName + "-aarch64" + ".so"; + } + return "lib" + baseName + ".so"; + } else if (osName.contains(MAC)) { + String arch = getArch(); + if ("arm".equals(arch)) { + return "lib" + baseName + "-aarch64" + ".dylib"; + } + return "lib" + baseName + ".dylib"; + } else { + throw new RuntimeException("unrecognized OS: " + osName); + } } - } - public static void loadJniLibrary() { - String libPath = null; - boolean loadLibFromFsOk = false; - try { - // 1. try to load library from filesystem - // -Dorg.fisco.bcos.jni.library.path - libPath = System.getProperty("org.fisco.bcos.jni.library.path"); - if (libPath != null) { - logger.info("try to load library -Dorg.fisco.bcos.jni.library.path, libPath: {}", libPath); - // try to load library from filesystem first - loadLibraryFromFs(libPath, NATIVE_RESOURCE_LIB_NAME, new File(libPath).isAbsolute()); - loadLibFromFsOk = true; - } - } catch (Exception e0) { - logger.error("unable to load library from fs, libDir: {}, e: ", libPath, e0); + public static String getOs() { + String osName = System.getProperty("os.name").toLowerCase(); + if (osName.contains(WIN)) { + return WIN; + } else if (osName.contains(LINUX)) { + return LINUX; + } else if (osName.contains(MAC)) { + return MAC; + } else { + throw new RuntimeException("unrecognized OS: " + osName); + } } - // 2. try to load library from jar - if (!loadLibFromFsOk) { - try { - logger.info("try to load library from jar"); - if (Objects.equals(getOs(), WIN)) { - loadWinDepsLibraryFromJar(); + public static void loadJniLibrary() { + String libPath = null; + boolean loadLibFromFsOk = false; + try { + // 1. try to load library from filesystem + // -Dorg.fisco.bcos.jni.library.path + libPath = System.getProperty("org.fisco.bcos.jni.library.path"); + if (libPath != null) { + logger.info( + "try to load library -Dorg.fisco.bcos.jni.library.path, libPath: {}", + libPath); + // try to load library from filesystem first + loadLibraryFromFs( + libPath, NATIVE_RESOURCE_LIB_NAME, new File(libPath).isAbsolute()); + loadLibFromFsOk = true; + } + } catch (Exception e0) { + logger.error("unable to load library from fs, libDir: {}, e: ", libPath, e0); } - loadLibraryFromJar(NATIVE_RESOURCE_LIB_NAME); - } catch (Exception e1) { - logger.error("unable to load library from fs, e: ", e1); - throw new UnsatisfiedLinkError(e1.toString()); - } - } - } - public static void loadLibrary(String lib, boolean absolute) { - if (absolute) { - System.load(lib); - } else { - System.loadLibrary(lib); + // 2. try to load library from jar + if (!loadLibFromFsOk) { + try { + logger.info("try to load library from jar"); + if (Objects.equals(getOs(), WIN)) { + loadWinDepsLibraryFromJar(); + } + loadLibraryFromJar(NATIVE_RESOURCE_LIB_NAME); + } catch (Exception e1) { + logger.error("unable to load library from fs, e: ", e1); + throw new UnsatisfiedLinkError(e1.toString()); + } + } } - } - public static void addLibraryDir(String libraryPath) - throws NoSuchFieldException, IllegalAccessException { - Field userPathsField = ClassLoader.class.getDeclaredField("usr_paths"); - userPathsField.setAccessible(true); - String[] paths = (String[]) userPathsField.get(null); - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < paths.length; i++) { - if (libraryPath.equals(paths[i])) { - continue; - } - sb.append(paths[i]).append(File.pathSeparator); + public static void loadLibrary(String lib, boolean absolute) { + if (absolute) { + System.load(lib); + } else { + System.loadLibrary(lib); + } } - sb.append(libraryPath); - System.setProperty("java.library.path", sb.toString()); - logger.info("modify, java.library.path: " + sb.toString()); - final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths"); - sysPathsField.setAccessible(true); - sysPathsField.set(null, null); - } - - public static void loadLibraryFromFs(String dir, String libName, boolean absolute) { - String resource = dir + "/" + getLibName(libName); - loadLibrary(resource, absolute); - } - - public static void loadLibraryFromJar(String baseName) - throws IOException, NoSuchFieldException, IllegalAccessException { - String libName = getLibName(baseName); - File tempDir = new File(WORKDIR, String.valueOf(System.nanoTime())); - // create temp dir - tempDir.mkdirs(); - File tempFile = new File(tempDir, libName); - logger.info("tempDir: {}, tempFile: {}", tempDir, tempFile); - String resource = NATIVE_RESOURCE_HOME + "/" + libName; - try (InputStream is = JniLibLoader.class.getResourceAsStream(resource)) { - Files.copy(is, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { - try { - tempFile.delete(); - } catch (Exception e0) { - logger.debug("delete temp file error, e: ", e0); - } - logger.error("copy dynamic lib from jar failed, resource: {}, e: ", resource, e); - throw e; - } catch (NullPointerException e) { - throw new FileNotFoundException("Cannot found " + resource + " inside the JAR."); + public static void addLibraryDir(String libraryPath) + throws NoSuchFieldException, IllegalAccessException { + Field userPathsField = ClassLoader.class.getDeclaredField("usr_paths"); + userPathsField.setAccessible(true); + String[] paths = (String[]) userPathsField.get(null); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < paths.length; i++) { + if (libraryPath.equals(paths[i])) { + continue; + } + sb.append(paths[i]).append(File.pathSeparator); + } + sb.append(libraryPath); + System.setProperty("java.library.path", sb.toString()); + logger.info("modify, java.library.path: " + sb.toString()); + final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths"); + sysPathsField.setAccessible(true); + sysPathsField.set(null, null); } - try { - loadLibrary(tempFile.getAbsolutePath(), true); - } catch (Exception e) { - logger.error("loadLibrary error, resource: {}, e: ", resource, e); - throw e; - } finally { - try { - tempFile.delete(); - tempDir.delete(); - logger.debug("remove temp dir and temp file, dir: {}, file: {}", tempDir, tempFile); - } catch (Exception ignored) { - } + public static void loadLibraryFromFs(String dir, String libName, boolean absolute) { + String resource = dir + "/" + getLibName(libName); + loadLibrary(resource, absolute); } - } - public static void loadWinDepsLibraryFromJar() throws IOException, NoSuchFieldException { - File tempDir = new File(WORKDIR, String.valueOf(System.nanoTime())); - tempDir.mkdirs(); + public static void loadLibraryFromJar(String baseName) + throws IOException, NoSuchFieldException, IllegalAccessException { + String libName = getLibName(baseName); + File tempDir = new File(WORKDIR, String.valueOf(System.nanoTime())); + // create temp dir + tempDir.mkdirs(); + File tempFile = new File(tempDir, libName); + logger.info("tempDir: {}, tempFile: {}", tempDir, tempFile); - try (InputStream is = - JniLibLoader.class.getResourceAsStream(NATIVE_WIN_DEPS_DIR + WIN_DEPS_FILE_LIST)) { - if (is == null) { - throw new FileNotFoundException("Cannot found " + WIN_DEPS_FILE_LIST + " inside the JAR."); - } - try (Scanner scanner = new Scanner(is)) { - while (scanner.hasNext()) { - String lib = scanner.next(); - File targetFile = new File(tempDir, lib); - logger.info("loadWinDepsLibraryFromJar tempDir: {}, targetFile: {}", tempDir, targetFile); - try (InputStream fis = - JniLibLoader.class.getResourceAsStream(NATIVE_WIN_DEPS_DIR + lib)) { - if (fis == null) { - throw new FileNotFoundException("Cannot found " + lib + " inside the JAR."); + String resource = NATIVE_RESOURCE_HOME + "/" + libName; + try (InputStream is = JniLibLoader.class.getResourceAsStream(resource)) { + Files.copy(is, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + try { + tempFile.delete(); + } catch (Exception e0) { + logger.debug("delete temp file error, e: ", e0); } - Files.copy(fis, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - loadLibrary(targetFile.getAbsolutePath(), true); - } catch (IOException e) { - targetFile.delete(); - } catch (Exception e) { - logger.error("loadLibrary error, resource: {}, e: ", targetFile.getAbsolutePath(), e); + logger.error("copy dynamic lib from jar failed, resource: {}, e: ", resource, e); + throw e; + } catch (NullPointerException e) { + throw new FileNotFoundException("Cannot found " + resource + " inside the JAR."); + } + + try { + loadLibrary(tempFile.getAbsolutePath(), true); + } catch (Exception e) { + logger.error("loadLibrary error, resource: {}, e: ", resource, e); throw e; - } finally { + } finally { try { - targetFile.delete(); - tempDir.delete(); - logger.debug("remove temp dir and temp file, {}", targetFile); + tempFile.delete(); + tempDir.delete(); + logger.debug("remove temp dir and temp file, dir: {}, file: {}", tempDir, tempFile); } catch (Exception ignored) { } - } } - } } - } + + public static void loadWinDepsLibraryFromJar() throws IOException, NoSuchFieldException { + File tempDir = new File(WORKDIR, String.valueOf(System.nanoTime())); + tempDir.mkdirs(); + + try (InputStream is = + JniLibLoader.class.getResourceAsStream(NATIVE_WIN_DEPS_DIR + WIN_DEPS_FILE_LIST)) { + if (is == null) { + throw new FileNotFoundException( + "Cannot found " + WIN_DEPS_FILE_LIST + " inside the JAR."); + } + try (Scanner scanner = new Scanner(is)) { + while (scanner.hasNext()) { + String lib = scanner.next(); + File targetFile = new File(tempDir, lib); + logger.info( + "loadWinDepsLibraryFromJar tempDir: {}, targetFile: {}", + tempDir, + targetFile); + try (InputStream fis = + JniLibLoader.class.getResourceAsStream(NATIVE_WIN_DEPS_DIR + lib)) { + if (fis == null) { + throw new FileNotFoundException( + "Cannot found " + lib + " inside the JAR."); + } + Files.copy(fis, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + loadLibrary(targetFile.getAbsolutePath(), true); + } catch (IOException e) { + targetFile.delete(); + } catch (Exception e) { + logger.error( + "loadLibrary error, resource: {}, e: ", + targetFile.getAbsolutePath(), + e); + throw e; + } finally { + try { + targetFile.delete(); + tempDir.delete(); + logger.debug("remove temp dir and temp file, {}", targetFile); + } catch (Exception ignored) { + } + } + } + } + } + } } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/Response.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/Response.java index 99f0faee7..964e49608 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/Response.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/common/Response.java @@ -3,44 +3,44 @@ import java.util.Arrays; public class Response { - private int errorCode; - private String errorMessage; - private byte[] data; - - public int getErrorCode() { - return errorCode; - } - - public void setErrorCode(int errorCode) { - this.errorCode = errorCode; - } - - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - - public byte[] getData() { - return data; - } - - public void setData(byte[] data) { - this.data = data; - } - - @Override - public String toString() { - return "Response{" - + "errorCode=" - + errorCode - + ", errorMessage='" - + errorMessage - + '\'' - + ", data=" - + Arrays.toString(data) - + '}'; - } + private int errorCode; + private String errorMessage; + private byte[] data; + + public int getErrorCode() { + return errorCode; + } + + public void setErrorCode(int errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + public byte[] getData() { + return data; + } + + public void setData(byte[] data) { + this.data = data; + } + + @Override + public String toString() { + return "Response{" + + "errorCode=" + + errorCode + + ", errorMessage='" + + errorMessage + + '\'' + + ", data=" + + Arrays.toString(data) + + '}'; + } } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubCallback.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubCallback.java index 865c1211a..7b1b98b08 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubCallback.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubCallback.java @@ -20,11 +20,11 @@ /** Event callback */ public interface EventSubCallback { - /** - * onReceiveLog called when sdk receive any response of the target subscription. logs will be - * parsed by the user through the ABI module. - * - * @param response - */ - void onResponse(Response response); + /** + * onReceiveLog called when sdk receive any response of the target subscription. logs will be + * parsed by the user through the ABI module. + * + * @param response + */ + void onResponse(Response response); } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubJniObj.java index 3c65418c9..b2ab4dc65 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubJniObj.java @@ -22,44 +22,44 @@ public class EventSubJniObj { - private static final Logger logger = LoggerFactory.getLogger(EventSubJniObj.class); + private static final Logger logger = LoggerFactory.getLogger(EventSubJniObj.class); - /** - * @param nativePointer - * @return - * @throws JniException - */ - public static EventSubJniObj build(long nativePointer) throws JniException { - EventSubJniObj subscribe = new EventSubJniObj(); - subscribe.setNativePointer(nativePointer); + /** + * @param nativePointer + * @return + * @throws JniException + */ + public static EventSubJniObj build(long nativePointer) throws JniException { + EventSubJniObj subscribe = new EventSubJniObj(); + subscribe.setNativePointer(nativePointer); - logger.info("nativePointer: {}", nativePointer); - return subscribe; - } + logger.info("nativePointer: {}", nativePointer); + return subscribe; + } - private EventSubJniObj() {} + private EventSubJniObj() {} - private long nativePointer = 0L; + private long nativePointer = 0L; - public long getNativePointer() { - return nativePointer; - } + public long getNativePointer() { + return nativePointer; + } - private void setNativePointer(long nativePointer) { - this.nativePointer = nativePointer; - } + private void setNativePointer(long nativePointer) { + this.nativePointer = nativePointer; + } - // ----------------------------- EventSub interface begin -------------------------------------- + // ----------------------------- EventSub interface begin -------------------------------------- - public native void start(); + public native void start(); - public native void stop(); + public native void stop(); - public native String subscribeEvent(String group, String params, EventSubCallback callback); + public native String subscribeEvent(String group, String params, EventSubCallback callback); - public native void unsubscribeEvent(String eventID); + public native void unsubscribeEvent(String eventID); - public native Set getAllSubscribedEvents(); + public native Set getAllSubscribedEvents(); - // ----------------------------- EventSub interface begin -------------------------------------- + // ----------------------------- EventSub interface begin -------------------------------------- } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubParams.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubParams.java index a2bc33c41..9196ff27e 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubParams.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/event/EventSubParams.java @@ -4,40 +4,40 @@ import java.util.List; public class EventSubParams { - private long fromBlock; - private long toBlock; - private List addresses = new ArrayList<>(); - private List> topics = new ArrayList<>(); - - public long getFromBlock() { - return fromBlock; - } - - public void setFromBlock(long fromBlock) { - this.fromBlock = fromBlock; - } - - public long getToBlock() { - return toBlock; - } - - public void setToBlock(long toBlock) { - this.toBlock = toBlock; - } - - public List getAddresses() { - return addresses; - } - - public void setAddresses(List addresses) { - this.addresses = addresses; - } - - public List> getTopics() { - return topics; - } - - public void setTopics(List> topics) { - this.topics = topics; - } + private long fromBlock; + private long toBlock; + private List addresses = new ArrayList<>(); + private List> topics = new ArrayList<>(); + + public long getFromBlock() { + return fromBlock; + } + + public void setFromBlock(long fromBlock) { + this.fromBlock = fromBlock; + } + + public long getToBlock() { + return toBlock; + } + + public void setToBlock(long toBlock) { + this.toBlock = toBlock; + } + + public List getAddresses() { + return addresses; + } + + public void setAddresses(List addresses) { + this.addresses = addresses; + } + + public List> getTopics() { + return topics; + } + + public void setTopics(List> topics) { + this.topics = topics; + } } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/perf/CreateSignedTx.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/perf/CreateSignedTx.java index 8aa169e42..bc6c71300 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/perf/CreateSignedTx.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/perf/CreateSignedTx.java @@ -7,112 +7,112 @@ public class CreateSignedTx { - // ------------------------------------------------------------------------------ - // ------------------------------------------------------------------------------ - - // HelloWorld Source Code: - - // HelloWorld Source Code: - /** - * pragma solidity>=0.4.24 <0.6.11; - * - *

contract HelloWorld { string name; - * - *

constructor() public { name = "Hello, World!"; } - * - *

function get() public view returns (string memory) { return name; } - * - *

function set(string memory n) public { name = n; } } - */ - private static final String hwBIN = - "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634ed3885e1461003b5780636d4ce63c146100f6575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610179565b005b6100fe610193565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013e578082015181840152602081019050610123565b50505050905090810190601f16801561016b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b806000908051906020019061018f929190610235565b5050565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561022b5780601f106102005761010080835404028352916020019161022b565b820191906000526020600020905b81548152906001019060200180831161020e57829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea2646970667358221220b5943f43c48cc93c6d71cdcf27aee5072566c88755ce9186e32ce83b24e8dc6c64736f6c634300060a0033"; - - private static final String hwSmBIN = - "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063299f7f9d1461003b5780633590b49f146100be575b600080fd5b610043610179565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610083578082015181840152602081019050610068565b50505050905090810190601f1680156100b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610177600480360360208110156100d457600080fd5b81019080803590602001906401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061021b565b005b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102115780601f106101e657610100808354040283529160200191610211565b820191906000526020600020905b8154815290600101906020018083116101f457829003601f168201915b5050505050905090565b8060009080519060200190610231929190610235565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea26469706673582212209871cb2bcf390d53645807cbaedfe052d739ef9cff9d84787f74c4f379e1854664736f6c634300060a0033"; - - /* - { - "6d4ce63c": "get()", - "4ed3885e": "set(string)" - } - - { - "299f7f9d": "get()", - "3590b49f": "set(string)" - } - */ - - public static String getBinary(boolean isSM) { - return isSM ? hwSmBIN : hwBIN; - } - - public static void Usage() { - System.out.println("Desc: create signed transaction[HelloWorld set] perf test"); - System.out.println( - "Usage: java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf smCrypto durationMS(MS)"); - System.out.println("Example:"); - System.out.println( - " java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf true 10000\n"); - System.out.println( - " java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf false 10000\n"); - System.exit(0); - } - - public static void main(String[] args) throws JniException { - if (args.length < 2) { - Usage(); + // ------------------------------------------------------------------------------ + // ------------------------------------------------------------------------------ + + // HelloWorld Source Code: + + // HelloWorld Source Code: + /** + * pragma solidity>=0.4.24 <0.6.11; + * + *

contract HelloWorld { string name; + * + *

constructor() public { name = "Hello, World!"; } + * + *

function get() public view returns (string memory) { return name; } + * + *

function set(string memory n) public { name = n; } } + */ + private static final String hwBIN = + "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634ed3885e1461003b5780636d4ce63c146100f6575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610179565b005b6100fe610193565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013e578082015181840152602081019050610123565b50505050905090810190601f16801561016b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b806000908051906020019061018f929190610235565b5050565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561022b5780601f106102005761010080835404028352916020019161022b565b820191906000526020600020905b81548152906001019060200180831161020e57829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea2646970667358221220b5943f43c48cc93c6d71cdcf27aee5072566c88755ce9186e32ce83b24e8dc6c64736f6c634300060a0033"; + + private static final String hwSmBIN = + "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063299f7f9d1461003b5780633590b49f146100be575b600080fd5b610043610179565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610083578082015181840152602081019050610068565b50505050905090810190601f1680156100b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610177600480360360208110156100d457600080fd5b81019080803590602001906401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061021b565b005b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102115780601f106101e657610100808354040283529160200191610211565b820191906000526020600020905b8154815290600101906020018083116101f457829003601f168201915b5050505050905090565b8060009080519060200190610231929190610235565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea26469706673582212209871cb2bcf390d53645807cbaedfe052d739ef9cff9d84787f74c4f379e1854664736f6c634300060a0033"; + + /* + { + "6d4ce63c": "get()", + "4ed3885e": "set(string)" } - boolean smCrypto = "true".equals(args[0]); - long durationMS = Long.parseLong(args[1]); - - System.out.printf( - "[Create Signed Tx Perf Test] ===>>>> smCrypto: %d, durationMS: %d\n", - smCrypto ? 1 : 0, durationMS); - - long keyPair = KeyPairJniObj.createJniKeyPair(smCrypto ? 1 : 0); - String jniKeyPairAddress = KeyPairJniObj.getJniKeyPairAddress(keyPair); - System.out.printf( - " [Create Signed Tx Perf Test] new account, address: %s\n", jniKeyPairAddress); - - long blockLimit = 111111; - String groupID = "group0"; - String chainID = "chain0"; - String data = getBinary(smCrypto); - - long startPoint = System.currentTimeMillis(); - long lastReportPoint = startPoint; - - long nTotalC = 0; - long nLastSecC = 0; - String txHash = ""; - while (true) { - TxPair signedTransaction = - TransactionBuilderJniObj.createSignedTransaction( - keyPair, groupID, chainID, "", data, "", blockLimit, 0); - txHash = signedTransaction.getSignedTx(); - - nTotalC++; - nLastSecC++; - - long now = System.currentTimeMillis(); - long elapsedMS = now - startPoint; - if (elapsedMS >= durationMS) { - System.out.printf( - " [Create Signed Tx Perf Test] total txs: %d, total elapsed(ms): %d \n", - nTotalC, elapsedMS); - break; - } + { + "299f7f9d": "get()", + "3590b49f": "set(string)" + } + */ + + public static String getBinary(boolean isSM) { + return isSM ? hwSmBIN : hwBIN; + } + + public static void Usage() { + System.out.println("Desc: create signed transaction[HelloWorld set] perf test"); + System.out.println( + "Usage: java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf smCrypto durationMS(MS)"); + System.out.println("Example:"); + System.out.println( + " java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf true 10000\n"); + System.out.println( + " java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.perf.ParallelOkPerf false 10000\n"); + System.exit(0); + } + + public static void main(String[] args) throws JniException { + if (args.length < 2) { + Usage(); + } + + boolean smCrypto = "true".equals(args[0]); + long durationMS = Long.parseLong(args[1]); - long lastElapsedMS = now - lastReportPoint; - if (lastElapsedMS >= 1000) { System.out.printf( - " [Create Signed Tx Perf Test] last txs: %d, last elapsed(ms): %d\n", - nLastSecC, lastElapsedMS); + "[Create Signed Tx Perf Test] ===>>>> smCrypto: %d, durationMS: %d\n", + smCrypto ? 1 : 0, durationMS); - nLastSecC = 0; - lastReportPoint = now; - } + long keyPair = KeyPairJniObj.createJniKeyPair(smCrypto ? 1 : 0); + String jniKeyPairAddress = KeyPairJniObj.getJniKeyPairAddress(keyPair); + System.out.printf( + " [Create Signed Tx Perf Test] new account, address: %s\n", jniKeyPairAddress); + + long blockLimit = 111111; + String groupID = "group0"; + String chainID = "chain0"; + String data = getBinary(smCrypto); + + long startPoint = System.currentTimeMillis(); + long lastReportPoint = startPoint; + + long nTotalC = 0; + long nLastSecC = 0; + String txHash = ""; + while (true) { + TxPair signedTransaction = + TransactionBuilderJniObj.createSignedTransaction( + keyPair, groupID, chainID, "", data, "", blockLimit, 0); + txHash = signedTransaction.getSignedTx(); + + nTotalC++; + nLastSecC++; + + long now = System.currentTimeMillis(); + long elapsedMS = now - startPoint; + if (elapsedMS >= durationMS) { + System.out.printf( + " [Create Signed Tx Perf Test] total txs: %d, total elapsed(ms): %d \n", + nTotalC, elapsedMS); + break; + } + + long lastElapsedMS = now - lastReportPoint; + if (lastElapsedMS >= 1000) { + System.out.printf( + " [Create Signed Tx Perf Test] last txs: %d, last elapsed(ms): %d\n", + nLastSecC, lastElapsedMS); + + nLastSecC = 0; + lastReportPoint = now; + } + } } - } } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcCallback.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcCallback.java index 48b90cd30..4d07e82ab 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcCallback.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcCallback.java @@ -4,11 +4,11 @@ /** receive message callback for modules of java-sdk */ public interface RpcCallback { - /** - * on receive response message - * - * @param response - * @return void - */ - void onResponse(Response response); + /** + * on receive response message + * + * @param response + * @return void + */ + void onResponse(Response response); } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcJniObj.java index 69bf21369..4b9bbe6aa 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcJniObj.java @@ -19,104 +19,105 @@ import org.slf4j.LoggerFactory; public class RpcJniObj { - private static final Logger logger = LoggerFactory.getLogger(RpcJniObj.class); + private static final Logger logger = LoggerFactory.getLogger(RpcJniObj.class); - public static RpcJniObj build(long nativePointer) { - RpcJniObj rpc = new RpcJniObj(); - rpc.setNativePointer(nativePointer); - logger.info("nativePointer: {}", nativePointer); - return rpc; - } + public static RpcJniObj build(long nativePointer) { + RpcJniObj rpc = new RpcJniObj(); + rpc.setNativePointer(nativePointer); + logger.info("nativePointer: {}", nativePointer); + return rpc; + } - private RpcJniObj() {} + private RpcJniObj() {} - private long nativePointer = 0L; + private long nativePointer = 0L; - public long getNativePointer() { - return nativePointer; - } + public long getNativePointer() { + return nativePointer; + } - private void setNativePointer(long nativePointer) { - this.nativePointer = nativePointer; - } + private void setNativePointer(long nativePointer) { + this.nativePointer = nativePointer; + } - // ----------------------------- RPC interface begin -------------------------------------- + // ----------------------------- RPC interface begin -------------------------------------- - public native void start(); + public native void start(); - public native void stop(); + public native void stop(); - // ----------------------------------------------------------------------------------------- - public native void genericMethod(String data, RpcCallback callback); + // ----------------------------------------------------------------------------------------- + public native void genericMethod(String data, RpcCallback callback); - public native void genericMethod(String group, String data, RpcCallback callback); + public native void genericMethod(String group, String data, RpcCallback callback); - public native void genericMethod(String group, String node, String data, RpcCallback callback); - // ----------------------------------------------------------------------------------------- + public native void genericMethod(String group, String node, String data, RpcCallback callback); + // ----------------------------------------------------------------------------------------- - public native void call(String group, String node, String to, String data, RpcCallback callback); + public native void call( + String group, String node, String to, String data, RpcCallback callback); - public native void sendTransaction( - String group, String node, String data, boolean requireProof, RpcCallback callback); + public native void sendTransaction( + String group, String node, String data, boolean requireProof, RpcCallback callback); - public native void getTransaction( - String group, String node, String txHash, boolean requireProof, RpcCallback callback); + public native void getTransaction( + String group, String node, String txHash, boolean requireProof, RpcCallback callback); - public native void getTransactionReceipt( - String group, String node, String txHash, boolean requireProof, RpcCallback callback); + public native void getTransactionReceipt( + String group, String node, String txHash, boolean requireProof, RpcCallback callback); - public native void getBlockByHash( - String group, - String node, - String blockHash, - boolean onlyHeader, - boolean onlyTxHash, - RpcCallback callback); + public native void getBlockByHash( + String group, + String node, + String blockHash, + boolean onlyHeader, + boolean onlyTxHash, + RpcCallback callback); - public native void getBlockByNumber( - String group, - String node, - long blockNumber, - boolean onlyHeader, - boolean onlyTxHash, - RpcCallback callback); + public native void getBlockByNumber( + String group, + String node, + long blockNumber, + boolean onlyHeader, + boolean onlyTxHash, + RpcCallback callback); - public native void getBlockHashByNumber( - String group, String node, long blockNumber, RpcCallback callback); + public native void getBlockHashByNumber( + String group, String node, long blockNumber, RpcCallback callback); - public native long getBlockLimit(String group); + public native long getBlockLimit(String group); - public native void getBlockNumber(String group, String node, RpcCallback callback); + public native void getBlockNumber(String group, String node, RpcCallback callback); - public native void getCode( - String group, String node, String contractAddress, RpcCallback callback); + public native void getCode( + String group, String node, String contractAddress, RpcCallback callback); - public native void getSealerList(String group, String node, RpcCallback callback); + public native void getSealerList(String group, String node, RpcCallback callback); - public native void getObserverList(String group, String node, RpcCallback callback); + public native void getObserverList(String group, String node, RpcCallback callback); - public native void getPbftView(String group, String node, RpcCallback callback); + public native void getPbftView(String group, String node, RpcCallback callback); - public native void getPendingTxSize(String group, String node, RpcCallback callback); + public native void getPendingTxSize(String group, String node, RpcCallback callback); - public native void getSyncStatus(String group, String node, RpcCallback callback); + public native void getSyncStatus(String group, String node, RpcCallback callback); - public native void getSystemConfigByKey( - String group, String node, String keyValue, RpcCallback callback); + public native void getSystemConfigByKey( + String group, String node, String keyValue, RpcCallback callback); - public native void getTotalTransactionCount(String group, String node, RpcCallback callback); + public native void getTotalTransactionCount(String group, String node, RpcCallback callback); - public native void getGroupPeers(String group, RpcCallback callback); + public native void getGroupPeers(String group, RpcCallback callback); - public native void getPeers(RpcCallback callback); + public native void getPeers(RpcCallback callback); - public native void getGroupList(RpcCallback callback); + public native void getGroupList(RpcCallback callback); - public native void getGroupInfo(String group, RpcCallback callback); + public native void getGroupInfo(String group, RpcCallback callback); - public native void getGroupInfoList(RpcCallback callback); + public native void getGroupInfoList(RpcCallback callback); - public native void getGroupNodeInfo(String group, String node, RpcCallback callback); + public native void getGroupNodeInfo(String group, String node, RpcCallback callback); - // ----------------------------- RPC interface end -------------------------------------- + // ----------------------------- RPC interface end -------------------------------------- } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcServiceJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcServiceJniObj.java index b7c167f3e..39e4c2dbe 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcServiceJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/rpc/RpcServiceJniObj.java @@ -16,17 +16,17 @@ package org.fisco.bcos.sdk.jni.rpc; public class RpcServiceJniObj { - // ----------------------------- Tars RPC interface begin -------------------------------------- - public static native String sendTransaction( - long sdk, - long keyPair, - String group, - String node, - String to, - byte[] data, - String abi, - int attribute, - String extraData, - RpcCallback callback); - // ----------------------------- Tars RPC interface end -------------------------------------- + // ----------------------------- Tars RPC interface begin -------------------------------------- + public static native String sendTransaction( + long sdk, + long keyPair, + String group, + String node, + String to, + byte[] data, + String abi, + int attribute, + String extraData, + RpcCallback callback); + // ----------------------------- Tars RPC interface end -------------------------------------- } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/keypair/KeyPairJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/keypair/KeyPairJniObj.java index 5d1b02ff2..7d7493e48 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/keypair/KeyPairJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/keypair/KeyPairJniObj.java @@ -5,30 +5,30 @@ public class KeyPairJniObj { - static { - JniLibLoader.loadJniLibrary(); - } + static { + JniLibLoader.loadJniLibrary(); + } - public static native long createJniKeyPair(int cryptoType) throws JniException; + public static native long createJniKeyPair(int cryptoType) throws JniException; - public static native long createHsmKeyPair(String hsmLibPath) throws JniException; + public static native long createHsmKeyPair(String hsmLibPath) throws JniException; - public static native long createJniKeyPair(int cryptoType, byte[] priKeyBytes) - throws JniException; + public static native long createJniKeyPair(int cryptoType, byte[] priKeyBytes) + throws JniException; - public static native long createHsmKeyPair(byte[] priKeyBytes, String hsmLibPath) - throws JniException; + public static native long createHsmKeyPair(byte[] priKeyBytes, String hsmLibPath) + throws JniException; - public static native long useHsmKeyPair(int keyIndex, String password, String hsmLibPath) - throws JniException; + public static native long useHsmKeyPair(int keyIndex, String password, String hsmLibPath) + throws JniException; - public static native String getJniKeyPairAddress(long keyPair); + public static native String getJniKeyPairAddress(long keyPair); - public static native String getJniKeyPairPubKey(long keyPair); + public static native String getJniKeyPairPubKey(long keyPair); - public static native String getJniKeyPairPrivateKey(long keyPair); + public static native String getJniKeyPairPrivateKey(long keyPair); - public static native int getJniKeyPairCryptoType(long keyPair); + public static native int getJniKeyPairCryptoType(long keyPair); - public static native void destroyJniKeyPair(long keyPair); + public static native void destroyJniKeyPair(long keyPair); } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/receipt/ReceiptBuilderJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/receipt/ReceiptBuilderJniObj.java index 1b2ff5554..ae44a2ce3 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/receipt/ReceiptBuilderJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/receipt/ReceiptBuilderJniObj.java @@ -4,54 +4,56 @@ import org.fisco.bcos.sdk.jni.common.JniLibLoader; public class ReceiptBuilderJniObj { - static { - JniLibLoader.loadJniLibrary(); - } - - /** - * @param gasUsed gas used - * @param contractAddress contract address - * @param output receipt output data - * @param blockNumber block number - * @return Receipt Data pointer - */ - public static native long createReceiptData( - String gasUsed, String contractAddress, String output, long blockNumber) throws JniException; - - /** - * Create a Receipt Data object with json - * - * @param json version: number gasUsed: string contractAddress: string status: number output: hex - * string logEntries: array blockNumber: number logEntry: address: string topic: - * array data: hex string - * @return Receipt Data pointer - */ - public static native long createReceiptDataWithJson(String json) throws JniException; - - /** @param ReceiptData Receipt Data pointer */ - public static native void destroyReceiptData(long ReceiptData) throws JniException; - - /** - * @param ReceiptData Receipt Data pointer - * @return encoded string - */ - public static native String encodeReceiptData(long ReceiptData) throws JniException; - - /** - * @param ReceiptDataHex ReceiptData hex string - * @return ReceiptData json string - * @throws JniException throw when cpp sdk exception - */ - public static native String decodeReceiptDataToJsonObj(String ReceiptDataHex) throws JniException; - - /** - * @param cryptoType crypto type - * @param ReceiptData Receipt Data pointer - * @return Hash hex string - */ - public static native String calcReceiptDataHash(int cryptoType, long ReceiptData) - throws JniException; - - public static native String calcReceiptDataHashWithJson(int cryptoType, String json) - throws JniException; + static { + JniLibLoader.loadJniLibrary(); + } + + /** + * @param gasUsed gas used + * @param contractAddress contract address + * @param output receipt output data + * @param blockNumber block number + * @return Receipt Data pointer + */ + public static native long createReceiptData( + String gasUsed, String contractAddress, String output, long blockNumber) + throws JniException; + + /** + * Create a Receipt Data object with json + * + * @param json version: number gasUsed: string contractAddress: string status: number output: + * hex string logEntries: array blockNumber: number logEntry: address: string + * topic: array data: hex string + * @return Receipt Data pointer + */ + public static native long createReceiptDataWithJson(String json) throws JniException; + + /** @param ReceiptData Receipt Data pointer */ + public static native void destroyReceiptData(long ReceiptData) throws JniException; + + /** + * @param ReceiptData Receipt Data pointer + * @return encoded string + */ + public static native String encodeReceiptData(long ReceiptData) throws JniException; + + /** + * @param ReceiptDataHex ReceiptData hex string + * @return ReceiptData json string + * @throws JniException throw when cpp sdk exception + */ + public static native String decodeReceiptDataToJsonObj(String ReceiptDataHex) + throws JniException; + + /** + * @param cryptoType crypto type + * @param ReceiptData Receipt Data pointer + * @return Hash hex string + */ + public static native String calcReceiptDataHash(int cryptoType, long ReceiptData) + throws JniException; + + public static native String calcReceiptDataHashWithJson(int cryptoType, String json) + throws JniException; } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/signature/SignatureJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/signature/SignatureJniObj.java index 14e81a50b..33fef81e8 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/signature/SignatureJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/signature/SignatureJniObj.java @@ -5,18 +5,18 @@ public class SignatureJniObj { - static { - JniLibLoader.loadJniLibrary(); - } + static { + JniLibLoader.loadJniLibrary(); + } - public static native byte[] sign(long keyPair, String transactionDataHash, String hsmLibPath) - throws JniException; + public static native byte[] sign(long keyPair, String transactionDataHash, String hsmLibPath) + throws JniException; - public static native boolean verify( - int cryptoType, - byte[] priKeyBytes, - String transactionDataHash, - String transactionDataHashSignedData, - String hsmLibPath) - throws JniException; + public static native boolean verify( + int cryptoType, + byte[] priKeyBytes, + String transactionDataHash, + String transactionDataHashSignedData, + String hsmLibPath) + throws JniException; } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderJniObj.java index d0bea21d9..4e972478f 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderJniObj.java @@ -5,157 +5,158 @@ public class TransactionBuilderJniObj { - static { - JniLibLoader.loadJniLibrary(); - } - - /** - * @param groupID group id - * @param chainID chain id - * @param to contract address, which calling to - * @param data tx input data - * @param abi ABI json string, should add it when deploy - * @param blockLimit block limit - * @return Transaction Data pointer - */ - public static native long createTransactionData( - String groupID, String chainID, String to, String data, String abi, long blockLimit) - throws JniException; - - /** - * Create a Transaction Data object with json - * - * @param json version:number groupID:string chainID:string to:string data:hex string abi:string - * blockLimit:number nonce:string - * @return Transaction Data pointer - */ - public static native long createTransactionDataWithJson(String json) throws JniException; - - /** @param transactionData Transaction Data pointer */ - public static native void destroyTransactionData(long transactionData) throws JniException; - - /** - * @param transactionData Transaction Data pointer - * @return encoded string - */ - public static native String encodeTransactionData(long transactionData) throws JniException; - - /** - * @param transactionDataHex transactionData hex string - * @return transactionData json string - * @throws JniException throw when cpp sdk exception - */ - public static native String decodeTransactionDataToJsonObj(String transactionDataHex) - throws JniException; - - /** - * @param cryptoType crypto type - * @param transactionData Transaction Data pointer - * @return Hash hex string - */ - public static native String calcTransactionDataHash(int cryptoType, long transactionData) - throws JniException; - - /** - * Decode transaction hex string to Transaction object raw pointer - * - * @param transactionHex encoded transaction hex string - * @return Transaction object pointer - */ - public static native long decodeTransaction(String transactionHex) throws JniException; - - /** - * Decode transaction hex string to Transaction object json string - * - * @param transactionHex encoded transaction hex string - * @return Transaction object json string - */ - public static native String decodeTransactionToJsonObj(String transactionHex) throws JniException; - - /** @param transaction Transaction pointer */ - public static native void destroyTransaction(long transaction) throws JniException; - - /** - * @param keyPair KeyPair pointer - * @param transactionDataHash transaction data hash hex string - * @return signed tx string - */ - public static native String signTransactionDataHash(long keyPair, String transactionDataHash) - throws JniException; - - /** - * @param transactionData Transaction Data pointer - * @param transactionDataHashSignedData signed tx data string - * @param transactionDataHash transaction data hash hex string - * @param attribute TransactionAttribute - * @return signed tx string - */ - public static native String createSignedTransaction( - long transactionData, - String transactionDataHashSignedData, - String transactionDataHash, - int attribute) - throws JniException; - - /** - * @param transactionData - * @param transactionDataHashSignedData - * @param transactionDataHash - * @param attribute - * @param extraData - * @return - */ - public static native String createSignedTransaction( - long transactionData, - String transactionDataHashSignedData, - String transactionDataHash, - int attribute, - String extraData) - throws JniException; - - /** - * @param keyPair - * @param groupID - * @param chainID - * @param to - * @param data - * @param blockLimit - * @param attribute - * @return - * @throws JniException - */ - public static native TxPair createSignedTransaction( - long keyPair, - String groupID, - String chainID, - String to, - String data, - String abi, - long blockLimit, - int attribute) - throws JniException; - - /** - * @param keyPair - * @param groupID - * @param chainID - * @param to - * @param data - * @param blockLimit - * @param attribute - * @param extraData - * @return - * @throws JniException - */ - public static native TxPair createSignedTransaction( - long keyPair, - String groupID, - String chainID, - String to, - String data, - String abi, - long blockLimit, - int attribute, - String extraData) - throws JniException; + static { + JniLibLoader.loadJniLibrary(); + } + + /** + * @param groupID group id + * @param chainID chain id + * @param to contract address, which calling to + * @param data tx input data + * @param abi ABI json string, should add it when deploy + * @param blockLimit block limit + * @return Transaction Data pointer + */ + public static native long createTransactionData( + String groupID, String chainID, String to, String data, String abi, long blockLimit) + throws JniException; + + /** + * Create a Transaction Data object with json + * + * @param json version:number groupID:string chainID:string to:string data:hex string abi:string + * blockLimit:number nonce:string + * @return Transaction Data pointer + */ + public static native long createTransactionDataWithJson(String json) throws JniException; + + /** @param transactionData Transaction Data pointer */ + public static native void destroyTransactionData(long transactionData) throws JniException; + + /** + * @param transactionData Transaction Data pointer + * @return encoded string + */ + public static native String encodeTransactionData(long transactionData) throws JniException; + + /** + * @param transactionDataHex transactionData hex string + * @return transactionData json string + * @throws JniException throw when cpp sdk exception + */ + public static native String decodeTransactionDataToJsonObj(String transactionDataHex) + throws JniException; + + /** + * @param cryptoType crypto type + * @param transactionData Transaction Data pointer + * @return Hash hex string + */ + public static native String calcTransactionDataHash(int cryptoType, long transactionData) + throws JniException; + + /** + * Decode transaction hex string to Transaction object raw pointer + * + * @param transactionHex encoded transaction hex string + * @return Transaction object pointer + */ + public static native long decodeTransaction(String transactionHex) throws JniException; + + /** + * Decode transaction hex string to Transaction object json string + * + * @param transactionHex encoded transaction hex string + * @return Transaction object json string + */ + public static native String decodeTransactionToJsonObj(String transactionHex) + throws JniException; + + /** @param transaction Transaction pointer */ + public static native void destroyTransaction(long transaction) throws JniException; + + /** + * @param keyPair KeyPair pointer + * @param transactionDataHash transaction data hash hex string + * @return signed tx string + */ + public static native String signTransactionDataHash(long keyPair, String transactionDataHash) + throws JniException; + + /** + * @param transactionData Transaction Data pointer + * @param transactionDataHashSignedData signed tx data string + * @param transactionDataHash transaction data hash hex string + * @param attribute TransactionAttribute + * @return signed tx string + */ + public static native String createSignedTransaction( + long transactionData, + String transactionDataHashSignedData, + String transactionDataHash, + int attribute) + throws JniException; + + /** + * @param transactionData + * @param transactionDataHashSignedData + * @param transactionDataHash + * @param attribute + * @param extraData + * @return + */ + public static native String createSignedTransaction( + long transactionData, + String transactionDataHashSignedData, + String transactionDataHash, + int attribute, + String extraData) + throws JniException; + + /** + * @param keyPair + * @param groupID + * @param chainID + * @param to + * @param data + * @param blockLimit + * @param attribute + * @return + * @throws JniException + */ + public static native TxPair createSignedTransaction( + long keyPair, + String groupID, + String chainID, + String to, + String data, + String abi, + long blockLimit, + int attribute) + throws JniException; + + /** + * @param keyPair + * @param groupID + * @param chainID + * @param to + * @param data + * @param blockLimit + * @param attribute + * @param extraData + * @return + * @throws JniException + */ + public static native TxPair createSignedTransaction( + long keyPair, + String groupID, + String chainID, + String to, + String data, + String abi, + long blockLimit, + int attribute, + String extraData) + throws JniException; } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderServiceJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderServiceJniObj.java index f920ba120..227b249d3 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderServiceJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderServiceJniObj.java @@ -5,48 +5,48 @@ public class TransactionBuilderServiceJniObj { - static { - JniLibLoader.loadJniLibrary(); - } + static { + JniLibLoader.loadJniLibrary(); + } - /** - * @param sdk - * @param groupID - * @return - * @throws JniException - */ - public static native long createTransactionBuilderService(long sdk, String groupID) - throws JniException; + /** + * @param sdk + * @param groupID + * @return + * @throws JniException + */ + public static native long createTransactionBuilderService(long sdk, String groupID) + throws JniException; - /** - * @param txBuilderService - * @throws JniException - */ - public static native void destroyTransactionBuilderService(long txBuilderService) - throws JniException; + /** + * @param txBuilderService + * @throws JniException + */ + public static native void destroyTransactionBuilderService(long txBuilderService) + throws JniException; - /** - * @param txBuilderService - * @param to - * @param data - * @param abi - * @return - * @throws JniException - */ - public static native long createTransactionData( - long txBuilderService, String to, String data, String abi) throws JniException; + /** + * @param txBuilderService + * @param to + * @param data + * @param abi + * @return + * @throws JniException + */ + public static native long createTransactionData( + long txBuilderService, String to, String data, String abi) throws JniException; - /** - * @param txBuilderService - * @param keyPair - * @param to - * @param data - * @param abi - * @param attribute - * @return - * @throws JniException - */ - public static native TxPair createSignedTransaction( - long txBuilderService, long keyPair, String to, String data, String abi, int attribute) - throws JniException; + /** + * @param txBuilderService + * @param keyPair + * @param to + * @param data + * @param abi + * @param attribute + * @return + * @throws JniException + */ + public static native TxPair createSignedTransaction( + long txBuilderService, long keyPair, String to, String data, String abi, int attribute) + throws JniException; } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderV1JniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderV1JniObj.java index 88e0499c0..5b665a2f9 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderV1JniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionBuilderV1JniObj.java @@ -5,239 +5,239 @@ public class TransactionBuilderV1JniObj extends TransactionBuilderJniObj { - static { - JniLibLoader.loadJniLibrary(); - } + static { + JniLibLoader.loadJniLibrary(); + } - /** - * create transaction data with version 1 by default - * - * @param groupID group id - * @param chainID chain id - * @param to contract address, if it is a contract creation transaction, it can be empty - * @param nonce random number to avoid duplicate transactions, if it is empty or null, then it - * will generate one - * @param input encoded contract method and params - * @param abi contract abi, only create contract need - * @param blockLimit block limit - * @param value transfer value - * @param gasPrice gas price - * @param gasLimit gas limit - * @return void* transaction data pointer, you should release it after use, check - * `destroyTransactionData` - * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later - */ - public static native long createTransactionData( - String groupID, - String chainID, - String to, - String nonce, - byte[] input, - String abi, - long blockLimit, - String value, - String gasPrice, - long gasLimit) - throws JniException; + /** + * create transaction data with version 1 by default + * + * @param groupID group id + * @param chainID chain id + * @param to contract address, if it is a contract creation transaction, it can be empty + * @param nonce random number to avoid duplicate transactions, if it is empty or null, then it + * will generate one + * @param input encoded contract method and params + * @param abi contract abi, only create contract need + * @param blockLimit block limit + * @param value transfer value + * @param gasPrice gas price + * @param gasLimit gas limit + * @return void* transaction data pointer, you should release it after use, check + * `destroyTransactionData` + * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later + */ + public static native long createTransactionData( + String groupID, + String chainID, + String to, + String nonce, + byte[] input, + String abi, + long blockLimit, + String value, + String gasPrice, + long gasLimit) + throws JniException; - /** - * create eip1559 transaction data with version 1 by default - * - * @param groupID group id - * @param chainID chain id - * @param to contract address, if it is a contract creation transaction, it can be empty - * @param nonce random number to avoid duplicate transactions, if it is empty or null, then it - * will generate one - * @param input encoded contract method and params - * @param abi contract abi, only create contract need - * @param blockLimit block limit - * @param value transfer value - * @param gasLimit gas limit - * @param maxFeePerGas max fee per gas - * @param maxPriorityFeePerGas max priority fee per gas - * @return void* transaction data pointer, you should release it after use, check - * `destroyTransactionData` - * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later - */ - public static native long createEIP1559TransactionData( - String groupID, - String chainID, - String to, - String nonce, - byte[] input, - String abi, - long blockLimit, - String value, - long gasLimit, - String maxFeePerGas, - String maxPriorityFeePerGas) - throws JniException; + /** + * create eip1559 transaction data with version 1 by default + * + * @param groupID group id + * @param chainID chain id + * @param to contract address, if it is a contract creation transaction, it can be empty + * @param nonce random number to avoid duplicate transactions, if it is empty or null, then it + * will generate one + * @param input encoded contract method and params + * @param abi contract abi, only create contract need + * @param blockLimit block limit + * @param value transfer value + * @param gasLimit gas limit + * @param maxFeePerGas max fee per gas + * @param maxPriorityFeePerGas max priority fee per gas + * @return void* transaction data pointer, you should release it after use, check + * `destroyTransactionData` + * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later + */ + public static native long createEIP1559TransactionData( + String groupID, + String chainID, + String to, + String nonce, + byte[] input, + String abi, + long blockLimit, + String value, + long gasLimit, + String maxFeePerGas, + String maxPriorityFeePerGas) + throws JniException; - /** - * create transaction data with full fields - * - * @param cryptoType 0: keccak256, 1: sm3 - * @param version tx version, if version==1, then enable - * (value,gasPrice,gasLimit,maxFeePerGas,maxPriorityFeePerGas) fields - * @param groupID group id - * @param chainID chain id - * @param to contract address, if it is a contract creation transaction, it can be empty - * @param nonce nonce, random number to avoid duplicate transactions - * @param input encoded contract method and params - * @param abi contract abi, only create contract need - * @param blockLimit block limit - * @param value transfer value - * @param gasPrice gas price - * @param gasLimit gas limit - * @param maxFeePerGas max fee per gas - * @param maxPriorityFeePerGas max priority fee per gas - * @return const char* transaction data hash hex string - * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later - */ - public static native String calcTransactionDataHashWithFullFields( - int cryptoType, - TransactionVersion version, - String groupID, - String chainID, - String to, - String nonce, - byte[] input, - String abi, - long blockLimit, - String value, - String gasPrice, - long gasLimit, - String maxFeePerGas, - String maxPriorityFeePerGas) - throws JniException; + /** + * create transaction data with full fields + * + * @param cryptoType 0: keccak256, 1: sm3 + * @param version tx version, if version==1, then enable + * (value,gasPrice,gasLimit,maxFeePerGas,maxPriorityFeePerGas) fields + * @param groupID group id + * @param chainID chain id + * @param to contract address, if it is a contract creation transaction, it can be empty + * @param nonce nonce, random number to avoid duplicate transactions + * @param input encoded contract method and params + * @param abi contract abi, only create contract need + * @param blockLimit block limit + * @param value transfer value + * @param gasPrice gas price + * @param gasLimit gas limit + * @param maxFeePerGas max fee per gas + * @param maxPriorityFeePerGas max priority fee per gas + * @return const char* transaction data hash hex string + * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later + */ + public static native String calcTransactionDataHashWithFullFields( + int cryptoType, + TransactionVersion version, + String groupID, + String chainID, + String to, + String nonce, + byte[] input, + String abi, + long blockLimit, + String value, + String gasPrice, + long gasLimit, + String maxFeePerGas, + String maxPriorityFeePerGas) + throws JniException; - /** - * create transaction data with json string - * - * @param cryptoType 0: keccak256, 1: sm3 - * @param json transaction data json string - * @return const char* transaction data hash hex string - * @throws JniException if lack of some required fields, or some fields are invalid - * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later - */ - public static native String calcTransactionDataHashWithJson(int cryptoType, String json) - throws JniException; + /** + * create transaction data with json string + * + * @param cryptoType 0: keccak256, 1: sm3 + * @param json transaction data json string + * @return const char* transaction data hash hex string + * @throws JniException if lack of some required fields, or some fields are invalid + * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later + */ + public static native String calcTransactionDataHashWithJson(int cryptoType, String json) + throws JniException; - /** - * create encoded transaction data with external signature - * - * @param signature signature bytes array, if ECDSA, it is r||s||v, if SM2, it is r||s||pk - * @param txDataHash transactionData hash hex string - * @param version tx version, only support 0 and 1 now, if version==1, then enable - * (value,gasPrice,gasLimit,maxFeePerGas,maxPriorityFeePerGas) fields - * @param groupID group id - * @param chainID chain id - * @param to contract address, if it is a contract creation transaction, it can be empty - * @param nonce nonce, random number to avoid duplicate transactions - * @param input encoded contract method and params - * @param abi contract abi, only create contract need - * @param blockLimit block limit - * @param value transfer value - * @param gasPrice gas price - * @param gasLimit gas limit - * @param maxFeePerGas max fee per gas - * @param maxPriorityFeePerGas max priority fee per gas - * @param attribute transaction attribute - * @param extraData extra data in transaction - * @return const char* encoded transaction hex string - * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later - */ - public static native String createSignedTransactionWithSignature( - byte[] signature, - String txDataHash, - TransactionVersion version, - String groupID, - String chainID, - String to, - String nonce, - byte[] input, - String abi, - long blockLimit, - String value, - String gasPrice, - long gasLimit, - String maxFeePerGas, - String maxPriorityFeePerGas, - int attribute, - String extraData) - throws JniException; + /** + * create encoded transaction data with external signature + * + * @param signature signature bytes array, if ECDSA, it is r||s||v, if SM2, it is r||s||pk + * @param txDataHash transactionData hash hex string + * @param version tx version, only support 0 and 1 now, if version==1, then enable + * (value,gasPrice,gasLimit,maxFeePerGas,maxPriorityFeePerGas) fields + * @param groupID group id + * @param chainID chain id + * @param to contract address, if it is a contract creation transaction, it can be empty + * @param nonce nonce, random number to avoid duplicate transactions + * @param input encoded contract method and params + * @param abi contract abi, only create contract need + * @param blockLimit block limit + * @param value transfer value + * @param gasPrice gas price + * @param gasLimit gas limit + * @param maxFeePerGas max fee per gas + * @param maxPriorityFeePerGas max priority fee per gas + * @param attribute transaction attribute + * @param extraData extra data in transaction + * @return const char* encoded transaction hex string + * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later + */ + public static native String createSignedTransactionWithSignature( + byte[] signature, + String txDataHash, + TransactionVersion version, + String groupID, + String chainID, + String to, + String nonce, + byte[] input, + String abi, + long blockLimit, + String value, + String gasPrice, + long gasLimit, + String maxFeePerGas, + String maxPriorityFeePerGas, + int attribute, + String extraData) + throws JniException; - /** - * create transaction with full fields, with version 1 by default - * - * @param keyPair key pair pointer - * @param groupID group id - * @param chainID chain id - * @param to contract address, if it is a contract creation transaction, it can be empty - * @param nonce random number to avoid duplicate transactions, if it is empty or null, then it - * will generate one - * @param input encoded contract method and params - * @param abi contract abi, only create contract need - * @param blockLimit block limit - * @param value transfer value - * @param gasPrice gas price - * @param gasLimit gas limit - * @param attribute transaction attribute - * @param extraData extra data in transaction - * @return TxPair - * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later - */ - public static native TxPair createSignedTransactionWithFullFields( - long keyPair, - String groupID, - String chainID, - String to, - String nonce, - byte[] input, - String abi, - long blockLimit, - String value, - String gasPrice, - long gasLimit, - int attribute, - String extraData) - throws JniException; + /** + * create transaction with full fields, with version 1 by default + * + * @param keyPair key pair pointer + * @param groupID group id + * @param chainID chain id + * @param to contract address, if it is a contract creation transaction, it can be empty + * @param nonce random number to avoid duplicate transactions, if it is empty or null, then it + * will generate one + * @param input encoded contract method and params + * @param abi contract abi, only create contract need + * @param blockLimit block limit + * @param value transfer value + * @param gasPrice gas price + * @param gasLimit gas limit + * @param attribute transaction attribute + * @param extraData extra data in transaction + * @return TxPair + * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later + */ + public static native TxPair createSignedTransactionWithFullFields( + long keyPair, + String groupID, + String chainID, + String to, + String nonce, + byte[] input, + String abi, + long blockLimit, + String value, + String gasPrice, + long gasLimit, + int attribute, + String extraData) + throws JniException; - /** - * create eip1559 transaction with full fields, with version 1 by default - * - * @param keyPair key pair pointer - * @param groupID group id - * @param chainID chain id - * @param to contract address, if it is a contract creation transaction, it can be empty - * @param nonce random number to avoid duplicate transactions, if it is empty or null, then it - * will generate one - * @param input encoded contract method and params - * @param abi contract abi, only create contract need - * @param blockLimit block limit - * @param value transfer value - * @param gasLimit gas limit - * @param maxFeePerGas max fee per gas - * @param maxPriorityFeePerGas max priority fee per gas - * @param attribute transaction attribute - * @param extraData extra data in transaction - * @return TxPair - * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later - */ - public static native TxPair createSignedEIP1559TransactionWithFullFields( - long keyPair, - String groupID, - String chainID, - String to, - String nonce, - byte[] input, - String abi, - long blockLimit, - String value, - String maxFeePerGas, - String maxPriorityFeePerGas, - long gasLimit, - int attribute, - String extraData) - throws JniException; + /** + * create eip1559 transaction with full fields, with version 1 by default + * + * @param keyPair key pair pointer + * @param groupID group id + * @param chainID chain id + * @param to contract address, if it is a contract creation transaction, it can be empty + * @param nonce random number to avoid duplicate transactions, if it is empty or null, then it + * will generate one + * @param input encoded contract method and params + * @param abi contract abi, only create contract need + * @param blockLimit block limit + * @param value transfer value + * @param gasLimit gas limit + * @param maxFeePerGas max fee per gas + * @param maxPriorityFeePerGas max priority fee per gas + * @param attribute transaction attribute + * @param extraData extra data in transaction + * @return TxPair + * @apiNote version 1 transaction only supported in FISCO BCOS 3.6.0 and later + */ + public static native TxPair createSignedEIP1559TransactionWithFullFields( + long keyPair, + String groupID, + String chainID, + String to, + String nonce, + byte[] input, + String abi, + long blockLimit, + String value, + String maxFeePerGas, + String maxPriorityFeePerGas, + long gasLimit, + int attribute, + String extraData) + throws JniException; } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionDataV1.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionDataV1.java index 123d71833..60ce291e9 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionDataV1.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionDataV1.java @@ -1,74 +1,74 @@ package org.fisco.bcos.sdk.jni.utilities.tx; public class TransactionDataV1 extends TransactionData { - protected String value; - protected String gasPrice; - protected long gasLimit; - protected String maxFeePerGas; - protected String maxPriorityFeePerGas; - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public TransactionDataV1 buildValue(String value) { - this.value = value; - return this; - } - - public String getGasPrice() { - return gasPrice; - } - - public void setGasPrice(String gasPrice) { - this.gasPrice = gasPrice; - } - - public TransactionDataV1 buildGasPrice(String gasPrice) { - this.gasPrice = gasPrice; - return this; - } - - public long getGasLimit() { - return gasLimit; - } - - public void setGasLimit(long gasLimit) { - this.gasLimit = gasLimit; - } - - public TransactionDataV1 buildGasLimit(long gasLimit) { - this.gasLimit = gasLimit; - return this; - } - - public String getMaxFeePerGas() { - return maxFeePerGas; - } - - public void setMaxFeePerGas(String maxFeePerGas) { - this.maxFeePerGas = maxFeePerGas; - } - - public TransactionDataV1 buildMaxFeePerGas(String maxFeePerGas) { - this.maxFeePerGas = maxFeePerGas; - return this; - } - - public String getMaxPriorityFeePerGas() { - return maxPriorityFeePerGas; - } - - public void setMaxPriorityFeePerGas(String maxPriorityFeePerGas) { - this.maxPriorityFeePerGas = maxPriorityFeePerGas; - } - - public TransactionDataV1 buildMaxPriorityFeePerGas(String maxPriorityFeePerGas) { - this.maxPriorityFeePerGas = maxPriorityFeePerGas; - return this; - } + protected String value; + protected String gasPrice; + protected long gasLimit; + protected String maxFeePerGas; + protected String maxPriorityFeePerGas; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public TransactionDataV1 buildValue(String value) { + this.value = value; + return this; + } + + public String getGasPrice() { + return gasPrice; + } + + public void setGasPrice(String gasPrice) { + this.gasPrice = gasPrice; + } + + public TransactionDataV1 buildGasPrice(String gasPrice) { + this.gasPrice = gasPrice; + return this; + } + + public long getGasLimit() { + return gasLimit; + } + + public void setGasLimit(long gasLimit) { + this.gasLimit = gasLimit; + } + + public TransactionDataV1 buildGasLimit(long gasLimit) { + this.gasLimit = gasLimit; + return this; + } + + public String getMaxFeePerGas() { + return maxFeePerGas; + } + + public void setMaxFeePerGas(String maxFeePerGas) { + this.maxFeePerGas = maxFeePerGas; + } + + public TransactionDataV1 buildMaxFeePerGas(String maxFeePerGas) { + this.maxFeePerGas = maxFeePerGas; + return this; + } + + public String getMaxPriorityFeePerGas() { + return maxPriorityFeePerGas; + } + + public void setMaxPriorityFeePerGas(String maxPriorityFeePerGas) { + this.maxPriorityFeePerGas = maxPriorityFeePerGas; + } + + public TransactionDataV1 buildMaxPriorityFeePerGas(String maxPriorityFeePerGas) { + this.maxPriorityFeePerGas = maxPriorityFeePerGas; + return this; + } } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionDataV2.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionDataV2.java index 38c2d677f..8bba99b5d 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionDataV2.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionDataV2.java @@ -1,18 +1,18 @@ package org.fisco.bcos.sdk.jni.utilities.tx; public class TransactionDataV2 extends TransactionDataV1 { - byte[] extension; + byte[] extension; - public byte[] getExtension() { - return extension; - } + public byte[] getExtension() { + return extension; + } - public void setExtension(byte[] extension) { - this.extension = extension; - } + public void setExtension(byte[] extension) { + this.extension = extension; + } - public TransactionDataV2 buildExtension(byte[] extension) { - this.extension = extension; - return this; - } + public TransactionDataV2 buildExtension(byte[] extension) { + this.extension = extension; + return this; + } } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionStructBuilderJniObj.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionStructBuilderJniObj.java index 002651271..396e3b277 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionStructBuilderJniObj.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionStructBuilderJniObj.java @@ -5,97 +5,98 @@ public class TransactionStructBuilderJniObj { - static { - JniLibLoader.loadJniLibrary(); - } + static { + JniLibLoader.loadJniLibrary(); + } - /** - * @param transactionData Transaction Data struct - * @return Hexed Transaction Data - */ - @Deprecated - public static native String encodeTransactionDataStruct(TransactionData transactionData) - throws JniException; + /** + * @param transactionData Transaction Data struct + * @return Hexed Transaction Data + */ + @Deprecated + public static native String encodeTransactionDataStruct(TransactionData transactionData) + throws JniException; - /** - * @param transactionData Transaction Data struct - * @return Json Transaction Data - */ - @Deprecated - public static native String encodeTransactionDataStructToJson(TransactionData transactionData) - throws JniException; + /** + * @param transactionData Transaction Data struct + * @return Json Transaction Data + */ + @Deprecated + public static native String encodeTransactionDataStructToJson(TransactionData transactionData) + throws JniException; - /** - * @param transactionDataHex transactionData hex string - * @return TxData - */ - @Deprecated - public static native TransactionData decodeTransactionDataStruct(String transactionDataHex) - throws JniException; + /** + * @param transactionDataHex transactionData hex string + * @return TxData + */ + @Deprecated + public static native TransactionData decodeTransactionDataStruct(String transactionDataHex) + throws JniException; - /** - * @param transactionDataHex transactionData hex string - * @return TxData - */ - @Deprecated - public static native TransactionDataV1 decodeTransactionDataStructV1(String transactionDataHex) - throws JniException; + /** + * @param transactionDataHex transactionData hex string + * @return TxData + */ + @Deprecated + public static native TransactionDataV1 decodeTransactionDataStructV1(String transactionDataHex) + throws JniException; - /** - * @param cryptoType crypto type - * @param transactionData Transaction Data struct - * @return Hash hex string - */ - public static native String calcTransactionDataStructHash( - int cryptoType, TransactionData transactionData) throws JniException; + /** + * @param cryptoType crypto type + * @param transactionData Transaction Data struct + * @return Hash hex string + */ + public static native String calcTransactionDataStructHash( + int cryptoType, TransactionData transactionData) throws JniException; - /** - * @param transactionData - * @param signature - * @param transactionDataHash - * @param attribute - * @param extraData - * @return signedTransaction string - */ - public static native String createEncodedTransaction( - TransactionData transactionData, - String signature, - String transactionDataHash, - int attribute, - String extraData) - throws JniException; + /** + * @param transactionData + * @param signature + * @param transactionDataHash + * @param attribute + * @param extraData + * @return signedTransaction string + */ + public static native String createEncodedTransaction( + TransactionData transactionData, + String signature, + String transactionDataHash, + int attribute, + String extraData) + throws JniException; - /** - * @param transaction Transaction struct - * @return Hexed Transaction - */ - public static native String encodeTransactionStruct(Transaction transaction) throws JniException; + /** + * @param transaction Transaction struct + * @return Hexed Transaction + */ + public static native String encodeTransactionStruct(Transaction transaction) + throws JniException; - /** - * @param transaction Transaction struct - * @return Json Transaction - */ - public static native String encodeTransactionStructToJson(Transaction transaction) - throws JniException; + /** + * @param transaction Transaction struct + * @return Json Transaction + */ + public static native String encodeTransactionStructToJson(Transaction transaction) + throws JniException; - /** - * @param transactionHex transaction hex string - * @return Tx - */ - public static native Transaction decodeTransactionStruct(String transactionHex) - throws JniException; + /** + * @param transactionHex transaction hex string + * @return Tx + */ + public static native Transaction decodeTransactionStruct(String transactionHex) + throws JniException; - /** - * @param transactionHex transaction hex string - * @return Tx - */ - public static native Transaction decodeTransactionStructV1(String transactionHex) - throws JniException; + /** + * @param transactionHex transaction hex string + * @return Tx + */ + public static native Transaction decodeTransactionStructV1(String transactionHex) + throws JniException; - /** - * @param transactionHex transaction hex string - * @return Tx - */ - public static native Transaction decodeTransactionStructV2(String transactionHex) - throws JniException; + /** + * @param transactionHex transaction hex string + * @return Tx + */ + public static native Transaction decodeTransactionStructV2(String transactionHex) + throws JniException; } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionVersion.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionVersion.java index ed5c4c3b2..60cc90244 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionVersion.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TransactionVersion.java @@ -1,31 +1,31 @@ package org.fisco.bcos.sdk.jni.utilities.tx; public enum TransactionVersion { - V0(0), - V1(1), + V0(0), + V1(1), - V2(2); + V2(2); - private int value; + private int value; - TransactionVersion(int value) { - this.value = value; - } + TransactionVersion(int value) { + this.value = value; + } - public int getValue() { - return value; - } + public int getValue() { + return value; + } - public static TransactionVersion fromInt(int value) { - switch (value) { - case 0: - return V0; - case 1: - return V1; - case 2: - return V2; - default: - return V0; + public static TransactionVersion fromInt(int value) { + switch (value) { + case 0: + return V0; + case 1: + return V1; + case 2: + return V2; + default: + return V0; + } } - } } diff --git a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TxPair.java b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TxPair.java index d44d6f961..d0a962593 100644 --- a/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TxPair.java +++ b/bindings/java/jni/src/main/java/org/fisco/bcos/sdk/jni/utilities/tx/TxPair.java @@ -1,29 +1,29 @@ package org.fisco.bcos.sdk.jni.utilities.tx; public class TxPair { - private String txHash; - private String signedTx; + private String txHash; + private String signedTx; - public TxPair() {} + public TxPair() {} - public TxPair(String txHash, String signedHash) { - this.txHash = txHash; - this.signedTx = signedHash; - } + public TxPair(String txHash, String signedHash) { + this.txHash = txHash; + this.signedTx = signedHash; + } - public String getTxHash() { - return txHash; - } + public String getTxHash() { + return txHash; + } - public void setTxHash(String txHash) { - this.txHash = txHash; - } + public void setTxHash(String txHash) { + this.txHash = txHash; + } - public String getSignedTx() { - return signedTx; - } + public String getSignedTx() { + return signedTx; + } - public void setSignedTx(String signedTx) { - this.signedTx = signedTx; - } + public void setSignedTx(String signedTx) { + this.signedTx = signedTx; + } } diff --git a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/Utility.java b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/Utility.java index 640c8528c..761fd19bc 100644 --- a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/Utility.java +++ b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/Utility.java @@ -9,61 +9,65 @@ import org.fisco.bcos.sdk.jni.utilities.tx.TransactionBuilderJniObj; public class Utility { - public static JniConfig newJniConfig(List peers) { - JniConfig jniConfig = new JniConfig(); - jniConfig.setPeers(peers); - jniConfig.setCertConfig(new JniConfig.CertConfig()); - jniConfig.setSmCertConfig(new JniConfig.SMCertConfig()); + public static JniConfig newJniConfig(List peers) { + JniConfig jniConfig = new JniConfig(); + jniConfig.setPeers(peers); + jniConfig.setCertConfig(new JniConfig.CertConfig()); + jniConfig.setSmCertConfig(new JniConfig.SMCertConfig()); - return jniConfig; - } + return jniConfig; + } - public static void main(String[] args) throws JniException { - JniLibLoader.loadJniLibrary(); + public static void main(String[] args) throws JniException { + JniLibLoader.loadJniLibrary(); - String rawJson = - "{\"abi\":\"\",\"blockLimit\":501,\"chainID\":\"chain0\",\"from\":\"0x3d20a4e26f41b57c2061e520c825fbfa5f321f22\",\"groupID\":\"group0\",\"hash\":\"0x0359a5588c5e9c9dcfd2f4ece850d6f4c41bc88e2c27cc051890f26ef0ef118f\",\"importTime\":1670467885565,\"input\":\"0x2fe99bdc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000574657374310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005746573743200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057465737433000000000000000000000000000000000000000000000000000000\",\"nonce\":\"82456994196425209985513938878262806289094428076435270713862099506789849517246\",\"signature\":\"0xd752fbe3218d6f0d4bdcbaf45875bba4a52f9af263badabc0ef93fa31f28d79b0779728b594c1212613a38daea8bdd36670777100b159ac537dfbd83e700d20901\",\"to\":\"0x6849f21d1e455e9f0712b1e99fa4fcd23758e8f1\",\"version\":0}\n"; - long transactionDataWithJson = TransactionBuilderJniObj.createTransactionDataWithJson(rawJson); - String hash = TransactionBuilderJniObj.calcTransactionDataHash(0, transactionDataWithJson); - if (!Objects.equals( - hash, "0x0359a5588c5e9c9dcfd2f4ece850d6f4c41bc88e2c27cc051890f26ef0ef118f")) { - throw new JniException("errorHash"); - } + String rawJson = + "{\"abi\":\"\",\"blockLimit\":501,\"chainID\":\"chain0\",\"from\":\"0x3d20a4e26f41b57c2061e520c825fbfa5f321f22\",\"groupID\":\"group0\",\"hash\":\"0x0359a5588c5e9c9dcfd2f4ece850d6f4c41bc88e2c27cc051890f26ef0ef118f\",\"importTime\":1670467885565,\"input\":\"0x2fe99bdc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000574657374310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005746573743200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057465737433000000000000000000000000000000000000000000000000000000\",\"nonce\":\"82456994196425209985513938878262806289094428076435270713862099506789849517246\",\"signature\":\"0xd752fbe3218d6f0d4bdcbaf45875bba4a52f9af263badabc0ef93fa31f28d79b0779728b594c1212613a38daea8bdd36670777100b159ac537dfbd83e700d20901\",\"to\":\"0x6849f21d1e455e9f0712b1e99fa4fcd23758e8f1\",\"version\":0}\n"; + long transactionDataWithJson = + TransactionBuilderJniObj.createTransactionDataWithJson(rawJson); + String hash = TransactionBuilderJniObj.calcTransactionDataHash(0, transactionDataWithJson); + if (!Objects.equals( + hash, "0x0359a5588c5e9c9dcfd2f4ece850d6f4c41bc88e2c27cc051890f26ef0ef118f")) { + throw new JniException("errorHash"); + } - String receiptJson = - "{\"blockNumber\":2,\"checksumContractAddress\":\"\",\"contractAddress\":\"\",\"from\":\"0x3d20a4e26f41b57c2061e520c825fbfa5f321f22\",\"gasUsed\":\"19413\",\"hash\":\"0xb59cfe6ef607b72a6bab515042e0882213d179bd421afba353e2259b2a6396e4\",\"input\":\"0x2fe99bdc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000574657374310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005746573743200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057465737433000000000000000000000000000000000000000000000000000000\",\"logEntries\":[{\"address\":\"6849f21d1e455e9f0712b1e99fa4fcd23758e8f1\",\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"topics\":[\"0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce\"]}],\"message\":\"\",\"output\":\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"status\":0,\"to\":\"0x6849f21d1e455e9f0712b1e99fa4fcd23758e8f1\",\"transactionHash\":\"0x0359a5588c5e9c9dcfd2f4ece850d6f4c41bc88e2c27cc051890f26ef0ef118f\",\"transactionProof\":null,\"version\":0}\n"; - long receiptDataWithJson = ReceiptBuilderJniObj.createReceiptDataWithJson(receiptJson); - String hash1 = ReceiptBuilderJniObj.calcReceiptDataHash(0, receiptDataWithJson); - if (!Objects.equals( - hash1, "0xb59cfe6ef607b72a6bab515042e0882213d179bd421afba353e2259b2a6396e4")) { - throw new JniException("errorHash1"); - } + String receiptJson = + "{\"blockNumber\":2,\"checksumContractAddress\":\"\",\"contractAddress\":\"\",\"from\":\"0x3d20a4e26f41b57c2061e520c825fbfa5f321f22\",\"gasUsed\":\"19413\",\"hash\":\"0xb59cfe6ef607b72a6bab515042e0882213d179bd421afba353e2259b2a6396e4\",\"input\":\"0x2fe99bdc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000574657374310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005746573743200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057465737433000000000000000000000000000000000000000000000000000000\",\"logEntries\":[{\"address\":\"6849f21d1e455e9f0712b1e99fa4fcd23758e8f1\",\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"topics\":[\"0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce\"]}],\"message\":\"\",\"output\":\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"status\":0,\"to\":\"0x6849f21d1e455e9f0712b1e99fa4fcd23758e8f1\",\"transactionHash\":\"0x0359a5588c5e9c9dcfd2f4ece850d6f4c41bc88e2c27cc051890f26ef0ef118f\",\"transactionProof\":null,\"version\":0}\n"; + long receiptDataWithJson = ReceiptBuilderJniObj.createReceiptDataWithJson(receiptJson); + String hash1 = ReceiptBuilderJniObj.calcReceiptDataHash(0, receiptDataWithJson); + if (!Objects.equals( + hash1, "0xb59cfe6ef607b72a6bab515042e0882213d179bd421afba353e2259b2a6396e4")) { + throw new JniException("errorHash1"); + } - String encodeTransactionData = - TransactionBuilderJniObj.encodeTransactionData(transactionDataWithJson); - String jsonObj = TransactionBuilderJniObj.decodeTransactionDataToJsonObj(encodeTransactionData); - long transactionDataWithJson1 = TransactionBuilderJniObj.createTransactionDataWithJson(jsonObj); - String hash2 = TransactionBuilderJniObj.calcTransactionDataHash(0, transactionDataWithJson1); - if (!Objects.equals( - hash2, "0x0359a5588c5e9c9dcfd2f4ece850d6f4c41bc88e2c27cc051890f26ef0ef118f")) { - throw new JniException("errorHash2"); - } + String encodeTransactionData = + TransactionBuilderJniObj.encodeTransactionData(transactionDataWithJson); + String jsonObj = + TransactionBuilderJniObj.decodeTransactionDataToJsonObj(encodeTransactionData); + long transactionDataWithJson1 = + TransactionBuilderJniObj.createTransactionDataWithJson(jsonObj); + String hash2 = + TransactionBuilderJniObj.calcTransactionDataHash(0, transactionDataWithJson1); + if (!Objects.equals( + hash2, "0x0359a5588c5e9c9dcfd2f4ece850d6f4c41bc88e2c27cc051890f26ef0ef118f")) { + throw new JniException("errorHash2"); + } - String encodeReceiptData = ReceiptBuilderJniObj.encodeReceiptData(receiptDataWithJson); - String receiptDataToJsonObj = - ReceiptBuilderJniObj.decodeReceiptDataToJsonObj(encodeReceiptData); - long receiptDataWithJson1 = - ReceiptBuilderJniObj.createReceiptDataWithJson(receiptDataToJsonObj); - String hash3 = ReceiptBuilderJniObj.calcReceiptDataHash(0, receiptDataWithJson1); - if (!Objects.equals( - hash3, "0xb59cfe6ef607b72a6bab515042e0882213d179bd421afba353e2259b2a6396e4")) { - throw new JniException("errorHash3"); - } + String encodeReceiptData = ReceiptBuilderJniObj.encodeReceiptData(receiptDataWithJson); + String receiptDataToJsonObj = + ReceiptBuilderJniObj.decodeReceiptDataToJsonObj(encodeReceiptData); + long receiptDataWithJson1 = + ReceiptBuilderJniObj.createReceiptDataWithJson(receiptDataToJsonObj); + String hash3 = ReceiptBuilderJniObj.calcReceiptDataHash(0, receiptDataWithJson1); + if (!Objects.equals( + hash3, "0xb59cfe6ef607b72a6bab515042e0882213d179bd421afba353e2259b2a6396e4")) { + throw new JniException("errorHash3"); + } - TransactionBuilderJniObj.destroyTransactionData(transactionDataWithJson); - TransactionBuilderJniObj.destroyTransactionData(transactionDataWithJson1); - ReceiptBuilderJniObj.destroyReceiptData(receiptDataWithJson); - ReceiptBuilderJniObj.destroyReceiptData(receiptDataWithJson1); - System.out.println("All good!"); - } + TransactionBuilderJniObj.destroyTransactionData(transactionDataWithJson); + TransactionBuilderJniObj.destroyTransactionData(transactionDataWithJson1); + ReceiptBuilderJniObj.destroyReceiptData(receiptDataWithJson); + ReceiptBuilderJniObj.destroyReceiptData(receiptDataWithJson1); + System.out.println("All good!"); + } } diff --git a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Broadcast.java b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Broadcast.java index 5492af8f0..e3b93b84a 100644 --- a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Broadcast.java +++ b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Broadcast.java @@ -8,36 +8,36 @@ import org.fisco.bcos.sdk.jni.test.Utility; public class Broadcast { - public static void usage() { - System.out.println("\tUsage: "); - System.out.println( - "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Broadcast ip:port topic msg"); - System.out.println("\tExample:"); - System.out.println( - "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Broadcast 127.0.0.1:20201 topic HelloWorld"); - System.exit(0); - } - - public static void main(String[] args) throws InterruptedException, JniException { - - if (args.length < 3) { - usage(); + public static void usage() { + System.out.println("\tUsage: "); + System.out.println( + "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Broadcast ip:port topic msg"); + System.out.println("\tExample:"); + System.out.println( + "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Broadcast 127.0.0.1:20201 topic HelloWorld"); + System.exit(0); } - String peer = args[0]; - String topic = args[1]; - String msg = args[2]; + public static void main(String[] args) throws InterruptedException, JniException { - JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(peer)); - jniConfig.setDisableSsl(true); + if (args.length < 3) { + usage(); + } - BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); - AmopJniObj amop = AmopJniObj.build(bcosSDKJni.getNativePointer()); - amop.start(); + String peer = args[0]; + String topic = args[1]; + String msg = args[2]; - while (true) { - amop.broadcastAmopMsg(topic, msg.getBytes()); - Thread.sleep(10000); + JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(peer)); + jniConfig.setDisableSsl(true); + + BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); + AmopJniObj amop = AmopJniObj.build(bcosSDKJni.getNativePointer()); + amop.start(); + + while (true) { + amop.broadcastAmopMsg(topic, msg.getBytes()); + Thread.sleep(10000); + } } - } } diff --git a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Pub.java b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Pub.java index 4edf27500..a8b81ff37 100644 --- a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Pub.java +++ b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Pub.java @@ -10,49 +10,49 @@ import org.slf4j.LoggerFactory; public class Pub { - private static final Logger logger = LoggerFactory.getLogger(Sub.class); - - public static void usage() { - System.out.println("\tUsage: "); - System.out.println( - "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Pub ip:port topic msg"); - System.out.println("\tExample:"); - System.out.println( - "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Pub 127.0.0.1:20201 topic HelloWorld"); - System.exit(0); - } - - public static void main(String[] args) throws InterruptedException, JniException { - - if (args.length < 3) { - usage(); + private static final Logger logger = LoggerFactory.getLogger(Sub.class); + + public static void usage() { + System.out.println("\tUsage: "); + System.out.println( + "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Pub ip:port topic msg"); + System.out.println("\tExample:"); + System.out.println( + "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Pub 127.0.0.1:20201 topic HelloWorld"); + System.exit(0); } - String peer = args[0]; - String topic = args[1]; - String msg = args[2]; - - JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(peer)); - jniConfig.setDisableSsl(true); - - BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); - System.out.println("BcosSDK build"); - AmopJniObj amop = AmopJniObj.build(bcosSDKJni.getNativePointer()); - amop.start(); - - while (true) { - amop.sendAmopMsg( - topic, - msg.getBytes(), - 0, - response -> - logger.info( - " ==> receive response message from server, errorCode: {}, errorMessage: {}, data: {}", - response.getErrorCode(), - response.getErrorMessage(), - new String(response.getData()))); - - Thread.sleep(10000); + public static void main(String[] args) throws InterruptedException, JniException { + + if (args.length < 3) { + usage(); + } + + String peer = args[0]; + String topic = args[1]; + String msg = args[2]; + + JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(peer)); + jniConfig.setDisableSsl(true); + + BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); + System.out.println("BcosSDK build"); + AmopJniObj amop = AmopJniObj.build(bcosSDKJni.getNativePointer()); + amop.start(); + + while (true) { + amop.sendAmopMsg( + topic, + msg.getBytes(), + 0, + response -> + logger.info( + " ==> receive response message from server, errorCode: {}, errorMessage: {}, data: {}", + response.getErrorCode(), + response.getErrorMessage(), + new String(response.getData()))); + + Thread.sleep(10000); + } } - } } diff --git a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Sub.java b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Sub.java index cb45d3314..8bbe60fda 100644 --- a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Sub.java +++ b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/amop/Sub.java @@ -11,47 +11,47 @@ public class Sub { - private static final Logger logger = LoggerFactory.getLogger(Sub.class); - - public static void usage() { - System.out.println("\tUsage: "); - System.out.println( - "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Sub ip:port topic"); - System.out.println("\tExample:"); - System.out.println( - "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Sub 127.0.0.1:20201 topic"); - System.exit(0); - } - - public static void main(String[] args) throws InterruptedException, JniException { - if (args.length < 2) { - usage(); + private static final Logger logger = LoggerFactory.getLogger(Sub.class); + + public static void usage() { + System.out.println("\tUsage: "); + System.out.println( + "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Sub ip:port topic"); + System.out.println("\tExample:"); + System.out.println( + "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.Sub 127.0.0.1:20201 topic"); + System.exit(0); } - String peer = args[0]; - String topic = args[1]; + public static void main(String[] args) throws InterruptedException, JniException { + if (args.length < 2) { + usage(); + } - JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(peer)); - jniConfig.setDisableSsl(true); - BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); - System.out.println("BcosSDK build"); - AmopJniObj amop = AmopJniObj.build(bcosSDKJni.getNativePointer()); - amop.start(); + String peer = args[0]; + String topic = args[1]; - amop.subscribeTopic( - topic, - (endpoint, seq, data) -> { - System.out.println(" ==> receive message from client"); - System.out.println(" \t==> endpoint: " + endpoint); - System.out.println(" \t==> seq: " + seq); - System.out.println(" \t==> data: " + new String(data)); + JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(peer)); + jniConfig.setDisableSsl(true); + BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); + System.out.println("BcosSDK build"); + AmopJniObj amop = AmopJniObj.build(bcosSDKJni.getNativePointer()); + amop.start(); - amop.sendResponse(endpoint, seq, data); - }); + amop.subscribeTopic( + topic, + (endpoint, seq, data) -> { + System.out.println(" ==> receive message from client"); + System.out.println(" \t==> endpoint: " + endpoint); + System.out.println(" \t==> seq: " + seq); + System.out.println(" \t==> data: " + new String(data)); - while (true) { + amop.sendResponse(endpoint, seq, data); + }); - Thread.sleep(10000); + while (true) { + + Thread.sleep(10000); + } } - } } diff --git a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/eventsub/EventSub.java b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/eventsub/EventSub.java index e9359fb12..5ab1a6e9b 100644 --- a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/eventsub/EventSub.java +++ b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/eventsub/EventSub.java @@ -18,77 +18,79 @@ public class EventSub { - private static final Logger logger = LoggerFactory.getLogger(EventSub.class); + private static final Logger logger = LoggerFactory.getLogger(EventSub.class); - public static void usage() { - System.out.println("\tUsage: "); - System.out.println( - "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.eventsub.EventSub ip:port group fromBlk toBlk"); - System.out.println("\tExample:"); - System.out.println( - "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.eventsub.EventSub 127.0.0.1:20201 group -1 -1"); - System.exit(0); - } - - public static void main(String[] args) - throws InterruptedException, JniException, JsonProcessingException { - if (args.length < 4) { - usage(); + public static void usage() { + System.out.println("\tUsage: "); + System.out.println( + "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.eventsub.EventSub ip:port group fromBlk toBlk"); + System.out.println("\tExample:"); + System.out.println( + "\t\tjava -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.eventsub.EventSub 127.0.0.1:20201 group -1 -1"); + System.exit(0); } - String peer = args[0]; - String group = args[1]; - long fromBlk = Long.valueOf(args[2]); - long toBlk = Long.valueOf(args[3]); + public static void main(String[] args) + throws InterruptedException, JniException, JsonProcessingException { + if (args.length < 4) { + usage(); + } + + String peer = args[0]; + String group = args[1]; + long fromBlk = Long.valueOf(args[2]); + long toBlk = Long.valueOf(args[3]); - System.out.println("EventSub sample: "); - System.out.println("\t group: " + group); - System.out.println("\t fromBlk: " + fromBlk); - System.out.println("\t toBlk: " + toBlk); + System.out.println("EventSub sample: "); + System.out.println("\t group: " + group); + System.out.println("\t fromBlk: " + fromBlk); + System.out.println("\t toBlk: " + toBlk); - JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(peer)); - jniConfig.setDisableSsl(true); - BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); - bcosSDKJni.registerBlockNotifier( - group, - new BlockNotifier() { - @Override - public void onResponse(String groupId, BigInteger blockNumber) { - System.out.println("BlockNotifier ==>>> "); - System.out.println("\t group: " + groupId); - System.out.println("\t blockNumber: " + blockNumber); - } - }); - EventSubJniObj eventSubscribe = EventSubJniObj.build(bcosSDKJni.getNativePointer()); + JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(peer)); + jniConfig.setDisableSsl(true); + BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); + bcosSDKJni.registerBlockNotifier( + group, + new BlockNotifier() { + @Override + public void onResponse(String groupId, BigInteger blockNumber) { + System.out.println("BlockNotifier ==>>> "); + System.out.println("\t group: " + groupId); + System.out.println("\t blockNumber: " + blockNumber); + } + }); + EventSubJniObj eventSubscribe = EventSubJniObj.build(bcosSDKJni.getNativePointer()); - EventSubParams params = new EventSubParams(); - params.setFromBlock(fromBlk); - params.setToBlock(toBlk); + EventSubParams params = new EventSubParams(); + params.setFromBlock(fromBlk); + params.setToBlock(toBlk); - ObjectMapper objectMapper = new ObjectMapper(); - String strParams = objectMapper.writeValueAsString(params); + ObjectMapper objectMapper = new ObjectMapper(); + String strParams = objectMapper.writeValueAsString(params); - System.out.println("\t params: " + strParams); + System.out.println("\t params: " + strParams); - eventSubscribe.start(); - String eventSubId = - eventSubscribe.subscribeEvent( - group, - objectMapper.writeValueAsString(params), - new EventSubCallback() { - @Override - public void onResponse(Response response) { - System.out.println("subscribeEvent ==>>> " + response.getErrorCode()); - System.out.println("\t errorCode: " + response.getErrorCode()); - System.out.println("\t errorMessage: " + response.getErrorMessage()); - System.out.println("\t data: " + new String(response.getData())); - } - }); + eventSubscribe.start(); + String eventSubId = + eventSubscribe.subscribeEvent( + group, + objectMapper.writeValueAsString(params), + new EventSubCallback() { + @Override + public void onResponse(Response response) { + System.out.println( + "subscribeEvent ==>>> " + response.getErrorCode()); + System.out.println("\t errorCode: " + response.getErrorCode()); + System.out.println( + "\t errorMessage: " + response.getErrorMessage()); + System.out.println("\t data: " + new String(response.getData())); + } + }); - System.out.println("EventSubId = " + eventSubId); + System.out.println("EventSubId = " + eventSubId); - while (true) { - Thread.sleep(10000); + while (true) { + Thread.sleep(10000); + } } - } } diff --git a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/rpc/GetBlock.java b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/rpc/GetBlock.java index b8437eece..27062a714 100644 --- a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/rpc/GetBlock.java +++ b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/rpc/GetBlock.java @@ -11,57 +11,57 @@ public class GetBlock { - public static void usage() { - System.out.println("\tUsage: "); - System.out.println( - "\t\t\"java -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.GetBlock ip:port group"); - System.out.println("\tExample:"); - System.out.println( - "\t\t\"java -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.GetBlock 127.0.0.1:20201 group0"); - System.exit(0); - } - - public static void main(String[] args) throws JniException { - if (args.length < 2) { - System.out.println("args length = " + args.length); - usage(); + public static void usage() { + System.out.println("\tUsage: "); + System.out.println( + "\t\t\"java -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.GetBlock ip:port group"); + System.out.println("\tExample:"); + System.out.println( + "\t\t\"java -cp \"conf/:lib/*:apps/*\" org.fisco.bcos.sdk.jni.test.amop.GetBlock 127.0.0.1:20201 group0"); + System.exit(0); } - String endpoint = args[0]; - String group = args[1]; - String node = ""; - JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(endpoint)); - jniConfig.setDisableSsl(true); - BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); - RpcJniObj rpcJniObj = RpcJniObj.build(bcosSDKJni.getNativePointer()); - System.out.println("build Rpc"); - rpcJniObj.start(); + public static void main(String[] args) throws JniException { + if (args.length < 2) { + System.out.println("args length = " + args.length); + usage(); + } - while (true) { - rpcJniObj.getBlockNumber( - group, - node, - new RpcCallback() { - @Override - public void onResponse(Response response) { - System.out.println("getBlockNumber ==>>>" + response); - } - }); + String endpoint = args[0]; + String group = args[1]; + String node = ""; + JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(endpoint)); + jniConfig.setDisableSsl(true); + BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); + RpcJniObj rpcJniObj = RpcJniObj.build(bcosSDKJni.getNativePointer()); + System.out.println("build Rpc"); + rpcJniObj.start(); - rpcJniObj.getGroupInfo( - group, - new RpcCallback() { - @Override - public void onResponse(Response response) { - System.out.println("getBlockNumber ==>>>" + response); - } - }); + while (true) { + rpcJniObj.getBlockNumber( + group, + node, + new RpcCallback() { + @Override + public void onResponse(Response response) { + System.out.println("getBlockNumber ==>>>" + response); + } + }); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } + rpcJniObj.getGroupInfo( + group, + new RpcCallback() { + @Override + public void onResponse(Response response) { + System.out.println("getBlockNumber ==>>>" + response); + } + }); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } - } } diff --git a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStruct.java b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStruct.java index 78b605c5a..2ad03b7d0 100644 --- a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStruct.java +++ b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStruct.java @@ -16,217 +16,222 @@ public class TestTxStruct { - // ------------------------------------------------------------------------------ - // ------------------------------------------------------------------------------ - - // HelloWorld Source Code: - - // HelloWorld Source Code: - /** - * pragma solidity>=0.4.24 <0.6.11; - * - *

contract HelloWorld { string name; - * - *

constructor() public { name = "Hello, World!"; } - * - *

function get() public view returns (string memory) { return name; } - * - *

function set(string memory n) public { name = n; } } - */ - private static final String hwBIN = - "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634ed3885e1461003b5780636d4ce63c146100f6575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610179565b005b6100fe610193565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013e578082015181840152602081019050610123565b50505050905090810190601f16801561016b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b806000908051906020019061018f929190610235565b5050565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561022b5780601f106102005761010080835404028352916020019161022b565b820191906000526020600020905b81548152906001019060200180831161020e57829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea2646970667358221220b5943f43c48cc93c6d71cdcf27aee5072566c88755ce9186e32ce83b24e8dc6c64736f6c634300060a0033"; - - private static final String hwSmBIN = - "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063299f7f9d1461003b5780633590b49f146100be575b600080fd5b610043610179565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610083578082015181840152602081019050610068565b50505050905090810190601f1680156100b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610177600480360360208110156100d457600080fd5b81019080803590602001906401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061021b565b005b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102115780601f106101e657610100808354040283529160200191610211565b820191906000526020600020905b8154815290600101906020018083116101f457829003601f168201915b5050505050905090565b8060009080519060200190610231929190610235565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea26469706673582212209871cb2bcf390d53645807cbaedfe052d739ef9cff9d84787f74c4f379e1854664736f6c634300060a0033"; - - /* - { - "6d4ce63c": "get()", - "4ed3885e": "set(string)" - } - - { - "299f7f9d": "get()", - "3590b49f": "set(string)" - } - */ - - public static byte[] fromHex(String hexString) { - if (hexString.startsWith("0x")) { - hexString = hexString.substring(2); + // ------------------------------------------------------------------------------ + // ------------------------------------------------------------------------------ + + // HelloWorld Source Code: + + // HelloWorld Source Code: + /** + * pragma solidity>=0.4.24 <0.6.11; + * + *

contract HelloWorld { string name; + * + *

constructor() public { name = "Hello, World!"; } + * + *

function get() public view returns (string memory) { return name; } + * + *

function set(string memory n) public { name = n; } } + */ + private static final String hwBIN = + "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634ed3885e1461003b5780636d4ce63c146100f6575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610179565b005b6100fe610193565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013e578082015181840152602081019050610123565b50505050905090810190601f16801561016b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b806000908051906020019061018f929190610235565b5050565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561022b5780601f106102005761010080835404028352916020019161022b565b820191906000526020600020905b81548152906001019060200180831161020e57829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea2646970667358221220b5943f43c48cc93c6d71cdcf27aee5072566c88755ce9186e32ce83b24e8dc6c64736f6c634300060a0033"; + + private static final String hwSmBIN = + "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063299f7f9d1461003b5780633590b49f146100be575b600080fd5b610043610179565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610083578082015181840152602081019050610068565b50505050905090810190601f1680156100b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610177600480360360208110156100d457600080fd5b81019080803590602001906401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061021b565b005b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102115780601f106101e657610100808354040283529160200191610211565b820191906000526020600020905b8154815290600101906020018083116101f457829003601f168201915b5050505050905090565b8060009080519060200190610231929190610235565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea26469706673582212209871cb2bcf390d53645807cbaedfe052d739ef9cff9d84787f74c4f379e1854664736f6c634300060a0033"; + + /* + { + "6d4ce63c": "get()", + "4ed3885e": "set(string)" } - if (hexString.length() % 2 != 0) { - throw new IllegalArgumentException("Invalid hex string: " + hexString); + { + "299f7f9d": "get()", + "3590b49f": "set(string)" } + */ - int length = hexString.length() / 2; - byte[] bytes = new byte[length]; + public static byte[] fromHex(String hexString) { + if (hexString.startsWith("0x")) { + hexString = hexString.substring(2); + } - for (int i = 0; i < length; i++) { - String twoChars = hexString.substring(i * 2, i * 2 + 2); - bytes[i] = (byte) Integer.parseInt(twoChars, 16); + if (hexString.length() % 2 != 0) { + throw new IllegalArgumentException("Invalid hex string: " + hexString); + } + + int length = hexString.length() / 2; + byte[] bytes = new byte[length]; + + for (int i = 0; i < length; i++) { + String twoChars = hexString.substring(i * 2, i * 2 + 2); + bytes[i] = (byte) Integer.parseInt(twoChars, 16); + } + + return bytes; } - return bytes; - } + public static String generateNonce() { + byte[] nonceBytes = new byte[16]; + SecureRandom secureRandom = new SecureRandom(); + secureRandom.nextBytes(nonceBytes); + StringBuilder hex = new StringBuilder(); + for (byte b : nonceBytes) { + hex.append(String.format("%02x", b)); + } + return hex.toString(); + } - public static String generateNonce() { - byte[] nonceBytes = new byte[16]; - SecureRandom secureRandom = new SecureRandom(); - secureRandom.nextBytes(nonceBytes); - StringBuilder hex = new StringBuilder(); - for (byte b : nonceBytes) { - hex.append(String.format("%02x", b)); + public static String getBinary(boolean isSM) { + return isSM ? hwSmBIN : hwBIN; } - return hex.toString(); - } - - public static String getBinary(boolean isSM) { - return isSM ? hwSmBIN : hwBIN; - } - - public static void Usage() { - System.out.println("Desc: test transaction struct [HelloWorld set]"); - System.out.println( - "Usage: java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.jni.test.tx.TestTxStruct"); - System.exit(0); - } - - public static void main(String[] args) - throws JniException, InterruptedException, ExecutionException { - if (args.length > 1) { - Usage(); + + public static void Usage() { + System.out.println("Desc: test transaction struct [HelloWorld set]"); + System.out.println( + "Usage: java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.jni.test.tx.TestTxStruct"); + System.exit(0); } - String endpoint = "127.0.0.1:20200"; - String group = "group0"; - String node = ""; - JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(endpoint)); - jniConfig.setDisableSsl(true); - BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); - RpcJniObj rpcJniObj = RpcJniObj.build(bcosSDKJni.getNativePointer()); - System.out.println("build Rpc"); - rpcJniObj.start(); - - boolean smCrypto = false; - - long keyPair = KeyPairJniObj.createJniKeyPair(smCrypto ? 1 : 0); - String jniKeyPairAddress = KeyPairJniObj.getJniKeyPairAddress(keyPair); - - long blockLimit = 1111; - String groupID = "group0"; - String chainID = "chain0"; - String data = getBinary(smCrypto); - System.out.printf(" [test Tx Struct] new account, address: %s\n", jniKeyPairAddress); - - // construct TransactionData - TransactionData transactionDataStruct = new TransactionData(); - transactionDataStruct.setGroupId(groupID); - transactionDataStruct.setChainId(chainID); - transactionDataStruct.setTo(""); - transactionDataStruct.setAbi(""); - transactionDataStruct.setVersion(0); - transactionDataStruct.setNonce(generateNonce()); - transactionDataStruct.setBlockLimit(blockLimit); - // input - byte[] bytesInput = fromHex(data); - transactionDataStruct.setInput(bytesInput); - - // encode TxData to hex tx data - String txDataHex = - TransactionStructBuilderJniObj.encodeTransactionDataStruct(transactionDataStruct); - // decode hex tx data to TxData - TransactionData decodeTransactionDataStructHex = - TransactionStructBuilderJniObj.decodeTransactionDataStruct(txDataHex); - // assert - Assert.assertEquals( - transactionDataStruct.getChainId(), decodeTransactionDataStructHex.getChainId()); - Assert.assertEquals( - transactionDataStruct.getGroupId(), decodeTransactionDataStructHex.getGroupId()); - Assert.assertEquals(transactionDataStruct.getAbi(), decodeTransactionDataStructHex.getAbi()); - Assert.assertEquals( - transactionDataStruct.getBlockLimit(), decodeTransactionDataStructHex.getBlockLimit()); - - // encode TxData to json tx data - String txDataJson = - TransactionStructBuilderJniObj.encodeTransactionDataStructToJson(transactionDataStruct); - System.out.printf(" [test Tx Struct] txDataJson: %s\n", txDataJson); - - // calc tx data hash - String txDataHash = - TransactionStructBuilderJniObj.calcTransactionDataStructHash( - smCrypto ? 1 : 0, decodeTransactionDataStructHex); - System.out.printf(" [test Tx Struct] txDataHash: %s\n", txDataHash); - // signature tx data hash - String signature = TransactionBuilderJniObj.signTransactionDataHash(keyPair, txDataHash); - System.out.printf(" [test Tx Struct] signature: %s\n", signature); - - // construct tx - Transaction transactionStruct = new Transaction(); - transactionStruct.setTransactionData(decodeTransactionDataStructHex); - transactionStruct.setDataHash(fromHex(txDataHash)); - transactionStruct.setSignature(fromHex(signature)); - transactionStruct.setSender(null); - transactionStruct.setImportTime(0); - transactionStruct.setAttribute(0); - transactionStruct.setExtraData(""); - // assert - Assert.assertEquals( - transactionStruct.getTransactionData().getBlockLimit(), - decodeTransactionDataStructHex.getBlockLimit()); - Assert.assertEquals( - transactionStruct.getTransactionData().getGroupId(), - decodeTransactionDataStructHex.getGroupId()); - Assert.assertEquals( - transactionStruct.getTransactionData().getChainId(), - decodeTransactionDataStructHex.getChainId()); - Assert.assertEquals( - transactionStruct.getTransactionData().getAbi(), decodeTransactionDataStructHex.getAbi()); - Assert.assertArrayEquals(transactionStruct.getDataHash(), fromHex(txDataHash)); - Assert.assertArrayEquals(transactionStruct.getSignature(), fromHex(signature)); - - // encode Tx to hex tx - String txHex = TransactionStructBuilderJniObj.encodeTransactionStruct(transactionStruct); - // decode hex tx to Tx - Transaction decodeTransactionStructHex = - TransactionStructBuilderJniObj.decodeTransactionStruct(txHex); - // assert - Assert.assertEquals( - transactionStruct.getTransactionData().getBlockLimit(), - decodeTransactionStructHex.getTransactionData().getBlockLimit()); - Assert.assertEquals( - transactionStruct.getTransactionData().getGroupId(), - decodeTransactionStructHex.getTransactionData().getGroupId()); - Assert.assertEquals( - transactionStruct.getTransactionData().getChainId(), - decodeTransactionStructHex.getTransactionData().getChainId()); - Assert.assertEquals( - transactionStruct.getTransactionData().getAbi(), - decodeTransactionStructHex.getTransactionData().getAbi()); - Assert.assertArrayEquals( - transactionStruct.getDataHash(), decodeTransactionStructHex.getDataHash()); - Assert.assertArrayEquals( - transactionStruct.getSignature(), decodeTransactionStructHex.getSignature()); - - // encode Tx to json tx - String txJson = TransactionStructBuilderJniObj.encodeTransactionStructToJson(transactionStruct); - System.out.printf(" [test Tx Struct] txJson: %s\n", txJson); - // create tx string - String txString = - TransactionStructBuilderJniObj.createEncodedTransaction( - decodeTransactionDataStructHex, signature, txDataHash, 0, ""); - // System.out.printf(" [test Tx Struct] txString: %s\n", txString); - - CompletableFuture future = new CompletableFuture<>(); - // rpc send tx - rpcJniObj.sendTransaction(group, node, txString, false, future::complete); - - Response response = future.get(); - System.out.println("response error code: ==>>> " + response.getErrorCode()); - String dataStr = new String(response.getData()); - System.out.println("response data: ==>>> " + dataStr); - rpcJniObj.stop(); - System.out.println(" [test Tx Struct] finish !!"); - } + public static void main(String[] args) + throws JniException, InterruptedException, ExecutionException { + if (args.length > 1) { + Usage(); + } + + String endpoint = "127.0.0.1:20200"; + String group = "group0"; + String node = ""; + JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(endpoint)); + jniConfig.setDisableSsl(true); + BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); + RpcJniObj rpcJniObj = RpcJniObj.build(bcosSDKJni.getNativePointer()); + System.out.println("build Rpc"); + rpcJniObj.start(); + + boolean smCrypto = false; + + long keyPair = KeyPairJniObj.createJniKeyPair(smCrypto ? 1 : 0); + String jniKeyPairAddress = KeyPairJniObj.getJniKeyPairAddress(keyPair); + + long blockLimit = 1111; + String groupID = "group0"; + String chainID = "chain0"; + String data = getBinary(smCrypto); + System.out.printf(" [test Tx Struct] new account, address: %s\n", jniKeyPairAddress); + + // construct TransactionData + TransactionData transactionDataStruct = new TransactionData(); + transactionDataStruct.setGroupId(groupID); + transactionDataStruct.setChainId(chainID); + transactionDataStruct.setTo(""); + transactionDataStruct.setAbi(""); + transactionDataStruct.setVersion(0); + transactionDataStruct.setNonce(generateNonce()); + transactionDataStruct.setBlockLimit(blockLimit); + // input + byte[] bytesInput = fromHex(data); + transactionDataStruct.setInput(bytesInput); + + // encode TxData to hex tx data + String txDataHex = + TransactionStructBuilderJniObj.encodeTransactionDataStruct(transactionDataStruct); + // decode hex tx data to TxData + TransactionData decodeTransactionDataStructHex = + TransactionStructBuilderJniObj.decodeTransactionDataStruct(txDataHex); + // assert + Assert.assertEquals( + transactionDataStruct.getChainId(), decodeTransactionDataStructHex.getChainId()); + Assert.assertEquals( + transactionDataStruct.getGroupId(), decodeTransactionDataStructHex.getGroupId()); + Assert.assertEquals( + transactionDataStruct.getAbi(), decodeTransactionDataStructHex.getAbi()); + Assert.assertEquals( + transactionDataStruct.getBlockLimit(), + decodeTransactionDataStructHex.getBlockLimit()); + + // encode TxData to json tx data + String txDataJson = + TransactionStructBuilderJniObj.encodeTransactionDataStructToJson( + transactionDataStruct); + System.out.printf(" [test Tx Struct] txDataJson: %s\n", txDataJson); + + // calc tx data hash + String txDataHash = + TransactionStructBuilderJniObj.calcTransactionDataStructHash( + smCrypto ? 1 : 0, decodeTransactionDataStructHex); + System.out.printf(" [test Tx Struct] txDataHash: %s\n", txDataHash); + // signature tx data hash + String signature = TransactionBuilderJniObj.signTransactionDataHash(keyPair, txDataHash); + System.out.printf(" [test Tx Struct] signature: %s\n", signature); + + // construct tx + Transaction transactionStruct = new Transaction(); + transactionStruct.setTransactionData(decodeTransactionDataStructHex); + transactionStruct.setDataHash(fromHex(txDataHash)); + transactionStruct.setSignature(fromHex(signature)); + transactionStruct.setSender(null); + transactionStruct.setImportTime(0); + transactionStruct.setAttribute(0); + transactionStruct.setExtraData(""); + // assert + Assert.assertEquals( + transactionStruct.getTransactionData().getBlockLimit(), + decodeTransactionDataStructHex.getBlockLimit()); + Assert.assertEquals( + transactionStruct.getTransactionData().getGroupId(), + decodeTransactionDataStructHex.getGroupId()); + Assert.assertEquals( + transactionStruct.getTransactionData().getChainId(), + decodeTransactionDataStructHex.getChainId()); + Assert.assertEquals( + transactionStruct.getTransactionData().getAbi(), + decodeTransactionDataStructHex.getAbi()); + Assert.assertArrayEquals(transactionStruct.getDataHash(), fromHex(txDataHash)); + Assert.assertArrayEquals(transactionStruct.getSignature(), fromHex(signature)); + + // encode Tx to hex tx + String txHex = TransactionStructBuilderJniObj.encodeTransactionStruct(transactionStruct); + // decode hex tx to Tx + Transaction decodeTransactionStructHex = + TransactionStructBuilderJniObj.decodeTransactionStruct(txHex); + // assert + Assert.assertEquals( + transactionStruct.getTransactionData().getBlockLimit(), + decodeTransactionStructHex.getTransactionData().getBlockLimit()); + Assert.assertEquals( + transactionStruct.getTransactionData().getGroupId(), + decodeTransactionStructHex.getTransactionData().getGroupId()); + Assert.assertEquals( + transactionStruct.getTransactionData().getChainId(), + decodeTransactionStructHex.getTransactionData().getChainId()); + Assert.assertEquals( + transactionStruct.getTransactionData().getAbi(), + decodeTransactionStructHex.getTransactionData().getAbi()); + Assert.assertArrayEquals( + transactionStruct.getDataHash(), decodeTransactionStructHex.getDataHash()); + Assert.assertArrayEquals( + transactionStruct.getSignature(), decodeTransactionStructHex.getSignature()); + + // encode Tx to json tx + String txJson = + TransactionStructBuilderJniObj.encodeTransactionStructToJson(transactionStruct); + System.out.printf(" [test Tx Struct] txJson: %s\n", txJson); + // create tx string + String txString = + TransactionStructBuilderJniObj.createEncodedTransaction( + decodeTransactionDataStructHex, signature, txDataHash, 0, ""); + // System.out.printf(" [test Tx Struct] txString: %s\n", txString); + + CompletableFuture future = new CompletableFuture<>(); + // rpc send tx + rpcJniObj.sendTransaction(group, node, txString, false, future::complete); + + Response response = future.get(); + System.out.println("response error code: ==>>> " + response.getErrorCode()); + String dataStr = new String(response.getData()); + System.out.println("response data: ==>>> " + dataStr); + rpcJniObj.stop(); + System.out.println(" [test Tx Struct] finish !!"); + } } diff --git a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStructV1.java b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStructV1.java index 5a09b7854..c717f2000 100644 --- a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStructV1.java +++ b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStructV1.java @@ -16,257 +16,265 @@ public class TestTxStructV1 { - // ------------------------------------------------------------------------------ - // ------------------------------------------------------------------------------ + // ------------------------------------------------------------------------------ + // ------------------------------------------------------------------------------ - // HelloWorld Source Code: - /** - * pragma solidity>=0.4.24 <0.6.11; - * - *

contract HelloWorld { string name; - * - *

constructor() public { name = "Hello, World!"; } - * - *

function get() public view returns (string memory) { return name; } - * - *

function set(string memory n) public { name = n; } } - */ - private static final String hwBIN = - "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634ed3885e1461003b5780636d4ce63c146100f6575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610179565b005b6100fe610193565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013e578082015181840152602081019050610123565b50505050905090810190601f16801561016b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b806000908051906020019061018f929190610235565b5050565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561022b5780601f106102005761010080835404028352916020019161022b565b820191906000526020600020905b81548152906001019060200180831161020e57829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea2646970667358221220b5943f43c48cc93c6d71cdcf27aee5072566c88755ce9186e32ce83b24e8dc6c64736f6c634300060a0033"; + // HelloWorld Source Code: + /** + * pragma solidity>=0.4.24 <0.6.11; + * + *

contract HelloWorld { string name; + * + *

constructor() public { name = "Hello, World!"; } + * + *

function get() public view returns (string memory) { return name; } + * + *

function set(string memory n) public { name = n; } } + */ + private static final String hwBIN = + "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634ed3885e1461003b5780636d4ce63c146100f6575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610179565b005b6100fe610193565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013e578082015181840152602081019050610123565b50505050905090810190601f16801561016b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b806000908051906020019061018f929190610235565b5050565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561022b5780601f106102005761010080835404028352916020019161022b565b820191906000526020600020905b81548152906001019060200180831161020e57829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea2646970667358221220b5943f43c48cc93c6d71cdcf27aee5072566c88755ce9186e32ce83b24e8dc6c64736f6c634300060a0033"; - private static final String hwSmBIN = - "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063299f7f9d1461003b5780633590b49f146100be575b600080fd5b610043610179565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610083578082015181840152602081019050610068565b50505050905090810190601f1680156100b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610177600480360360208110156100d457600080fd5b81019080803590602001906401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061021b565b005b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102115780601f106101e657610100808354040283529160200191610211565b820191906000526020600020905b8154815290600101906020018083116101f457829003601f168201915b5050505050905090565b8060009080519060200190610231929190610235565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea26469706673582212209871cb2bcf390d53645807cbaedfe052d739ef9cff9d84787f74c4f379e1854664736f6c634300060a0033"; + private static final String hwSmBIN = + "608060405234801561001057600080fd5b506040518060400160405280600d81526020017f48656c6c6f2c20576f726c6421000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b610310806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063299f7f9d1461003b5780633590b49f146100be575b600080fd5b610043610179565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610083578082015181840152602081019050610068565b50505050905090810190601f1680156100b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610177600480360360208110156100d457600080fd5b81019080803590602001906401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061021b565b005b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102115780601f106101e657610100808354040283529160200191610211565b820191906000526020600020905b8154815290600101906020018083116101f457829003601f168201915b5050505050905090565b8060009080519060200190610231929190610235565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea26469706673582212209871cb2bcf390d53645807cbaedfe052d739ef9cff9d84787f74c4f379e1854664736f6c634300060a0033"; - /* - { - "6d4ce63c": "get()", - "4ed3885e": "set(string)" - } - - { - "299f7f9d": "get()", - "3590b49f": "set(string)" - } - */ - - public static byte[] fromHex(String hexString) { - if (hexString.startsWith("0x")) { - hexString = hexString.substring(2); + /* + { + "6d4ce63c": "get()", + "4ed3885e": "set(string)" } - if (hexString.length() % 2 != 0) { - throw new IllegalArgumentException("Invalid hex string: " + hexString); + { + "299f7f9d": "get()", + "3590b49f": "set(string)" } + */ - int length = hexString.length() / 2; - byte[] bytes = new byte[length]; + public static byte[] fromHex(String hexString) { + if (hexString.startsWith("0x")) { + hexString = hexString.substring(2); + } - for (int i = 0; i < length; i++) { - String twoChars = hexString.substring(i * 2, i * 2 + 2); - bytes[i] = (byte) Integer.parseInt(twoChars, 16); - } + if (hexString.length() % 2 != 0) { + throw new IllegalArgumentException("Invalid hex string: " + hexString); + } + + int length = hexString.length() / 2; + byte[] bytes = new byte[length]; - return bytes; - } + for (int i = 0; i < length; i++) { + String twoChars = hexString.substring(i * 2, i * 2 + 2); + bytes[i] = (byte) Integer.parseInt(twoChars, 16); + } - public static String generateNonce() { - byte[] nonceBytes = new byte[16]; - SecureRandom secureRandom = new SecureRandom(); - secureRandom.nextBytes(nonceBytes); - StringBuilder hex = new StringBuilder(); - for (byte b : nonceBytes) { - hex.append(String.format("%02x", b)); + return bytes; } - return hex.toString(); - } - public static String getBinary(boolean isSM) { - return isSM ? hwSmBIN : hwBIN; - } + public static String generateNonce() { + byte[] nonceBytes = new byte[16]; + SecureRandom secureRandom = new SecureRandom(); + secureRandom.nextBytes(nonceBytes); + StringBuilder hex = new StringBuilder(); + for (byte b : nonceBytes) { + hex.append(String.format("%02x", b)); + } + return hex.toString(); + } - public static void Usage() { - System.out.println("Desc: test transaction struct V1 [HelloWorld set]"); - System.out.println( - "Usage: java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.jni.test.tx.TestTxStructV1"); - System.exit(0); - } + public static String getBinary(boolean isSM) { + return isSM ? hwSmBIN : hwBIN; + } - public static void main(String[] args) - throws JniException, InterruptedException, ExecutionException { - if (args.length > 1) { - Usage(); + public static void Usage() { + System.out.println("Desc: test transaction struct V1 [HelloWorld set]"); + System.out.println( + "Usage: java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.jni.test.tx.TestTxStructV1"); + System.exit(0); } - String endpoint = "127.0.0.1:20200"; - String group = "group0"; - String node = ""; - JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(endpoint)); - jniConfig.setDisableSsl(true); - BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); - RpcJniObj rpcJniObj = RpcJniObj.build(bcosSDKJni.getNativePointer()); - System.out.println("build Rpc"); - rpcJniObj.start(); - long blockLimit = rpcJniObj.getBlockLimit(group); + public static void main(String[] args) + throws JniException, InterruptedException, ExecutionException { + if (args.length > 1) { + Usage(); + } - boolean smCrypto = false; + String endpoint = "127.0.0.1:20200"; + String group = "group0"; + String node = ""; + JniConfig jniConfig = Utility.newJniConfig(Arrays.asList(endpoint)); + jniConfig.setDisableSsl(true); + BcosSDKJniObj bcosSDKJni = BcosSDKJniObj.build(jniConfig); + RpcJniObj rpcJniObj = RpcJniObj.build(bcosSDKJni.getNativePointer()); + System.out.println("build Rpc"); + rpcJniObj.start(); + long blockLimit = rpcJniObj.getBlockLimit(group); - long keyPair = KeyPairJniObj.createJniKeyPair(smCrypto ? 1 : 0); - String jniKeyPairAddress = KeyPairJniObj.getJniKeyPairAddress(keyPair); - System.out.printf(" [test Tx Struct V1] new account, address: %s\n", jniKeyPairAddress); + boolean smCrypto = false; - String groupID = "group0"; - String chainID = "chain0"; - String data = getBinary(smCrypto); - String value = "0x11"; - String gasPrice = "0x10"; - long gasLimit = 0; - String maxFeePerGas = "0x11"; - String maxPriorityFeePerGas = "0x22"; + long keyPair = KeyPairJniObj.createJniKeyPair(smCrypto ? 1 : 0); + String jniKeyPairAddress = KeyPairJniObj.getJniKeyPairAddress(keyPair); + System.out.printf(" [test Tx Struct V1] new account, address: %s\n", jniKeyPairAddress); - // construct TransactionDataV1 - TransactionDataV1 transactionDataStructV1 = new TransactionDataV1(); - transactionDataStructV1.setGroupId(groupID); - transactionDataStructV1.setChainId(chainID); - transactionDataStructV1.setTo(""); - transactionDataStructV1.setAbi(""); - transactionDataStructV1.setVersion(1); - transactionDataStructV1.setNonce(generateNonce()); - transactionDataStructV1.setBlockLimit(blockLimit); - transactionDataStructV1.setValue(value); - transactionDataStructV1.setGasPrice(gasPrice); - transactionDataStructV1.setGasLimit(gasLimit); - transactionDataStructV1.setMaxFeePerGas(maxFeePerGas); - transactionDataStructV1.setMaxPriorityFeePerGas(maxPriorityFeePerGas); - // input - byte[] bytesInput = fromHex(data); - transactionDataStructV1.setInput(bytesInput); + String groupID = "group0"; + String chainID = "chain0"; + String data = getBinary(smCrypto); + String value = "0x11"; + String gasPrice = "0x10"; + long gasLimit = 0; + String maxFeePerGas = "0x11"; + String maxPriorityFeePerGas = "0x22"; - // encode TxData to hex tx data - String txDataHex = - TransactionStructBuilderJniObj.encodeTransactionDataStruct(transactionDataStructV1); - // decode hex tx data to TxData - TransactionDataV1 decodeTransactionDataStructHex = - TransactionStructBuilderJniObj.decodeTransactionDataStructV1(txDataHex); - // TransactionDataV1 decodeTransactionDataStructHex2 = - // TransactionStructBuilderV1JniObj.decodeTransactionDataStructV1(null); - // TransactionDataV1 decodeTransactionDataStructHex3 = - // TransactionStructBuilderV1JniObj.decodeTransactionDataStructV1(""); + // construct TransactionDataV1 + TransactionDataV1 transactionDataStructV1 = new TransactionDataV1(); + transactionDataStructV1.setGroupId(groupID); + transactionDataStructV1.setChainId(chainID); + transactionDataStructV1.setTo(""); + transactionDataStructV1.setAbi(""); + transactionDataStructV1.setVersion(1); + transactionDataStructV1.setNonce(generateNonce()); + transactionDataStructV1.setBlockLimit(blockLimit); + transactionDataStructV1.setValue(value); + transactionDataStructV1.setGasPrice(gasPrice); + transactionDataStructV1.setGasLimit(gasLimit); + transactionDataStructV1.setMaxFeePerGas(maxFeePerGas); + transactionDataStructV1.setMaxPriorityFeePerGas(maxPriorityFeePerGas); + // input + byte[] bytesInput = fromHex(data); + transactionDataStructV1.setInput(bytesInput); - // assert - Assert.assertEquals( - transactionDataStructV1.getChainId(), decodeTransactionDataStructHex.getChainId()); - Assert.assertEquals( - transactionDataStructV1.getGroupId(), decodeTransactionDataStructHex.getGroupId()); - Assert.assertEquals(transactionDataStructV1.getAbi(), decodeTransactionDataStructHex.getAbi()); - Assert.assertEquals( - transactionDataStructV1.getBlockLimit(), decodeTransactionDataStructHex.getBlockLimit()); - Assert.assertEquals( - transactionDataStructV1.getValue(), decodeTransactionDataStructHex.getValue()); - Assert.assertEquals( - transactionDataStructV1.getGasPrice(), decodeTransactionDataStructHex.getGasPrice()); - Assert.assertEquals( - transactionDataStructV1.getGasLimit(), decodeTransactionDataStructHex.getGasLimit()); - Assert.assertEquals( - transactionDataStructV1.getMaxFeePerGas(), - decodeTransactionDataStructHex.getMaxFeePerGas()); - Assert.assertEquals( - transactionDataStructV1.getMaxPriorityFeePerGas(), - decodeTransactionDataStructHex.getMaxPriorityFeePerGas()); + // encode TxData to hex tx data + String txDataHex = + TransactionStructBuilderJniObj.encodeTransactionDataStruct(transactionDataStructV1); + // decode hex tx data to TxData + TransactionDataV1 decodeTransactionDataStructHex = + TransactionStructBuilderJniObj.decodeTransactionDataStructV1(txDataHex); + // TransactionDataV1 decodeTransactionDataStructHex2 = + // TransactionStructBuilderV1JniObj.decodeTransactionDataStructV1(null); + // TransactionDataV1 decodeTransactionDataStructHex3 = + // TransactionStructBuilderV1JniObj.decodeTransactionDataStructV1(""); - // encode TxData to json tx data - String txDataJson = - TransactionStructBuilderJniObj.encodeTransactionDataStructToJson(transactionDataStructV1); - System.out.printf(" [test Tx Struct V1] txDataJson: %s\n", txDataJson); + // assert + Assert.assertEquals( + transactionDataStructV1.getChainId(), decodeTransactionDataStructHex.getChainId()); + Assert.assertEquals( + transactionDataStructV1.getGroupId(), decodeTransactionDataStructHex.getGroupId()); + Assert.assertEquals( + transactionDataStructV1.getAbi(), decodeTransactionDataStructHex.getAbi()); + Assert.assertEquals( + transactionDataStructV1.getBlockLimit(), + decodeTransactionDataStructHex.getBlockLimit()); + Assert.assertEquals( + transactionDataStructV1.getValue(), decodeTransactionDataStructHex.getValue()); + Assert.assertEquals( + transactionDataStructV1.getGasPrice(), + decodeTransactionDataStructHex.getGasPrice()); + Assert.assertEquals( + transactionDataStructV1.getGasLimit(), + decodeTransactionDataStructHex.getGasLimit()); + Assert.assertEquals( + transactionDataStructV1.getMaxFeePerGas(), + decodeTransactionDataStructHex.getMaxFeePerGas()); + Assert.assertEquals( + transactionDataStructV1.getMaxPriorityFeePerGas(), + decodeTransactionDataStructHex.getMaxPriorityFeePerGas()); - // calc tx data hash - String txDataHash = - TransactionStructBuilderJniObj.calcTransactionDataStructHash( - smCrypto ? 1 : 0, decodeTransactionDataStructHex); - System.out.printf(" [test Tx Struct V1] txDataHash: %s\n", txDataHash); - // signature tx data hash - String signature = TransactionBuilderJniObj.signTransactionDataHash(keyPair, txDataHash); - System.out.printf(" [test Tx Struct V1] signature: %s\n", signature); + // encode TxData to json tx data + String txDataJson = + TransactionStructBuilderJniObj.encodeTransactionDataStructToJson( + transactionDataStructV1); + System.out.printf(" [test Tx Struct V1] txDataJson: %s\n", txDataJson); - // construct tx - Transaction transactionStructV1 = new Transaction(); - transactionStructV1.setTransactionData(decodeTransactionDataStructHex); - transactionStructV1.setDataHash(fromHex(txDataHash)); - transactionStructV1.setSignature(fromHex(signature)); - transactionStructV1.setSender(null); - transactionStructV1.setImportTime(0); - transactionStructV1.setAttribute(0); - transactionStructV1.setExtraData(""); - // assert - Assert.assertEquals( - transactionStructV1.getTransactionData().getBlockLimit(), - decodeTransactionDataStructHex.getBlockLimit()); - Assert.assertEquals( - transactionStructV1.getTransactionData().getGroupId(), - decodeTransactionDataStructHex.getGroupId()); - Assert.assertEquals( - transactionStructV1.getTransactionData().getChainId(), - decodeTransactionDataStructHex.getChainId()); - Assert.assertEquals( - transactionStructV1.getTransactionData().getChainId(), - decodeTransactionDataStructHex.getChainId()); - Assert.assertEquals( - transactionStructV1.getTransactionData().getAbi(), decodeTransactionDataStructHex.getAbi()); - Assert.assertArrayEquals(transactionStructV1.getDataHash(), fromHex(txDataHash)); - Assert.assertArrayEquals(transactionStructV1.getSignature(), fromHex(signature)); + // calc tx data hash + String txDataHash = + TransactionStructBuilderJniObj.calcTransactionDataStructHash( + smCrypto ? 1 : 0, decodeTransactionDataStructHex); + System.out.printf(" [test Tx Struct V1] txDataHash: %s\n", txDataHash); + // signature tx data hash + String signature = TransactionBuilderJniObj.signTransactionDataHash(keyPair, txDataHash); + System.out.printf(" [test Tx Struct V1] signature: %s\n", signature); - // encode Tx to hex tx - String txHex = TransactionStructBuilderJniObj.encodeTransactionStruct(transactionStructV1); - // decode hex tx to Tx - Transaction decodeTransactionStructHex = - TransactionStructBuilderJniObj.decodeTransactionStructV1(txHex); + // construct tx + Transaction transactionStructV1 = new Transaction(); + transactionStructV1.setTransactionData(decodeTransactionDataStructHex); + transactionStructV1.setDataHash(fromHex(txDataHash)); + transactionStructV1.setSignature(fromHex(signature)); + transactionStructV1.setSender(null); + transactionStructV1.setImportTime(0); + transactionStructV1.setAttribute(0); + transactionStructV1.setExtraData(""); + // assert + Assert.assertEquals( + transactionStructV1.getTransactionData().getBlockLimit(), + decodeTransactionDataStructHex.getBlockLimit()); + Assert.assertEquals( + transactionStructV1.getTransactionData().getGroupId(), + decodeTransactionDataStructHex.getGroupId()); + Assert.assertEquals( + transactionStructV1.getTransactionData().getChainId(), + decodeTransactionDataStructHex.getChainId()); + Assert.assertEquals( + transactionStructV1.getTransactionData().getChainId(), + decodeTransactionDataStructHex.getChainId()); + Assert.assertEquals( + transactionStructV1.getTransactionData().getAbi(), + decodeTransactionDataStructHex.getAbi()); + Assert.assertArrayEquals(transactionStructV1.getDataHash(), fromHex(txDataHash)); + Assert.assertArrayEquals(transactionStructV1.getSignature(), fromHex(signature)); - // assert - Assert.assertEquals( - transactionStructV1.getTransactionData().getBlockLimit(), - decodeTransactionStructHex.getTransactionData().getBlockLimit()); - Assert.assertEquals( - transactionStructV1.getTransactionData().getGroupId(), - decodeTransactionStructHex.getTransactionData().getGroupId()); - Assert.assertEquals( - transactionStructV1.getTransactionData().getChainId(), - decodeTransactionStructHex.getTransactionData().getChainId()); - Assert.assertEquals( - transactionStructV1.getTransactionData().getAbi(), - decodeTransactionStructHex.getTransactionData().getAbi()); - TransactionDataV1 transactionData = - (TransactionDataV1) transactionStructV1.getTransactionData(); - TransactionDataV1 decodeTransactionData = - (TransactionDataV1) decodeTransactionStructHex.getTransactionData(); - Assert.assertEquals(transactionData.getValue(), decodeTransactionData.getValue()); - Assert.assertEquals(transactionData.getGasLimit(), decodeTransactionData.getGasLimit()); - Assert.assertEquals(transactionData.getGasPrice(), decodeTransactionData.getGasPrice()); - Assert.assertEquals(transactionData.getMaxFeePerGas(), decodeTransactionData.getMaxFeePerGas()); - Assert.assertEquals( - transactionData.getMaxPriorityFeePerGas(), decodeTransactionData.getMaxPriorityFeePerGas()); - Assert.assertArrayEquals( - transactionStructV1.getDataHash(), decodeTransactionStructHex.getDataHash()); - Assert.assertArrayEquals( - transactionStructV1.getSignature(), decodeTransactionStructHex.getSignature()); + // encode Tx to hex tx + String txHex = TransactionStructBuilderJniObj.encodeTransactionStruct(transactionStructV1); + // decode hex tx to Tx + Transaction decodeTransactionStructHex = + TransactionStructBuilderJniObj.decodeTransactionStructV1(txHex); - // encode Tx to json tx - String txJson = - TransactionStructBuilderJniObj.encodeTransactionStructToJson(transactionStructV1); - System.out.printf(" [test Tx Struct V1] txJson: %s\n", txJson); - // create tx string - String txString = - TransactionStructBuilderJniObj.createEncodedTransaction( - decodeTransactionDataStructHex, signature, txDataHash, 0, ""); - // System.out.printf(" [test Tx Struct V1] txString: %s\n", txString); - CompletableFuture future = new CompletableFuture<>(); + // assert + Assert.assertEquals( + transactionStructV1.getTransactionData().getBlockLimit(), + decodeTransactionStructHex.getTransactionData().getBlockLimit()); + Assert.assertEquals( + transactionStructV1.getTransactionData().getGroupId(), + decodeTransactionStructHex.getTransactionData().getGroupId()); + Assert.assertEquals( + transactionStructV1.getTransactionData().getChainId(), + decodeTransactionStructHex.getTransactionData().getChainId()); + Assert.assertEquals( + transactionStructV1.getTransactionData().getAbi(), + decodeTransactionStructHex.getTransactionData().getAbi()); + TransactionDataV1 transactionData = + (TransactionDataV1) transactionStructV1.getTransactionData(); + TransactionDataV1 decodeTransactionData = + (TransactionDataV1) decodeTransactionStructHex.getTransactionData(); + Assert.assertEquals(transactionData.getValue(), decodeTransactionData.getValue()); + Assert.assertEquals(transactionData.getGasLimit(), decodeTransactionData.getGasLimit()); + Assert.assertEquals(transactionData.getGasPrice(), decodeTransactionData.getGasPrice()); + Assert.assertEquals( + transactionData.getMaxFeePerGas(), decodeTransactionData.getMaxFeePerGas()); + Assert.assertEquals( + transactionData.getMaxPriorityFeePerGas(), + decodeTransactionData.getMaxPriorityFeePerGas()); + Assert.assertArrayEquals( + transactionStructV1.getDataHash(), decodeTransactionStructHex.getDataHash()); + Assert.assertArrayEquals( + transactionStructV1.getSignature(), decodeTransactionStructHex.getSignature()); - // rpc send tx - rpcJniObj.sendTransaction(group, node, txString, false, future::complete); + // encode Tx to json tx + String txJson = + TransactionStructBuilderJniObj.encodeTransactionStructToJson(transactionStructV1); + System.out.printf(" [test Tx Struct V1] txJson: %s\n", txJson); + // create tx string + String txString = + TransactionStructBuilderJniObj.createEncodedTransaction( + decodeTransactionDataStructHex, signature, txDataHash, 0, ""); + // System.out.printf(" [test Tx Struct V1] txString: %s\n", txString); + CompletableFuture future = new CompletableFuture<>(); - Response response = future.get(); - System.out.println("response error code: ==>>> " + response.getErrorCode()); - String dataStr = new String(response.getData()); - System.out.println("response data: ==>>> " + dataStr); - rpcJniObj.stop(); - System.out.println(" [test Tx Struct V1] finish !! "); - } + // rpc send tx + rpcJniObj.sendTransaction(group, node, txString, false, future::complete); + + Response response = future.get(); + System.out.println("response error code: ==>>> " + response.getErrorCode()); + String dataStr = new String(response.getData()); + System.out.println("response data: ==>>> " + dataStr); + rpcJniObj.stop(); + System.out.println(" [test Tx Struct V1] finish !! "); + } } diff --git a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStructV2.java b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStructV2.java index b806ed8fb..5d70934a3 100644 --- a/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStructV2.java +++ b/bindings/java/jni/src/test/java/org/fisco/bcos/sdk/jni/test/tx/TestTxStructV2.java @@ -1,6 +1,12 @@ package org.fisco.bcos.sdk.jni.test.tx; -import org.fisco.bcos.sdk.crypto.hash.Keccak256; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.security.SecureRandom; +import java.util.Arrays; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import org.fisco.bcos.sdk.jni.BcosSDKJniObj; import org.fisco.bcos.sdk.jni.common.JniConfig; import org.fisco.bcos.sdk.jni.common.JniException; @@ -9,17 +15,8 @@ import org.fisco.bcos.sdk.jni.test.Utility; import org.fisco.bcos.sdk.jni.utilities.keypair.KeyPairJniObj; import org.fisco.bcos.sdk.jni.utilities.tx.*; -import org.fisco.bcos.sdk.utils.Hex; import org.junit.Assert; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.math.BigInteger; -import java.security.SecureRandom; -import java.util.Arrays; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; - public class TestTxStructV2 { // ------------------------------------------------------------------------------ @@ -89,7 +86,7 @@ public static byte[] encodeTransactionData(TransactionDataV2 data) throws IOExce // blockLimit byteArrayOutputStream.write(toBytesPadded(BigInteger.valueOf(data.getBlockLimit()), 8)); // nonce - byteArrayOutputStream.write(fromHex(data.getNonce())); + byteArrayOutputStream.write(data.getNonce().getBytes()); // to byteArrayOutputStream.write(data.getTo().getBytes()); // input @@ -97,7 +94,7 @@ public static byte[] encodeTransactionData(TransactionDataV2 data) throws IOExce // abi byteArrayOutputStream.write(data.getAbi().getBytes()); - if (data.getVersion() == TransactionVersion.V1.getValue()) { + if (data.getVersion() >= TransactionVersion.V1.getValue()) { byteArrayOutputStream.write(data.getValue().getBytes()); byteArrayOutputStream.write(data.getGasPrice().getBytes()); byteArrayOutputStream.write(toBytesPadded(BigInteger.valueOf(data.getGasLimit()), 8)); @@ -105,7 +102,7 @@ public static byte[] encodeTransactionData(TransactionDataV2 data) throws IOExce byteArrayOutputStream.write(data.getMaxPriorityFeePerGas().getBytes()); } - if (data.getVersion() == TransactionVersion.V2.getValue()) { + if (data.getVersion() >= TransactionVersion.V2.getValue()) { if (data.getExtension() != null) { byteArrayOutputStream.write(data.getExtension()); } @@ -205,9 +202,10 @@ public static void main(String[] args) String maxPriorityFeePerGas = "0x22"; byte[] bytesInput = fromHex(data); // construct TransactionDataV2 + String nonce = generateNonce(); TransactionData transactionDataStructV2 = new TransactionDataV2() - // .buildExtension("HelloWorld".getBytes()) + .buildExtension("HelloWorld".getBytes()) .buildValue(value) .buildGasPrice(gasPrice) .buildGasLimit(gasLimit) @@ -219,7 +217,24 @@ public static void main(String[] args) .buildTo("") .buildAbi("") .buildVersion(2) - .buildNonce(generateNonce()) + .buildNonce(nonce) + .buildBlockLimit(blockLimit) + .buildInput(bytesInput); + + TransactionData transactionDataV1 = + new TransactionDataV1() + .buildValue(value) + .buildGasPrice(gasPrice) + .buildGasLimit(gasLimit) + .buildGasLimit(gasLimit) + .buildMaxFeePerGas(maxFeePerGas) + .buildMaxPriorityFeePerGas(maxPriorityFeePerGas) + .buildGroupId(groupID) + .buildChainId(chainID) + .buildTo("") + .buildAbi("") + .buildVersion(2) + .buildNonce(nonce) .buildBlockLimit(blockLimit) .buildInput(bytesInput); @@ -227,13 +242,11 @@ public static void main(String[] args) String txDataHash = TransactionStructBuilderJniObj.calcTransactionDataStructHash( smCrypto ? 1 : 0, transactionDataStructV2); - org.fisco.bcos.sdk.crypto.hash.Keccak256 keccak256 = new Keccak256(); - String hexString = - Hex.toHexString( - keccak256.hash( - encodeTransactionData( - (TransactionDataV2) transactionDataStructV2))); + String txDataHash2 = + TransactionStructBuilderJniObj.calcTransactionDataStructHash( + smCrypto ? 1 : 0, transactionDataV1); + System.out.printf(" [test Tx Struct V2] txDataHash: %s\n", txDataHash); // signature tx data hash String signature = TransactionBuilderJniObj.signTransactionDataHash(keyPair, txDataHash); @@ -303,6 +316,12 @@ public static void main(String[] args) System.out.println("response error code: ==>>> " + response.getErrorCode()); String dataStr = new String(response.getData()); System.out.println("response data: ==>>> " + dataStr); + CompletableFuture future2 = new CompletableFuture<>(); + rpcJniObj.getTransaction(group, node, txDataHash, true, future2::complete); + Response response1 = future2.get(); + System.out.println("getTx response error code: ==>>> " + response1.getErrorCode()); + String dataStr1 = new String(response1.getData()); + System.out.println("Tx data: ==>>> " + dataStr1); rpcJniObj.stop(); System.out.println(" [test Tx Struct V2] finish !! "); } diff --git a/test/testTransactionStructV2.cpp b/test/testTransactionStructV2.cpp index ae129bdf8..ffe7e90b7 100644 --- a/test/testTransactionStructV2.cpp +++ b/test/testTransactionStructV2.cpp @@ -25,6 +25,7 @@ #include "bcos-c-sdk/bcos_sdk_c_uti_keypair.h" #include "bcos-c-sdk/bcos_sdk_c_uti_tx.h" #include "bcos-c-sdk/bcos_sdk_c_uti_tx_struct_v2.h" +#include "bcos_sdk_c_uti_tx_struct_v1.h" #include #include @@ -232,6 +233,24 @@ BOOST_AUTO_TEST_CASE(testCalculateTxDataHashv2) BOOST_TEST(txDataHash != nullptr); BOOST_TEST(bcos_sdk_get_last_error() == 0); + std::cout << std::string(txDataHash) << std::endl; + + + txDataWithByte->extension->buffer = nullptr; + txDataWithByte->extension->length = 0; + + auto txDataHash2 = bcos_sdk_calc_transaction_data_struct_hash_v2(cryptoType, txDataWithByte); + success = bcos_sdk_is_last_opr_success(); + BOOST_TEST(success == true); + BOOST_TEST(txDataHash2 != nullptr); + BOOST_TEST(bcos_sdk_get_last_error() == 0); + + std::cout << std::string(txDataHash2) << std::endl; + + auto txDataV1Hash = bcos_sdk_calc_transaction_data_struct_hash_v1(cryptoType, &txDataWithByte->base_v1); + std::cout << std::string(txDataV1Hash) << std::endl; + + BOOST_CHECK(std::string(txDataHash2) == std::string(txDataV1Hash)); bcos_sdk_destroy_transaction_data_struct_v2(txDataWithByte); }