跨链bitxhub部署教程(上)

Posted Yzy_gold

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨链bitxhub部署教程(上)相关的知识,希望对你有一定的参考价值。

跨链bitxhub部署教程(上)

跨链bitxhub部署教程(上)

最近在因为老师的原因要使用Bitxhub跨链工具,bitxhub官方的教程不是那么清楚,也是摸索了很久才弄成功,遂记录之。

操作系统

ubuntu 20.04

安装Go语言并添加环境变量

wget -c https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local
vi ~/.bashrc
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin
source ~/.bashrc

安装docker

安装docker有很多教程,随便搜搜应该能解决,我参照的是https://www.jianshu.com/p/482d1eb4d9a2

安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

安装gcc

sudo apt-get install build-essential

安装bitxhub

这里选择了 1.6.2的bitxhub

git clone https://github.com/meshplus/bitxhub.git
cd bitxhub 
git checkout v1.6.2 make prepare
make build
make install
make cluster


执行完就开启了bitxhub 如上面,这时候可以按Ctrl+b,在按D把bitxhub切到后台去。也可以重新开启一个终端。

安装goduck

git clone https://github.com/meshplus/goduck.git
cd goduck && make install 
goduck init

执行完之后,在~目录下会生成一个.goduck文件夹

启动以太坊私链

进入.goduck文件,然后执行

bash ethereum.sh docker 1.2.0

执行完之后启动了一个,已经部署好跨链的以太坊私链

启动Fabric 私链

1.在启动fabric 之前先去 /etc/resolv.conf 将里面options timeout:2 attempts:3 rotate single-request-reopen注释掉。
2.如果发现没有/etc/resolv.conf 里面没有 options timeout:2 attempts:3 rotate single-request-reopen 那么sudo把options edns0 trust-ad 删掉之后,执行如下命令

sudo apt install resolvconf
sudo service resolvconf restart

接下来启动Fabric

bash fabric.sh up


出现END说明Fabric已经搭建成功了。
如果中途出现错误,则先bash fabric.sh down清理之后,再bash fabric.sh up
接下来部署fabric的合约,自带的goduck里面自带的contract有问题,这里使用新的contract合约。新的合约地址:

链接: https://pan.baidu.com/s/1h8E2-wAOrrveuVBr6B6TwQ
提取码: qbq3
把下载下来的合约解压,然后替换.goduck中的contract文件夹
执行如下命令:

goduck fabric contract chaincode

可能会遇到如下问题

这一步的原因是因为gomod没有设置成自动,执行这个

export GO111MODULE=on

之后,重新执行上诉命令

出现这个说明成功启动Fabric了

编译网关

git clone https://github.com/meshplus/pier.git 
cd pier && git checkout v1.6.2 && make install

编译以太坊插件

git clone https://github.com/meshplus/pier-client-ethereum.git 
cd pier-client-ethereum && git checkout v1.6.2 && make eth

编译 Fabric插件

git clone https://github.com/meshplus/pier-client-fabric.git 
cd pier-client-fabric && git checkout v1.6.2 && make fabric1.4

Fabric 文件目录相关配置

pier --repo ~/.fabric init
cd .fabric
vim ~/.fabric/pier.toml

在标记处修改为如图所示

ETH 文件目录相关配置

pier init 
cd .pier
vim ~/.pier/pier.toml 


修改成上图,同时修改一下端口,与Fabric不冲突

初始化以太坊配置目录

cp -r ~/pier-client-ethereum/config ~/.pier/ether
mkdir -p ~/.pier/plugins
cp ~/pier-client-ethereum/build/eth-client ~/.pier/plugins/

修改以太坊相关配置

cd .pier/ether
vi ethereum.toml

修改成这样,Addr改为addr = “ws://localhost:8546”
最后一行的地址改为0x668a209Dc6562707469374B8235e37b8eC25db08

初始化Fabric配置目录

cp -r ~/pier-client-fabric/config .fabric/fabric
mkdir -p ~/.fabric/plugins
cp ~/pier-client-fabric/build/fabric-client-1.4 ~/.fabric/plugins/
cd  ~/.fabric/fabric
vi fabric.toml

修改成这样

接下来配置fabric的相关路径

cd ~/.fabric/fabric
rm -rf crypto-config
cp -r ~/.goduck/fabric/crypto-config ~/.fabric/fabric/
cp -r ~/.goduck/fabric/config.yaml ~/.fabric/fabric/
CONFIG_PATH=/home/ubuntu/.goduck
FABRIC_PATH=/home/ubuntu/.fabric/fabric

以上路径换成自己的即可
接下来要把config.yaml中的相关路径替换成自己的路径

sed -i "s|\\$CONFIG_PATH|$FABRIC_PATH|g" ~/.fabric/fabric/config.yaml
// sed -i "s|/home/ubuntu/.goduck/fabric|/home/ubuntu/.fabric/fabric|g" ~/.fabric/fabric/config.yaml
sed -i "s|host.docker.internal|localhost|g" ~/.fabric/fabric/config.yaml
cp ~/.fabric/fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem ~/.fabric/fabric/fabric.validators

应用链注册

cd ~

pier --repo .pier appchain register --name=ethereum --type=ether --consensusType POS --validators=.pier/ether/ether.validators --desc="ethereum appchain for test" --version=1.0.0

会输出一个链的id 0x9824A59039774a33BadB2a29EdDE4f80cDe9FBFa

pier --repo .fabric appchain register --name=fabric --type=fabric --consensusType POS --validators=.fabric/fabric/fabric.validators --desc="fabric appchain for test" --version=1.0.0

输出id 0xF8dcf3A9B0d8f6bd6867f370Aa0D26f477AE82c8

投票(eth)

bitxhub --repo ~/bitxhub/scripts/build/node1 client governance vote --id   0x9824A59039774a33BadB2a29EdDE4f80cDe9FBFa-0 --info approve --reason approve
bitxhub --repo ~/bitxhub/scripts/build/node2 client governance vote --id   0x9824A59039774a33BadB2a29EdDE4f80cDe9FBFa-0 --info approve --reason approve
bitxhub --repo ~/bitxhub/scripts/build/node3 client governance vote --id   0x9824A59039774a33BadB2a29EdDE4f80cDe9FBFa-0 --info approve --reason approve
bitxhub --repo ~/bitxhub/scripts/build/node4 client governance vote --id   0x9824A59039774a33BadB2a29EdDE4f80cDe9FBFa-0 --info approve --reason approve

这里的id是上面的以太坊产生的

投票(fabric)

bitxhub --repo ~/bitxhub/scripts/build/node1 client governance vote --id 0xF8dcf3A9B0d8f6bd6867f370Aa0D26f477AE82c8-0 --info approve --reason approve
bitxhub --repo ~/bitxhub/scripts/build/node2 client governance vote --id 0xF8dcf3A9B0d8f6bd6867f370Aa0D26f477AE82c8-0 --info approve --reason approve
bitxhub --repo ~/bitxhub/scripts/build/node3 client governance vote --id 0xF8dcf3A9B0d8f6bd6867f370Aa0D26f477AE82c8-0 --info approve --reason approve
bitxhub --repo ~/bitxhub/scripts/build/node4 client governance vote --id 0xF8dcf3A9B0d8f6bd6867f370Aa0D26f477AE82c8-0 --info approve --reason approve

查看一下状态

bitxhub --repo ~/bitxhub/scripts/build/node1 client governance proposals --type AppchainMgr

部署验证规则

pier --repo ~/.pier rule deploy --path ~/.pier/ether/validating.wasm
pier --repo ~/.fabric rule deploy --path ~/.fabric/fabric/validating.wasm

启动跨链网关

pier --repo=.pier start
pier --repo=.fabric start


没有报错基本上网关就可以了。

跨链相关的命令

查询Fabric 链上的余额

goduck fabric contract invoke transfer getBalance Alice

查询以太坊上的余额

goduck ether contract invoke --key-path /home/ubuntu/.pier/ether/account.key --abi-path /home/ubuntu/.goduck/docker/quick_start/transfer1.abi 0x668a209Dc6562707469374B8235e37b8eC25db08  getBalance Alice

以太坊向Fabric 转账1

goduck ether contract invoke --key-path /home/ubuntu/.pier/ether/account.key --abi-path /home/ubuntu/.goduck/docker/quick_start/transfer1.abi 0x668a209Dc6562707469374B8235e37b8eC25db08 transfer 0xF8dcf3A9B0d8f6bd6867f370Aa0D26f477AE82c8,"mychannel&transfer",Alice,Alice,1

第一个字符串是transfer合约的地址
第二个是fabric链的地址

转账之后查询fabric 和 eth


发现fabric 多了1块,eth少了一块。

fabric 向以太坊转账10块

goduck fabric contract invoke transfer transfer 0x9824A59039774a33BadB2a29EdDE4f80cDe9FBFa,0x668a209Dc6562707469374B8235e37b8eC25db08,Alice,Alice,10
第一个字符串是以太坊的地址,第二个是以太坊合约的地址
转完之后,发现双方都少了10块

以上是关于跨链bitxhub部署教程(上)的主要内容,如果未能解决你的问题,请参考以下文章

趣链 BitXHub跨链平台 (10)跨链自治

趣链 BitXHub跨链平台 交易验证

区块链BaaS云服务(22)趣链BitXHub“跨链网关”

趣链 BitXHub跨链平台 跨链网络拓扑

趣链 BitXHub跨链平台 跨链事务

趣链 BitXHub跨链平台 跨链网关“初介绍”