|zkRollup和Validium的区别:各自适合什么场景?( 二 )


随着我们研究的深入 , 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成本较低 , 这个成本随着交易数量呈线性增长 。


推荐阅读