0

目前我正在使用 Hyperledger 链码,并尝试至少获取有关调用/查询链码的当前用户的任何信息。由于某种原因,链代码示例asset_management.go导致错误“ERRO 031 Got error: Invalid admin certificate. Empty。” 我将 security.enabled 和 security.privacy 设置为 true 并且会员服务正在运行。我已经注册了“管理员”。

这是代码中发生的行

// Set the admin
// The metadata will contain the certificate of the administrator
adminCert, err := stub.GetCallerMetadata()
if err != nil {
    myLogger.Debug("Failed getting metadata")
    return nil, errors.New("Failed getting metadata.")
}
if len(adminCert) == 0 {
    myLogger.Debug("Invalid admin certificate. Empty.")
    return nil, errors.New("Invalid admin certificate. Empty.")
}

您有任何想法如何使链码返回 stub.GetCallerMetadata() 的任何数据吗?

4

1 回答 1

0

部署命令中应提供“元数据”,asset_management_with_roles 的“部署”示例:

curl -XPOST -d ‘{“jsonrpc": "2.0", "method": "deploy", "params": {"type": 1,"chaincodeID": {"path": "github.com/hyperledger/fabric/examples/chaincode/go/asset_management_with_roles","language": "GOLANG"}, "ctorMsg": { "args": ["init"] }, "metadata":[97, 115, 115, 105, 103, 110, 101, 114] ,"secureContext": "assigner"} ,"id": 0}' http://localhost:7050/chaincode

在此命令中,“元数据”包含 utf-8 编码字符串“分配者”。该字符串将保存在分类帐中,只有具有该角色的用户才能在智能合约中执行“分配”功能。

“asset_management”示例要求您在元数据字段中提供证书。为了获得证书,您可以使用相关问题中描述的步骤 9:运行 assets_management.go 与运行简单的链代码(如 chaincode_example02.go)有何不同

于 2016-10-03T15:26:23.923 回答