Skip to content

Latest commit

 

History

History
80 lines (35 loc) · 6.63 KB

#9 前沿技术研讨会 2021-04-20.md

File metadata and controls

80 lines (35 loc) · 6.63 KB

9 前沿技术分享会 2021-04-20

主题

零知识证明专题

时间

时间:2021/04/20 14:00

地点

私享

会议参加者:

郭宇、张卓、姚翔

活动流程:

主题讨论

  1. 研讨会进展介绍、嘉宾介绍 姚翔
  2. 主题分享

分享一 ZKCP+ 零知识证明与公平数据交易协议

分享二 zk-Rollup工程实践分享

分享三 SNAPPs架构及应用

摘要

2021年4月20日下午,第九次「上海区块链前沿技术讨论会」如期举行。本次讨论会是「零知识证明专题」,讨论了零知识证明为区块链带来的新机遇。安比实验室创始人郭宇、Fluidex创始人的张卓、研讨会发起人姚翔分别从算法、工程、应用等角度带来精彩分享。

ZKCP+ 零知识证明与公平数据交易协议

来自安比实验室创始人的郭宇老师专程从苏州赶来,

郭老师首先介绍了公平交易(Fair Exchange)的概念,指出两方直接的公平交易是不可能的,因此“可信”第三方必不可少。但当前互联网第三方由于权利较大,所以出现了服务垄断、隐私侵犯、单点风险等问题,而区块链的核心作用就是一个无需信任的安全第三方。基于区块链的公平交易发展从2014年开始,从Paypub、ZKCP、ZKCSP再到Fairswap,都进行了一定程度上的探索,但通过区块链进行三方公平交易仍然存在难点,如数据泄露、计算资源昂贵、数据真伪鉴别等。郭老师还向大家介绍了ZKCP(Zero-knowledge Contingent Payment,零知识有条件支付)协议的原理。

接着,郭老师介绍了零知识证明,其本质是在不暴露数据本身的前提下,证明数据满足一定条件,它与区块链是互补的关系:区块链建立了一个信任的根,零知识证明在这个根上将信任进行传递。零知识证明还有一个反直觉的点是,可以保证远程计算过程的完整性和机密性。此外,郭老师还介绍了NIZK和zkSNARK的特点和区别。

郭老师还提到了ZKCP存在的问题,包括需要大量算力、零知识证明电路的规模会随着数据的尺寸爆炸、谁来完成Trusted-setup和bug等。ZKCP+则一定程度上解决了ZKCP存在的问题,ZKCP+数据可达10GB,支持复杂计算,且使用了CLINK+Groth16算法。CLINK算法通过Schnorr扩展协议、大电路的拆解和子电路的链接、深度神经网络等解决了证明大块数据的加密、证明秘钥派生、支持数据的更新与查询、证明更复杂的数据性质等问题。

zk-Rollup工程实践分享

从北京赶来的张卓老师进行了zk-Rollup精彩的开发经验分享。

张卓概述了zk-SNARK和zk-Rollup。首先介绍了zk-Rollup的分类,包括通过更好的共识、分析等达成的更好的Layer1,侧链或多签跨链,Layer2。接着介绍了扩容方案的特点:基于密码学的Validity Proof有和L1同等的安全性,且与L1的交互时间短,但开发难度较大;基于经济学的Fraud Proof与L1交互时间长,但开发难度较低,合约具有可组合性;Data availability优点在于任何用户都有完整的系统历史和状态,可以随时提出资金,但交易数据上链会限制性能上限。

zk-SNARK本质是一种“计算量压缩”的技术,一次性的链下计算量放大为10000倍,但这个只有Rollup节点(运营方)需要付出,带来的是重复性的链上计算量缩小为1/100,使得同等计算资源的ETH节点能支持更高的TPS。

zk-Rollup用一个全局的Merkle Tree来进行数据组织,Tree只需要Operator来维护且只需要维护树根,Tree的类型包括key是hash的Sparse Merkle Tree和key是index的Dense Merkle Tree。那么为什么zk-Rollup是一种原教旨主义的扩容系统?因为在最坏的情况下,进入灾难模式(Exodus Mode)后,用户可以通过合约交易历史,重建State Merkle Tree并生成自己的Proof,合约验证后即可取出资产,而没有Validity Proof的话,所有人的资产都会被锁死。张卓还介绍了zk-Rollup系统的执行流程,整个数据交易是从上往下流动的,大的数据流向是:Rollup State Manager维护完整的Merkle Tree,Prover Cluster对每个L2 Block做大量密码学计算获得zksnark Proof,智能合约维护正确的全局状态。此外,分享中还进行了zk-Rollup的性能和成本分析,有趣的是,证明速度并不是像通常被认为的那样会影响TPS,而是只对交互体验方面有影响;而Data availability和Merkle Tree的更新确实会影响Rollup系统的最终性能上限。链下成本相比链上成本来说微不足道,但链上成本也比直接L1少大约100倍。

张卓还分享了一些开发经验,分析了ethsnark、Bellman、Circom、ZoKrates等的优缺点。Fluidex开发了Debug工具和Profile工具来更方便地进行电路检查,还会通过限制大整数的精度来压缩bit。另外,张卓还指出了零知识电路编程的特点:所有代码都会被转化为大多项式、所有代码可以看作是同时执行的、所有的DSL控制流本质都是语法糖。

最后,张卓还介绍了非托管数字资产交易平台Fluidex。

SNAPPs架构及应用

姚翔首先介绍了Mina:Mina是具有恒定大小的区块链,且运用了递归零知识证明技术Pickles,上面的应用叫做Snapps,这是零知识证明驱动的应用。和DApps相比,Snapps支持私密数据,具有通用可验证性和可扩展的执行。

接着,姚翔介绍了Snapps事务的模型,一个事务一系列经过授权的有断言的更新,包括支付、代币交换、授权、断言等。一般性Snapps事务的授权可以是签名或者SNARK证明,断言可以是任何域上范围检查或等价检查,更新则可以是任意域上的任何更新,但带有一定约束条件。Snapp账户和标准账户直接的区别:相比标准账户,snapp账户多了验证秘钥和应用状态,一笔事务中可以更新多个snapp账户的应用状态,因此可以理解为snapp账户是一个可选私密的小状态机,可以进行状态转换,也可以再其他状态机上进行这些转换。姚翔还通过一个详细的例子解释了状态机的运行流程,指出snapp模式下使用承诺保护链上数据的隐私,并使用链上数据与直接访问Mina区块链的链下流程交互。

此外,正在开发中的HTTPSnapp允许从网站导入数据,未来Mina也将开发Developer SDK,组织Workshop等帮助开发者更好地进行开发工作。最后,现场还针对HTTPSnapp导入数据是否真实、Snapp Worker、EVM高效验证等问题进行了讨论。

**