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

Ale*_*roh -1 couchdb hyperledger hyperledger-fabric fauxton

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

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

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

  • 如果不是导致状态更改传播到所有对等方的区块链交易,那是什么原因引起的?

  • 通过Fauxton进行的状态更改在没有任何交易基础的情况下如何被视为有效?

  • 在产品环境中对Fauxton的期望是什么?

编辑:对此进行循环:原来我是个白痴,并且端口映射有问题。

Dav*_*art 5

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

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

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

  • @AlexTotheroh我也尝试过,没有看到这种行为。可能还有其他环境问题,例如,两个容器都指向主机上的相同数据量。或者,也许您已启用CouchDB级复制。或者,也许在CouchDB中的手动更新之后,已经有一个事务读取此对等方的状态,然后将更新事务提交到网络。我可以向您保证,同位体中没有可自动将手动数据库更新传播给其他同位体的代码。 (2认同)