首页 > 解决方案 > “(Hyperledger Sawtooth)交易如何同时存在于多个区块中”?

问题描述

以下声明来自此文档

交易收据将仅存储在该链下商店中,不会包含在区块中。请注意,由于一次交易可能同时存在于多个区块中,因此交易收据由交易 id 和区块状态根哈希存储。

问题:

一笔交易是唯一的(在一个批次中),并且在达成共识后应该只包含在一个区块中。这个过程可以发生,每笔交易只能发生一次。如果是这种情况,交易怎么可能“一次存在多个区块”

标签: data-structuresblockchainhyperledgersystem-designhyperledger-sawtooth

解决方案


一笔交易通常只在一个区块中,在所有 Sawtooth 验证器节点上都有相同区块的副本。

但是,如果区块链“分叉”,则存在两个可能相互冲突的区块链状态版本,并且交易可能仅出现在一个或另一个区块链中,或者以不同的顺序和不同的块同时出现。

分叉可能有多种原因。一个常见的原因是由于节点长时间失去通信,因此网络变得分区,因此节点变得分区。当通信恢复时,区块链自行解决,其中一个区块链被选为“正确的”区块链,所有节点同步到“正确的”(或选择的)区块链。


推荐阅读