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));
}