Goldilocks域

Posted mutourend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Goldilocks域相关的知识,希望对你有一定的参考价值。

1. 引言

Goldilocks域 p = 2 64 − 2 32 + 1 p= 2^64 - 2^32 + 1 p=264232+1,目前用于Polygon生态的多个项目中:

以Goldilocks域 p = 2 64 − 2 32 + 1 p= 2^64 - 2^32 + 1 p=264232+1 为base prime field的椭圆曲线有:

2. Why Goldilocks?

STARKs/SNARKs处理常规整数运算的难点在于:

  • 所有的值都是以有限域元素表示。
  • 将有限域运算 映射为 32-bit或64-bit整数运算 是昂贵的。(注意:EVM使用256-bit整数)

Miden VM原生支持所有32-bit unsigned integers(u32)运算,从而使得相应的运算效率很高:

  • 每个u32运算仅需要一个VM cycle。

Goldilocks域 p = 2 64 − 2 32 + 1 p= 2^64 - 2^32 + 1 p=264232+1,具有一些很好的特性:【详细见:u32 operations in Miden VM

  • 1)值适于64-bit整数,从而使得基于该域的运算在现代CPU上运行很快。
  • 2)2个32-bit整数乘法不存在域模溢出问题。
  • 3)检查4个16-bit values是否构成了一个有效filed element 的效率可以很高。

Miden VM中的大多数u32运算(包括bit shifts、bit rotations、value comparison)仅需要少量的16-bit range checks。对于一些复杂的运算(如bitwise AND/OR/XOR),需要使用辅助lookup tables,但是这些复杂运算也是efficient的。

参考资料

[1] twitter u32 operations in Miden VM
[2] u32 operations in Miden VM

以上是关于Goldilocks域的主要内容,如果未能解决你的问题,请参考以下文章

rescue-prime:基于Goldilocks域的Rescue-Prime 哈希函数加速

Polygon zkEVM中Goldilock域元素circom约束

Polygon zkEVM Merkle tree的circom约束

Polygon zkEVM FFT和多项式evaluate计算的circom约束

Polygon zkEVM中的Merkle tree

ROS学习之包的概念