分片
 

分片成为可能的一个想法是交错的概念:让分片在不同的时间产生块,允许整个系统以每秒超过一个的常规频率拥有块。在此系统之上构建的第 2 层项目(例如汇总)可能会有大约一秒或更低的延迟,尽管整个系统有 12 秒的延迟。

 

 

这四种颜色代表四个分片;每个分片和信标链的延迟为 秒,但整个系统有一个块,每 \frac{k}{4} 秒出现一次。

然而,实施这一目标的一个重大挑战是激励措施。即使我们添加了一个协议规则,即分片提议者“应该”在不对称时间发布他们的分片块(例如,分片0在插槽开始后发布1/8,分片1在插槽开始后发布3/8等),如果没有实际的协议规则来确保这种情况实际发生,那么“应该”就无关紧要。

当区块生产者发布区块时,有一些激励措施可以控制:如果你发布得太早,你就会错过交易,如果你发布得太晚,你可能会冒着区块没有被包括在内的风险,中间的某个地方是最佳的。如果我们希望分片块错开,我们需要分片之间不同的激励措施,以便最佳发布时间也是错开的。

设 是分片数。设 D = [8, 16, 24, 32] 是距离列表。将“可选祖先链接”定义为从 'th 标头到第 k'th 标头的链接(此处的第 个标头表示插槽 中分片 k\ mod\ N 的标头)。

 

 

虚线表示 和 D = [2, 3] 的可选祖先链接。

想法1:标题中每个可选的祖先链接一个字节

我们在分片标题中添加一个“祖先校验和”,其中包含bytes:第 个标头的字节 i 应与第 (k - D[i]) 个标头的哈希的第一个字节相同。因此,对于每个可选的祖先链接,都有一个单字节插槽,用于包含祖先块哈希的第一个字节。

这些祖先校验和是正确的,不是有效性所必需的;分片头可以提供祖先校验和,其中部分或全部字节无效是可以的。相反,我们增加了激励措施,以鼓励他们正确,而不是强制要求这样做。

另请注意,我们不需要插槽 处的分片块来引用插槽 N 处的信标块并有资格包含在插槽 中,而是将包含插槽向上移动到 N+2。这允许分片块与信标块本身大约同时发布,因此在提出信标块时,分片块进展中没有“漏洞”。

想法2:身体中每个可选的祖先链接一个哈希

分片标头 块是为祖先链接保留的。具体来说, 个分片块的第 i 个块应与 (k - D[i])'th 标头的哈希值相同。

这些哈希值是正确的,对于有效性不是必需的;相反,我们增加了激励措施,以鼓励他们正确,而不是强制要求这样做。

想法3:基于内容而不是标题的校验和

符号注释:“”表示“凯特对多项式W的承诺”,是一对。

设 是 (k - D[i])'th 标头所承诺的多项式,并设 是提议者的私钥。分片块体的第一个块应等于 P(z)。请注意,这是整个分片块主体的线性函数,它需要整个主体进行计算。

它可以很容易地用凯特证明来证明:设 ,其中 [Q] 可以通过检查 来验证,其中 c 是声明的值。可以计算为[X] - Z,其中是提议者的公钥(因此可以公开进行验证)。

使用分片块体和提议者私钥的功能,可以确保提议者需要下载并检查整个分片块体,并鼓励旧块的提议者实际快速发布数据。这种机制确实要求提议者在被分配到提议时获得一些额外的分片,但它只影响提议者,因此对验证者节点复杂性的总体影响很低。

祖先校验和激励

所有这三种情况的核心激励都很简单。如果一个分片块正确地包含到另一个分片块的可选祖先链接,那么我们添加一个概率抽奖:基于某个未来的RANDAO值,有一个的可能性,即大小与X成比例的奖励应用于包含该链接的分片块的生产者所包含的分片块的生产者。