zkRollup和Validium的区别:各自适合什么场景?
摘要: zkRollup和Validium都是以太坊Layer 2的扩展性解决方案,其交易有效性通过使用零知识证明来实现,不过一个的数据可用性保持在链上,一个是保持在链下。
(岩石区,梵高)
前言:zkRollup和Validium都是以太坊Layer 2的扩展性解决方案,其交易有效性通过使用零知识证明来实现,不过一个的数据可用性保持在链上,一个是保持在链下。这个看似微小的差别导致两者在资产的安全级别上存在较大差异。当然,这也导致了两者在吞吐量量上也存在较大差异。Validium可能更适合于对无须信任要求没那么高的较为高频应用(如游戏dApp),而zkRollup更适合于对安全要求较高的支付和交易所等场景。本文作者Alex Gluchowski,由“蓝狐笔记”社群的“SIEN”翻译。
DeversiFi最近推出了新版的交易所,它是由StarkEx交易引擎提供的支持。这是一项了不起的技术成就,它提高了用户从加密货币交易所期望的安全级别。这也标志着一个历史性的转折点:这是有史以来第一个在产品系统中应用STARK(无须信任设置的简洁零知识证明)。
从背景上说,StarkEx是Validium:它是一种Layer 2扩展性解决方案,其中所有的交易有效性都使用零知识证明来强制执行,而数据可用性保持在链下。这可以防止Validium中的资金被盗,因为从特定用户账户发生的每次价值转移都必须得到用户的授权。
(vitalik转推了Eli Ben-Sasson对两者区别的总结)
Validium的机制跟zkRollup很相似,主要的区别在于在zkRollup中的数据可用性是在链上的,而Validium则保持在链下。这使得Validium可以实现更高的吞吐量,不过,这也是有代价的:
StarkEx Validium的运营者能冻结用户的资金
“能摧毁事物的人控制事物。”——Frank Herbert,Dune
没有zkRollup的数据可用性保证,Validium的运营者(或更确切地说,数据可用性的管理者),可以拒绝任何用户转移资金的权利。
这是它的工作方式:运营者对默克尔状态进行微小更改,而不向用户揭示其状态更改。缺乏此信息,用户无法为其账户创建默克尔所有权证明。
如图所示:如果运营者更改了账户d3,账户d1的所有者将丢失其证明中所需的节点m的信息,这些信息需要用来证明其账户所有权。
有没有一种方法可以阻止Validium中的数据保留攻击?从2016年提出Plasma概念以来,这个问题就被大家讨论。同时,zkRollup也是在这一研究结果上诞生出来的。Non-rollup试图无须信任地确保数据可用性,这将导致失去Validium的大部分竞争优势。
尽管不能完全解决问题,但StarkEx通过引入许可的数据可用性委员会(DAC)来缓解这一情况。
DAC必须通过其委员会成员的法定人数签署对状态的每次更新,以此来确认它已经接收到数据。在StarkEx中,DAC由8位参与者组成(添加太多成员会不利于系统的活性)。它们都是在已建立的法律管辖区中众所周知的富有声望的组织。对他们来说,几乎不太可能去尝试滥用其权力。这就是其构建的逻辑。
矛盾的是,众所周知、富有声望、且处在强大国家的司法管辖区正是让它们变得脆弱的原因。一种可能的麻烦情况是:运营者要求执行KYC/AML法规,并有义务冻结(可能是永远)交易记录超过1万美元的账户的所有资金。
随着我们研究的深入,StarkEx实施了“验证者合约升级”机制,它允许运营者立即将新项添加到链上的验证者合约。它不能使任何旧的逻辑失效,例如,你不能删除用户签名检查。相反,它允许增加其他约束(就Solidity而言,你可以将约束视为`require()`语句)。
这是很好的安全功能:如果在StarkEx的STARK circuit逻辑中发现任何缺失的约束,则可以快速修复它,同时不引入新的漏洞。但是,这一功能可以用作为隐藏的审查后门。
简言之,StarkEx运营者始终可以部署合约逻辑的扩展,这样就存在引入黑名单的扩展可能,而无须事先警告用户。从其文档中还无法完全弄清楚这一点,但是看上去执行新规则似乎并不需要得到DAC(蓝狐笔记:数据可用性委员会)的同意。
如果你将StarkEX看作为完全去中心化的交易协议,那么这没有多大意义。想象一下如果Vitalik Buterin拥有一个开关可以即时冻结任何以太坊账户,那会是什么结果?另外,如果你将StarkEX看作为加密交易所安全功能的增强(其创建者应该这么做),则它就有意义了。
StarkEX Validium的运营者能没收用户的资金
让我们扩展思想试验。不管出于何种假想原因(很可能是由于运营者无法掌控的原因),很多用户的资产已被冻结。那么,用户在StarkEx的资金也可以被没收吗?
事实上,它是可能的。
跟其他很多加密项目一样,StarkEx实现了最新的升级机制。在部署新版本之前,会提前28天通知用户,任何人只要不喜欢都可以提取退出。
除了那些资金被冻结的人。
可以在合约上部署新逻辑,这样在宽限期结束后,通过新逻辑可以将冻结资金转移由指定方保管。不幸的是,受影响的用户对此毫无办法。
还存在一些合理担心,升级提醒周期可能并不足以让每位不同意改变的用户退出(所谓的“大量退出”场景)。但,这个问题是通用的合约升级问题,并非Validium独有的问题。
贾斯汀·德雷克描述了对Validium的加密经济攻击
在后续的讨论中,贾斯汀·德雷克指出数据可用性可能会导致意外的攻击向量:如果DAC(数据可用性委员会)的法定人数的签名密钥遭到破坏(考虑到这些密钥保持在线状态,这让它们很难保证完全安全),攻击者可以将Validium转换为只有他们知道的状态,从而冻结所有资产,然后要求解锁资产的赎金。
理论上讲,合约升级机制可以减轻此类攻击。Validium的运营者可以启动新版本的部署,并在28天的升级通知期后,将状态恢复为最新的已知版本。这将是为期一个月的资本锁定,这当然有很大的成本,但是如果DAC拒绝谈判,攻击者将得不到一分钱。
但是,事实证明,攻击者有一种方法可以迫使运营者在丢失所有和允许攻击者进行双花之间做决定。可以通过如下例子说明:
想象一下,你可以按照某种方式对ATM进行黑客攻击,以在提款完成后擦除整个银行数据库。你只能从自己的账户中提款,但当数据库消失时,操作的详细信息也将丢失。银行员工可以在一个月内完成复杂的数据库恢复过程。但是,既然他们无法知道是谁提了款,因此通过返回上个检查点,他们还将恢复你已提过款的余额。(蓝狐笔记:也就是攻击者可以通过操作自己的账户,实现双花攻击)
当然,这个双花攻击将仅限于攻击者的账户余额。但是,构建无须信任的合约并从匿名鲸鱼那里借入必要的资产并不是难事。
在zkRollup中数据可用性保护了用户的资产免遭扣押、审查和黑客攻击,但其吞吐量有所降低。对于zkrollup用户来说,rollup的状态是可用的,只要有一个以太坊全节点在线。
它是这样工作的:对于每个zkRollup区块,必须将重建状态变化所需的信息作为以太坊交易的调用数据提交,否则zkRollup智能合约将拒绝进行状态转换。zkRollups上的状态更改将导致每笔交易的gas成本较低,这个成本随着交易数量呈线性增长。
借助手头的Merkle树数据,被审查的用户始终可以直接从主网上的zkRollup合约中索取其资金。他们需要做的是提供其账号上的Merkle所有权证明。因此,链上的数据可用性可以确保没有人(包括zkRollup运营者)能够冻结或捕获用户资金。
数据可用性的链上存储导致吞吐量受到限制,zkRollup在如今的以太坊上有2000tps的上限,而StarkEx Validium声称可以达到9000tps。这种差异可能会导致在确定选择两者技术在应用领域和用例方面变得关键。例如zkRollup非常适合于扩展去中心化的加密支付(VISA在全球平均的tps为2000),以及那些对无须信任有严格要求的不可篡改的智能合约;而对于Validium来说,它可能更适合于传统的高频交易或具有较低信任假设的好游戏。
结论
已经证明zkRollups和Validium(StarkEX)在工作方式上相对相似,但其主要区别在于数据是在链上还是链下可用。这对于理解它们以及在什么场景使用它们至关重要。这种差异也意味着,尽管zkRollup是完全无须许可的去中心化扩展协议,不过Validium展示了托管性的PoA系统的更多属性(不管是吞吐量还是风险特征),尽管其安全性已经得到极大提高。
两者技术发展都在减轻对信任的需求,并为用户提供更多对其资产的控制权,都是朝赋予个人更多能力的方向发展,为了取得进展,我们总是需要作出权衡取舍。
不过,在加密社区中,越来越多的共识是技术已经过了“不要作恶”的阶段,而进入了“无法作恶”的阶段。我们可以通过自我托管、抗审查性、隐私以及消除单点故障来达成目的。这些想法构成了我们正在为之奋斗的系统的基本价值。
------
风险警示:蓝狐笔记所有文章都不能作为投资建议或推荐,投资有风险,投资应该考虑个人风险承受能力,建议对项目进行深入考察,慎重做好自己的投资决策。
作者:蓝狐笔记;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com
评论(0)
Oh! no
您是否确认要删除该条评论吗?