diff --git a/build/repo.sh b/build/repo.sh index 56aac1d5..d3a12ab3 100755 --- a/build/repo.sh +++ b/build/repo.sh @@ -1,4 +1,3 @@ - #调用当前脚本目录下 env.sh 脚本,设置环境变量,处理当前传入参数; if [ ! $ENV_SHELL ] then @@ -103,6 +102,10 @@ do cd $BASE_DIR done +#首次执行同步更新子模块的远程仓库 origin 的地址会将主项目地址更改,以下操作确保主项目远程仓库地址正确 +git config remote.origin.url $REMOTE_ORIGIN_URL +git config remote.origin.pushurl $REMOTE_ORIGIN_URL + #检查是否要跳过子模块更新环节; if [ $SKIP_SUBMODULES_UPDATE == 1 ] then diff --git a/deploy/deploy-gateway/pom.xml b/deploy/deploy-gateway/pom.xml index a28fbe3b..aaa989eb 100644 --- a/deploy/deploy-gateway/pom.xml +++ b/deploy/deploy-gateway/pom.xml @@ -5,7 +5,7 @@ com.jd.blockchain deploy-root - 1.4.0-SNAPSHOT + 1.4.0.RELEASE deploy-gateway diff --git a/deploy/deploy-gateway/src/main/resources/docs/code_example.MD b/deploy/deploy-gateway/src/main/resources/docs/code_example.MD index cdb599ff..2f429d3f 100644 --- a/deploy/deploy-gateway/src/main/resources/docs/code_example.MD +++ b/deploy/deploy-gateway/src/main/resources/docs/code_example.MD @@ -3,23 +3,23 @@ com.jd.blockchain sdk-client - 1.3.0.RELEASE + 1.4.0.RELEASE com.jd.blockchain contract-starter - 1.3.0.RELEASE + 1.4.0.RELEASE com.jd.blockchain crypto-classic - 1.3.0.RELEASE + 1.4.0.RELEASE com.jd.blockchain crypto-sm - 1.3.0.RELEASE + 1.4.0.RELEASE ``` # 2. 数据快速上链 diff --git a/deploy/deploy-peer/pom.xml b/deploy/deploy-peer/pom.xml index a31a5614..b3520323 100644 --- a/deploy/deploy-peer/pom.xml +++ b/deploy/deploy-peer/pom.xml @@ -5,7 +5,7 @@ com.jd.blockchain deploy-root - 1.4.0-SNAPSHOT + 1.4.0.RELEASE deploy-peer diff --git a/deploy/deploy-peer/src/main/resources/config/init/bftsmart.config b/deploy/deploy-peer/src/main/resources/config/init/bftsmart.config index cdc1b1a5..4dca17fe 100644 --- a/deploy/deploy-peer/src/main/resources/config/init/bftsmart.config +++ b/deploy/deploy-peer/src/main/resources/config/init/bftsmart.config @@ -57,6 +57,12 @@ system.server.3.network.secure=false #Specify if the communication system should use a thread to send data (true or false) system.communication.useSenderThread = false +#The time interval for retrying to send message after connection failure. In milliseconds; +system.communication.send.retryInterval=2000 + +#The number of retries to send message after connection failure. +system.communication.send.retryCount=100 + #Force all processes to use the same public/private keys pair and secret key. This is useful when deploying experiments #and benchmarks, but must not be used in production systems. system.communication.defaultkeys = true diff --git a/deploy/deploy-peer/src/main/resources/docs/安装部署.MD b/deploy/deploy-peer/src/main/resources/docs/安装部署.MD index 3157a953..c2eb5e3f 100644 --- a/deploy/deploy-peer/src/main/resources/docs/安装部署.MD +++ b/deploy/deploy-peer/src/main/resources/docs/安装部署.MD @@ -1,6 +1,6 @@ # JDChain安装部署指南 -本部署指南基于JDChain1.3.0.RELEASE版本来构建。 +本部署指南基于JDChain1.4.0.RELEASE版本来构建。 ## 1. 部署环境 ### 1.1 系统部署结构 ![部署结构](imgs/structure.png) diff --git a/deploy/deploy-peer/src/main/resources/scripts/active-parti.sh b/deploy/deploy-peer/src/main/resources/scripts/active-parti.sh index df895210..648f6963 100644 --- a/deploy/deploy-peer/src/main/resources/scripts/active-parti.sh +++ b/deploy/deploy-peer/src/main/resources/scripts/active-parti.sh @@ -1,6 +1,6 @@ #!/bin/bash -OME=$(cd `dirname $0`;cd ../; pwd) +HOME=$(cd `dirname $0`;cd ../; pwd) boot_file=$(ls ../libs | grep tools-activeparti-booter-) if [ ! -n "$boot_file" ]; then echo "tools-activeparti-booter is null" diff --git a/deploy/deploy-peer/src/main/resources/scripts/deactive-parti.sh b/deploy/deploy-peer/src/main/resources/scripts/deactive-parti.sh index 0dc00080..67ad5314 100644 --- a/deploy/deploy-peer/src/main/resources/scripts/deactive-parti.sh +++ b/deploy/deploy-peer/src/main/resources/scripts/deactive-parti.sh @@ -1,6 +1,6 @@ #!/bin/bash -OME=$(cd `dirname $0`;cd ../; pwd) +HOME=$(cd `dirname $0`;cd ../; pwd) boot_file=$(ls ../libs | grep tools-deactiveparti-booter-) if [ ! -n "$boot_file" ]; then echo "tools-deactiveparti-booter is null" diff --git a/deploy/pom.xml b/deploy/pom.xml index 98b06e0a..20df00f4 100644 --- a/deploy/pom.xml +++ b/deploy/pom.xml @@ -9,11 +9,11 @@ ../project/parent deploy-root - 1.4.0-SNAPSHOT + 1.4.0.RELEASE pom - 1.4.0-SNAPSHOT + 1.4.0.RELEASE diff --git a/libs/bft-smart b/libs/bft-smart index caeda287..1c5019d5 160000 --- a/libs/bft-smart +++ b/libs/bft-smart @@ -1 +1 @@ -Subproject commit caeda28790884979c2353d632b60de3c265a27be +Subproject commit 1c5019d56e538d1744f53d35593ed1d6a3a75dce diff --git a/pom.xml b/pom.xml index eff9ec18..7c51bb32 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.jd.blockchain jdchain-root - 1.2.1.RELEASE + 1.4.0.RELEASE pom jdchain root project diff --git a/samples/contract-samples/pom.xml b/samples/contract-samples/pom.xml index 955f2fc4..c032e9dd 100644 --- a/samples/contract-samples/pom.xml +++ b/samples/contract-samples/pom.xml @@ -6,7 +6,7 @@ com.jd.blockchain jdchain-samples - 1.2.1.RELEASE + 1.4.0.RELEASE contract-samples diff --git a/samples/pom.xml b/samples/pom.xml index 397ebb30..fe6c9688 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -11,11 +11,11 @@ com.jd.blockchain jdchain-samples - 1.2.1.RELEASE + 1.4.0.RELEASE pom - 1.3.1-SNAPSHOT + 1.4.0.RELEASE @@ -52,6 +52,11 @@ crypto-sm ${framework.version} + + com.jd.blockchain + crypto-base + ${framework.version} + diff --git a/samples/sdk-samples/pom.xml b/samples/sdk-samples/pom.xml index 10e0ab45..3bedbf3e 100644 --- a/samples/sdk-samples/pom.xml +++ b/samples/sdk-samples/pom.xml @@ -5,7 +5,7 @@ com.jd.blockchain jdchain-samples - 1.2.1.RELEASE + 1.4.0.RELEASE sdk-samples @@ -35,6 +35,31 @@ contract-samples ${project.version} + + com.jd.blockchain + crypto-base + 1.4.0.RELEASE + + + com.jd.blockchain + crypto-framework + ${framework.version} + + + com.jd.blockchain + crypto-classic + ${framework.version} + + + com.jd.blockchain + crypto-sm + ${framework.version} + + + com.jd.blockchain + crypto-utils-classic + ${framework.version} + diff --git a/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Constant.java b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Constant.java index 3ee48e47..317f564b 100644 --- a/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Constant.java +++ b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Constant.java @@ -7,20 +7,20 @@ import java.io.File; public class SDKDemo_Constant { - public static final String GW_IPADDR = "127.0.0.1"; + public static final String GW_IPADDR = "jdchain-cloud0-8080.jdfmgt.com"; // public static final String GW_IPADDR = "192.168.151.41"; - public static final int GW_PORT = 11000; + public static final int GW_PORT = 80; // public static final int GW_PORT = 18081; public static final String[] PUB_KEYS = { - "3snPdw7i7PjVKiTH2VnXZu5H8QmNaSXpnk4ei533jFpuifyjS5zzH9", + "3snPdw7i7Pf2u9KTNUhxrYxgEymH24zP3NNNauRVwX5yDD6rzu2uBY", "3snPdw7i7PajLB35tEau1kmixc6ZrjLXgxwKbkv5bHhP7nT5dhD9eX", "3snPdw7i7PZi6TStiyc6mzjprnNhgs2atSGNS8wPYzhbKaUWGFJt7x", "3snPdw7i7PifPuRX7fu3jBjsb3rJRfDe9GtbDfvFJaJ4V4hHXQfhwk"}; public static final String[] PRIV_KEYS = { - "177gjzHTznYdPgWqZrH43W3yp37onm74wYXT4v9FukpCHBrhRysBBZh7Pzdo5AMRyQGJD7x", + "177gjy71kcL5pU2YayqeZ44AfE87o8b5PfLeBER1rjsjViGux3TzdLcQs7QEznRMCw2sAHD", "177gju9p5zrNdHJVEQnEEKF4ZjDDYmAXyfG84V5RPGVc5xFfmtwnHA7j51nyNLUFffzz5UT", "177gjtwLgmSx5v1hFb46ijh7L9kdbKUpJYqdKVf9afiEmAuLgo8Rck9yu5UuUcHknWJuWaF", "177gk1pudweTq5zgJTh8y3ENCTwtSFsKyX7YnpuKPo7rKgCkCBXVXh5z2syaTCPEMbuWRns"}; diff --git a/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Tx_Persistance.java b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Tx_Persistance.java index 24417893..ef0762c4 100644 --- a/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Tx_Persistance.java +++ b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Tx_Persistance.java @@ -84,7 +84,7 @@ public class SDKDemo_Tx_Persistance { TransactionContent txContent = BinaryProtocol.decode(txContentBytes, TransactionContent.class); // 对交易内容签名; - DigitalSignature signature1 = SignatureUtils.sign(keyPair1.getAlgorithm(),txContent, keyPair1); + DigitalSignature signature1 = SignatureUtils.sign(keyPair1.getAlgorithm(), txContent, keyPair1); // 根据交易内容重新准备交易; PreparedTransaction decodedPrepTx = blockchainService.prepareTransaction(txContent); diff --git a/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_Base_Demo.java b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_Base_Demo.java index c2a7ce73..f870316c 100644 --- a/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_Base_Demo.java +++ b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_Base_Demo.java @@ -48,4 +48,9 @@ public abstract class SDK_Base_Demo { ptx.sign(adminKey); return ptx.commit(); } + + protected void printTxResponse(TransactionResponse response) { + System.out.printf("TxResponse's state = [%s][%s], blockHeight = [%s] ! \r\n", + response.isSuccess(), response.getExecutionState(), response.getBlockHeight()); + } } diff --git a/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_ConsensusSettings_Update_Demo.java b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_ConsensusSettings_Update_Demo.java new file mode 100644 index 00000000..9c0ab330 --- /dev/null +++ b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_ConsensusSettings_Update_Demo.java @@ -0,0 +1,42 @@ +package com.jd.blockchain.sdk.samples; + +import com.jd.blockchain.ledger.PreparedTransaction; +import com.jd.blockchain.ledger.TransactionResponse; +import com.jd.blockchain.ledger.TransactionTemplate; +import com.jd.blockchain.utils.Property; + +import java.util.ArrayList; +import java.util.List; + +public class SDK_ConsensusSettings_Update_Demo extends SDK_Base_Demo { + + public static void main(String[] args) { + new SDK_ConsensusSettings_Update_Demo().updateSettings(); + } + + public void updateSettings() { + + List properties = new ArrayList(); + + // 修改bftsmart.conf配置文件中的选项; + properties.add(new Property("system.communication.useSenderThread", "false")); + + Property[] propertiesArray = properties.toArray(new Property[properties.size()]); + + TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash); + + txTpl.settings().update(propertiesArray); + + // TX 准备就绪; + PreparedTransaction prepTx = txTpl.prepare(); + + // 使用私钥进行签名; + prepTx.sign(adminKey); + + // 提交交易; + TransactionResponse transactionResponse = prepTx.commit(); + + System.out.println(transactionResponse.isSuccess()); + + } +} diff --git a/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_InsertData_Demo.java b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_InsertData_Demo.java index 928af76a..512cb5cd 100644 --- a/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_InsertData_Demo.java +++ b/samples/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_InsertData_Demo.java @@ -101,7 +101,7 @@ public class SDK_InsertData_Demo extends SDK_Base_Demo { } //根据交易的 hash 获得交易;注:客户端生成 PrepareTransaction 时得到交易hash; - HashDigest txHash = txList[0].getTransactionHash(); + HashDigest txHash = txList[0].getRequest().getTransactionHash(); // Transaction tx = blockchainService.getTransactionByContentHash(ledgerHash, txHash); // String[] objKeys = new String[] { "x001", "x002" }; // KVDataEntry[] kvData = blockchainService.getDataEntries(ledgerHash, commerceAccount, objKeys); diff --git a/samples/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_Contract_Test.java b/samples/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_Contract_Test.java index 0425f5ce..ed0eee08 100644 --- a/samples/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_Contract_Test.java +++ b/samples/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_Contract_Test.java @@ -299,8 +299,7 @@ public class SDK_Contract_Test { } private static HashDigest getLedgerHash() { - byte[] addressBytes = Base58Utils.decode(ledgerAddress); - return new HashDigestBytes(DefaultCryptoEncoding.decodeAlgorithm(addressBytes), addressBytes); + return new HashDigestBytes(DefaultCryptoEncoding.decodeAlgorithm(Base58Utils.decode(ledgerAddress)), Base58Utils.decode(ledgerAddress)); } /** diff --git a/samples/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_BatchInsertData_Test_.java b/samples/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_BatchInsertData_Test_.java index eb04157b..7e2d78e3 100644 --- a/samples/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_BatchInsertData_Test_.java +++ b/samples/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_BatchInsertData_Test_.java @@ -114,8 +114,7 @@ public class SDK_GateWay_BatchInsertData_Test_ { } private HashDigest getLedgerHash() { - byte[] hashBytes = Base58Utils.decode(ledgerHash); - return new HashDigestBytes(DefaultCryptoEncoding.decodeAlgorithm(hashBytes), hashBytes); + return new HashDigestBytes(DefaultCryptoEncoding.decodeAlgorithm(Base58Utils.decode(ledgerHash)), Base58Utils.decode(ledgerHash)); }