KZG多项式承诺

KZG 承诺是一种在密码学中使用的一种承诺方案,其名称源自其发明者的姓氏(Kate, Zaverucha, and Goldwasser)。本文简要说明 KZG 承诺的基本构造。

Step1 (Setup):
  • 循环群 G,循环群 G 的生成元 g
  • l 是需要承诺多项式最大的阶数;
  • r \in F_p
  • 计算并发布 (g,g^{r},g^{r^2},...,g^{r^l})
Step 2 (Commit to polynomial):
  • 给定一个多项式:  f(x) = a_0+a_1x+a_2x^2+...+a_lx^l
  • 计算并输出承诺:  c=g^{f(r)}=g^{a_0+a_1 r^1+a_2 r^2+...+a_d r^d}=({g^{r_0}})^{a_0}({g^{r_1}})^{a_1}...({g^{r_d}})^{a_d}
Step 3 (Prove an evaluation):
  • 给定一个挑战值 z,Prover 计算 f(z)=s
  • 计算并输出证明:\pi = g^{t(r)}
  • f(x)-s = (x-z)t(x) \rightarrow f(r)-s=(r-z)t(r)

        其中,t(x) 被称为 “商多项式”,那么 t(x) 可以被 Prover 通过长除法计算出来:t(x)=\frac{f(x)-s}{(x-z)}

Step 4 (Verify an evaluation proof):
  • 给定承诺 c=g^{f(r)},等式 f(z)=s 和 证明 \pi = g^{t(r)}
  • 验证:e(\frac{g^{f(r)}}{g^s},g)=e(g^{t(r)},\frac{g^r}{g^z})

这里我只是展示了 KZG 多项式承诺的关键算法,如果想要更多的了解背景和详细的数学知识,可以阅读以下文章。 

KZG in Practice: Polynomial Commitment Schemes and Their Usage in Scaling Ethereum

Alin Tomescu’s notes on KZG

​​​​​​Dankrad Feist’s notes on KZG

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值