マネージドブロックチェーンの「チェーンコードフィンガープリントの不一致: データの不一致」を解決する方法を教えてください。
最終更新日: 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. チャネル内の各ピアノードでチェーンコードをインスタンス化します。ネットワークに複数のメンバーがいる場合は、他のピアノードにインストールされているものと同じチェーンコードバージョンを必ずインスタンス化してください。次のコマンド例では、 Member1ID と Member2ID をメンバー 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