hyperledger-fabric 区块链链码打包与安装
环境准备
链码源码,可以是
Golang
、NodeJS
、Java
等语言编写hyperledger-fabric
工具peer
。可参考 hyperledger-fabric 环境安装与源码编译 编译相关工具
链码打包
准备源码
本文档中链码源码以 fabric-samples 库中 fabcar 为例
如何编写链码参考官方文档:Writing Your First Application
克隆
fabric-samples
项目shell 1
git clone https://github.com/hyperledger/fabric-samples.git /opt/codes/fabric-samples
进入
fabcar
目录shell 1
cd /opt/codes/fabric-samples/fabcar
打包
打包链码前需要设置环境变量指定 peer
的配置文件 core.yaml
路径。我这儿直接使用 fabric
库中 sampleconfig
路径下示例配置
1 | export FABRIC_CFG_PATH=/opt/codes/fabric/sampleconfig/ |
使用环境变量覆盖 core.yaml
中设置的链码构建使用镜像
1 | # 构建链码的镜像 |
直接打包
此种方式打包的链码安装包中仅有链码源码,不包含相关依赖包,如果是在无公网且无自建 Go 代理库的情况,会出现安装失败的情况
1 | peer lifecycle chaincode package fabcar.tar.gz \ |
打包完成后会在当前目录下生成 fabcar.tar.gz
文件,解压该包可看到如下内容:
1 | fabcar/ |
解压 code.tar.gz
文件,压缩包内容如下:
1 | code |
可以对比 code.tar.gz
中内容与 /opt/codes/fabric-samples/fabcar/go/
目录下源码文件对比,可以看到是一致的
1 | /opt/codes/fabric-samples/fabcar/go/ |
govendor 方式打包
通过 govendor 管理依赖包,依赖包存放于项目工程根目录下 vendor
目录中,编译时直接使用本地依赖包。
根据 govendor 文档,我们使用的 go1.14.4 无需单独安装直接使用即可。
进入链码项目根目录
shell 1
cd /opt/codes/fabric-samples/fabcar/go/
使用如下命令,创建
vendor
目录,并将依赖包复制到该目录下shell 1
go mod vendor
打包链码为安装包
shell 1
2
3
4
5
6
7
8cd /tmp/
export FABRIC_CFG_PATH=/opt/codes/fabric/sampleconfig/
export CORE_CHAINCODE_BULDER=hyperledger/fabric-ccenv:2.2
export CORE_CHAINCODE_GOLANG_RUNTIME=hyperledger/fabric-baseos:2.2
peer lifecycle chaincode package fabcar.tar.gz \
--path /opt/codes/fabric-samples/fabcar/go/ --lang golang --label fabcar_1
我们解压打包后的 fabcar.tar.gz
中 code.tar.gz
对比源码目录
tree -L 3 code
code.tar.gz 1
2
3
4
5
6
7
8
9
10
11
12code
└── src
├── fabcar.go
├── go.mod
├── go.sum
├── runfabcar.sh
└── vendor
├── github.com
├── golang.org
├── google.golang.org
├── gopkg.in
└── modules.txttree -L 2 /opt/codes/fabric-samples/fabcar/go/
/opt/codes/fabric-samples/fabcar/go/ 1
2
3
4
5
6
7
8
9
10
11/opt/codes/fabric-samples/fabcar/go/
├── fabcar.go
├── go.mod
├── go.sum
├── runfabcar.sh
└── vendor
├── github.com
├── golang.org
├── google.golang.org
├── gopkg.in
└── modules.txt
可以看到链码安装包中和项目源码一致,都自带有依赖包
- 本文标题:hyperledger-fabric 区块链链码打包与安装
- 本文作者:akiya
- 本文链接:https://little-star.love/posts/43eb7c49/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!