【演示demo!】【3】
在Zinc上的Curve合约[4]
Zinc文档[5]
为什么选择ZKRollup?
扩展性是以太坊一个迫切的需求-隧道尽头有一个亮灯。VitalikButerin刚刚宣布Rollup是现阶段扩展以太坊的“唯一选择”[6],突出显示了其独特的无需信任安全保证。
ZKRollup(ZKR)是现有的两种Rollup[7]版本之一,另一种是OptimisticRollup(简写:OR)[8]。两种方法都有其取舍(参见详细比较[9])。这是主要的实际差异:
安全-即使使用单个验证者,ZKRollup也非常安全,因为它们依靠纯数学,而不是进行持续的经济激励活动来确保资金安全。与ZKR相比,OptimisticRollup具有强大的反网络效应:其安全性与锁定价值成比例地降低。与ZKR相比,OptimisticRollup需要控制资本上限才能安全地防御对L1的高度合理攻击.只要以太坊仍然是PoW链,就无法缓解。
最终确定性。ZKRollup的最终确定性时间(分钟)短,因此支持资本快速退回到L1(L1:第一层,即以太坊自身网络)。相反,OptimisticRollup被迫在快速退出和资本效率退出之间进行选择,但不能两者兼有。大多数研究人员认为,OR至少需要一个星期的争议延迟时间。这对于与L1上的合约(至少将在最初)继续在生态系统中发挥重要作用的合约的互操作性非常重要。
可编程性-通过OptimisticRollup支持完全的EVM兼容性更加容易。通常认为OR方法是将现有以太坊智能合约引入L2(L2:二层网络)的唯一可行方法。但是,这种情况即将改变。
ZKRollup中的智能合约?
直到最近,在ZKRollup中支持任意用户定义的智能合约还是一项极富挑战性的任务。但是这些天来,在零知识证明领域中事情发展很快。2020年带来了几项突破,最终使之成为可能:MatterLabs引入了Zinc编程语言和对SNARK友好的ZincVM,并实现了以太坊的递归PLONK证明验证[12]。这些技术的结合将推动zkSync上的实现智能合约。
ZincVM如何工作?
合约以Zinc编程语言编写并编译。编译器输出是双重的:
Zinc虚拟机的字节码。
合约的SNARK验证密钥。
ZincVM字节码+验证密钥可以完全无许可的方式部署到zkSync网络。合约将在L2中被分配一个新地址。每当用户与该合约进行交互时,zkSync的验证程序将执行ZincVM操作码并产生对交易有效性的零知识证明–友好的SNARK。ZincVM的特殊设计使其成为可能。然后将由Rollup块电路针对已部署的验证密钥来递归验证该证明。然后,以太坊上的zkSync智能合约验证区块证明,以授权状态转换,所有交易状态转换可以在一个区块快速的验证。
因此,zkSync上的Zinc智能合约继承了有效性证明的严格安全保证。
如何为zkSync编写智能合约?
目前,必须使用Zinc编程语言编写ZincVM的智能合约。查看最新版本的ZincBook[13],你将找到完整的入门指南和完整的开发人员参考。我们期待你在ZincGitter聊天室[14]中提出的问题和反馈。
Zinc目前处于封闭开发Beta版。如果你有兴趣为你的项目尝试,请与我们联系[15].
Zinc与Solidity/Vyper有何不同?我可以移植现有的源代码吗?
Zinc遵循简化的Rust语法,但它