同样基于零知识证明的以太坊扩展方案 zkRollup 与 Validium 有什么区别?

原文作者:Alex Gluchowski

原文编译:蓝狐笔记 SIEN

原文来源:蓝狐笔记

原文标题:《zkRollup 和 Validium 的区别:各自适合什么场景?》

DeversiFi 最近推出了新版的交易所,它是由 StarkEx 交易引擎提供的支持。这是一项了不起的技术成就,它提高了用户从加密货币交易所期望的安全级别。这也标志着一个历史性的转折点:这是有史以来第一个在产品系统中应用 STARK(无须信任设置的简洁零知识证明)。

从背景上说,StarkEx 是 Validium:它是一种 Layer 2 扩展性解决方案,其中所有的交易有效性都使用零知识证明来强制执行,而数据可用性保持在链下。这可以防止 Validium 中的资金被盗,因为从特定用户账户发生的每次价值转移都必须得到用户的授权。

以太坊扩容方案 zkRollup 和 Validium 的区别:各自适合什么场景?
Vitalik 转推了 Eli Ben-Sasson 对两者区别的总结

Validium 的机制跟 zkRollup 很相似,主要的区别在于在 zkRollup 中的数据可用性是在链上的,而 Validium 则保持在链下。这使得 Validium 可以实现更高的吞吐量,不过,这也是有代价的:

StarkEx Validium 的运营者能冻结用户的资金。

没有 zkRollup 的数据可用性保证,Validium 的运营者(或更确切地说,数据可用性的管理者),可以拒绝任何用户转移资金的权利。

这是它的工作方式:运营者对默克尔状态进行微小更改,而不向用户揭示其状态更改。缺乏此信息,用户无法为其账户创建默克尔所有权证明。

同样基于零知识证明的以太坊扩展方案 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 系统的更多属性(不管是吞吐量还是风险特征),尽管其安全性已经得到极大提高。

两者技术发展都在减轻对信任的需求,并为用户提供更多对其资产的控制权,都是朝赋予个人更多能力的方向发展,为了取得进展,我们总是需要作出权衡取舍。

不过,在加密社区中,越来越多的共识是技术已经过了「不要作恶」的阶段,而进入了「无法作恶」的阶段。我们可以通过自我托管、抗审查性、隐私以及消除单点故障来达成目的。这些想法构成了我们正在为之奋斗的系统的基本价值。

律动 BlockBeats 提醒,根据银保监会等五部门于 2018 年 8 月发布《关于防范以「虚拟货币」「区块链」名义进行非法集资的风险提示》的文件,请广大公众理性看待区块链,不要盲目相信天花乱坠的承诺,树立正确的货币观念和投资理念,切实提高风险意识;对发现的违法犯罪线索,可积极向有关部门举报反映。    

零知识证明 以太坊 以太坊 认识以太坊、了解以太坊、学习以太坊