首页 > 解决方案 > Fabric v1.3 链码在导入“shim/ext/statebased”时无法实例化

问题描述

由于我尝试了 Fabric v1.3 的新功能:key-level-endorsement从此文档中,我必须通过 KeyEndorsementPolicy.Policy() 函数生成我的密钥级背书策略。

但是,导入包后无法实例化链码github.com/hyperledger/fabric/core/chaincode/shim/ext/statebased

以下是错误日志:

2018-12-11 09:58:25.518 UTC [dockercontroller] deployImage -> ERRO 053 Error building images: Failed to generate platform-specific docker build: Error returned from build: 1 "opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/shim/ext/statebased/statebasedimpl.go:14:2: cannot find package "github.com/hyperledger/fabric/common/cauthdsl" in any of:
    /opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/hyperledger/fabric/common/cauthdsl (vendor tree)
    /opt/go/src/github.com/hyperledger/fabric/common/cauthdsl (from $GOROOT)
    /chaincode/input/src/github.com/hyperledger/fabric/common/cauthdsl (from $GOPATH)
    /opt/gopath/src/github.com/hyperledger/fabric/common/cauthdsl
"

我知道这意味着ccenv容器缺少这种依赖,所以我尝试将我vendor的 gopath 目录添加到我的实例化请求的链码路径目录。然后我又试了一次,仍然有错误:

2018-12-12 02:06:32.976 UTC [endorser] callChaincode -> INFO 092 [channelforkvepdemo][75cd50e5] Exit chaincode: name:"lscc"  (34907ms)
2018-12-12 02:06:32.976 UTC [endorser] SimulateProposal -> ERRO 093 [channelforkvepdemo][75cd50e5] failed to invoke chaincode name:"lscc" , error: Failed to generate platform-specific docker build: Error returned from build: 2 "# github.com/chaincode/vendor/golang.org/x/crypto/sha3
chaincode/input/src/github.com/chaincode/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go:13:6: missing function body
# github.com/chaincode/vendor/golang.org/x/sys/unix
chaincode/input/src/github.com/chaincode/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go:13:6: missing function body
chaincode/input/src/github.com/chaincode/vendor/golang.org/x/sys/unix/syscall_linux_gc.go:10:6: missing function body
chaincode/input/src/github.com/chaincode/vendor/golang.org/x/sys/unix/syscall_linux_gc.go:14:6: missing function body
chaincode/input/src/github.com/chaincode/vendor/golang.org/x/sys/unix/syscall_unix_gc.go:12:6: missing function body
chaincode/input/src/github.com/chaincode/vendor/golang.org/x/sys/unix/syscall_unix_gc.go:13:6: missing function body
chaincode/input/src/github.com/chaincode/vendor/golang.org/x/sys/unix/syscall_unix_gc.go:14:6: missing function body
chaincode/input/src/github.com/chaincode/vendor/golang.org/x/sys/unix/syscall_unix_gc.go:15:6: missing function body
"
error starting container

我怀疑图像中仍然缺少一些 c/c++ 库ccenv

[]byte那么,如果没有这个,我怎么能生成一个关键级别的背书策略KeyEndorsementPolicy呢?或者,我怎样才能导入这个shim/ext/statebased包?

标签: hyperledger-fabric

解决方案


那是因为 fabric-sdk-node 的一个错误,这里是链接

升级到fabric-client@1.3.0后,问题解决:

npm install fabric-client@1.3.0
npm install fabric-ca-client@1.3.0

推荐阅读