今天介绍一个“国产之光”通用型zk-Rollup—@taikoxyz.Taiko是继路印后,团队基于zk技术推出的又一力作。
路印因其不具备EVM兼容性无法扩展为通用型zkRU,Taiko作为能够实现完全以太坊等效性的zkRU应运而生。
一起探索这个被V神所青睐的项目能给以太坊扩容带来怎样的崭新叙事。
背景
关于以太坊扩容已经是一个老生常谈的话题,近年来Rollup一跃成为最炙手可热的扩容解决方案。
其中基于欺诈证明的Rollup分支ORU借助EVM等效性迅速占领L2市场,仅Arbitrum和Optimism就已占据超过85%的市场份额。
基于零知识证明的zkRU也竞相“亮剑”,纷纷推出自己的zk-EVM。
zk-EVM
Taiko也不例外,与大多数zkRU的实现路径不同,Taiko旨在构建Type1zk-EVM。
按照V神对zk-EVM的划分,一共分为5类:Type1/2/2.5/3/4.(见下图)
不同zk-EVM需要在EVM兼容性和zk证明生成效率间做权衡,选择高EVM兼容性,就意味着zk证明生成难度加大,证明时间更长。
Taiko构建的zk-EVM属于Type1梯队,即完全的以太坊等效性。跟其同属一梯队的还包括@PrivacyScaling.
简单来讲,Type1zk-EVM意味着Taiko可以直接解读EVM字节码,因此能够支持以太坊上Dapp的丝滑迁移。
但以牺牲zk证明的生成效率为代价。缩短zk证明的生成时间也成为Taiko核心工作。
协议核心角色
在讲Taiko的实现原理前,先来捋一捋协议涉及的3个核心角色:1)提议者;即将用户的L2交易归集并提交到L1,任何人都可以申请成为提议者;
2)证明者;生成ZK-SNARK证明的角色;3)TaikoL2节点。根据链上数据执行交易同步链状态,包括但不局限于角色1和2。
区块提交
Taiko机制下将区块提交分为2个部分:区块提议和区块验证。1)区块提议:提议者将区块数据发布到以太坊,即将区块附加到TaikoL1智能合约中的提议区块列表。提交的数据信息具有不变性,也即意味着区块执行结果的确定性,任何人都可以计算区块的post-stateroot.
2)区块验证:由于所有提议区块都是确定性的,证明者可以进行并行证明。一旦提交特定块的zk证明且其父块是已验证的,我们就把该区块标记为已验证。
运行机制
再来直观地看下运行机制:分为以太坊上的TaikoL1智能合约和TaikoL2节点。L2的执行数据由提议者提交到TaikoL1合约,提议区块由Metadata和交易列表(txList)两部分组成。L1只能够获取Metadata的数据,无法获取txList的数据,因此L1无法通过重构状态根验证提议区块的有效性。
L1也并不通过重构状态根来验证L2交易的有效性,因为占用了计算资源,如果这样做就失去Rollup的意义了。那么L1如何验证提议区块的交易在L2真实发生呢?
通过zk证明(后面讲)。对于TaikoL2节点来讲,它们拥有自验证能力,因此可以验证提议区块交易的有效性。
L2节点验证提议区块的交易有效后,会下载并转换成确定性的L2区块(如下图:b1转换成B1,b2转换成B2……),所以此时TaikoL2节点并不需要借助zk证明来验证有效性。证明者可以提交zk证明到L1,如果L1节点通过zk证明验证状态转换是有效的,也就证明该特定提议区块是有效的。
如果提议者提交了无效的提议区块,怎么“告诉”L1节点这个区块是无效的?逻辑是在L2先构建一个临时区块(比如b3是无效区块,以B2为父区块构建临时区块B).区块B只包含一笔交易invalidateBlock(…),把b3的txList代入函数。生成基于B的zk证明提交到L1,如果验证有效,则证明b3是无效区块。
费用及奖励流向
Taiko用户以$ETH作为交易gas.区块提议者能够获取提议区块所有的交易费用,提议者需要支付一部分$ETH给L1节点(DA费用等);燃烧一定的协议代币$TKO出L2块。
另外,L2的证明者提交有效的zk证明也将获得协议铸造的$TKO代币奖励。
以上就是关于Taiko的简单介绍,更多详细内容可参考其官方白皮书:https://taikoxyz.github.io/taiko-mono/taiko-whitepaper.pdf…以及创始人@daniel_taikoxyz关于L2出块机制介绍的视频:https://youtube.com/watch?v=YUSCAFZRDqg…如果此推特线程
对大家有帮助,麻烦转发、点赞第一条推文,感谢。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。