在超级边缘结构中由orderer验证/创建的块中的无效事务会发生什么?

问题描述 投票:1回答:2

transaction flow documentation

5.交易已经过验证和承诺 交易块被“交付”到渠道上的所有同行。验证块内的事务以确保满足认可策略并确保读集变量的分类帐状态没有变化,因为读集是由事务执行生成的。块中的事务被标记为有效或无效。

这是否意味着一个块也包含无效的交易?

hyperledger-fabric hyperledger
2个回答
2
投票

是 - 由于来自订货人的块已签名,因此对等方使用有效和无效的事务序列化整个块。它将外部元数据添加到序列化块以标记无效事务。当然,无效事务的状态更改不会应用于状态数据库。


1
投票

即使我最初对它感到困惑,也不得不重新阅读文档以便更好地理解。

我们知道 - Hyperledger Fabric Ledger由两部分组成 - 1. World State和2. Transaction Log。因此,所发生的情况是,在订货人发送包含具有策略和交易验证的有序交易的块之后,它由锚点对等体接收,该锚点对等体又将该块广播到该信道中的所有其他对等体。

一旦对等体接收到块,它就会遍历块中的每个事务并验证事务 - 即策略检查,并根据世界状态数据对事务详细信息进行健全性检查。如果在任何帐户(策略/数据检查)上发现交易有缺陷,则对等方将该交易标记为无效,并且不会在该世界状态上提交该交易。相反,如果事务有效,则对等体将基于事务的读/写集对世界状态执行动作(添加/更新/删除)。

处理完所有事务后,该块将附加到事务日志(也称为块链)。这意味着,区块链中的块将包含有效和无效的事务,并且事务将具有标记,表明它是有效还是无效。对等体可以通过遍历事务日志来重建世界状态 - 在该场景中,仅考虑有效事务来重建世界状态。

在类似的路线上还有另一个答案 - https://stackoverflow.com/a/50622463/2040522

© www.soinside.com 2019 - 2024. All rights reserved.