2016-10-03 4 views
0

現在、私はHyperledgerチェーンコードを使用していて、少なくともチェーンコードを呼び出す現行ユーザーに関する情報を取得しようとしています。なんらかの理由でチェーンコードの例であるasset_management.goが "ERRO 031エラーを受け取りました:無効な管理者証明書がありません。"というエラーが発生します。私はsecurity.enabledを持っていて、security.privacyはtrueに設定され、メンバシップサービスは実行中です。私は "admin"を登録しました。ここでハイパージーチェーンコードで現在のユーザーメタデータが取得されない

それは

// 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.") 
} 

起こるコードの行は、あなたがchaincodeは(stub.GetCallerMetadataための任意のデータを返すようにする方法任意のアイデアを持っていますされていますか)?

答えて

0

「メタデータ」は、あなたのdeployコマンドで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を使用できます。How is running the asset_management.go different from running a simple chaincode like chaincode_example02.go

+0

ありがとう、Sergey。それは私が必要としているように見えます。 – Andriian

関連する問題