MetaProofs

引言

现如今的智能合约虚拟机是一种对称式的虚拟机。即:Ф(s)->s'。其中s是原状态,Ф是状态转移函数,s'是经过计算后的新状态。由上公式可以得出,全节点验证状态转移的合法性过程需要执行一次相同的计算Ф(s)->s'验证s'是否与链上结果一致。Ф相当于合约代码。如果Ф逻辑较为复杂,这无疑增加的了全节点的性能负担,导致出块时间不平衡的等系统性风险。以太坊通过gas limitblock gas limits限制计算量保证全节点都可以在规定的时间范围内计算出数据结果。但这样同时也限制了Ф的复杂度,合约不能执行复杂的逻辑代码。

MetaProofs

为此根据论文“METAPROOFS”。一种新的理论证明方式引起广泛的讨论。

MetaProofs基于零知识证明,大致原理会生成一个证明(Prover)结果µP证明s通过Ф函数计算出s'。验证(Verifier)的时候只需要将这四个参数传入验证函数中,得到结果为true则可以表示状态转移是合法的。详细步骤如下图所示。

MetaProofs是一个证明Prover复杂度高,但Verifier快的函数。并且验证与Ф函数本身的复杂度无关。
因此将MetaProofs引入区块链,链下Prover生成,链上Verifier。既可以使智能合约处理更复杂的逻辑代码,又可以降低全节点的计算负载。不仅如此MetaProofs也可以生成单个链的证明,从而对分片和layer2有更好性能提升。

注: 此处因作者水平有限,如有理解偏差。欢迎讨论告知。

相关的语言

Lurk

Lurk 是一种用于图灵完备递归 SNARK 的开发中的编程语言:

yatima

yatima 是一个去中心化网络的编程语言

参考文献

https://eprint.iacr.org/2012/495.pdf
https://www.youtube.com/watch?v=iQkedSqQH34