1. 引言
appliedzkp zkevm采用 Halo2的lookup table 作为a primitive,来check table中的某一行确实是某些adviced values。
如,以下table的a、b、c
列,其中a、b
列为“0,1,2”的可能组合,c
为对a、b
列的逻辑AND运算:
a | b | c |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
0 | 2 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
1 | 2 | 0 |
2 | 0 | 0 |
2 | 1 | 0 |
2 | 2 | 2 |
可使用该table来检查circuit中的某些x、y
变量的AND运算约束,以证明"x"、“y”、"x & y"为对应该table中的某一行。
zkevm中有2种类型的table:
- 1)Fixed Table
所谓Fixed Table,是指该fixed table中的行在proving time“之前”就已确定。
上面的AND运算table就是fixed table。 - 2)Variable Table
所谓Variable Table,是指该variable table中的行在proving time "时"确定。
Variable Table使得Prover可创建自己的table,如Prover可witness a key-value mapping为a variable table。注意,此时需要做额外检查来确保mapping key的唯一性。