Hyperledger Firefly Fabric链码部署失败问题求助
智能合约部署失败问题排查与解决
问题重现
执行以下FireFly部署命令时出现错误:
ff deploy fabric devtest asset_transfer.zip firefly asset_transfer 1.0
错误日志如下:
Error: docker run --platform linux/amd64 --rm --network=devtest_default -e CORE_PEER_ADDRESS=fabric_peer:7051 -e CORE_PEER_TLS_ENABLED=true -e CORE_PEER_TLS_ROOTCERT_FILE=/etc/firefly/organizations/peerOrganizations/ org1.example.com/peers/fabric_peer.org1.example.com/tls/ca.crt -e CORE_PEER_LOCALMSPID=Org1MSP -e CORE_PEER_MSPCONFIGPATH=/etc/firefly/organizations/peerOrganizations/ org1.example.com/users/Admin@org1.example.com/msp -v /home/ubuntu/fabric-samples/asset-transfer-basic/chaincode-go/asset_transfer.zip:/package.tar.gz -v devtest_firefly_fabric:/etc/firefly hyperledger/fabric-tools:2.3 peer lifecycle chaincode install /package.tar.gz [1] Error: chaincode install failed with status: 500 - failed to invoke backing implementation of 'InstallChaincode': could not build chaincode: docker build failed: docker image build failed: docker build failed: Error returned from build: 2 "go: downloading github.com/hyperledger/fabric-contract-api-go v1.2.1
环境版本信息
peer: Version: v2.5.4 Commit SHA: e1e8e2e Go version: go1.20.6 OS/Arch: linux/amd64 Chaincode: Base Docker Label: org.hyperledger.fabric Docker Namespace: hyperledger go version go1.20.6 linux/amd64 Docker version 24.0.6, build ed223bc FireFly version: "Version": "1.2.2",
解决方法
修正链码压缩包内容
不要将go build生成的二进制文件打包进去,Fabric安装链码时需要自行编译源码。确保asset_transfer.zip包含go.mod、go.sum以及所有.go源码文件,压缩包根目录对应链码的根目录(即go.mod所在目录)。对齐Fabric组件版本
错误中使用的hyperledger/fabric-tools:2.3与Peer版本2.5.4不匹配,会引发兼容性问题。修改部署配置,使用与Peer同版本的fabric-tools镜像(hyperledger/fabric-tools:2.5.4)。解决依赖下载问题
如果链码容器无法访问外网拉取依赖,进入链码根目录执行go mod vendor生成vendor目录,将该目录一起打包进压缩包,Fabric构建时会优先使用本地依赖。重新打包链码
进入链码根目录(/home/ubuntu/fabric-samples/asset-transfer-basic/chaincode-go/),执行命令重新打包:zip -r asset_transfer.zip . -x "*.git*"若已生成
vendor目录,保留该目录一起打包即可。检查Docker权限
确保执行部署命令的用户拥有Docker操作权限,必要时使用sudo执行命令,避免权限不足导致Docker构建失败。
内容的提问来源于stack exchange,提问作者Jose Ordoñez
相关产品推荐
相关产品推荐

