You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:26:04