干货 | Optimistic Rollup vs. ZK Rollup:一探究竟,Part-2

ZK Rollup 对于专门的应用(比如 ERC-20 代币转账)已经比较成熟,但要实现完全通用的智能合约系统就必须采取更为迂回的道路。

元交易(Meta-transaction)

两种 Rollup 方案都一样适合支持元交易和账户抽象。

安全性

Optimistic Rollup

不像支付通道,Rollup 中的所有资金都是由单个智能合约来保管的。恕我直言,Rollup 是最靠谱的扩展方向,只要成功,我们就能看到大批用户迁移到 Rollup 系统中、大量资金汇入单个合约里。一旦保管着价值百万(甚至是数十亿)美元的资产,这样的 Rollup 合约就会变成一个极为诱人的蜜罐,为黑客攻击带来可观的甜头。在这种条件下,无论攻击需要多么复杂的技术,攻击者绝对不会错过任何机会。

OR 的安全模型基于两个假设:

  • N 个参与者中至少会有 1 个诚实的参与者,会执行所有 OR 交易并在无效状态转换发布时主动提交错误性证明;
  • 底层的 Layer-1 网络有强健的抗审查性。
  • 诚实参与者:首先,可以合理地假设,只有 Rollup 的运营者们会真的一五一十监测和执行交易。普通用户既没有激励这么做,也没有技术手段负载得起那么高的交易吞吐量(要是有的话,还要扩展方案干嘛呢?)。不过比较好的一点是,运营者会自然被激励去检查其他运营者的区块正确性,因为要是跟在一个无效块后面继续出块也会被惩罚。只要有足够多的可辨识参与者,1/n 诚实运营者假设就是一个合理的假设。不过。因为活跃运营者的数量也是有上限的(可能是几百个?),所以还是有可能会出现一些复杂的攻击:爆破所有运营者的基础设施(非常难,但不是不可能)、贿赂/勒索 开发工程师要求秘密加入恶意代码、攻击 rollup 软件的升级分发渠道,等等,当然还包括这几种攻击的组合拳。这些攻击都比较难,而且大家也会主动防范,但是,比起(比如说)用同样的方式来攻击以太坊矿工,这些攻击还是更有可能出现——因为对 OR 的一次成功攻击在完成、揭晓之前是悄无声息的。

    Layer-1 的强健抗审查性:第二个假设更微妙一点。实际上,以太坊的设计为防止一般的审查提供了非常高效的经济机制。不过,这些机制遇到 ”逆向机制“ 时就不起作用了。攻击者可以创造一个完全自动化的贿赂机制来协调矿工的 51% 攻击,这样就能防止诚实矿工将错误性证明打包进区块。有趣的是,参与这种攻击的矿工所需付出的直接成本是零,但是有可能要付出社会成本,因为如果审查发动者被揪出来了,社区会将一腔怒火发泄出来。另一个让这一假设显得棘手的原因是,原本的机制也为攻击参与者提供了貌似合理的借口:“因为攻击者是多数一方,已经作出了可信承诺,如果我不参与的话,我的块就会被抛弃掉,所以我这么干可不是贪心,只是想避免损失呀”。建议读者可以看看这个视频里对这种攻击的讨论,以及最近 Vitalik Buterin 对 51% 审查攻击做的分析。下面我会分享一些有趣的洞见。这种类型的攻击,在 PoW 下是很有可能出现的,因为无法惩罚那些匿名的参与者矿工。但等转型到 PoS 之后,社区就可以通过罚没保证金来惩罚审查者矿工,如果光大社区达成了这样的共识的话。毕竟,像这样的攻击可以被认为是对整个网络的侵犯(虽然有人会认为矿工只是诚实地跟随协议在行动,而且他们也没有义务做违反自己经济利益的事)。不过,在 DAO 分叉之后的这个时代,这些举措会引起非常激烈的争论,至少会让结果不可预测。在 Vitalik 做的最近一次社区民意调查显示,63% 的受调查者都极力反对为了挽救用户而人为干预区块链的不可变更性,无论攻击的程度有多广泛。连罚没单个验证者的保证金都是困难重重,更不用说是罚没大部分人的钱了。快速动员社区执行一场 UASF(用户激活型软分叉)、督促矿工打包特定交易,是抵御此类攻击的一个更为现实的办法。无论从工程角度还是从社会协作角度来看,这种情况都是比较复杂的,而且无疑需要相对更长的时间来证明欺诈 —— 少则需要一周,最好是有两周。同样地,如果多数 DeFi 运营者能够在实质上决定分叉的结果,那么最符合他们利益的做法是避免上演吵吵闹闹的崩溃事件、沉默地顺从攻击者(这样就能让以太坊依然保持在最长链上,并产生一个更少争议的结果(相对比软分叉))。总结一下:错误性证明被审查的风险是相对较小的,但也不能否认其可能性。安排 1~2 周的挑战期、不放太多钱在里面,OR 可以是蛮不错的一个方案:运营者/矿工 犯不上要冒这样的风险串谋搞事。不过,随着 Rollup 合约中的资金越来越多,潜伏的黑天鹅也会变得越来越令人担忧,至少多疑如你肯定会发愁 : ) 。
    ZK Rollup在一条 ZK Rollup 侧链中,每一次状态转换都要先由 Rollup 智能合约验证过才能生效。所以运营者想伪造状态是不可能的。ZKR 的安全性无需依赖于 Layer-1 的审查抗性,仅在活性(liveness)上才依赖 Layer-1 审查抗性(译者注:意思是,Layer-1 上的审查攻击也不能篡改 ZKR 的状态,但有可能让 ZKR 无法响应)。所以大家不需要监控 ZKR:只要一个区块经过了验证,即使运营者拒绝合作,用户的资金也能得到足够的保障。因此,ZKR 充分体现了 crypto 的基本理念:使用密码学和基于博弈理论的激励机制、替代了系统中的受信任第三方,实现了可靠性。不过,为完整起见,我必须指出多个 ZKR 独有的潜在风险。

    受信任第三方:如果在某个 ZK Rollup 方案中用到的零知识证明技术需要一个普遍性的受信任初始设置,那么我就必须引入 1/N 诚实参与者假设。也不好一口咬定这种风险能不能被接受,因为该假设显示与否取决于参与者的数量和质量。不过,安全无小事,这就是为什么我对高效免信任型 SNARK 技术的近期进展感到非常兴奋,尤其是我们 Matter Labs 正在开发的 这种方案。

    密码学:最新一代的 SNARK 技术用的是多种可靠且经过实战检验的密码学原语,而不是 Groth16。前面提到的 Matther Labs 的工作是基于 FRI 的,因此可以提供近似的后量子安全。不过,还需要两种措施来进一步完善其安全性:

  • 在实验环境下所用的安全组件的强度会远低于实际生产环境的版本,类似于 RSA challenge。一旦出现了一种可行的攻击模式,challenge 就会先于生产环境代码而被攻破,那么研究人员在实际使用的代码被攻破很久以前就可以发现这一点了。
  • 所有的状态转换都只能由 ZKR 的运营者来发送,该运营者会变成一个双因子保护层。
  • 时延(达成可验证确定性的时间)

    Optimistic Rollup因为上面提到的安全问题,Optimistic Rollup 只有使用 1~2 周的错误性证明挑战期才足够安全。在挑战期过去以前,没有交易能被认为是确定的,无论是 Rolup 内部的交易还是退出交易。更糟糕的是,一个终端用户是没法提前检验出交易确定与否的,除非 TA 自己把最新一个挑战期里的所有交易完整执行一遍。需要指出的是,用户不能完全放心地靠博弈机制来保证区块会被敲定,因为单个运营者节点中出了 bug(或者被黑)都有可能导致回滚。(PoW 下)确认时间:2 周(PoS 下)确认时间:1周
    ZK Rollup当前的 ZKP 是高度计算密集型的。如果一个区块中有 1000 笔交易,在普通的服务器上我们需要 20 分钟才能构造出一个证明。不过(由 Matter Labs 和 Coda 开发的)进展中的 GPU 证明器实现可以提速至少 10 倍。在不远的将来,定制化的硬件可能会实现更高的运算能力。最终,我们估计区块确认时间可以降到 1 分钟以下。(当前)确认时间:20 分钟(未来)确认时间:1 分钟以内

    Rollup 内部交易的快速确认机制在两种 Rollup 方案中,验证者都可以通过一些机制来实现即时交易确认,比如锁住特定数目的安全保证金,如果某个交易没有被打包到合适的区块中,这笔钱就会被罚没。这是通过经济保证来提供确定性不过这种方法也有一些局限性。在转移同质代币(fungible token)时这种方法比较好用,但要转移非同质代币(NFT)时就会比较难(因为代币的市场价格可能很不清晰,又或者资产所有者不想立即把它 ”卖“ 掉),也不易于发起通用性的智能合约调用(因为也很难估价一笔交易如果回滚会造成多大的经济损失;一个简单的例子是:当你想接收一个预言机传来的稳定币价格的时候,运营者该押多少钱才合适呢?)。

    快速取款机制快速取款机制也类似于 Rollup 内部交易快速确认机制。运营者可以与流动性供应商合作,即时向用户兑付同质代币的流动性,使得用户无需等待退出交易在 Rollup 系统中得到确认。这一机制会要求与确认时间成比例的大量抵押品。假设未来 OR 的交易确认时间是 1 周而 ZRK 的确认时间是 5 分钟,OR 将需要 ZKR 抵押品的 2000 倍,来实现同等的退出资金体量(以每周计)。

    隐私性

    Optimistic RollupOR 可以支持所有能在 Layer-2 上使用的所有隐私方案(混币器,等等)。因为 OR 本身是 Layer-2,所有实现出来的隐私解决方案看起来就会像 Layer-3。这样可能会导致隐私服务更加碎片化,这样反过来会导致参与匿名集合的人更少,也会让隐私保护措施的效果非常微弱(正如我们在 zcash 网络里看到的情况那样,zacsh 不是默认保护交易隐私的,所以使用隐蔽地址的人非常少)。
    ZK Rollup为了实现真正的隐私性,系统必须默认保护用户的隐私。从技术角度来看,ZKR 可以在某种程度上轻松支持在协议层默认实现代币转移的机密交易,还可以区分公开的智能合约和私密的智能合约(ZK-ZK-Rollup)。与此同时,构建完全匿名的、像 zcash 那样的(即不仅隐去了交易数额,还隐去了交易双方)交易,则需要改变 ZK Rollup 的存储模式,从账户模式转到 UTXO 模式,这样会带来很多问题,所以不太可能这么做。

    结论

    Optimistic Rollup 现在在 PoC(概念验证)阶段。我们希望不久就能看到产品级的实现出来。如果证明了现有代码可以相对容易地迁移到 OR 上,众多项目都会开始接受它并构建新的基础设施:对 Layer-2 的支持会出现在钱包里,预言机也会开始将信息广播到 OR 里,等等。ZK Rollup 对于专门的应用(比如 ERC-20 代币转账)已经比较成熟,但要实现完全通用的智能合约系统就必须采取更为迂回的道路。最终,可能可以将任意基于 EVM 和 WASM 的智能合约都装载到 ZK Rollup 上——以目前的技术发展速度,这个阶段看来不会太遥远。两种 Rollup 都要求钱包、预言机和其它智能合约组件上的基础设施变更。这需要很大的工作量,但会因为越来越多项目对 Layer-2 扩展技术感兴趣而逐渐加速。因为 OR 比起 ZK-Rollup 更早承诺要实现基于 EVM 的通用智能合约系统,这会给社区一个很大的动力去接受 Layer-2 方案。对于用户和 dApp 来说,从一个 Rollup 系统转移到另一个 Rollup系统会比一开始从以太坊 Layer-1 迁移到 Layer-2 上要容易。链桥会让整个过程更加平滑。因为这种切换的便捷性,我个人认为,有最好用户体验的方案在长期可能成为通吃的唯一赢家。无论结果如何,这都是一场非常重大且激动人心的烟花,值得一观。不论鹿死谁手,以太坊社区都是最终的赢家。

    转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

    声明:图文来源于网络,如有侵权请联系删除

    风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

    (0)
    打赏 微信扫一扫 微信扫一扫
    上一篇 2019年11月11日 下午4:56
    下一篇 2019年11月11日 下午4:56

    相关推荐

    干货 | Optimistic Rollup vs. ZK Rollup:一探究竟,Part-2

    星期一 2019-11-11 16:56:41

    元交易(Meta-transaction)

    两种 Rollup 方案都一样适合支持元交易和账户抽象。

    安全性

    Optimistic Rollup

    不像支付通道,Rollup 中的所有资金都是由单个智能合约来保管的。恕我直言,Rollup 是最靠谱的扩展方向,只要成功,我们就能看到大批用户迁移到 Rollup 系统中、大量资金汇入单个合约里。一旦保管着价值百万(甚至是数十亿)美元的资产,这样的 Rollup 合约就会变成一个极为诱人的蜜罐,为黑客攻击带来可观的甜头。在这种条件下,无论攻击需要多么复杂的技术,攻击者绝对不会错过任何机会。

    OR 的安全模型基于两个假设:

  • N 个参与者中至少会有 1 个诚实的参与者,会执行所有 OR 交易并在无效状态转换发布时主动提交错误性证明;
  • 底层的 Layer-1 网络有强健的抗审查性。
  • 诚实参与者:首先,可以合理地假设,只有 Rollup 的运营者们会真的一五一十监测和执行交易。普通用户既没有激励这么做,也没有技术手段负载得起那么高的交易吞吐量(要是有的话,还要扩展方案干嘛呢?)。不过比较好的一点是,运营者会自然被激励去检查其他运营者的区块正确性,因为要是跟在一个无效块后面继续出块也会被惩罚。只要有足够多的可辨识参与者,1/n 诚实运营者假设就是一个合理的假设。不过。因为活跃运营者的数量也是有上限的(可能是几百个?),所以还是有可能会出现一些复杂的攻击:爆破所有运营者的基础设施(非常难,但不是不可能)、贿赂/勒索 开发工程师要求秘密加入恶意代码、攻击 rollup 软件的升级分发渠道,等等,当然还包括这几种攻击的组合拳。这些攻击都比较难,而且大家也会主动防范,但是,比起(比如说)用同样的方式来攻击以太坊矿工,这些攻击还是更有可能出现——因为对 OR 的一次成功攻击在完成、揭晓之前是悄无声息的。

    Layer-1 的强健抗审查性:第二个假设更微妙一点。实际上,以太坊的设计为防止一般的审查提供了非常高效的经济机制。不过,这些机制遇到 ”逆向机制“ 时就不起作用了。攻击者可以创造一个完全自动化的贿赂机制来协调矿工的 51% 攻击,这样就能防止诚实矿工将错误性证明打包进区块。有趣的是,参与这种攻击的矿工所需付出的直接成本是零,但是有可能要付出社会成本,因为如果审查发动者被揪出来了,社区会将一腔怒火发泄出来。另一个让这一假设显得棘手的原因是,原本的机制也为攻击参与者提供了貌似合理的借口:“因为攻击者是多数一方,已经作出了可信承诺,如果我不参与的话,我的块就会被抛弃掉,所以我这么干可不是贪心,只是想避免损失呀”。建议读者可以看看这个视频里对这种攻击的讨论,以及最近 Vitalik Buterin 对 51% 审查攻击做的分析。下面我会分享一些有趣的洞见。这种类型的攻击,在 PoW 下是很有可能出现的,因为无法惩罚那些匿名的参与者矿工。但等转型到 PoS 之后,社区就可以通过罚没保证金来惩罚审查者矿工,如果光大社区达成了这样的共识的话。毕竟,像这样的攻击可以被认为是对整个网络的侵犯(虽然有人会认为矿工只是诚实地跟随协议在行动,而且他们也没有义务做违反自己经济利益的事)。不过,在 DAO 分叉之后的这个时代,这些举措会引起非常激烈的争论,至少会让结果不可预测。在 Vitalik 做的最近一次社区民意调查显示,63% 的受调查者都极力反对为了挽救用户而人为干预区块链的不可变更性,无论攻击的程度有多广泛。连罚没单个验证者的保证金都是困难重重,更不用说是罚没大部分人的钱了。快速动员社区执行一场 UASF(用户激活型软分叉)、督促矿工打包特定交易,是抵御此类攻击的一个更为现实的办法。无论从工程角度还是从社会协作角度来看,这种情况都是比较复杂的,而且无疑需要相对更长的时间来证明欺诈 —— 少则需要一周,最好是有两周。同样地,如果多数 DeFi 运营者能够在实质上决定分叉的结果,那么最符合他们利益的做法是避免上演吵吵闹闹的崩溃事件、沉默地顺从攻击者(这样就能让以太坊依然保持在最长链上,并产生一个更少争议的结果(相对比软分叉))。总结一下:错误性证明被审查的风险是相对较小的,但也不能否认其可能性。安排 1~2 周的挑战期、不放太多钱在里面,OR 可以是蛮不错的一个方案:运营者/矿工 犯不上要冒这样的风险串谋搞事。不过,随着 Rollup 合约中的资金越来越多,潜伏的黑天鹅也会变得越来越令人担忧,至少多疑如你肯定会发愁 : ) 。
    ZK Rollup在一条 ZK Rollup 侧链中,每一次状态转换都要先由 Rollup 智能合约验证过才能生效。所以运营者想伪造状态是不可能的。ZKR 的安全性无需依赖于 Layer-1 的审查抗性,仅在活性(liveness)上才依赖 Layer-1 审查抗性(译者注:意思是,Layer-1 上的审查攻击也不能篡改 ZKR 的状态,但有可能让 ZKR 无法响应)。所以大家不需要监控 ZKR:只要一个区块经过了验证,即使运营者拒绝合作,用户的资金也能得到足够的保障。因此,ZKR 充分体现了 crypto 的基本理念:使用密码学和基于博弈理论的激励机制、替代了系统中的受信任第三方,实现了可靠性。不过,为完整起见,我必须指出多个 ZKR 独有的潜在风险。

    受信任第三方:如果在某个 ZK Rollup 方案中用到的零知识证明技术需要一个普遍性的受信任初始设置,那么我就必须引入 1/N 诚实参与者假设。也不好一口咬定这种风险能不能被接受,因为该假设显示与否取决于参与者的数量和质量。不过,安全无小事,这就是为什么我对高效免信任型 SNARK 技术的近期进展感到非常兴奋,尤其是我们 Matter Labs 正在开发的 这种方案。

    密码学:最新一代的 SNARK 技术用的是多种可靠且经过实战检验的密码学原语,而不是 Groth16。前面提到的 Matther Labs 的工作是基于 FRI 的,因此可以提供近似的后量子安全。不过,还需要两种措施来进一步完善其安全性:

  • 在实验环境下所用的安全组件的强度会远低于实际生产环境的版本,类似于 RSA challenge。一旦出现了一种可行的攻击模式,challenge 就会先于生产环境代码而被攻破,那么研究人员在实际使用的代码被攻破很久以前就可以发现这一点了。
  • 所有的状态转换都只能由 ZKR 的运营者来发送,该运营者会变成一个双因子保护层。
  • 时延(达成可验证确定性的时间)

    Optimistic Rollup因为上面提到的安全问题,Optimistic Rollup 只有使用 1~2 周的错误性证明挑战期才足够安全。在挑战期过去以前,没有交易能被认为是确定的,无论是 Rolup 内部的交易还是退出交易。更糟糕的是,一个终端用户是没法提前检验出交易确定与否的,除非 TA 自己把最新一个挑战期里的所有交易完整执行一遍。需要指出的是,用户不能完全放心地靠博弈机制来保证区块会被敲定,因为单个运营者节点中出了 bug(或者被黑)都有可能导致回滚。(PoW 下)确认时间:2 周(PoS 下)确认时间:1周
    ZK Rollup当前的 ZKP 是高度计算密集型的。如果一个区块中有 1000 笔交易,在普通的服务器上我们需要 20 分钟才能构造出一个证明。不过(由 Matter Labs 和 Coda 开发的)进展中的 GPU 证明器实现可以提速至少 10 倍。在不远的将来,定制化的硬件可能会实现更高的运算能力。最终,我们估计区块确认时间可以降到 1 分钟以下。(当前)确认时间:20 分钟(未来)确认时间:1 分钟以内

    Rollup 内部交易的快速确认机制在两种 Rollup 方案中,验证者都可以通过一些机制来实现即时交易确认,比如锁住特定数目的安全保证金,如果某个交易没有被打包到合适的区块中,这笔钱就会被罚没。这是通过经济保证来提供确定性不过这种方法也有一些局限性。在转移同质代币(fungible token)时这种方法比较好用,但要转移非同质代币(NFT)时就会比较难(因为代币的市场价格可能很不清晰,又或者资产所有者不想立即把它 ”卖“ 掉),也不易于发起通用性的智能合约调用(因为也很难估价一笔交易如果回滚会造成多大的经济损失;一个简单的例子是:当你想接收一个预言机传来的稳定币价格的时候,运营者该押多少钱才合适呢?)。

    快速取款机制快速取款机制也类似于 Rollup 内部交易快速确认机制。运营者可以与流动性供应商合作,即时向用户兑付同质代币的流动性,使得用户无需等待退出交易在 Rollup 系统中得到确认。这一机制会要求与确认时间成比例的大量抵押品。假设未来 OR 的交易确认时间是 1 周而 ZRK 的确认时间是 5 分钟,OR 将需要 ZKR 抵押品的 2000 倍,来实现同等的退出资金体量(以每周计)。

    隐私性

    Optimistic RollupOR 可以支持所有能在 Layer-2 上使用的所有隐私方案(混币器,等等)。因为 OR 本身是 Layer-2,所有实现出来的隐私解决方案看起来就会像 Layer-3。这样可能会导致隐私服务更加碎片化,这样反过来会导致参与匿名集合的人更少,也会让隐私保护措施的效果非常微弱(正如我们在 zcash 网络里看到的情况那样,zacsh 不是默认保护交易隐私的,所以使用隐蔽地址的人非常少)。
    ZK Rollup为了实现真正的隐私性,系统必须默认保护用户的隐私。从技术角度来看,ZKR 可以在某种程度上轻松支持在协议层默认实现代币转移的机密交易,还可以区分公开的智能合约和私密的智能合约(ZK-ZK-Rollup)。与此同时,构建完全匿名的、像 zcash 那样的(即不仅隐去了交易数额,还隐去了交易双方)交易,则需要改变 ZK Rollup 的存储模式,从账户模式转到 UTXO 模式,这样会带来很多问题,所以不太可能这么做。

    结论

    Optimistic Rollup 现在在 PoC(概念验证)阶段。我们希望不久就能看到产品级的实现出来。如果证明了现有代码可以相对容易地迁移到 OR 上,众多项目都会开始接受它并构建新的基础设施:对 Layer-2 的支持会出现在钱包里,预言机也会开始将信息广播到 OR 里,等等。ZK Rollup 对于专门的应用(比如 ERC-20 代币转账)已经比较成熟,但要实现完全通用的智能合约系统就必须采取更为迂回的道路。最终,可能可以将任意基于 EVM 和 WASM 的智能合约都装载到 ZK Rollup 上——以目前的技术发展速度,这个阶段看来不会太遥远。两种 Rollup 都要求钱包、预言机和其它智能合约组件上的基础设施变更。这需要很大的工作量,但会因为越来越多项目对 Layer-2 扩展技术感兴趣而逐渐加速。因为 OR 比起 ZK-Rollup 更早承诺要实现基于 EVM 的通用智能合约系统,这会给社区一个很大的动力去接受 Layer-2 方案。对于用户和 dApp 来说,从一个 Rollup 系统转移到另一个 Rollup系统会比一开始从以太坊 Layer-1 迁移到 Layer-2 上要容易。链桥会让整个过程更加平滑。因为这种切换的便捷性,我个人认为,有最好用户体验的方案在长期可能成为通吃的唯一赢家。无论结果如何,这都是一场非常重大且激动人心的烟花,值得一观。不论鹿死谁手,以太坊社区都是最终的赢家。