マネージドブロックチェーンの「チェーンコードフィンガープリントの不一致: データの不一致」を解決する方法を教えてください。

最終更新日: 2020 年 11 月 12 日

Amazon Managed Blockchainで「チェーンコードフィンガープリントの不一致: データの不一致」というエラーをトラブルシューティングする方法を教えてください。

簡単な説明

「チェーンコードフィンガープリントの不一致: データの不一致」は、クライアント側のエラーです。このエラーは、ピアノードのチェーンコードフィンガープリント ID が他のピアノードのフィンガープリントと一致しない場合に発生します。これは、通常、チャネル内の 1 つ以上のピアが異なるチェーンコードバージョンまたはパスを使用している場合に発生します。エラーを解決するには、パスを修正するか、すべてのピアノードでチェーンコードを再インストールします。

解決方法

1.    チャネル内の各ピアノードで次のコマンドを実行します。

docker exec cli peer chaincode list --installed

2.    出力で、「Id」フィールドを書き留めます。これがチェーンコードフィンガープリントです。例:

Name: myjointcc, Version: v3, Path: github.com/chaincode_example02/go, Id: af4a7734dac943a9b3183d339a848eeea8220d8647cefabccfbe89b3a4d23cbc

3.    チャネル内のすべてのピアノードの ID を比較します。ノードに異なるフィンガープリントがある場合は、チェーンコードパスをチェックして、ノードが正しいパスを使用していることを確認します。チェーンコードパスが正しい場合は、次の手順に進みます。

4.    チャネル内のすべてのピアノードにチェーンコードを再度インストールします。各ピアノードには必ず同じチェーンコードバージョンを使用してください。例:

docker exec cli peer chaincode install -n myjointcc -v v4 -p github.com/chaincode_example02/go

5.    チャネル内の各ピアノードでチェーンコードをインスタンス化します。ネットワークに複数のメンバーがいる場合は、他のピアノードにインストールされているものと同じチェーンコードバージョンを必ずインスタンス化してください。次のコマンド例では、 Member1IDMember2ID をメンバー ID に置き換えます。

docker exec cli peer chaincode upgrade -o $ORDERER -C ourchanneltest -n myjointcc -v v4 -c '{"Args":["init","a","100","b","200"]}' --cafile /opt/home/managedblockchain-tls-chain.pem --tls -P "AND ('
    Member1ID.member','Member2ID.member')"

注: Hyperledger Fabric 1.xでは、上記の手順を完了した後でも、「チェーンコードフィンガープリントの不一致」エラーが発生する可能性があるという問題があることが知られています。詳細については、Hyperledger ウェブサイトの「Same chaincode source receiving fingerprint mismatch error」を参照してください。この問題を解決するには、Hyperledger Fabric Command Line Interface でチェーンコードをパッケージ化します。次に、複数のクライアントを使用してチェーンコードを個別にインストールするのではなく、すべてのノードで同じパッケージをインストールします。詳細については、AWS トラックアンドトレースブロックチェーンワークショップのチェーンコードの構築例を参照してください。</p


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?