当人们可以直接更改couchdb数据时,Hyperledger Fabric中的数据如何安全

Aks*_*ood 5 couchdb hyperledger-fabric fauxton

我想知道当管理员可以直接Couchdb使用FauxtoncURL提供最新状态时,您的数据是如何安全的Couchdb.

根据我的理解Hyperledger Fabric提供不可变数据功能,最好用于防欺诈(Blockchain功能).

问题是: - 我可以轻松更改数据couchdb,当我从我查询chaincode时显示更改的数据.但是,当我ledger使用GetHistoryForKey()它查询时,并没有显示我所做的更改couchdb.有什么办法可以防止这种欺诈吗?因为用户总是会看到最新的状态,即来自couchdb不是的数据ledger

任何答案将不胜感激.

谢谢

Jas*_*ick 6

您必须保护您的couchdb不被对等方以外的进程修改,就像您通常必须保护您的文件系统或内存一样.

如果您使文件系统可写,则其他用户可以覆盖分类帐内容.同样,如果您没有在couchdb写入上放置访问控制,那么您将失去不变性属性.


Deb*_*ech 6

在Hyperledger Fabric v1.2中,每个对等方都有自己的CouchDB。因此,即使您直接从一个对等方的CouchDB更改数据。认可将失败。如果认可失败,则不会以世界状态或当前状态写入您的数据。

  • 你说代言失败是什么意思?据我所知,只有交易被认可。直接从 fauxton 或 curl 更改 couchdb 数据不会生成任何新事务。 (3认同)

nul*_*ter 5

这就是分散式分布式系统的优点。即使您或其他人更改了数据库/分类账的状态,也不会与网络中其他人的状态匹配,也不会与交易块哈希匹配,从而使背书人的交易无效,除非您可以恢复实际商定的网络参与者或订购者的分类帐状态。要利用分类帐的不变性,您必须查询分类帐。查询数据库没有利用区块链的功能,因此必须以与保护任何其他数据库访问类似的方式进行保护。


Dav*_*art 5

您不应将CouchDB端口暴露在对等方网络之外,以免数据被篡改。只有对等方的管理员才能访问CouchDB,并且管理员没有动机来篡改自己的数据。让我进一步解释...

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

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