Narwhal 等基于 DAG 的共识如何防止两个验证者在其区块中包含相同的交易?

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

我正在阅读有关基于 DAG 的共识和 BFT 的内容。但是,我无法理解验证器如何将其 DAG 解释为块列表。在 BFT 中,像 Tendermint 一样,领导者是唯一在每轮提出区块的验证者,因此其他验证者可以就该区块达成一致并将其存储在自己的存储中,而不必担心该区块中会有重复的交易。另一方面,在像Narwhal这样的DAG中,他们在正常的区块链内存池中说:

提交给一个验证器的交易会被传播给所有其他验证器。这导致了细粒度的双重交易:大多数交易首先由内存池共享,然后矿工/领导者创建一个重新共享它们的块。

因此,为了防止出现这种独角鲸,减少领导者提出区块时的双重传输需求,通过广播区块而不是交易,并让领导者提出区块的哈希值,依靠 Mempool 层提供其完整性保护的内容。

在这里,我很困惑。如果我们有一个领导者,这是有意义的,所以当选择领导者时,我们可以只选择该轮的领导者区块,并丢弃同一轮中的其他区块。但是,我认为他们不会这样做。例如,在 Bullshark 中,领导者块是一个锚,他们还使用一些确定性规则提交除锚之外的其他块。

牛鲨 https://www.youtube.com/watch?v=aW1-XcGzJ8M

我的问题是:

  1. 如果同一轮中的所有区块都按照某种确定性规则进行排序,那么如何确保该轮中不同区块中不存在重复交易?因为恶意行为者可以向许多验证器发送重复的交易,并且每个验证器共享交易块而不是交易本身。如果这些块被提交,即使它们可以通过某些规则忽略重复的交易,但这些块中的空间将被浪费。
  2. 任何人都可以举一个用于对两个锚点之间的块进行排序的确定性规则的示例吗?
  3. 这是否意味着当更多验证者加入共识时,系统会实现更高的吞吐量,因为每轮提议的区块更多?
blockchain directed-acyclic-graphs consensus sui
1个回答
0
投票

我知道这是 6 个月后的事了,我不是独角鲸内部结构的专家,但我可以尝试一下。

  1. 独角鲸中的“区块”是协议中进行“交易”传播的最小单位。换句话说,从来没有独角鲸工人共享单个交易的实例。 “执行”将负责验证和处理交易的重播,因为它应该包含随机数。如果验证器正在重播交易,它将在此处处理

  2. 为每个验证器分配一个索引,当您可以提交领导者时,返回并按每个槽从最小到最大的索引从验证器获取事务

  3. 感觉像但不确定是否有其他方面的权衡

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