3. 跨链网关部署¶
跨链网关Pier能够支持应用链便捷、快速地接入到跨链平台BitXHub中,从而实现和其他业务区块链的跨链操作。
获取pier部署包¶
可以通过源码编译和二进制下载的方式获取部署包。
# 编译跨链网关本身
git clone https://github.com/meshplus/pier.git
cd pier && git checkout release-2.8
make prepare && make install
初始化pier配置¶
在进行应用链注册、验证规则部署等步骤之前,需要初始化跨链网关的配置目录,以用户目录下的pier为例:
# CONFIG_PATH是网关所在的路径
pier --repo $CONFIG_PATH/pier1 init relay
#注意:如果想要同时启动两条链,例如以太坊和Fabric,需要使用pier再次初始化一个文件夹,例如
pier --repo $CONFIG_PATH/pier2 init relay
#再将另一条链对应的命令的pier1修改为pier2
该命令会生成跨链网关的一些基础配置文件模板,使用 tree 命令可查看目录信息:
tree -L 1 $CONFIG_PATH/pier1
├── api
├── certs
├── key.json
├── node.priv
└── pier.toml
1 directory, 4 files
获取应用链插件部署包¶
源码下载编译
# 编译Ethereum 插件
cd $CONFIG_PATH
git clone https://github.com/meshplus/pier-client-ethereum.git
cd pier-client-ethereum && git checkout release-2.8
make eth
# 说明:1.ethereum插件编译之后会在插件项目的build目录生成二进制插件文件eth-client;
# 2.需要将生成好的二进制插件存放到pier的配置目录下的plugins文件夹底下;
# 3.插件名称应与下一步的修改应用链插件的配置的plugin名称一致(为了方便起见,统一重命名为appchain_plugin)
mkdir $CONFIG_PATH/pier1/plugins && cp build/eth-client $CONFIG_PATH/pier1/plugins/appchain_plugin
二进制下载
除了源码编译外,我们也提供了直接下载Pier及其插件二进制的方式,下载地址链接如下:Pier二进制包下载 和 ethereum插件二进制包下载链接中已经包含了所需的二进制程序和依赖库,您只需跟据操作系统的实际情况进行选择和下载即可。
源码下载编译
# 编译Fabric插件
cd $CONFIG_PATH
git clone https://github.com/meshplus/pier-client-fabric.git
cd pier-client-fabric && git checkout release-2.8
make fabric1.4
# 说明:1.fabric插件编译之后会在插件项目的build目录生成fabric-client-1.4文件;
# 2.需要将生成好的二进制插件存放到pier的配置目录下的plugins文件夹底下;
# 3.插件名称应与下一步的修改应用链插件的配置的plugin名称一致(为了方便起见,统一重命名为appchain_plugin)
mkdir $CONFIG_PATH/pier1/plugins && cp build/fabric-client-1.4 $CONFIG_PATH/pier1/plugins/appchain_plugin
二进制下载
除了源码编译外,我们也提供了直接下载Pier及其插件二进制的方式,下载地址链接如下:Pier二进制包下载 和 fabric插件二进制包下载链接中已经包含了所需的二进制程序和依赖库,您只需跟据操作系统的实际情况进行选择和下载即可。
经过以上的步骤,相信您已经编译出了部署Pier和fabric/ethereum应用链插件的二进制文件。
修改pier配置¶
pier.toml是描述链跨链网关启动的主要配置,一般需要修改的是端口信息、中继链的信息、应用链的信息。
- 修改端口信息(如果配置第二个pier请修改端口)
- 修改中继链信息(一般只修改addrs字段,指定bitxhub的节点地址)
[mode]
type = "relay" # relay, direct or union
[mode.relay]
addrs = ["localhost:60011", "localhost:60012", "localhost:60013", "localhost:60014"]
timeout_limit = "1s"
quorum = 2
bitxhub_id = "1356"
enable_offchain_transmission = false
[mode.direct]
gas_limit = 0x5f5e100
- 修改应用链信息(针对不同应用链类型进行配置)
修改应用链插件的配置¶
应用链插件的配置目录即是pier.toml中的config字段,它的模板分别在pier-client-fabric
或pier-client-ethereum
项目(之前拉取跨链合约时已经clone),直接在GitHub上下载代码即可。
cd $CONFIG_PATH/pier1 && mkdir ether
# 将pier-client-ethereum的config目录下的文件拷贝到pier的配置路径
cp $CONFIG_PATH/pier-client-ethereum/config $CONFIG_PATH/pier1/ether
tree -L 1 $CONFIG_PATH/pier1/ether
├── account.key
├── broker.abi
├── data_swapper.abi
├── ether.validators
├── ethereum.toml
├── password
├── pier.toml
├── transfer.abi
└── validating.wasm
${goduck_repo}/pier/ethereum/1.3.0/
文件夹下的文件拷贝到${pier_repo}/ether
目录下:
说明:
- account.key和password建议换成应用链上的真实账户,且须保证有一定金额(ethereum上调用合约需要gas费);
- broker.abi可以使用示例,也可以使用您自己编译/部署broker合约时返回的abi;
- ether.validators和validating.wasm一般不需要修改,pier.toml为pier配置模板,暂未使用,可不做更改;
- ethereum.toml是需要重点修改的,需要根据应用链实际情况填写 ethereum网络地址、broker合约地址及业务合约abi,账户的key,示例如下:
addr
: 如果是本地启动的以太坊私链或者参考goduck关于应用链的操作启动的应用链,地址应为ws://localhost:8546
;如果是使用docker启动的应用链,地址应为ws://host.docker.internal:8546
;nanme
: 应用链名称,用户可自定义;contract_address
: broker合约地址,如果是本地启动的以太坊私链,地址更换为正确的合约地址,如果使用goduck启动应用链,地址为0xD3880ea40670eD51C3e3C0ea089fDbDc9e3FBBb4
;key_path
: 以太坊账户私钥,如果为本地启动的以太坊私链,地址为${datadir}/data/keystore
;password
: 以太坊账户密码;min_confirm
: 最小区块确认数(部署以太坊私链时,若遇到阻塞问题,可尝试将该值设置为0,具体参考:2. geth部署以太坊私链导致跨链流程阻塞);timeout_height
: 中继模式下,超时回滚的块高;timeout_period
: 直连模式下,超时回滚的时间间隔;offchain_addr
: 链下文件传输的相关地址;offchain_path
: 链下文件传输的相关路径。
cd $CONFIG_PATH/pier1 && mkdir fabric
# 将pier-client-ethereum的config目录下的文件拷贝到pier的配置路径
cp $CONFIG_PATH/pier-client-fabric/config $CONFIG_PATH/pier1/fabric
- fabric证书配置
启动Fabric网络时,会生成所有节点(包括Order、peer等)的证书信息,并保存在 crypto-config文件夹中,Fabric插件和Fabric交互时需要用到这些证书。
# 复制您所部署的Fabric所产生的crypto-config文件夹
cp -r /path/to/crypto-config $CONFIG_PATH/pier1/fabric/
# 复制Fabric上验证人证书
cp $CONFIG_PATH/pier1/fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem $CONFIG_PATH/pier1/fabric/fabric.validators
config.yaml
文件记录的Fabric网络配置(用您的网络拓扑配置文件替换这个样例文件),需要使用绝对路径,把所有的路径都修改为 crypto-config
文件夹所在的绝对路径。
{CONFIG_PATH}/fabric/crypto-config =>$CONFIG_PATH/pier1/fabric/crypto-config
# 替换为您部署的Fabric网络的拓扑设置文件即可,同时需要修改所有的Fabric 的IP地址,如:
url: grpcs://localhost:7050 => url: grpcs://10.1.16.48:7050
示例是以官方部署脚本进行配置:
启动跨链网关节点¶
在完成以上步骤之后,可以启动跨链网关节点了:
观察日志信息没有报错信息,可以正常同步到中继链上的区块信息,即说明pier启动成功。