我使用为composer提供的fabric工具来部署fabric网络,因为它部署了1个peer, 1个orderer, 1个couchdb, &1 fabric-ca。我能够在同行上安装链代码,但实例化失败,出现以下错误。我在fabric-peer上使用命令。
模拟错误:执行事务失败2037 ca1d4ec2682ad17499156de49aeb28053ad5b6943f1fe3520c407bac570e:无法启动chaincodeproduct_1.1.1: e2901eb986174a4ac9bb963b06db851ea347ed6b48930de813c3dbc38df94a82:链码注册失败:容器以2退出
当我检查docker容器的日志时,它返回我这个错误
2021/07/29 08:41:29错误创建网络chaincode chaincode:合约需要至少有一个(非忽略)公共方法。合同PRODUCTChainCode没有。方法名GetAfterTransaction, GetBeforeTransaction, GetInfo, GetName,GetTransactionContextHandler GetUnknownTransaction,GetIgnoredFunctions和GetEvaluateTransactions panic:创建错误网络链码链码:合约要求至少有1(非忽略)公共方法。合同PRODUCTChainCode没有。被忽略的方法名:GetBeforeTransaction, GetInfo, GetName, GetTransactionContextHandler,getknowntransaction, GetIgnoredFunctions和GetEvaluateTransactions
gooutine 1 [running]: log。Panicf(0xa400a03, 0x2e, 0xc00059ff68, 0x1,0 x1)/usr/local/go/src/log/log.Go:358 +0xc5 main.main()/src/main/chaincode/输入。: 18 + 0 x1b0
这是我的主要内容。去文件
package main
import (
"log"
"product-chaincode/core/messages"
"github.com/hyperledger/fabric-contract-api-go/contractapi"
)
// PRODUCTChainCode implementation
type PRODUCTChainCode struct {
contractapi.Contract
}
func main() {
PRODUCTChainCode, err := contractapi.NewChaincode(&PRODUCTChainCode{})
if err != nil {
log.Panicf(messages.ChaincodeCreateError, err.Error())
}
if err := PRODUCTChainCode.Start(); err != nil {
log.Panicf(messages.ChaincodeStartError, err.Error())
}
}
下面的错误消息要求契约至少有一个(不可忽略)公共方法。">告诉我们您编写的链代码没有公共方法。
在Go语言中,名字以大写字母开头的函数(和变量)被视为公共的,名字以小写字母开头的函数(和变量)被视为私有的。
目前,在你创建的链代码中只有一个主函数,所以它似乎无法执行,因为没有公共函数。
尝试添加一个函数名以大写字母开头的公共函数