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

Hyperledger Fabric CouchDB通过Fauxton进行的更新被视为有效更新,但区块链中没有记录,couchdb,hyperledger-fabric,hyperledger,fauxton,Couchdb,Hyperledger Fabric,Hyperledger,Fauxton,我有一个Hyperledger结构网络设置,有3个对等点,每个对等点都有一个CouchDB持久性容器 如果我通过Fauxton接口修改一个JSON记录,这个状态变化会传播到同一组织中的所有三个对等方 然而,区块链中没有状态变化的记录。没有为其创建任何事务 如果不是区块链交易导致状态更改传播到所有对等方,那么是什么机制导致它 在没有任何事务的情况下,通过Fauxton进行的状态更改是如何被视为有效的 Fauxton在prod环境中的期望是什么 编辑: 回到这里:原来我是个白痴,我的docker端口

我有一个Hyperledger结构网络设置,有3个对等点,每个对等点都有一个CouchDB持久性容器

如果我通过Fauxton接口修改一个JSON记录,这个状态变化会传播到同一组织中的所有三个对等方

然而,区块链中没有状态变化的记录。没有为其创建任何事务

如果不是区块链交易导致状态更改传播到所有对等方,那么是什么机制导致它

在没有任何事务的情况下,通过Fauxton进行的状态更改是如何被视为有效的

Fauxton在prod环境中的期望是什么

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

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

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


在Fabric中,来自背书策略中指定的不同组织的对等方必须为要验证的事务返回相同的链码执行结果。如果对等机上的CouchDB或LevelDB文件系统中的分类账状态数据已被更改或损坏,则链码执行结果将在背书对等机之间不一致,将发现“坏”对等机/组织,应用程序客户机应该在提交事务进行排序/提交之前抛出来自坏对等方/组织的结果。如果客户机应用程序尝试提交一个签名结果不一致的事务,则在验证时会在所有对等方上检测到该情况,并且该事务将无效。

您可能需要查看以下内容:@AlexTotheroh对等方代码中没有任何内容支持此类传播。也许您的环境中存在问题,例如,您是否可以让两个对等点指向同一个CouchDB数据库?@AlexTotheroh我也尝试过,但没有发现此类行为。可能还有其他一些环境问题,例如,可能您的两个容器都指向主机上的相同数据卷。或者,您可能已经启用了CouchDB级别的复制。或者,在CouchDB中手动更新之后,有一个事务读取该对等机上的状态,然后向网络提交更新事务。我可以向您保证,对等机中没有任何代码会自动将手动数据库更新传播给其他对等机。您知道如何捕获试图篡改的对等机吗?我在CouchDB UI中从org1的peer0更新了CAR4,并查看了org2的peer0日志,我得到的唯一信息是:2020-02-07 12:22:01.278 UTC[statecouchdb]提交日期->警告0b4 CouchDB批处理文档更新遇到问题。原因:文档更新冲突,正在重试更新文档ID:CAR4Dave Enyert->如果您有答案,请回复此帖子->