通过 Fauxton 的 Hyperledger Fabric CouchDB 更新被视为有效更新,但在区块链中没有记录

Hyperledger Fabric CouchDB updates through Fauxton treated as valid updates, but no record in blockchain

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

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

但是,区块链中没有任何状态变化的记录。没有为其创建交易。

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

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

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

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