Compare commits

..

13 Commits

Author SHA1 Message Date
garvey-wong
46d1ebb9bf feat: sharding executor exec locally 2022-05-03 15:01:46 +08:00
WangXuxin
afa327419b feat: support @RouteInfo byFunc 2022-04-27 10:49:45 +08:00
CaiHQ
ff78ffc35d keep sync 2022-04-21 10:19:44 +08:00
CaiHQ
6f1fc41aad feat: support createParam
feat: docker script
2022-04-21 10:18:48 +08:00
CaiHQ
a8ea5c6d53 updatet submodulee 2022-03-30 11:35:37 +08:00
CaiHQ
d9a99cc60e add nodecenterws config 2022-03-30 11:17:17 +08:00
CaiHQ
44321ba60a keep sync 2022-03-23 14:50:46 +08:00
CaiHQ
1d55fdb69a keep sync 2022-03-22 23:52:10 +08:00
CaiHQ
ee0a158a00 support ledgerparams
add startContract at cmconfig.json
add docker scripts
2022-03-22 23:52:02 +08:00
CaiHQ
be728c012b keep sync 2022-02-18 11:16:10 +08:00
CaiHQ
f5c849893f fix: MultiPointCooperationExecutor 2022-02-18 11:14:11 +08:00
CaiHQ
604fdc80bd Merge branch 'feat/consistency-sdk' of gitee.com:BDWare/bdcontract-bundle 2022-02-17 16:44:38 +08:00
CaiHQ
9563feca03 test action: prune killed Contract 2022-02-17 16:42:17 +08:00
68 changed files with 363 additions and 49 deletions

28
.gitmodules vendored
View File

@ -1,41 +1,49 @@
[submodule "cm"] [submodule "cm"]
path = cm path = cm
url = https://gitee.com/BDWare/cm.git url = git@gitee.com/BDWare/cm.git
branch = master branch = master
[submodule "agent-backend"] [submodule "agent-backend"]
path = agent-backend path = agent-backend
url = https://gitee.com/BDWare/agent-backend.git url = git@gitee.com/BDWare/agent-backend.git
branch = master branch = master
[submodule "router-backend"] [submodule "router-backend"]
path = router-backend path = router-backend
url = https://gitee.com/BDWare/router-backend.git url = git@gitee.com/BDWare/router-backend.git
branch = master branch = master
[submodule "router-frontend"] [submodule "router-frontend"]
path = router-frontend path = router-frontend
url = https://gitee.com/BDWare/router-frontend.git url = git@gitee.com/BDWare/router-frontend.git
branch = master branch = master
[submodule "genparser"] [submodule "genparser"]
path = genparser path = genparser
url = https://gitee.com/BDWare/genparser.git url = git@gitee.com/BDWare/genparser.git
branch = master branch = master
[submodule "gmhelper"] [submodule "gmhelper"]
path = gmhelper path = gmhelper
url = https://gitee.com/BDWare/gmhelper.git url = git@gitee.com/BDWare/gmhelper.git
branch = master branch = master
[submodule "front-base"] [submodule "front-base"]
path = front-base path = front-base
url = https://gitee.com/BDWare/front-base.git url = git@gitee.com/BDWare/front-base.git
branch = master branch = master
[submodule "MockJava"] [submodule "MockJava"]
path = mockjava path = mockjava
url = https://gitee.com/BDWare/MockJava.git url = git@gitee.com/BDWare/MockJava.git
branch = master branch = master
[submodule "common"] [submodule "common"]
path = common path = common
url = https://gitee.com/BDWare/common.git url = git@gitee.com/BDWare/common.git
branch = master branch = master
[submodule "agent-frontend"] [submodule "agent-frontend"]
path = agent-frontend path = agent-frontend
url = https://gitea.internetapi.cn/bdware/bdcontract-web-ide.git url = git@gitea.internetapi.cn:bdware/bdcontract-web-ide.git
branch = master
[submodule "consistency-sdk"]
path = consistency-sdk
url = git@gitee.com:BDWare/consistency-sdk.git
branch = master
[submodule "custom-plugin"]
path = custom-plugin
url = git@gitee.com:BDWare/custom-plugin.git
branch = master branch = master

@ -1 +1 @@
Subproject commit fc7512f50f7daa86d1e2b03e818e76e75e2f98b6 Subproject commit da1f524a06bfb1a05753145bcd1f765ea4a42e81

@ -1 +1 @@
Subproject commit cdcdfbdfde22640420318b595e13e0b16da10ea0 Subproject commit b0f4c4225b5152b11f5641ac766928a7a7f64b2a

View File

@ -2,7 +2,7 @@ plugins {
id 'java' id 'java'
id 'idea' id 'idea'
} }
def currVersion = "1.6.6" def currVersion = "1.7.4"
ext.projectIds = ['group': 'com.bdware.sc', 'version': currVersion] ext.projectIds = ['group': 'com.bdware.sc', 'version': currVersion]
sourceCompatibility = 1.8 sourceCompatibility = 1.8

2
cm

@ -1 +1 @@
Subproject commit a2f8ab528bdbf33630c909b1e10541ecb0361049 Subproject commit c84cd3fac0a14afe33e5645044c6421efad2ee11

2
common

@ -1 +1 @@
Subproject commit 62533a0da168d3a3a2ee182010c660190237b72a Subproject commit 7a9ce393cdb14495eeb56507d00b8adf26438746

View File

@ -0,0 +1,20 @@
org/bdware/sdk/consistency/api/context/IMasterServerRecoverMechAction.java
org.bdware.sdk.consistency.api.context.IMasterServerRecoverMechAction
org/bdware/sdk/consistency/api/context/INetworkManager.java
org.bdware.sdk.consistency.api.context.INetworkManager
org/bdware/sdk/consistency/api/context/IMasterServerTCPAction.java
org.bdware.sdk.consistency.api.context.IMasterServerTCPAction
org/bdware/sdk/consistency/api/context/IGlobalConf.java
org.bdware.sdk.consistency.api.context.IGlobalConf
org/bdware/sdk/consistency/api/NotifiableResultMerger.java
org.bdware.sdk.consistency.api.NotifiableResultMerger
org/bdware/sdk/consistency/api/ContractExecutorFactory.java
org.bdware.sdk.consistency.api.ContractExecutorFactory
org/bdware/sdk/consistency/api/context/ISDKContext.java
org.bdware.sdk.consistency.api.context.ISDKContext
org/bdware/sdk/consistency/ConsistencyPluginManager.java
org.bdware.sdk.consistency.ConsistencyPluginManager
org.bdware.sdk.consistency.ConsistencyPluginManager$1
org.bdware.sdk.consistency.ConsistencyPluginManager$Inner
org/bdware/sdk/consistency/api/context/ICMActions.java
org.bdware.sdk.consistency.api.context.ICMActions

View File

@ -0,0 +1,2 @@
Manifest-Version: 1.0

View File

@ -0,0 +1,8 @@
package org.bdware.sdk.consistency.api.context;
import com.google.gson.JsonObject;
import org.bdware.sc.conn.ResultCallback;
public interface IMasterClientTCPAction {
void asyncExecuteContractLocally(JsonObject jo, ResultCallback rc);
}

View File

@ -1,6 +1,8 @@
package org.bdware.sdk.consistency.api.context; package org.bdware.sdk.consistency.api.context;
public interface ISDKContext { public interface ISDKContext {
IMasterClientTCPAction getMasterClientTCPAction();
IMasterServerTCPAction getMasterServerTCPAction(); IMasterServerTCPAction getMasterServerTCPAction();
INetworkManager getNetworkManager(); INetworkManager getNetworkManager();

Binary file not shown.

View File

@ -0,0 +1,43 @@
org/bdware/consistency/plugin/ra/RequestAllResponseHalfFactory.java
org.bdware.consistency.plugin.ra.RequestAllResponseHalfFactory
org/bdware/consistency/plugin/ro/ResponseOnceExecutorFactory.java
org.bdware.consistency.plugin.ro.ResponseOnceExecutorFactory
org/bdware/consistency/plugin/ro/RequestOnceExecutorFactory.java
org.bdware.consistency.plugin.ro.RequestOnceExecutorFactory
org/bdware/consistency/plugin/pbft/PBFTExecutorFactory.java
org.bdware.consistency.plugin.pbft.PBFTExecutorFactory
org/bdware/consistency/plugin/sharding/SelfAdaptiveShardingExecutorFactory.java
org.bdware.consistency.plugin.sharding.SelfAdaptiveShardingExecutorFactory
org/bdware/consistency/plugin/ra/RequestAllResponseAllFactory.java
org.bdware.consistency.plugin.ra.RequestAllResponseAllFactory
org/bdware/consistency/plugin/ra/RequestAllResponseFirstFactory.java
org.bdware.consistency.plugin.ra.RequestAllResponseFirstFactory
org/bdware/consistency/plugin/sharding/MultiPointCooperationExecutorFactory.java
org.bdware.consistency.plugin.sharding.MultiPointCooperationExecutorFactory
org/bdware/consistency/plugin/pbft/ContractCluster.java
org.bdware.consistency.plugin.pbft.ContractCluster
org/bdware/consistency/plugin/sharding/MultiPointCooperationExecutor.java
org.bdware.consistency.plugin.sharding.MultiPointCooperationExecutor
org.bdware.consistency.plugin.sharding.MultiPointCooperationExecutor$1
org.bdware.consistency.plugin.sharding.MultiPointCooperationExecutor$ResultMerger
org/bdware/consistency/plugin/pbft/PBFTExecutor.java
org.bdware.consistency.plugin.pbft.PBFTExecutor
org.bdware.consistency.plugin.pbft.PBFTExecutor$1
org.bdware.consistency.plugin.pbft.PBFTExecutor$1$1
org.bdware.consistency.plugin.pbft.PBFTExecutor$ResultMerger
org/bdware/consistency/plugin/common/AbstractContextContractExecutor.java
org.bdware.consistency.plugin.common.AbstractContextContractExecutor
org/bdware/consistency/plugin/single/SingleNodeExecutorFactory.java
org.bdware.consistency.plugin.single.SingleNodeExecutorFactory
org/bdware/consistency/plugin/ra/RequestAllExecutor.java
org.bdware.consistency.plugin.ra.RequestAllExecutor
org.bdware.consistency.plugin.ra.RequestAllExecutor$ResultMerger
org/bdware/consistency/plugin/sharding/SelfAdaptiveShardingExecutor.java
org.bdware.consistency.plugin.sharding.SelfAdaptiveShardingExecutor
org.bdware.consistency.plugin.sharding.SelfAdaptiveShardingExecutor$Block
org/bdware/consistency/plugin/ro/RequestOnceExecutor.java
org.bdware.consistency.plugin.ro.RequestOnceExecutor
org.bdware.consistency.plugin.ro.RequestOnceExecutor$1
org/bdware/consistency/plugin/ro/ResponseOnceExecutor.java
org.bdware.consistency.plugin.ro.ResponseOnceExecutor
org.bdware.consistency.plugin.ro.ResponseOnceExecutor$1

View File

@ -0,0 +1 @@

View File

@ -8,6 +8,7 @@ public abstract class AbstractContextContractExecutor implements ContractExecuto
static protected IGlobalConf globalConf = ConsistencyPluginManager.getContext().getGlobalConf(); static protected IGlobalConf globalConf = ConsistencyPluginManager.getContext().getGlobalConf();
static protected ICMActions cmActions = ConsistencyPluginManager.getContext().getCMActions(); static protected ICMActions cmActions = ConsistencyPluginManager.getContext().getCMActions();
static protected INetworkManager networkManager = ConsistencyPluginManager.getContext().getNetworkManager(); static protected INetworkManager networkManager = ConsistencyPluginManager.getContext().getNetworkManager();
static protected IMasterClientTCPAction masterClientTCPAction = ConsistencyPluginManager.getContext().getMasterClientTCPAction();
static protected IMasterServerTCPAction masterServerTCPAction = ConsistencyPluginManager.getContext().getMasterServerTCPAction(); static protected IMasterServerTCPAction masterServerTCPAction = ConsistencyPluginManager.getContext().getMasterServerTCPAction();
static protected IMasterServerRecoverMechAction masterServerRecoverMechAction = ConsistencyPluginManager.getContext().getMasterServerRecoverMechAction(); static protected IMasterServerRecoverMechAction masterServerRecoverMechAction = ConsistencyPluginManager.getContext().getMasterServerRecoverMechAction();
} }

View File

@ -1,5 +1,6 @@
package org.bdware.consistency.plugin.sharding; package org.bdware.consistency.plugin.sharding;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive; import com.google.gson.JsonPrimitive;
@ -7,6 +8,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.bdware.consistency.plugin.common.AbstractContextContractExecutor; import org.bdware.consistency.plugin.common.AbstractContextContractExecutor;
import org.bdware.sc.ComponedContractResult; import org.bdware.sc.ComponedContractResult;
import org.bdware.sc.ContractClient;
import org.bdware.sc.ContractMeta; import org.bdware.sc.ContractMeta;
import org.bdware.sc.ContractResult; import org.bdware.sc.ContractResult;
import org.bdware.sc.bean.*; import org.bdware.sc.bean.*;
@ -20,10 +22,7 @@ import org.bdware.sc.util.JsonUtil;
import org.bdware.server.trustedmodel.MultiReqSeq; import org.bdware.server.trustedmodel.MultiReqSeq;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.HashMap; import java.util.*;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -66,13 +65,13 @@ public class MultiPointCooperationExecutor extends AbstractContextContractExecut
count); // 把count改成了1设置成获得1个响应就行 count); // 把count改成了1设置成获得1个响应就行
} }
public void sendRequest(String id, ContractRequest req, String[] nodes) { public void sendRequest(String id, ContractRequest req, String[] nodes, ResultCallback rc) {
Map<String, Object> reqStr = new HashMap<>();
reqStr.put("uniReqID", id);
reqStr.put("data", req);
req.needSeq = false; req.needSeq = false;
reqStr.put("action", "executeContractLocally"); JsonObject jo = new JsonObject();
String sendStr = JsonUtil.toJson(reqStr); jo.addProperty("uniReqID", id);
jo.add("data", JsonUtil.parseObject(req));
jo.addProperty("action", "executeContractLocally");
String sendStr = jo.toString();
// master负责缓存请求 // master负责缓存请求
if (!masterServerTCPAction.getReqCache().containsKey(contractID)) { if (!masterServerTCPAction.getReqCache().containsKey(contractID)) {
masterServerTCPAction.getReqCache().put(contractID, new RequestCache()); masterServerTCPAction.getReqCache().put(contractID, new RequestCache());
@ -83,15 +82,19 @@ public class MultiPointCooperationExecutor extends AbstractContextContractExecut
LOGGER.info("node size = " + nodes.length); LOGGER.info("node size = " + nodes.length);
LOGGER.debug("nodes:" + JsonUtil.toJson(nodes)); LOGGER.debug("nodes:" + JsonUtil.toJson(nodes));
for (String node : nodes) { for (String node : nodes) {
if (node.equals(globalConf.getNodeID())) {
masterClientTCPAction.asyncExecuteContractLocally(jo, rc);
} else {
LOGGER.info( LOGGER.info(
"[sendRequests] get cmNode " "[sendRequests] get cmNode "
+ node.substring(0, 5) + node.substring(0, 5)
+ " not null " + " not null "
+ "org.bdware.consistency.plugin.ra.RequestAllExecutor 发送请求给 " + "RequestAllExecutor 发送请求给 "
+ node.substring(0, 5)); + node.substring(0, 5));
networkManager.sendToAgent(node, sendStr); networkManager.sendToAgent(node, sendStr);
} }
} }
}
private String[] getAccordingToRouteInfo(RouteInfo routeInfo, ContractRequest req, String[] members) { private String[] getAccordingToRouteInfo(RouteInfo routeInfo, ContractRequest req, String[] members) {
try { try {
@ -123,6 +126,31 @@ public class MultiPointCooperationExecutor extends AbstractContextContractExecut
val = val + members.length; val = val + members.length;
} }
return new String[]{members[val]}; return new String[]{members[val]};
case byFunc:
ContractClient client = cmActions.getManager().getClient(req.getContractID());
JsonArray membersArr = new JsonArray(members.length);
for (String member : members) {
membersArr.add(member);
}
JsonObject arg = new JsonObject();
arg.addProperty("funcName", routeInfo.funcName);
// func myFunc (currentNode, members, membersCount, sourceArg)
JsonArray funcArgs = new JsonArray();
funcArgs.add(globalConf.getNodeID());
funcArgs.add(membersArr);
funcArgs.add(membersArr.size());
funcArgs.add(req.getArg());
arg.add("funcArgs", funcArgs);
String routeResultStr = client.executeMethod("", "invokeFunctionWithoutLimit", arg.toString());
JsonObject routeResult = JsonUtil.parseString(routeResultStr).getAsJsonObject();
List<String> nodes = new ArrayList<>();
for (String key: routeResult.keySet()) {
nodes.add(routeResult.get(key).getAsString());
}
return nodes.toArray(new String[]{});
default: default:
return members; return members;
} }
@ -137,9 +165,9 @@ public class MultiPointCooperationExecutor extends AbstractContextContractExecut
// List<String> nodes = info.members; // List<String> nodes = info.members;
int validNode = 0; int validNode = 0;
for (String node : nodes) { for (String node : nodes) {
if (networkManager.hasAgentConnection(node) if (networkManager.hasAgentConnection(node)) {
&& masterServerRecoverMechAction.getRecoverStatusMap().get(node).get(contractID) //&& masterServerRecoverMechAction.getRecoverStatusMap().get(node).get(contractID)
== RecoverFlag.Fine) { // == RecoverFlag.Fine
validNode++; validNode++;
} }
} }
@ -151,7 +179,7 @@ public class MultiPointCooperationExecutor extends AbstractContextContractExecut
@Override @Override
public void execute(String requestID, ContractRequest req, ResultCallback rc, OnHashCallback hcb) { public void execute(String requestID, ContractRequest req, ResultCallback rc, OnHashCallback hcb) {
LOGGER.info("[org.bdware.consistency.plugin.sharding.MultiPointCooperationExecutor] execute " + JsonUtil.toJson(req)); LOGGER.info("[MultiPointCooperationExecutor] execute " + JsonUtil.toJson(req));
// 获得action 函数名 // 获得action 函数名
LOGGER.info("action is : " + req.getAction()); LOGGER.info("action is : " + req.getAction());
req.setContractID(cmActions.getManager().getContractIDByName(req.getContractID())); req.setContractID(cmActions.getManager().getContractIDByName(req.getContractID()));
@ -194,7 +222,7 @@ public class MultiPointCooperationExecutor extends AbstractContextContractExecut
createResultCallback(id, rc, count, req.seq, req.getContractID(), joinInfo); // 初始化结果收集器 createResultCallback(id, rc, count, req.seq, req.getContractID(), joinInfo); // 初始化结果收集器
masterServerTCPAction.getSync().sleep(id, collector); masterServerTCPAction.getSync().sleep(id, collector);
LOGGER.info("requestID=" + requestID + " master broadcasts request " + req.seq); LOGGER.info("requestID=" + requestID + " master broadcasts request " + req.seq);
sendRequest(id, req, nodes); // 发送请求 sendRequest(id, req, nodes, collector); // 发送请求
} else { } else {
LOGGER.info("invalidNodeNumOnResult"); LOGGER.info("invalidNodeNumOnResult");
request_index.getAndDecrement(); request_index.getAndDecrement();
@ -208,13 +236,12 @@ public class MultiPointCooperationExecutor extends AbstractContextContractExecut
private int getJoinCount(JoinInfo joinInfo, String contractID) { private int getJoinCount(JoinInfo joinInfo, String contractID) {
if (joinInfo == null) return resultCount; if (joinInfo == null) return resultCount;
if (joinInfo.joinCount.isJsonPrimitive() && joinInfo.joinCount.getAsJsonPrimitive().isNumber()) { if (joinInfo != null) return joinInfo.joinCount;
return joinInfo.joinCount.getAsJsonPrimitive().getAsInt();
}
try { try {
ContractRequest cr = new ContractRequest(); ContractRequest cr = new ContractRequest();
cr.setContractID(contractID); cr.setContractID(contractID);
cr.setAction(joinInfo.joinCount.getAsString()); cr.setAction("TODO");
//TODO Arg需要好好设计一下 //TODO Arg需要好好设计一下
//TODO 又好用又简单的那种设计 //TODO 又好用又简单的那种设计
//TODO //TODO

View File

@ -4,9 +4,9 @@ ARG GOPRIVATE=bdware.org/*
ARG GOPROXY=https://goproxy.cn ARG GOPROXY=https://goproxy.cn
LABEL maintainer="caihuaqian@internetapi.cn" LABEL maintainer="caihuaqian@internetapi.cn"
LABEL org.bdware.version="1.6.6" LABEL org.bdware.version="1.7.4"
LABEL org.bdware.version.isproduction="true" LABEL org.bdware.version.isproduction="true"
LABEL org.bdware.release-date="2021-12-24" LABEL org.bdware.release-date="2022-04-19"
COPY ./output /bdcontract COPY ./output /bdcontract
WORKDIR /bdcontract WORKDIR /bdcontract

View File

@ -4,9 +4,9 @@ ARG GOPRIVATE=bdware.org/*
ARG GOPROXY=https://goproxy.cn ARG GOPROXY=https://goproxy.cn
LABEL maintainer="caihuaqian@internetapi.cn" LABEL maintainer="caihuaqian@internetapi.cn"
LABEL org.bdware.version="1.6.6" LABEL org.bdware.version="1.7.4"
LABEL org.bdware.version.isproduction="false" LABEL org.bdware.version.isproduction="false"
LABEL org.bdware.release-date="2021-12-24" LABEL org.bdware.release-date="2022-04-19"
COPY ./output /bdcluster COPY ./output /bdcluster
WORKDIR /bdcluster WORKDIR /bdcluster

View File

@ -15,7 +15,7 @@ elif [ "$2" == "save" ]; then
echo "save to $3" echo "save to $3"
rm -rf ./output/BDWareProjectDir/public/TFMac rm -rf ./output/BDWareProjectDir/public/TFMac
rm -rf ./output/WebContent/bdcontract4baas rm -rf ./output/WebContent/bdcontract4baas
docker buildx build --platform linux/arm64/v8 -t bdware/bdcontract:$1 ./ --load docker buildx build --platform linux/amd64 -t bdware/bdcontract:$1 ./ --load
docker save -o $3/bdcontract-$1.tar bdware/bdcontract:$1 docker save -o $3/bdcontract-$1.tar bdware/bdcontract:$1
else else
echo "create at local" echo "create at local"

37
docker/deploy/README.md Normal file
View File

@ -0,0 +1,37 @@
本目录支持两种
# 镜像准备
请提前熟悉docker常用命令主要包括`docker ps``docker image xx``docker kill`等。
1. 下载或导入镜像:
```bash
#下载镜像
docker-compose pull
#或者是导入镜像bdcontract-x.x.x.tar为待导入镜像文件。
#docker load -i bdcontract-x.x.x.tar
```
2. 检查是否有"bdware/bdcontract:latest"镜像。
```bash
docker image ls | grep bdcontract
```
如果没有名为"bdware/bdcontract latest"的镜像,就将其中的最新版本打上。
```bash
docker image tag bdware/bdcontract:x.y.z bdware/bdcontract:latest
```
3.执行`init.sh`,创建一些初始化需要的目录。
# 修改配置
1.复制或链接`cp``./bdcontract`包括lib目录,yjs.jar)
2.修改`./bdcontract/cmvar.json`
也可利用cp目录下的jar包自己生成:
```bash
#本操作需要依赖java 1.8以上环境。
java -cp cp/libs:cp/yjs.jar org.bdware.sc.SM2Helper generateKeyToFile
```
生成的文件请妥善保存。
2. 修改配置文件cmconfig.json如果需要配置文件参数详见配置说明`cmconfig.readme.md`
3. 执行脚本`sh start.sh`

View File

@ -0,0 +1,23 @@
{
"cmi": "_CMI",
"debug": "",
"disableDoRepo": false,
"disableLocalLhs": false,
"doipCertPath": "",
"doipLhsAddress": "",
"doipPort": 21032,
"doipUserHandle": "",
"enableEventPersistence": false,
"enableSsl": "./ssl/chained.pem:./ssl/domain.pem",
"ip": "127.0.0.1",
"isLAN": true,
"overwrite": false,
"servicePort": 21030,
"textFileSuffixes": ".yjs,.json,.txt,.css,.js,.html,.md,.conf,.csv",
"withBdledgerClient": "./runnable/bdledger_mac",
"withBdledgerServer": false,
"consistencyPlugins": "/bdcontract/nosuchlib/custom-plugin.jar",
"startContract": [
],
"datachainConf": "_LEDGERHOST:_LEDGERPORT"
}

View File

@ -0,0 +1,6 @@
{
"_HOSTIP": "127.0.0.1",
"_PREFIX": "macjw.zbfz",
"_LEDGERPORT": "2401",
"_LEDGERHOST": "bdledger"
}

View File

@ -0,0 +1,3 @@
#!/bin/bash
java -cp cp/libs/*:cp/yjs.jar org.bdware.sc.SM2Helper generateKeyToFile
java -cp cp/libs/*:cp/yjs.jar org.bdware.sc.SM2Helper generateCMConfig

View File

@ -0,0 +1,42 @@
node:
id: acb1cc2a7013ec8a7ea7eee0ec6f835851dd8e91
api:
grpc:
addr: :2401
http:
enabled: true
datastore:
source: /data/block
p2p:
identity:
peerId: QmeG9PE8NQ7q8M6xiovVp9u1UjZZWc8Wom1K5MomJgLuWs
privKey: CAASqQkwggSlAgEAAoIBAQDAb0X3U2HjgoUniXH8EMs6L8FHGU63BahbY+/7GjnVFXe0bSuPlpaUC2Twmhulvad/1nSCuF178UYoYQ6Qz1AwBl4IiZmQxhSXdZPEXrN3WnC70rrkMMQxz7sjevyEXm9EIUo4Hepxlvd6PlTHUaYOW4TXSsv5JqoZW4+itxane/tOCCpFM/ppftpz3N5RxO181mczm6cljHcShZXkHSxo0nn3sHSqixqbzv+c0x/c5YP+aue3MJX2IjODGEY1a3x3HwCmwK3IgUSKWyZk480codWeO/5JFLNKzlXzWAu2GG7v2MF1h3Fa4lwEGdCLILY2Ux9d+M3wRvoz7ZWYn0CTAgMBAAECggEALLgvLEDGWNa2FvAL+yXz9HuwkNNCxamc7FAXLuVzVx98CAPuwZmfOJxFQtytXCDs0fqGbPJnVyxEv5F+jwx+eAqiw50mgMxncKM0ScgwMKZl2GAqamkizuiVdrNYB3LirJSH6O6a0vbgYBooHYHN8zw1bMrHCAmCMg5jHM8rhpQTp22VIa4YxlQDUAQdvuN4ilIXxwiyxTpbQobH4hVmwwoeU65sbFSZQ219d/KXPkK1l9c3OGf9KTPWzG3uq2lx2BKrJ3TMZYdiGBDKc89m6TnOidVB5jC5VKT8S4idKUQocMcg8eMYEWtR/0YgS0YC0FBhmpHfiam/kJ0mc+L6YQKBgQD2CBwi8kwBqJISM9kOAu7k2vDTB6eb83YWaSq4aQ/AYKvtfUHLz9Ekx+EjPmtMIfvxvJ86NEuCK64Ag4I943dCEyZYE00xBL/Zwark0LxgIuR8tSkxlPoErUmFdLELqIsUJS4Izu8lkPXE6PSxDZMe2Klq0Nd7wVglgjHxpcotOwKBgQDIOz6NEW54F0amGATtVj7DUN36wSQwE2AX5cyWZeKcvJixKKCdLSPln6QFW7+vI7vR4umUcFFEUKO8HwGojcq4+EjiOn/CppQ1GwD2xNXKFiJ5Sl3wpnqARFNHj3rH8l3kI3V5qt0c0OSzKr3bMGUdKNREUaKlqg20e3YznSZkiQKBgQCEnPh1ib6YQkGB2DqNx9z2tGCMjxqz/7XN/J/PSKn52uGxIAvgDMNBnQ9oTNPO9J51vWLiH5/3qQ2gL0J7k2kLz4CihrzbyCCVAkPYE/8Fnqkj4w4yMIfXD4SKj8yCaTWWBThb/RaAXDNtENgbuyJqxQQElE8h4KRfi17aTq+8UwKBgQCONyYSZBMmUMHpLp4xRFSHvWQsugnN67UQxDMvj2YJFRsOmWCawnkAmwaQl73p02OPi6+DstLFxtDEyPEQmsUl45NAu3QK+O3DWk6w9tUyF86cf2mBh3zypZTQ+uOmKErvww+pPuaVlPkbGHyItjLbJyi87Y6sQ8BANICb4D5ooQKBgQDHC6rQTaGIaOgAQzBzFPdi2foFEXTr9zpp0iVYdTFJr68OhROEkzQetHdk5MYR6SWjf3wQk34GDUqtVXNzoIhUkD6P83QCZKmsrkvYiQH0aXjAmjLpcDvSgUFCxS8NcaHKeDNLHw3SH8zh0zDFE1vlXdYzittDjmnYPGEEJzrUlg==
addresses:
swarm:
- /ip4/0.0.0.0/tcp/2416
- /ip4/0.0.0.0/udp/2416/quic
bootstrap:
- /ip4/127.0.0.1/tcp/2416/p2p/QmeG9PE8NQ7q8M6xiovVp9u1UjZZWc8Wom1K5MomJgLuWs
pubsub:
router: gossipsub
heartbeatInterval: 10000
query:
maxDuration: 3600 # seconds
maxRequestLifetime: 3.0 # seconds
waitReservedTime: 1.0 # seconds
nrw:
numWitness: 0
numBackup: 0
txsPerBlock: 1000
blockGenCycle: 30000
requestTimeout: 16
messageTimeout: 5
log:
format: text
level: INFO

View File

@ -0,0 +1,32 @@
version: "3"
services:
bdledger:
image: bdware/bdledger:dev-210909.874f034d
command: "-c /etc/bdledger/config.yml"
restart: unless-stopped
volumes:
- ./bdledger/config.yml:/etc/bdledger/config.yml:ro
- .//bdledger/data:/data
ports:
- "2416:2416" # P2P
- "2401:2401" # API
bdcontract:
image: bdware/bdcontract:latest
command: "-Dfile.encoding=UTF-8 -Djava.library.path='./dynamicLibrary' -cp ./libs/*:bdagent.jar org.bdware.server.CMHttpServer"
restart: unless-stopped
depends_on:
- bdledger
volumes:
- ./bdcontract/rocksdb:/bdcontract/rocksdb
- ./bdcontract/ContractDB:/bdcontract/ContractDB
- ./bdcontract/ContractManagerDB:/bdcontract/ContractManagerDB
- ./bdcontract/BDWareProjectDir:/bdcontract/BDWareProjectDir
- ./bdcontract/cmconfig.json:/bdcontract/cmconfig.json:ro
- ./bdcontract/cp:/bdcontract/cp
- ./bdcontract/tls:/bdcontract/tls:ro
ports:
- "21030:21030" # Contract manager API
- "21031:21031" # Contract manager master
- "21032:21032" # DOA
- "21033:21033" # Prometheus exporter

12
docker/deploy/init.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
set -a
#source ./.env
set +a
mkdir -p \
./bdcontract/rocksdb \
./bdcontract/ContractDB \
./bdcontract/ContractManagerDB \
./bdcontract/ssl \
./bdcontract/BDWareProjectDir \
./bdledger/data

37
docker/deploy/start.sh Executable file
View File

@ -0,0 +1,37 @@
#!/bin/bash
if [ ! -d "./BDWareProjectDir" ]; then
mkdir ./BDWareProjectDir
fi
if [ ! -d "./ContractDB" ]; then
mkdir ./ContractDB
fi
if [ ! -d "./ContractManagerDB" ]; then
mkdir ./ContractManagerDB
fi
if [ ! -d "./log" ]; then
mkdir ./log
fi
if [ ! -d "./manager.key" ]; then
echo "missing manager.key! automatically generate!"
java -cp cp/libs:cp/yjs.jar org.bdware.sc.SM2Helper generateKeyToFile
fi
if [ ! -d "./cp" ]; then
echo "missing cp dir!"
exit 1
fi
export CURDIR=`pwd`/bdcontract
docker run -p 21030-21033:21030-21033 -v $CURDIR/BDWareProjectDir:/bdcontract/BDWareProjectDir \
-v $CURDIR/ContractDB:/bdcontract/ContractDB \
-v $CURDIR/ContractManagerDB:/bdcontract/ContractManagerDB \
-v $CURDIR/cmconfig.json:/bdcontract/cmconfig.json \
-v $CURDIR/cp:/bdcontract/cp: \
-v $CURDIR/keys:/bdcontract/keys: \
-v $CURDIR/log:/bdcontract/log \
-v $CURDIR/manager.key:/bdcontract/manager.key: \
-d bdware/bdcontract:latest

View File

@ -0,0 +1,10 @@
#!/bin/bash
rm -rf build/dockerdist
mkdir build/dockerdist
cp docker/dockerdist/* build/dockerdist/
cp ./agent-backend/cmconfig.json.template build/dockerdist/cmconfig.json
cp -r ../cp-bundle/cp/build/output build/dockerdist/cp
if [ "$2" == "push" ]; then
done;

@ -1 +1 @@
Subproject commit a99c4e9af4ec9c2fbfaefd62ef8304ddb938c649 Subproject commit 19a033c69983253129ede0fe0f79bd25e36a39d6

@ -1 +1 @@
Subproject commit 8f8c0f27dfe7a45728a58c04f2e29c7a07cffeb5 Subproject commit a696b5a843a1bd09a84002ba6161a2a07d77e153

@ -1 +1 @@
Subproject commit c489be8b4a7a1f7e8d478ca22ead9c87620ed9d8 Subproject commit 310b0f2913b91f23794926b2671c04160f8dab9d