现在位置:首页 >
包含标签 Rollup Bridge 的所有文章
-
以太坊教程:Rollup Bridge 介绍(三):Celer cBridge
本文受众:对汇总了解的区块链爱好者 Celer cBridge 是一个跨链资产转移方案,cBridge 同时支持了 L1 和 L2、以及 L1 与 L1 之间的桥接。我们可以从 cBridge 的 Web App 上看到他们已经支持了许多知名的 L1 和 L2 项目。 cBridge 支持的链种 本篇文章会时间在cBridge背后的技术实现,包含原理、契约实践以及运维的介绍。 道原则 cBridge 主要使用了 HTLCs 技术来实现跨链的资产转移,对于 HTLCs 不熟悉的读者,可以先参考这篇文章了解其原理以及应用场景:http://bcoin.io/guides/swaps.html 流程 cBridge 在其契约中 GitHub 的文件里描述了 cBridge 的道流程,以下为节选部分: 发送方在源链上发起转移交易 cBridge节点通过使用发送方的hashlock,在岸设置链上发起转账交易 发送方在源链上确认交易 cBridge 节点在目的地链上确认交易 为了帮助理解,我将一步步画成的如下图: cBridge 澜 下面会就四个关键步骤依序进行细节说明: 首发发送方发起转移交易 整个cBridge跨链的资产转移流程地址会由源链的发送方(即使用cBridge进行转帐的用户)发起帐单。发送方会负责产生哈希锁,设置转帐的时限,并与转的信息(令牌、 token 数量、目的地链代号、授权人地址)一起向部署在源链的 cBridge 合约发起转出请求。接收合约到请求后会的token数量,从发送方有将转移合约,导致转帐时限先要后转,才能将token取出。 第二步: cBridge 节点发起转账交易 在链下的cBridge节点会持续监控各链上cBridge合约的动作,当它发现源链上有突发的新转出请求,它会在链上获得转出的细节,主动对目的地进行部署链上的 cBridge 契约在请求中发起转移。 以协议方为指定的人地址,并使用与转让相同的哈希锁,限时转让以及取款时(约源链上设定限时2/3),准予转让的令牌 数量扣掉 cBridge 节点转发的成本和交通后,从 cBridge 节点转移到目的地链上的 cBridge 合约。 此时cBridge节点不知道,要外送方在第三步完成源链上转出散列锁,并揭散散列锁的答案后,cBridge本身有能力执行旅游链上转入的偏。 第三步:发送方确认交易 发送方确认 cBridge 节点有在目的地链上提交相应的转移后,就可以在请求链源上转移出请求的外部阶段。发送方首先要对源链的 cBridge 合约提交转移出哈希锁的答案,合约无误后,转出指定的令牌数量转移到cBridge节点,完成源链上转出的验证节点。 第四步:cBridge 节点确认交易 在链下的cBridge节点节点发送到监控方已经在源链上完成转出源后,准备好发送方节点时传播的哈希锁,到目的地链上的cBridge合约提交哈希锁,完成转入链上的链,此时的链上的人会收到来自源头的发送方,完成跨链的资产转移。 细节步骤看起来很繁琐,但对于cBridge App的用户来说,只要进行表演签名操作(第一步先转出,第三步对转出交易),并等待一些时间(3~5分钟) ,过程中完全不需要切换下载的网络,使用起来是非常简单流畅的。 退款 不小心是转出 自己转出在一个有效时间里转出,当有任何约定没有履行义务时,在设定的时限,自己有能力可以直接要求cB 合约免除任何人去处理转帐后的令牌,不需要提供哈希锁的答案。因为信用卡能够保护双方的资产,不会导致资产被永久锁在 cBridge 合约上。 因为是临时,目的地链的转出会比源链的转出更早,有可能cBridge节点对转出进行退款,用户才对转出进行确认,此时才会对用户造成损失。 当前cBridge Web App设置的转出时间截止时间为12,对应的转出时间约为12 * 2/3 = 8小时,时间相对充足,一般正常的转帐只需要几分钟,如果过程中出现非预期的状况,还可以有东南亚的反应时间处理。 简单的操作体验背后的代价 眼尖的读者可能已经发现,cBridge 道踏板中的第三与第四步,与典型的 HTLC 不同。 ,cBridge 节点可以到链源链取回它在链源公园付给每个人的链上。Celer官方说明这是为了提升用户体验,如果走典型的HTLC流程,用户在确认转出要外的步骤中,切换钱包的网络至目的地链,还需要专门在目的地链上的钱包里准备的gas token来支付自由的交易,对用户来说非常不方便。 因此cBridge调整了最后两个步骤的顺序,让用户只需要源源链进行操作,来致命的提升用户的体验。但这样的调整并不是没有成本,它会为用户带来额外的风险。 一个想链上:当用户在尝试源头,c桥节点收到用户的成功后,却没有在目的地链上将转移到海外给人(可能是、gas token或不足)是当机),节点节点链上的转账在生日当天,cBridge节点有能力对转账进行实时的操作,cBridge节点有可以无偿转帐用户获得的令牌。这部分必须仰赖用户自己的行动去降低风险,当你发现在有效区间内等了社交久的时间,国内人还没有得到目标,用户必须要自己主动去寻找链提供散列锁的答案,完成转移到特定的动作,以防止资产被恶意取走。 安全分析 综上所述,我们针对发送方和 cBridge 节点在 cBridge 四个操作步骤中可能产生的安全问题,进行分析与整理: 如果发送方执行了初步但是cBridge节点没有往下执行,此时发送方的资产会单方面被扣押在源链的cBridge合约中,必须要等待12小时,才能进行退款。 如果 cBridge 节点执行了第二步但发送方没有下执行,此时发送和 cBridge 节点资产的两个会被扣押押在源链和目的地链的 cBridge 合约中,必须更新帐单到期后,才能进行相关方需要的是,cBridge 能够在目的地链上的转移有更短的到期时间(8 小时比发送方更早完成)。 如果发送方执行了第三步但 cBridge 节点没有往下执行,此时发送已将资产转给 cBridge 节点,但目的地链上的新西兰人还没有收到相应的消息。到目的地链上的转移在到期后,cBridge 节点甚至有能力进行回转移,而导致发送方单方面的损失。 这个情况取方发送方带来安全疑虑,发送方需要在转入日期前(8 内),自己(或委托人)到目的地链上完成转入。人却迟迟没有收到任何收获,这时候就需要提高警觉了。 cBridge节点执行完第四步但交易没有成功(例如天然气),这时候发送方仍有损失的风险。以保护自己的资金安全。 契约实践 cBridge契约实践很简单,提供了转出、转入、确认以及退款的功能,人数众多,都是cBridge流中的核心动作,而且这些方法都可以让任何人去使用的。因此当节点在转帐过程中出现问题时,用户能够直接对资产进行操作,保护自己的。 cBridge 约定方法界面 特别要注意合约方法转出的第一个参数地址_bridge。这个参数链要填入才能为服务这些跨转帐需求(例如支持1,000 USDT从以太坊交易到Polygon)的cBridge地址,位置,用户在进行跨链转帐之前,必须先确定好要找哪个cBridge节点来服务。 Celer 官方提供了一个网关服务,负责 cBridge 节点的信息,用户将转帐的信息该给服务,它会尽快转用户转帐需求,且济州状态最好的岭节点(例如成功率高、低低等),用户在进行转接时填入塞勒推荐的cBridge节点。 由于 Celer 官方实际提供网关的相关信息,有技术背景的用户可以开始去操作 cBridge Web App,了解其背后的实践细节。 此外,契约里也有一些人可以去关注的重要事件: LogNewTransferOut事件:transferOut完成时会发出的事件,会记录转出的transferId。 LogNewTransferIn事件:transferIn完成时会发出的事件,会记录转入的transferId及其对应的转出的transferId(srcTransferId)。 在 cBridge 合约上不管是要确认呼叫请求,都需要提供 transferId,因此 transferId 在 cBridge 的应用中是控件的信息。除此之外,通过这两个事件的观察,帮助我们将跨链的转出和转入关联起来,有监控追踪转帐的状态,并在接下来发生的时候有什么能力。 cBridge 合约事件界面 节点运维 Celer官方自己开源了cBridge节点的实践,任何人都可以跑起的节点,但cBridge现阶段有白名单机制,想服务cBridge节点来服务用户一定要先跟官方接洽。 养节点的好处是可以从各个笔跨链转帐单中带一些带的链转帐,但还要考量到运维节点的,Celer 官方很贴心地在 cBridge 节点 GitHub 文件里详细了运维节点需要注意的事项,包括机器建议配备,支持的还有货币种类和需要提供的流动性,各条的建议链配置,运维节点数据的最佳操作等等,节点甚至建统计的API ,让运维者能够随时监控节点的交易状况。 从 GitHub 文件的程度以及量了运维节点的官方资料,可以找到 Celer 对社区的用心。 结语 以上是对于cBridge背后技术实现的介绍,如果有任何想要分享,想要了解更多,都可以一起讨论? -
以太坊教程:Rollup Bridge 介绍(二):Hop Protocol
本篇是 Rollup Bridge 介绍的第二篇,建议先从第一篇 Maker Bridge 看起: 以下所称 L2 皆指 Rollup 而非 Plasma 或侧链 以下所称「资产」和「代币」两个词指的是一样的东西 以下所称「七天」和「Rollup 挑战期」两个词指的是一样的东西 快速跨 Rollup 资产转移 如果你现在要从 Rollup A 把资产搬到 Rollup B,要怎么搬?答案是从 Rollup A 提款至 L1,再从 L1 存款到 Rollup B。所以你要等 Rollup A 的挑战期,然后再等 Rollup B 的存款到账(通常不会很久)才能成功完成跨 Rollup 的资产转移。 图片来源:Steven Wu from imToken Labs 而 Hop protocol 就像是前篇介绍里 fast withdrawl 的例子一样,只是现在流动性提供者是在 Rollup B 上去垫付而不是在 L1。以下会以 fast transfer 来指跨 Rollup 资产转移,以便和 fast withdrawl 做出区分。 从高维来看 Hop protocol 就跟 fast withdrawl 一样简单,流动性提供者承担资产锁住七天的风险及机会成本,收取手续费;使用者支付手续费,换取能快速把资产转移到另一个 Rollup 的服务。 注:Hop protocol 里把流动性提供者称作 Bonder。 而如同 fast withdrawl 的例子,如果没有人来垫付你的 fast transfer,你就必须自己走完正常的路线:回到 L1 再进到 Rollup B。 注:Rollup A 和 Rollup B 都支援 Rollup Bridge 的功能也是必要条件,否则无法安全可信地把转账讯息从 A relay 到 B 上。 不过实现 Hop protocol 其实没有这么简单。首先,每一个 Rollup 的提款方式、挑战期以及存款时间都不一样。每一个 Rollup 都需要 Hop protocol 团队去对接。 注:Hop protocol 也可以接上 ZK Rollup,ZK Rollup 因为没有挑战期所以设计会比较不一样,但一样需要团队去对接。 而整个 Hop protocol 的安全性会取决于其所接入的 Rollup 中安全性最低的那个。如果某一个 Rollup (或甚至 Rollup 上面的某一个代币合约)出现漏洞,导致攻击者可以任意凭空印钞,那攻击者就可以马上通过 Hop protocol 来换成其他 Rollup 上的资产。 其实就和跨链桥一样,你的防守范围从一条链变成了多条链上的无数个资产,其安全性不容轻忽。 接下来会介绍一些 Hop protocol 的设计细节 批量处理 如果每一笔 transfer 背后对应的 Rollup A -> L1 -> Rollup B 步骤,流动性提供者都要一笔一笔跑过一次,那会耗费很多 gas。所以 Hop protocol 提供批量处理的功能,流动性提供者可以等待一段时间,收集垫付完的 transfer,再把它们一并处理。 hToken hToken 是 Hop protocol 的代币,但这个不是治理代币,而且每个代币在 Hop protocol 里都有相对应的 hToken,例如 ETH 有 hETH,DAI 有 hDAI。 为什么需要 hToken? 首先,它能统一代表同一种代币,简化使用介面的复杂度:使用者不需要选择他要换的是 Optimism ETH 还是 Arbitrum ETH,使用者操作的都是 hETH。 其次,Hop protocol 不需要负责维护一个正统代币的清单。任何人都可以在 Rollup 上发行一个 Dai 合约,那 Hop protocol 要怎么知道哪一个才是 Maker 团队部署在 Rollup 上的 Dai 合约?答案是:Hop protocol 不需要知道,它只需要知道 hDAI。(你可能会想:拿到 hDAI 可以干嘛?hDAI 等于 Dai 吗?我们马上就会讲到) 最后,延续上一点。假设今天没有 hDAI,而我要从 Rollup A transfer Dai 到其他 Rollup。Hop protocol 就必须在 Rollup A 上记载 Rollup B C D E … 上的 Dai 合约地址,而且其他 Rollup 也都要依照办理。所以这样全部 Rollup 上总共记载的数目会是 NNM(N 是 Rollup 数量,M 是代币数量)。另外,谁有权力决定哪一个 Dai 合约才是正统? 好,那我今天拿到 hDAI 后可以干嘛?答案是拿去 AMM 换成 Dai。我们先不讨论 AMM 从哪里来,因为只要有诱因就会有人建出 hDAI/Dai 的 AMM 交易对并提供流动性。 注:这里的 AMM 指的 L2 上的 AMM。 先介绍 hToken 哪里来:任何人都可以到 L1 的 Hop protocol 合约抵押代币获得 hToken,例如抵押 Dai 获得 hDAI。流动性提供者一定会需要抵押来获得 hToken,因为他们垫付的代币会是 hToken。 接下来,假设使用者要从 Rollup A 把 Dai transfer 到 Rollup B,这过程会包含 (1) 把 Dai 换成 hDAI、 (2) transfer hDAI 到 Rollup B、 (3) 在 Rollup B 上把 hDAI 换成 Dai 其中 (1) 和 (3) 都会有 Dai/hDAI 互换的需求,有需求自然就会有人愿意提供 Dai/hDAI 流动性来赚取手续费。 图片来源:Steven Wu from imToken Labs 当然,如果你没有被说服为什么需要 hToken,那 hToken 和 AMM 看起来就会像是故意挤出来扒使用者皮的玩法。你可以想想看假设没有 hToken 的话,这个 protocol 的哪些运作流程、使用者介面会长得不一样,会是更好、还是更坏。(或许真的会变得更好?) 最后是一些我想到的可能的问题。 手续费怎么估?如果没有人垫付? 你可能有注意到,这个垫付的模式是你直接申请 transfer 然后等人来垫付,所以你在申请 transfer 时就要写好你愿意支付的手续费是多少,如果你的手续费太低,那下场就会是你要自己跑完 transfer 过程 — 等待七天。 另外一个模式是你和流动性提供者先在链下协议好手续费,然后再送 transfer 申请到 Rollup。但是因为现在是在两条不同 Rollup 上,表示交易不会是原子的:如果你在 Rollup A 上送出了你和流动性提供者协议好的 transfer,结果流动性提供者没有在 Rollup B 上依约垫付给你,你必须要有管道能够在 Rollup B 上证明你在 Rollup A 上和该流动性提供者的 transfer 协议。而这个管道会需要 Rollup B 能够读取到 Rollup A 的交易(因为这样才能以去中心化的方式来证明),这并非做不到,但是考量到其复杂度和带来的效益,可能不太值得。 所以目前这个模式会是比较可行的,但也表示计算手续费这边要小心,避免没有人来垫付,导致使用者要等七天。 另外不同 Rollup 上收取 gas 费用的方式不一样,也是 Hop protocol 团队在设计估算手续费功能需要注意的地方。 Happy case 以外情况的 demo? 目前 Hop protocol 团队提供的 demo 只有 happy case 的 demo,没有 demo 发生没人垫付的情况或是流动性提供者平常在不同 Rollup 间搬运、平衡资产的过程。 -
以太坊教程:Rollup Bridge 介绍(一):Maker Dai Bridge
作者:Nic Lin,imToken 资深区块链工程师 本文受众:对 Rollup 有所了解的区块链爱好者 Maker 的 Optimism Dai Bridge 是一个 Optimistic Rollup 上的快速资产提领协议。 Photo by Wilbur Wong on Unsplash 在介绍 Maker Bridge 之前,你要先对 Rollup 有一些了解,本文不会对 Rollup 做太多介绍。 了解 Rollup Rollup 未来在以太坊的角色:http://imtokentool.com/ydf/291.html Vitalik:Rollup 不完全指南(精选):http://imtokentool.com/ydf/312.html 在 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.