PLONK:链上的计算怎么"可证明"而不是"可复现"
这两天在看PLONK这套证明系统,越看越觉得区块链验证这件事,被它彻底重写了逻辑
先说个朴素的问题:链上怎么确认一笔计算是对的
最直接的办法是"重新算一遍"——每个节点都把同一个计算跑一次,结果一样就算数。这个办法笨但管用,问题是成本随计算量线性往上涨,算得越复杂,全网重复验算的开销就越大
PLONK干的事,是把"重新算一遍"换成"证明恒定大小的一段东西"。不管计算复杂到什么程度,验证者要检查的证明大小基本是常数级别,开销几乎不随计算规模膨胀——这不是优化,是把成本结构从根上换了
━━━━━━━━━━━━━━
这背后靠的是KZG多项式承诺
PLONK会把整个电路的约束条件折叠编码进几个多项式里,证明者不需要把计算细节摊开给你看,只要证明"这几个多项式在某些点上求值是对的",验证者拿到的就是几个群运算,算起来非常轻。一大坨执行轨迹,被压缩成了几次简洁的代数验证
还有个关键设计:预处理(preprocessing)
电路里公开、固定的那部分可以提前离线算好,不用每次验证都重来。链上验证时只需处理跟这次具体证明相关的轻量部分。这也是为什么PLONK能做到"通用且可更新"——同一套框架能服务不同规模的电路,不用每换个电路就重走一次可信设置
━━━━━━━━━━━━━━
落到Dusk这边,这套证明系统被CVM直接调用
隐私合约执行完之后,不是把结果扔出来让别人重新跑一遍验证,而是直接吐出一段证明——执行本身,就是证明的生成过程
这才是"可证明"和"可复现"最本质的区别:一个靠大家愿意重新算一遍,一个靠数学让你不用算就能信
@Dusk_Foundation $DUSK #dusk
这两天在看PLONK这套证明系统,越看越觉得区块链验证这件事,被它彻底重写了逻辑
先说个朴素的问题:链上怎么确认一笔计算是对的
最直接的办法是"重新算一遍"——每个节点都把同一个计算跑一次,结果一样就算数。这个办法笨但管用,问题是成本随计算量线性往上涨,算得越复杂,全网重复验算的开销就越大
PLONK干的事,是把"重新算一遍"换成"证明恒定大小的一段东西"。不管计算复杂到什么程度,验证者要检查的证明大小基本是常数级别,开销几乎不随计算规模膨胀——这不是优化,是把成本结构从根上换了
━━━━━━━━━━━━━━
这背后靠的是KZG多项式承诺
PLONK会把整个电路的约束条件折叠编码进几个多项式里,证明者不需要把计算细节摊开给你看,只要证明"这几个多项式在某些点上求值是对的",验证者拿到的就是几个群运算,算起来非常轻。一大坨执行轨迹,被压缩成了几次简洁的代数验证
还有个关键设计:预处理(preprocessing)
电路里公开、固定的那部分可以提前离线算好,不用每次验证都重来。链上验证时只需处理跟这次具体证明相关的轻量部分。这也是为什么PLONK能做到"通用且可更新"——同一套框架能服务不同规模的电路,不用每换个电路就重走一次可信设置
━━━━━━━━━━━━━━
落到Dusk这边,这套证明系统被CVM直接调用
隐私合约执行完之后,不是把结果扔出来让别人重新跑一遍验证,而是直接吐出一段证明——执行本身,就是证明的生成过程
这才是"可证明"和"可复现"最本质的区别:一个靠大家愿意重新算一遍,一个靠数学让你不用算就能信
@Dusk_Foundation $DUSK #dusk
