交易提交后,超级账本结构中的同行之间达成共识



假设我在一个组织中启动了两个对等体的fabric。在通过composer运行我的应用程序/rest服务器并提交事务之后。我可以通过访问地址来更改peer1的Couchdb实例的值http://localhost:6984/_utils/#/_all_dbs.现在,这两个对等点彼此不同步——应用程序应该会抛出一些错误,但事实并非如此。大多数情况下,因为它只是从第一个对等端(即peer1(获取数据。

那么,首先,如果我也想从peer2获得数据,我如何从多个peer获得数据?

其次,为什么它从国家数据库而不是从分类账中获取数据?

第三,即使在提交之后,数据也应该保持同步。我该如何配置?如果某个对等方篡改了其数据库,则应通知它。我已经阅读了共识部分,并了解到这是为了正确的事务和块顺序,但如果有人篡改了状态数据库怎么办?

  1. 如果您能够使用强背书策略(如AND(更改1个对等方的状态数据库中的条目,则由于两个对等方数据的差异,您的事务将无法通过验证。这是去中心化网络最重要的优点之一。

  2. 州数据库和分类账不是一回事。这将有助于您理解两者之间的差异。

  3. Hyperledger Fabric网络的每个参与成员本身都是已知的实体(因为Fabric是一个许可的区块链(。也就是说,单个对等体的状态数据库的变化将再次导致上述场景#1,其中事务中的读/写集对于多个对等体不匹配(因为它们的状态数据库包含不同的资产值(。这将导致交易失效。现在的问题是,网络如何知道损坏的对等端(以及随后的状态数据库(。同一个问题可以有多种解决方案。

但最重要的是,Fabric是一个许可的区块链网络,国家数据库也必须在网络之外受到严格的访问保护和授权。

您修改了worlddb这一事实并不意味着什么。您对该数据库所做的任何更改都不是分类账的表示。

分类账本身、区块及其包含的交易都存储在一个物理文件中。世界状态数据库只是每个资产的当前状态的集合。这是一个很好的设计,因为应用程序不会关心项目所经历的每一次状态更改,它只关心当前状态。只要有需要,就可以很容易地重新创建世界状态数据库

现在,您不应该直接对世界状态数据库进行任何更改,因为这是无用的。任何变更都需要经过适当的流程,通过同行提交的提案,然后通过订购方。只有当一切都得到遵守时,才会有变化出现在账本上,并与每个同行同步,世界状态数据库会反映这一点。

就你应该从哪里获得数据而言,答案是这并不重要。每个同行都有一份准确的分类账副本,所以如果你从同行1或2那里得到的数据无关紧要,那也是一样的。

同样,仅仅因为您更改了世界状态,这并不意味着什么,分类账没有受到影响,但您的应用程序从世界状态数据库报告当前状态,由于您的更改,该状态现在是不正确的。

相关内容

  • 没有找到相关文章

最新更新