作者:Nic Lin,imToken 资深区块链工程师
本文受众:对 Rollup 有所了解的区块链爱好者
Maker 的 Optimism Dai Bridge 是一个 Optimistic Rollup 上的快速资产提领协议。
在介绍 Maker Bridge 之前,你要先对 Rollup 有一些了解,本文不会对 Rollup 做太多介绍。
了解 Rollup
在 Optimistic Rollup(Rollup 的其中一种)设计中,都先假设交易是正确的,如果发现有错再透过欺诈性证明来挑战错误的交易,但也因为要让欺诈性证明有时间可以送达,所以会有一段称为挑战期的延迟时间。一笔交易要等到顺利通过挑战期后(期间没有被挑战),链上合约才会接受它是正确的。
但这个挑战期也因此成为影响 Optimistic Rollup 使用者体验的缺点,所以有人提出了快速资产提领协议来解决这个使用体验的痛点。
在进入正题之前,先对标题做一些解释。首先,要能达到「快速」资产提领,并不是因为这些 Rollup 真的支持快速提领资产,而是需要一个中介商、一个流动性提供者来先垫付资产。
其次,标题是 Rollup Bridge 的介绍,但 Rollup Bridge 可以用来指该 Rollup 本身提供的 L1 <-> L2 Bridge,也可以用来指其他建构在 L1 <-> L2 Bridge 之上的 Bridge。本文介绍的是后者:搭建在 Optimism L1 <-> L2 Bridge 之上的 Maker Dai Bridge,用来让使用者快速提领资产回 L1。
- 快速资产提领是我从 fast withdrawal 翻过来的,可能有其他更好的翻译
- 以下所称的 L2 皆指 Rollup 而非 Plasma 或 Sidechain
- 以下所指 Rollup 为 Optimistic Rollup,因为 Optimistic Rollup 才有挑战期的问题
- 以下所称「资产」和「代币」两个词指的是一样的东西
- 以下所称「七天」和「Rollup 挑战期」两个词指的是一样的东西
- 以下 「Rollup Bridge」 指的是 Rollup 本身提供的 L1 <-> L2 Bridge,「Maker Dai Bridge」 指的是搭建在 Rollup Bridge 之上的 Bridge
Rollup Bridge
Rollup 的安全性是锚定在它所在的 L1 上的(例如 Optimism 锚定在 Ethereum 上):你要针对 L2 的交易进行审查攻击,等同于对 L1 交易进行审查攻击;你要重组 L2 ,进行双花攻击,等同于你要重组攻击 L1。
Rollup Bridge 是 L1 和 L2 互动的管道,你要从 L1 送讯息到 L2 合约或是你要把 ETH 存到 L2,都是透过 Rollup Bridge 来帮忙把讯息传递过去;反之亦然,你要从 L2 送讯息到 L1 合约或是你要把 ETH 提回 L1,也是透过 Rollup Bridge。Rollup Bridge 的安全性和 L2 交易的安全性是一样的,不会因为它多跨到了 L1 所以更不安全。
所以 Rollup Bridge 代表的是什么意思?Rollup Bridge 提供了一个安全、去中心化的方式让 L1 和 L2 能够进行互动、让 L1、L2 的资产能够互相转移。
注:Rollup Bridge 不是自然而然就会出现的东西,它不会因为你今天做了一个 Rollup,就自动生出 Rollup Bridge 的功能,而是要搭配你的 Rollup 协议来打造你的 Rollup Bridge。
如果你透过跨链桥用 MPC 的方式来执行跨链交易,你需要相信参与 MPC 的节点。但在 Rollup Bridge 里没有这样的角色,透过 Rollup Bridge 送讯息就跟送 Rollup 交易一样,其安全性和抗审查性是受 Rollup 本身所保障,所以才会说 Rollup Bridge 是去中心化的方式。
Fast withdrawal(快速提领资产回到 L1)
一开始有说到,「快速」并非真的是 Rollup 支持快速转移资产,而是有一个流动性提供者来先垫付这笔资产。
Rollup 的挑战期是为了确保交易的安全性,所以任何人要从 L2 提取资产回 L1 都不可避免地要等待挑战期。不过如果今天你相信一笔提现交易是正确可信的,并且你也相信重组攻击很难会发生,所以你愿意冒这个险的话,你就可以提议在 L1 先代垫这笔提现交易,并从中间抽点手续费。反之,如果对方希望一个小时后(而非七天后)就能在 L1 拿到钱,且愿意被抽点手续费的话,那就成交,两边都开心。
运作流程
对方先在 L2 透过一个 fast withdrawal 合约来申请 fast withdrawal,fast withdrawal 合约背后走的一样是正常的提取流程,要等七天。这时候你看到了这笔 fast withdrawal 交易,且确认这笔交易是可信、很难被重组攻击后,你就到 L1 的 fast withdrawal 合约申请垫付,垫付的对象会是该笔 L2 fast withdrawal 交易的 ID。
注:这时候 L1 的 fast withdrawal 合约还不知道有这笔 L2 fast withdrawal 交易的存在。
等到七天挑战期过了,这个 L2 fast withdrawal 交易会被传递到 L1 fast withdrawal 合约。如果你之前有先垫付这笔交易,合约里会有纪录,那合约就会直接把这笔交易所提领的资产转给你。如果没有人来垫付,那合约就会照正常流程,把提领的资产转给当初的提领者。
注:
- 你垫付的金额会是对方提领的金额扣掉给你的手续费。
- 如果没有 Rollup Bridge,就没办法安全可信地把 fast withdrawal 讯息 relay 到 L1 上,就不会有人敢先做垫付的动作,因此 Rollup Bridge 是 fast withdrawal 的必要条件之一。(当然 Rollup 团队是一定会做出 Rollup Bridge 的功能的,否则没有人会想要用这个 Rollup)
Maker Dai Bridge
Maker Dai Bridge 大致是就是上面描述的 fast withdrawal,只是里面的流动性提供者不是别人,而是 Maker 的财库。
如同你放入抵押品(例如 ETH),Dai 财库就会铸造出 Dai 给你。 Maker Dai Bridge 也是相似的概念,你放入提领 Dai 的凭证(这个凭证要等到挑战期过后才能提领 Dai),Dai 财库铸造出 Dai 给你。等到挑战期过了,你就可以偿还借款、拿出抵押的凭证并用凭证去领出 Dai。
这个铸币的功能将会让 Maker Dai Bridge 在 fast withdrawal 服务的竞争里占尽极大优势,因为它不像其他流动性提供者一样要承担资本利用率、资产曝险的风险,而且理论上它的流动性可以到无限大。再来,因为抵押和借出的资产都是 Dai,也不需要考虑被清算的可能。最后,除非 Rollup 被攻击破坏,否则这些借款都会保证如期还款。
缺点
但 Maker Dai Bridge 也不是没有缺点,这个缺点是:它的安全性要多仰赖一个对象 — 它的 Oracle(预言机)服务。
注:Maker 协议本身有一群中心化的 Oracle 负责将代币在现实世界中的价格送到链上。Maker 协议仰赖这些 Oracle 的报价来决定哪些贷款已经进入可清算的状态。
因为 Dai 财库自己没办法判断 L2 上的提领是否是有效的,所以需要一个第三方在链下模拟交易执行,确认提领的有效性。就像 Optimisitic Rollup 节点不需要等 Operator 上传最新的状态,自己模拟交易执行都能得到正确的状态。
所以 Maker Bridge 会直接沿用原本已经建立好、经过实战测试的 Oracle 服务来担任这个第三方。
运作流程
首先是使用者把 Dai 存到 L1 Maker Bridge,L2 Maker Bridge 会铸出 oDAI 给使用者去用。
当使用者要提领回到 L1 时,向 L2 Maker Bridge 申请提领、销毁 oDAI。等待一段时间,这笔 L2 提领交易被放进 L1 的 Rollup 合约的交易日志后,Oracle 就可以执行并判断这笔 L2 提领交易的有效性。如果有效,Oracle 会到 L1 Maker Bridge 上批准,L1 Maker Bridge 会铸造出 fDAI 给使用者,这个 fDAI 是一个领取凭证,等到 L2 提领交易的挑战期结束后,可以拿这个领取凭证去取出 Dai。使用者接着拿 fDAI 到 Dai 财库去抵押换出 Dai 来使用。
最后,当 L2 提领交易的挑战期结束后,使用者(或其他人)就可以偿还借款、取出 fDAI 并用 fDAI 去提领 Dai。
注:fDAI 会是以 NFT 的形式存在,因为每一笔提领的解锁时间都不同,所以会是 Non Fungible(非同质化)。
为什么还需要多一层 fDAI?
假设没有 fDAI,Oracle 批准后 L1 Maker Bridge 就直接解锁 Dai 给使用者。则当 Oracle 作恶时,会导致 L1 Maker Bridge 的 Dai 被解锁拿走,这时候 Maker Bridge 上的 L1 Dai 会比 L2 oDAI 还少,这会导致 L2 有部分的人的 oDAI 会提领不出来。所以 Maker Bridge 改成用 fDAI 抵押借款的方式,把风险转嫁到 Dai 财库,也就是 Maker 代币的持有者:当 Oracle 作恶时,结果会是 Dai 财库新增一笔坏账,但 Maker Bridge 上的 L1 Dai 和 L2 oDAI 还是维持 1:1 的映射。
注:这边会需要设计让使用者有偿还贷款、取回 fDAI 并拿 fDAI 去领回当初提领的 Dai 的动机,否则抵押 fDAI 能借出 100% 提领的 Dai 的金额,那使用者就没有动机去完成提领的动作,Maker protocol 就只能自己负担这个成本。fDAI 抵押只能借出 X%(X < 100) 或是使用者提领时能退回部分手续费都是可能的机制,细节要等到 Maker Bridge 测试完才能知道。
附注
- 目前 Maker 只支持 Optimistic Rollup(更准确地来说是只有 Optimism),因为当前的 ZK Rollup 大多数都还未支持 L1 <-> L2 的互动(如前述,这是必要功能)。而且 ZK Rollup 的挑战期比 Optimisitc Rollup 的挑战期要短得多,快速资产提领不会是 ZK Rollup 使用者急需的功能。
- 目前 Maker Optimism Dai Bridge 仍在测试中。
- 一样的设计可以用于其他 Optimistic Rollup,例如 Arbitrum。只需要针对 Arbitrum 的 Rollup Bridge 来做相对应的修改。
Thanks to Kimi Wu and Chang-Wu Chen.
请给这份内容打个分~
- 5(非常有用)
- 4
- 3
- 2
- 1(完全没用)
0 投票者