计算轨迹是 Stark 的第一步,也是最简单的一步,但是最为重要的一步。
但是在章节开始之前,你需要必须 🚨掌握以下前置知识:
以上内容均为超级精简版,强烈推荐看一遍。
计算轨迹(Trace)
💡
什么是Trace? Trace,实际为execution trace,是程序在执行过程中生成的中间值,我们在计算的过程中,难免会有很多中间值,比如临时变量,函数返回值,等等。 Trace则是计算过程中所有的中间值,以及最终的执行结果。
我们用一个简单的例子来解释一个 Trace。
首先,我们模拟计算机中两个寄存器:r0,r1.
你可以理解寄存器为一个用于存放数据的空间
右侧是一个关于斐波那契数列的计算Trace表,他的计算过程实际上可以由一个简单的程序表示:
r0 | r1 |
---|---|
0 | 1 |
1 | 2 |
3 | 5 |
8 | 13 |
21 | 34 |
55 | 89 |
144 | 233 |
计算斐波那契数列的方式并不只有一个,你也可以使用只用一个寄存器的方式计算,只不过每次可能需要重新计算前一个的值。这部分会有些复杂,我们这里不展开。
小结
- Trace 是计算过程中所有的中间值,以及最终的执行结果。
- Trace 是构造多项式的重要数据。
浓缩
在Stark中,Trace是用于构造多项式的重要数据,ZK技术大部分都基于将计算结果转换成多项式,然后通过对多项式的验证来证明计算的正确性。
这一章节是Stark的第一步,不过这一步并没有体现零知识的性质,随着后续的一些章节,我们会逐步打开Stark的神秘面纱。