本篇是RollupBridge介绍的第二篇,建议先从第一篇MakerBridge看起:
以下所称L2皆指Rollup而非Plasma或侧链
以下所称「资产」和「代币」两个词指的是一样的东西
以下所称「七天」和「Rollup挑战期」两个词指的是一样的东西
快速跨Rollup资产转移
如果你现在要从RollupA把资产搬到RollupB,要怎么搬?答案是从RollupA提款至L1,再从L1存款到RollupB。所以你要等RollupA的挑战期,然后再等RollupB的存款到账才能成功完成跨Rollup的资产转移。
图片来源:StevenWufromimTokenLabs
而Hopprotocol就像是前篇介绍里fastwithdrawl的例子一样,只是现在流动性提供者是在RollupB上去垫付而不是在L1。以下会以fasttransfer来指跨Rollup资产转移,以便和fastwithdrawl做出区分。
从高维来看Hopprotocol就跟fastwithdrawl一样简单,流动性提供者承担资产锁住七天的风险及机会成本,收取手续费;使用者支付手续费,换取能快速把资产转移到另一个Rollup的服务。
注:Hopprotocol里把流动性提供者称作Bonder。
而如同快速提款的例子,如果没有人来垫付你的fasttransfer,你就必须自己走完正常的路线:回到L1再进到RollupB。
注:RollupA和RollupB都支援RollupBridge的功能也是必要条件,否则无法安全可信地把转账讯息从Arelay到B上。
不过实现Hopprotocol其实没有这么简单。首先,每一个Rollup的提款方式、挑战期以及存款时间都不一样。每一个Rollup都需要Hopprotocol团队去对接。
注:Hopprotocol也可以接上ZKRollup,ZKRollup因为没有挑战期所以设计会比较不一样,但一样需要团队去对接。
而整个Hopprotocol的安全性会取决于其所接入的Rollup中安全性最低的那个。如果某一个Rollup出现漏洞,导致攻击者可以任意凭空印钞,那攻击者就可以马上通过Hopprotocol来换成其他Rollup上的资产。
其实就和跨链桥一样,你的防守范围从一条链变成了多条链上的无数个资产,其安全性不容轻忽。
接下来会介绍一些Hopprotocol的设计细节
批量处理
如果每一笔transfer背后对应的RollupA->L1->RollupB步骤,流动性提供者都要一笔一笔跑过一次,那会耗费很多gas。所以Hopprotocol提供批量处理的功能,流动性提供者可以等待一段时间,收集垫付完的transfer,再把它们一并处理。
hToken
hToken是Hopprotocol的代币,但这个不是治理代币,而且每个代币在Hopprotocol里都有相对应的hToken,例如ETH有hETH,DAI有hDAI。
为什么需要hToken?
首先,它能统一代表同一种代币,简化使用介面的复杂度:使用者不需要选择他要换的是OptimismETH还是ArbitrumETH,使用者操作的都是hETH。
其次,Hopprotocol不需要负责维护一个正统代币的清单。任何人都可以在Rollup上发行一个Dai合约,那Hopprotocol要怎么知道哪一个才是Maker团队部署在Rollup上的Dai合约?答案是:Hopprotocol不需要知道,它只需要知道hDAI。
最后,延续上一点。假设今天没有hDAI,而我要从RollupAtransferDai到其他Rollup。Hopprotocol就必须在RollupA上记载RollupBCDE…上的Dai合约地址,而且其他Rollup也都要依照办理。所以这样全部Rollup上总共记载的数目会是N*N*M。另外,谁有权力决定哪一个Dai合约才是正统?
好,那我今天拿到hDAI后可以干嘛?答案是拿去AMM换成Dai。我们先不讨论AMM从哪里来,因为只要有诱因就会有人建出hDAI/Dai的AMM交易对并提供流动性。
注:这里的AMM指的L2上的AMM。
先介绍hToken哪里来:任何人都可以到L1的Hopprotocol合约抵押代币获得hToken,例如抵押Dai获得hDAI。流动性提供者一定会需要抵押来获得hToken,因为他们垫付的代币会是hToken。
接下来,假设使用者要从RollupA把DAItransfer到RollupB,这过程会包含
(1)把Dai换成hDAI、
(2)transferhDAI到RollupB、
(3)在RollupB上把hDAI换成Dai
其中(1)和(3)都会有Dai/hDAI互换的需求,有需求自然就会有人愿意提供Dai/hDAI流动性来赚取手续费。
图片来源:StevenWufromimTokenLabs
当然,如果你没有被说服为什么需要hToken,那hToken和AMM看起来就会像是故意挤出来扒使用者皮的玩法。你可以想看看假设没有hToken的话,这个protocol的哪些运作流程、使用者介面会长得不一样,会是更好、还是更坏。
最后是一些我想到的可能的问题。
手续费怎么估?如果没有人垫付?
你可能有注意到,这个垫付的模式是你直接申请transfer然后等人来垫付,所以你在申请transfer时就要写好你愿意支付的手续费是多少,如果你的手续费太低,那下场就会是你要自己跑完transfer过程—等待七天。
另外一个模式是你和流动性提供者先在链下协议好手续费,然后再送transfer申请到Rollup。但是因为现在是在两条不同Rollup上,表示交易不会是原子的:如果你在RollupA上送出了你和流动性提供者协议好的transfer,结果流动性提供者没有在RollupB上依约垫付给你,你必须要有管道能够在RollupB上证明你在RollupA上和该流动性提供者的transfer协议。而这个管道会需要RollupB能够读取到RollupA的交易,这并非做不到,但是考量到其复杂度和带来的效益,可能不太值得。
所以目前这个模式会是比较可行的,但也表示计算手续费这边要小心,避免没有人来垫付,导致使用者要等七天。
另外不同Rollup上收取gas费用的方式不一样,也是Hopprotocol团队在设计估算手续费功能需要注意的地方。
Happycase以外情况的demo?
目前Hopprotocol团队提供的demo只有happycase的demo,没有demo发生没人垫付的情况或是流动性提供者平常在不同Rollup间搬运、平衡资产的过程。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。