我的链码具有以下目录结构
$GOPATH/myproject/chaincode/mycc/go
├── mycc.go
├── chaincode
│ └── chaincode.go
└── vendor
├── github.com
├── ...
由于使用了超级账本cid
软件包,因此我使用供应商,并且链代码旁边有vendor
目录。现在,对于{test},mycc.go
仅包含main
函数:
package main
import (
"myproject/chaincode/mycc/go/chaincode"
"github.com/hyperledger/fabric/core/chaincode/shim"
)
func main() {
err := shim.Start(new(chaincode.MyChaincode))
if err != nil {
logger.Error(err.Error())
}
}
chaincode.go
实现了其余的链码,包括带有MyChaincode
,Init
等的Invoke
结构。相关的导入与{ {1}}:
mycc.go
在链代码的实例化过程中,带有依赖项的某些东西似乎混在一起,因为我收到了错误消息:
"github.com/hyperledger/fabric/core/chaincode/shim"
很显然,似乎内部链码包中的导入被错误地解决了,供应商目录在路径中出现了两次。
答案 0 :(得分:1)
您的init方法似乎未正确初始化,因此请检查链码是否已正确安装或实例化。您只需查找实例化的chaincode docker容器即可签出。
答案 1 :(得分:1)
构建链码的fabric-ccenv
容器试图是“有帮助的”,但在容器内的GOPATH中包含了shim
。它还最终还包括shim/ext/...
文件夹,但不幸的是实际上并没有正确包含它们的传递依赖项。
当您将其与chaincode安装/软件包命令也试图对您有所帮助以及您尝试进行销售相结合时,事情变得很丑陋。
我实际上只是推送了针对1.4.2的修复程序来解决fabric-ccenv
问题。