如何解决 Managed Blockchain 中的“chaincode fingerprint mismatch: data mismatch”问题?

上次更新时间:2020 年 11 月 12 日

如何排查 Amazon Managed Blockchain 中的“chaincode fingerprint mismatch: data mismatch”错误?

简短描述

“Chaincode fingerprint mismatch: data mismatch”是一种客户端侧错误。如果对等节点的链码指纹 ID 与其他节点上的指纹不匹配,则会发生此错误。这通常是因为一个通道中的一个或多个对等节点使用不同的链码版本或路径。要解决此错误,您需要更正路径或在所有对等节点上重新安装链码。

解决方法

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 中存在一个已知问题,即使您完成了上述所有步骤,此问题仍可能导致“chaincode fingerprint mismatch”错误。有关详细信息,请参阅 Hyperledger 网站上的同一链码源收到的指纹不匹配错误。要解决此问题,请使用 Hyperledger Fabric 命令行界面打包链码。然后,在所有节点上安装相同的程序包,而不是使用多个客户端单独安装链码。有关更多信息,请参阅 AWS Track-and-Trace 区块链训练营中的构建链码示例。</p


这篇文章对您有帮助吗?


您是否需要账单或技术支持?