我有具有以下目录结构的链代码
$GOPATH/myproject/chaincode/mycc/go
├── mycc.go
├── chaincode
│ └── chaincode.go
└── vendor
├── github.com
├── ...
由于我使用了超级账本cid
包,我使用了 vendoring 并将vendor
目录放在链代码旁边。现在对于 testablitiy,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
mycc.go
"github.com/hyperledger/fabric/core/chaincode/shim"
在链码的实例化过程中,似乎有些依赖项混淆了,因为我收到了错误消息:
*chaincode.MyChaincode does not implement "chaincode/mycc/go/vendor/github.com/hyperledger/fabric/core/chaincode/shim".Chaincode (wrong type for Init method)
have Init("chaincode/mycc/go/vendor/myproject/chaincode/mycc/go/vendor/github.com/hyperledger/fabric/core/chaincode/shim".ChaincodeStubInterface) "chaincode/approvalcc/go/vendor/ma/chaincode/approvalcc/go/vendor/github.com/hyperledger/fabric/protos/peer".Response
want Init("chaincode/mycc/go/vendor/github.com/hyperledger/fabric/core/chaincode/shim".ChaincodeStubInterface) "chaincode/mycc/go/vendor/github.com/hyperledger/fabric/protos/peer".Response
很明显,内部链码包中的导入似乎被错误地解决了,供应商目录在路径中出现了两次。