STARK工作原理(三):数据扩展与错误放大

elibensasson 发布于 2026-05-06 阅读 179

本文是STARK证明系列第三部分,介绍了在生成证明时如何通过扩展数据和放大错误来确保交易执行步骤的有效性。通过类比校验数字(如ISBN)的方法,解释了如何添加多种检查模式(如总和、间隔和、奇偶和等)来暴露违规步骤。这种方法使错误更易被检测,为下一阶段的数学验证奠定基础。

扩展数据,放大错误

我们的 STARK 证明现在由一长串数字组成,这些数字表示我们正在处理的批量中所有交易的执行步骤。如果这些执行步骤中有任何一个不符合给定的约束,那么在证明的该部分中就能检测到。但是,如果我们处理了 100 万笔交易,每笔交易涉及多个执行步骤(比方说平均一千个),那么我们的证明将包含 10 亿个执行步骤。我们必须极其幸运才能发现一个错误,否则它很容易被忽视。

为了让哪怕一个错误也能凸显出来并被注意到,下一步我们将放大并扩展数据。通过这种方式,无效步骤会将其与约束的不一致性进一步传播到整个证明中。

校验数字

这个阶段可以被看作是非常复杂的校验数字版本。不妨把校验数字想象成长标识号(如书籍的 ISBN、汽车的 VIN 或护照)的内置安全方法。为了防止输入错误或数字调换,系统通过一个特定的数学公式处理主要数字串。该计算结果作为“校验数字”添加到数字的末尾。如果其中一个数字输错了,该公式将无法匹配校验数字,从而指示错误。

例如:假设 ID 号码的校验数字公式是所有数字之和除以 10 后的余数。

如果我的 ID 号是 123456,那么 1+2+3+4+5+6=21。21 除以 10 余数为 1。这个 1 就是校验数字。因此,完整的 ID 号将是 123456-1。

Image

它是如何捕捉错误的?

如果我输错了一个数字,校验数字将无法在数学上对齐。例如,如果我意外输入了 123455-1,就会得到一个错误。因为 1+2+3+4+5+5=20,校验数字应为 0,而不是 1。数学上不对齐。

Image

当正确输入数字时,校验数字与我们对其进行的数学计算结果一致。当输入错误数字时,校验数字与其不一致。

这个过程不会告诉我哪个数字错了,但会告诉我某处存在错误。

当然,这是一个简化的例子,用于解释在数字串中捕捉错误的基本方法。对于 STARK 处理的数据规模——通常为数亿个步骤——我们需要一个更强大、更复杂、更安全的版本。

为了实现这一点,我们以精心设计的模式添加了许多这样的“校验数字”。对于阅读本文的数学家和工程师,我们使用了一种具有理想属性的纠错码。例如,我们可能会计算如下值:

  • 序列中所有数字的总和
  • 每第三个数字的总和
  • 所有偶数的总和
  • 序列前半部分的总和
  • 等等

在此过程结束时,我们证明中的数字序列将包含正在处理的交易数据以及随后附加的校验数字。值得注意的是,附加的校验数字序列比交易数据要长得多。

我们的 STARK 证明准备好了吗?

到目前为止,证明者通过记录所有交易数据的执行步骤、指示它们与约束的一致性,并应用纠错方法来暴露无效步骤(如果存在),以此处理了所有交易数据。然而,我们的目标是处理大量交易,并尽可能确保它们都是有效的。还需要做更多工作来确保这一点。

阅读下一部分(明天)以了解哪些额外的数学步骤有助于我们做到这一点。

  • 原文链接: x.com/elibensasson/statu...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论