fabric go语言链码打包并在其他Peer节点部署

31 篇文章 1 订阅
24 篇文章 1 订阅

    在fabric中,当链码编译通过后,需要将其打包成.out、.cc结尾的package包,供其他的peer节点使用,使用的命令为peer chaincode package XXX。下面,介绍将fabric-samples/chaincode-docker-devmode/chaincode/fabtoken/testToken的golang工程打包的方法。

1、安装govendor工具

go env -w GOPROXY=https://goproxy.cn,direct
go get -u -v github.com/kardianos/govendor

2、进入链码目录,初始化vendor

    这里以进入fabric-samples/chaincode-docker-devmode/chaincode/fabtoken/testToken链码目录为例,进行说明,如图(1)所示。

cd fabric-samples/chaincode-docker-devmode/chaincode/fabtoken/testToke

govendor init

3、导出链码需要的依赖包到vendor

govendor add +external
图(1) 导出testToken工程所需要的golang包

4、进入cli容器,打包链码

## 启动cli容器
cd fabric-samples/chaincode-docker-devmode
docker-compose up -d 
docker exec -it cli bash

## 将链码打包为testToken.out文件
peer chaincode package testToken.out -n testToken -v 1.0 -p chaincodedev/chaincode/fabtoken/testToken -c '{"Args":["init","{\"name\":\"HelloWorldToken\", \"symbol\":\"HWT\", \"decimals\":\"8\"}"]}'

peer chaincode package file -n [name] -v [version]
    -n 表示链码的名称
    -v 表示链码的版本
    如上所示,该链码的名称为testToken,版本为1.0
    打包完成后,会在当前chaincode-docker-devmode目录下看到一个名称为testToken.out的文件,这个文件就是链码的打包文件。

5、发送链码到远程目录

    本地主机:192.168.30.163:8888
    远程主机:192.168.30.191:8888

    将链码.exe和链码.out文件,通过scp命令拷贝到远程主机里。

5.1 编译链码

    编译testToken工程,得到testToken.exe可执行程序。

cd $GOPATH/src/github.com/hyperledger/fabric-samples/chaincode-docker-devmode/chaincode/fabtoken/testToken

go build -o testToken.exe testToken.go

5.2 推送链码到远程主机

    将链码.exe和链码.out文件,都通过scp命令拷贝到远程主机的$mydocker/chaincode/fabtoken/testToken目录里,即拷贝到远程主机的如下目录:

/usr/local/gocode/src/github.com/hyperledger/fabric-samples/chaincode-docker-devmode/chaincode/fabtoken/testToken

    在本地主机,依次使用如下命令:

## 1) 在本地主机,定义一个临时变量mydocker,用来保存路径参数
export mydocker=/usr/local/gocode/src/github.com/hyperledger/fabric-samples/chaincode-docker-devmode

## 2) 进入chaincode-docker-devmode目录
cd $mydocker
scp -P 8888 testToken.out root@192.168.30.191:$mydocker/chaincode/fabtoken/testToken

## 3) 进入testToken目录
cd $mydocker/chaincode/fabtoken/testToken
scp -P 8888 testToken.exe root@192.168.30.191:$mydocker/chaincode/fabtoken/testToken

    如图(3)、图(4)所示。

图(2) 拷贝testToken.out到远程主机
图(3) 拷贝testToken.exe到远程主机

6、在Peer节点部署链码

    在Peer节点上有2种部署链码的方式:1) 通过源码来部署;2) 通过已经打包好的链码文件,比如.out、.cc文件来安装部署。
    这里,介绍将testToken.out打包文件,安装到192.168.30.191的Peer节点上。

6.1 启动peer节点里的容器

cd fabric-samples/chaincode-docker-devmode
docker-compose up -d 

6.2 监听7052端口

sudo docker exec -it chaincode bash
cd fabtoken/testToken
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=testToken:1.0 CORE_PEER_TLS_ENABLED=false ./testToken.exe -peer.address peer:7052

6.3 进入cli容器,安装链码

sudo docker exec -it cli bash

cd chaincode/fabtoken/testToken
peer chaincode install -v 1.0 testToken.out

6.4 实例化链码

在cli容器里,输入命令:

peer chaincode instantiate -C myc -n testToken -v 1.0 -c '{"Args":["init","{\"name\":\"HelloWorldToken\", \"symbol\":\"HWT\", \"decimals\":\"8\"}"]}'

6.5 查询链码

    查询HWT的总量:1000000000.00000000(10亿个,精度为8)

peer chaincode invoke -C myc -n testToken -c '{"Args":["GetTotalSupply"]}'

    效果如下:

图(4) HWT的总量为10亿个,精度为8

    这说明testToken.out链码,在192.168.30.191的Peer节点上,部署成功。

7、关闭fabric网络

    当不再使用fabric时,请手动关闭fabric网络。

cd $GOPATH/github.com/hyperledger/fabric-samples/chaincode-docker-devmode
docker-compose down

8、参考文献

    阿里云区块链服务Baas–部署链码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值