首页 > 解决方案 > 通过 Fauxton 进行的 Hyperledger Fabric CouchDB 更新被视为有效更新,但在区块链中没有记录

问题描述

我有一个带有 3 个对等点的 Hyperledger Fabric 网络设置,每个对等点都有一个 CouchDB 持久性容器。

如果我通过 Fauxton 接口并更改 JSON 记录,则此状态更改将传播到同一组织中的所有三个对等点。

但是,区块链中没有状态变化的记录。没有为它创建事务。

编辑:回到这个话题:原来我是个白痴,我的 docker 端口映射有问题。

标签: couchdbhyperledger-fabrichyperledgerfauxton

解决方案


如果您直接在对等点 CouchDB 中更改数据,它不会传播到其他对等点。您不应将 CouchDB 端口暴露在对等网络之外,以避免数据被篡改。只有 peer 的管理员应该能够访问 CouchDB,并且管理员没有篡改自己数据的动机。让我进一步解释...

Hyperledger Fabric 状态数据库类似于比特币未使用交易数据库,如果一个节点管理员篡改了他们自己节点的数据库,节点将无法让其他节点相信来自它的交易是有效的。在这两种情况下,数据库都可以被视为当前区块链状态的缓存。在这两种情况下,如果数据库损坏或被篡改,它可以在区块链的对等点上重建。对于比特币,这是通过 -reindex 标志完成的。对于 Fabric,这是通过删除状态数据库并重新启动对等方来完成的。

在 Fabric 中,背书策略中指定的来自不同组织的对等节点必须返回相同的链码执行结果才能验证交易。如果节点上的账本状态数据已被更改或损坏(在 CouchDB 或 LevelDB 文件系统中),则链码执行结果在背书节点之间将不一致,“坏”节点/组织将被发现,应用程序客户端应在提交交易以进行排序/提交之前,丢弃来自不良对等方/组织的结果。如果客户端应用程序无论如何都尝试提交具有不一致背书结果的交易,则将在验证时在所有对等方上检测到这一点,并且该交易将无效。


推荐阅读