源码编译和部署¶
兼容性说明¶
v2stable分支版本所述的truora支持FISCO-BCOS 2.6.0 +
Truora-Service 分支v2stable
Truora
v1.X.0版本支持 FISCO-BCOS 2.6.0 + 版本。一键安装,Truora docker和web相关模块参见文档说明。
latest/v3dev分支所述的truora支持FISCO-BCOS 3.1.x +
文档连接Latest/v3dev分支
Truora-Service 主分支main
Truora-Service 开发分支v3dev
v3dev分支暂不支持一键安装、docker和web模块,欢迎参与开发贡献。
安装介绍¶
前置依赖¶
在使用本组件前,请确认系统环境已安装相关依赖软件,清单如下:
| 依赖软件 | 说明 |
|---|---|
| FISCO-BCOS | >= 2.6.0 |
| MySQL | >= mysql-community-server[5.7] |
| Java | JDK[1.8] |
| Git | 下载的源码使用 Git |
请参考:附录 检查系统是否已经安装相关依赖软件。
重要
CentOS 的 yum 仓库的 OpenJDK 缺少 JCE(Java Cryptography Extension),导致 Web3SDK 无法正常连接区块链节点。CentOS 用户推荐参考 CentOS 安装 Java 进行安装。
拉取代码¶
执行命令:
# 拉取源码
git clone https://github.com/WeBankBlockchain/Truora-Service.git
# 进入目录
cd Truora-Service
编译代码¶
方式一:如果服务器已安装Gradle,且版本为 Gradle-4.10 +
gradle build -x test
方式二:如果服务器未安装 Gradle,或者版本低于 Gradle-4.10,使用 gradlew 编译
chmod +x ./gradlew && ./gradlew build -x test
构建完成后,会在根目录 Truora-Service 下生成已编译的代码目录 dist。
加密类型¶
FISCO-BCOS 链有两种类型: 非国密(ECDSA) 和 国密(SM2) 。
在使用 SDK 连接 FISCO-BCOS 链的节点时,也有两种方式:非国密(ECDSA)连接 和 国密(SM2)连接。
关于 链类型 和 链连接 的关系如下:
| 链类型 | 非国密链(ECDSA) | 国密链(SM2) |
|---|---|---|
| 非国密连接(ECDSA) | 支持 | 支持 |
| 国密连接(SM2) | 不支持 | 支持 |
提示
非国密 链 只支持 非国密连接
国密 链 支持 非国密连接 和 国密连接,但是需要根据节点的 config.ini 文件,检查节点是否已经开启国密连接
在部署 Truora-Service,需要同时配置 链类型 和 连接类型。
链类型¶
在使用 build_chain.sh 脚本部署 FISCO-BCOS 链时,如果使用了 -g 参数,则链类型为 国密链。
连接类型¶
如果 FISCO-BCOS 版本小于或等于 v2.4.x,只能使用 非国密方式(ECDSA) 连接链。
如果 FISCO-BCOS 版本大于或等于 v2.5.x,执行命令:
# 查看 sm_crypto_channel 配置项
grep "sm_crypto_channel" nodes/127.0.0.1/node0/config.ini
如果输出:
sm_crypto_channel=true
表示节点已经启用 国密(SM2)连接,只能使用 国密方式(SM2) 连接链。
如果没有输出,或者输出如下:
sm_crypto_channel=false
表示节点未启用 国密连接,只能使用 非国密方式(ECDSA) 连接链。
重要
不同的连接方式,需要拷贝的证书不同
使用 非国密 的方式连接节点,需要拷贝 sdk/ 目录下 ca.crt、node.crt 和 node.key 文件
使用 国密 的方式连接节点,需要拷贝 sdk/gm 目录下 gm 开头的所有文件
修改配置¶
进入 dist 目录
cd dist
dist 目录提供了一份配置模板 conf
配置数据库¶
修改配置 conf/application.yml 文件
# 进入 conf 目录
cd conf
修改数据库
IP地址,用户名和密码。
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/truora?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false
username: "defaultAccount"
password: "defaultPassword"
拷贝证书¶
在拷贝证书文件之前,需要确定使用哪种方式连接到链接点:非国密连接(ECDSA)还是 国密连接(SM2),请参考:连接类型
非国密连接
# 进入 conf 目录
cd conf
# 非国密连接
cp /${PATH_TO_SDK}/node.* .
cp /${PATH_TO_SDK}/ca.crt .
重要
非国密链: 拷贝节点所在目录 nodes/${ip}/sdk 下的 ca.crt、node.crt 和 node.key 文件拷贝到 conf 目录
国密连接
# 进入 conf 目录
cd conf
# 国密连接
cp /${PATH_TO_SDK}/gm/gm.* .
重要
国密链: 拷贝节点所在目录 nodes/${ip}/sdk/gm 下的 gm 开头的所有文件拷贝到 conf 目录
多链(群组)支持¶
配置连接¶
Truora-Service 支持同时连接多条链,以及连接同一条链中的多个群组。
同一个 Truora-Service 连接多条链时,要求 链类型 都相同,同时采用 相同的连接方式 连接到链接点。
重要
不同链之间相互独立,没有关联
多条链时,创建独立目录存放不同链的证书文件,同时拷贝证书文件
如果采用 非国密连接(ECDSA),修改
application-ecdsa.yml文件
########################################################################
# 配置 Truora 连接的链和群组信息(证书和地址):
# 1. 同一条链可以配置多个群组
# 2. 可以配置多条链
########################################################################
group-channel-connections-configs:
configs:
## 第一条链的连接信息,证书,群组列表和 IP:Port
- chainId: 1
caCert: classpath:ca.crt
sslCert: classpath:node.crt
sslKey: classpath:node.key
all-channel-connections:
- group-id: 1
connections-str:
# node listen_ip:channel_listen
- 127.0.0.1:${FISCO_BCOS_PORT:20200}
## 群组 2 的信息
#- group-id: 2
# connections-str:
# - 127.0.0.1:20200
## 第二条链的连接信息,证书,群组列表以及对应的 IP:Port
#- chainId: 2
# caCert: classpath:2/ca.crt
# sslCert: classpath:2/node.crt
# sslKey: classpath:2/node.key
# all-channel-connections:
# - group-id: 1
# connections-str:
# - 127.0.0.1:20200
如果采用 国密连接(SM2),修改
application-sm2.yml文件
########################################################################
# 配置 Truora 连接的链和群组信息(证书和地址):
# 1. 同一条链可以配置多个群组
# 2. 可以配置多条链
########################################################################
group-channel-connections-configs:
configs:
## 第一条链的连接信息,证书,群组列表和 IP:Port
- chainId: 1
gmCaCert: classpath:gmca.crt
gmSslCert: classpath:gmsdk.crt
gmSslKey: classpath:gmsdk.key
gmEnSslCert: classpath:gmensdk.crt
gmEnSslKey: classpath:gmensdk.key
all-channel-connections:
- group-id: 1
connections-str:
# node listen_ip:channel_listen
- 127.0.0.1:${FISCO_BCOS_PORT:20200}
## 群组 2 的信息
#- group-id: 2
# connections-str:
# - 127.0.0.1:20200
## 第二条链的连接信息,证书,群组列表以及对应的 IP:Port
#- chainId: 2
# gmCaCert: classpath:2/gmca.crt
# gmSslCert: classpath:2/gmsdk.crt
# gmSslKey: classpath:2/gmsdk.key
# gmEnSslCert: classpath:2/gmensdk.crt
# gmEnSslKey: classpath:2/gmensdk.key
# all-channel-connections:
# - group-id: 1
# connections-str:
# - 127.0.0.1:20200
启用链和群组¶
根据连接类型,修改 application-ecdsa.yml 或 application-sm2.yml 文件中 event.eventRegisters 配置。
提示
配置多链多群组监听时,配置的链ID和群组ID,必须在 group-channel-connections-configs 中配置过
group-channel-connections-configs 表示 Truora-Service 会连接到哪些链和群组
eventRegisters 表示启用哪些链和群组
########################################################################
# 配置事件监听:
# 1. 配置 Truora 需要监听的链(ChainId)和群组(groupId)
# 2. 配置的 chainId 和 groupId 需要在 group-channel-connections-configs 存在
########################################################################
event:
eventRegisters:
- {chainId: 1, group: 1}
#- {chainId: 1, group: 2}
#- {chainId: 2, group: 1}
#- {chainId: 2, group: 2}
服务启停¶
返回到 dist 目录执行:
启动
# 采用非国密连接(ECDSA)
bash start.sh
# 采用国密连接(SM2),添加 gm 参数
bash start.sh gm
停止
bash stop.sh
检查
bash status.sh
备注:服务进程起来后,需通过日志确认是否正常启动,出现以下内容表示正常;如果服务出现异常,确认修改配置后,重启提示服务进程在运行,则先执行 stop.sh,再执行 start.sh。
Application() - main run success...