白皮书翻译 -Hop: 通过 Rollups 发送代币
2024-05-10 22:11
Dapp Learning
2024-05-10 22:11
订阅此专栏
收藏此文章

摘要

本文介绍了 Hop 协议,一种快速、免信任的在 Rollup 类型的 Layer 2 ( 以下简称 Rollups) 之间或是与 Layer 1 跨链的协议。Rollups 有巨大的扩展以太坊的潜力,然而每个 Rollup 都创建了一个孤立的环境,隔绝了其上的应用程序与其他 Rollups 或 Layer 1 的联系。Rollups 之间跨链的原生方式是以 Layer1 为媒介,又慢又贵,降低了用户使用 Rollups 带来的低费用的经济优势。针对此痛点,Hop 协议允许资产直接从一个 Rollup 跨到另一个 Rollup,从而节省成本并实现应用程序跨 Rollup 的可组合性。


01

介绍

1.1 Rollups

Rollup 是一种 Layer 2 的解决方案,每个 Rollup 都使用一个与以太坊相似的执行环境处理交易,并且交易费用比以太坊少很多。通过将计算和数据存储转移到链下,同时将每笔交易的少量数据保留在链上,Rollups 大大增加了以太坊的吞吐量 [1]。本文将分析 Rollups 之间以及 Rollups 与 Layer 1 之间的跨链技术。


Rollups 可分为两种类型:Optimistic Rollups 和 ZK-Rollups,它们的主要区别在于其在 Layer 1 上使用的验证方式。


这两种 Rollups 都有一个共同的缺点,将资产或数据跨到 Layer 1 时缓慢且昂贵。在 Rollups 中有一个 退出时间 ( Exit Time ) 的概念,具体定义为信息从 Rollups 跨到 Layer 1 的速度。


Optimistic Rollup 的验证方式称为欺诈证明(Fraud Proofs),任何人可以对 Rollup 提交到 Layer 1 上的状态变更发起挑战,并且挑战会持续一段时间,通常在一天到一周之间。


不同于 Optimistic Rollup,ZK-Rollups 使用有效性证明(Validity Proofs)进行验证。这是一种可以立即确认的方式,但每次确认的成本相对较高。因此 ZK-Rollups 不会频繁的提交证明,通常为一小时到一天才提交一次。


另外,对于这两类方式,从 Layer2 反向跨链到 Layer1 时的费用也不便宜,且速度缓慢。为此,优秀的跨链桥需要支持在 Rollups 之间快速方便地跨链,不让 Layer 1 成为时间或成本的瓶颈。


1.2 桥接 L1 Token 到 Rollups

每个 Rollup 都有一个原生跨链桥(Native Token Bridge),内置在 Rollup 中。一个 Rollup 的原生跨链桥允许用户将 Layer 1 的 Token 存入其中,接收来自 Layer 2 的 Token 的回执。用户也可以将他们在 Layer 2 接收到的 Token 跨回 Layer 1,具体表现为在 Layer 2 上销毁 Token,然后在 Layer 1 接收该 Token。


在某些情况下,一些 Apps 可能为其自有 Token 提供定制桥( Application Specific Bridges )。这些 Apps 一般要么具有比 Rollup 有更灵活的信任模型,要么同时具有 Layer 1 和 Layer 2 组件,要么具有定制侧链(Bespoke Sidechains)[2],它们使用定制桥能更好的适配自身的业务模型。


最后,还有像 Hop 桥这样的通用代币桥(General Token Bridges)。这种通用代币桥通常由第三方提供,并以通用方式桥接 ERC-20 Token。


1.2.1 原链 Token(Canonical Tokens)

跨链桥会为 Layer 1 Token 创建一个新的 Layer 2 Token,或者桥接到已有的 Layer 2 Token。当多个 Layer 2 Token 映射于同一个 Layer 1 Token 时,Apps 会倾向于使用一个固定的 Layer 2 Token,能最大化的与其他 Apps 兼容,其中最广泛使用的便是该 Rollup 的原链 Token(例如,“Canonical ETH”、“Canonical DAI”)。


1.3 之前的工作

跨链桥接资产并不是一个新问题。桥接各种 Layer 1 及其变体的解决方案也可以用在桥接 Rollups 上。


1.3.1 权威证明桥(Proof of Authority Bridges)

权威证明(PoA)桥依赖一组权威节点,这是一种高效的方法,但引入了一个新的信任假设:桥节点始终保持诚实。当多数的桥节点作恶时,它们可以窃取锁定的资金,在目标链上铸造大量的 Token。


1.3.2 哈希时间锁合约(Hash Time Locked Contracts)

哈希时间锁合约(HTLCs),允许用户可以免信任地交换不同资产,即使这些资产位于不同的链上。操作如下:


1. Alice 使用原像(Preimage)生成一个哈希值 ( 比如 Hash_1 )。

2. Alice 向 Bob 生成一个付款,在该付款中会校验输入对应的 Hash 是否和 Hash_1 一致。只有当  两者一致时,Bob 才能收到此付款。

3. Bob 生成相同的付款,付款中的校验和 Alice 付款中的校验保持一致。

4. Alice 使用原像领取 Bob 的付款,此时链上会记录 Alice 使用的原像。

5. Bob 使用链上记录的这个原像来领取 Alice 的付款。


至此,Alice 和 Bob 成功的完成了资产的交换。从中可以看到 HTLCs 便捷的操作。但 HTLCs 同时存在一些严重的安全漏洞,如悲痛攻击(Griefing Attack)[5]、大规模退出漏洞(Mass-Exit Vulnerabilities)[4]和“自由选择”(Free Option)问题 [6] ,导致它无法广泛的应用。


1.3.3 条件跨链(Conditional Transfers)

条件跨链是一种基于 HTLCs 的交换,但不依赖于 Preimage。在上章节的 HTLCs 例子中,如果使用条件跨链,用户完成第 4 步后会自动触发第 5 步。但这意味着条件跨链不适用在不互连的链之间操作,因为不同网络上的操作无法直接触发。


虽然条件跨链有助于减少用户的操作,但将 Token 从一个 Rollup 跨到另一个 Rollup 的交易成本几乎没有减少。所有 Rollup 之间的跨链仍然必须通过 Layer 1,这并没有解决 Layer 1 带来的瓶颈。


02

Hop 协议

Hop 协议提供了一种可扩展的通用代币桥:


1. 创建一个跨网络的桥接 Token,该 Token 可以快速且经济地在 Rollup 间转移或在 Layer 1 上兑换其标的资产。

2. 在每个 Rollup 中使用自动做市商(AMM)交换桥接 Token 及其对应的 Token 。


2.1 Hop 桥接 Token(Hop Bridge Tokens)

Hop 桥接 Token(例如,“Hop ETH”、“Hop DAI”,符号分别为“hETH”、“hDAI”)作为中介资产,是专门用于批量跨链的 Layer 2 Token。例如,如果在 Layer 1 Hop 桥合约中存入了 4 ETH,则可以从一个 Layer 2 Hop 桥合约中铸造 4 Hop ETH。

当一个 Hop 桥接 Token 在源链(Origin Rollup)上被销毁时,会在目标链(Destination Rollup)上铸造一个相同的 Hop 桥接 Token。这个过程即时完成的,是通过 “Bonder”在目标链上提前提供流动性来实现的。


Bonder 的流动性在多笔(Transfer)跨链交易(Transfer Root)通过 Layer 1 成功传递后才会返被还。


2.1.1 Transfer

Hop 转账包括以下信息:


1. 目标链的 chain ID

2. 收款人 - 在目的地接收转账的地址

3. 数量 - 被转移的 Token 数量


Transfer 可以附加额外信息,以便进行功能扩展。例如,它可以指定中继费用,以便中继者代表用户在目的链提取资产。在 Hop 桥接的未来版本中,会在 Transfer 信息中包含 Token 标识符,用以处理多个 Token 的跨链。


2.1.2 Transfer Root

Transfer root 代表以少量数据进行的批量跨链。每个 Transfer root 由以下内容组成:


1. 批量跨链的 Merkle root

2. 表示唯一目的地的数组的 chain ID

3. 发送到每个目标链的金额数组(每个目标链有且只有一个金额)

Transfer root 可以包含数千个跨链请求,但在 Layer 1 上只会记录一个打包后的跨链请求。这种方式缓解了 Layer 1 的瓶颈,允许大量 Transfer 以打包的方式通过 Layer 1 传递到目标链,达到扩容的效果。


然而,Transfer Root 如果走原生跨链桥的话,其过程也非常缓慢,主要原因是由 Rollup 的退出时间导致的。但是如果走 Transfer Bonds,只需支付少量的费用,就可以使跨链立即完成,如下一节所述。


2.1.3 Transfer Bonds

Bonder 通过运行 Rollup 验证节点来验证跨链是否在其源链上被触发。在此之前, Bonder 在目标链上提前提供流动性,以便使跨链请求立即完成。最后,当跨链请求通过原生跨链桥到达目标链时,将归还 Bonder 预支付的流动性资金。在此过程中,Bonder 会收取少量费用。


通过 Bonder 提供的即时流动性或通过跨链根实现的可扩展性,Hop 桥接 Token 能够快速且经济地在 Rollup 间转移。


2.2 自动做市商(AMM)

正常情况下,每个 Hop 桥接 Token 的价值恰好等于一个它对应的 Layer 1 的 Token,它可以随时在 Layer 1 上按照 1:1 进行兑换。


然而,各个 Rollup 上的第三方可能不会直接使用 Hop 桥接 Token。他们可能采用之前所述的由 Rollup 的原生跨链桥或特定应用桥生成的原链 Token。为了桥接 Layer 1 Token 与其对应的 Layer 2 原链 Token,可以用自动做市商(AMM)来兑换每个 Hop 桥接 Token 与其对应的原链 Token(例如,Hop ETH - 原链 L2 ETH)。


AMM 市场提供了一个流动性的定价机制,同时激励套利者根据市场走势再平衡 Rollup 上的流动性。


2.2.1 套利者

套利者是 Hop 协议中的重要参与者,他们从 Layer 1 与 Layer 2 之间的价格差中获利,同时有效地在 Rollups 之间重新平衡流动性。


考虑这样一个场景:用户在这个 Rollup 上有 ETH,他们想立即将其移动到 Layer 1。首先,他们的 ETH 会通过 Rollup 上的 ETH:hETH AMM 被交换成 Hop ETH(hETH)。然后,Hop ETH 在 Rollup 上销毁并兑换为 Layer 1 的 ETH。


这个过程涉及将 ETH 卖给 ETH:hETH 市场,它导致 ETH 对 Hop ETH 有小幅折价。如果这种折价变得足够大(例如,1.005 ETH/hETH),套利者会通过 Hop 跨链桥将 Layer 1 的 ETH 换成 hETH。然后在 Layer 2 上使用 hETH 兑换 ETH。之后,套利者就可以通过原生跨链桥将 ETH 跨回 Layer 1,最终获得套利的利润。


2.2.2 流动性提供者

每个 AMM 都需要流动性提供者向 AMM 的池提供动流动性。作为回报,流动性提供者会从每次交换中获得小额费用(例如,0.3%)。通常,流动性提供者会面临“无常损失”风险,即当 AMM 中的资产价格偏差时就会发生无常损失。但对于 Hop,正常情况下,流动性提供者面临的无常损失风险非常低。此外,AMM 的价格曲线可以为在窄幅交易的资产进行优化[3]。


2.3 Rollup 到 Rollup 的转移

有了 hToken 以及 AMM 市场,用户可以快速轻松地在 Rollup 之间 Bridge。通过 Hop 协议进行的 跨链是高度可扩展的,因为中间 Layer 1 参与其中。


考虑以下场景,Alice 拥有 Rollup A 上的 ETH,并希望得到 Rollup B 上的 ETH:


1. Alice 使用 Rollup A 上的 AMM 将 Rollup A 上的 ETH 换成 hETH。

2. 然后 Alice 使用 Hop 桥将她的 hETH 从 Rollup A 跨到 Rollup B。

3. 通过 Bonder,Alice 就会立即在 Rollup B 上收到 hETH。

4. Alice 现在可以使用 Rollup B 上的 AMM 将她的 hETH 换成 Rollup B 上的 ETH。

为了方便起见,Alice 也可以通过单笔交易来完成跨 Rollup 转账。她用 AMM ,将 Rollup A 上的 ETH 兑换为 hETH,然后发送 hETH 到目标链。跨链指令中附带了额外的指令,Hop 会自动在目标链将 hETH 换成 Rollup B 上的 ETH。


值得注意的是,在这两种情况下,Alice 的跨链都是仅通过 Layer 2 交易完成。在 Layer 1 层面,Hop 桥严格执行批量 Transfer,从而以最少的交互完成数以千计的跨链交易。


03

未来的研究方向

3.1 分散 Bonder 的角色

在其最基础的形式中,Bonder 是一个单一的外部方,负责验证并为跨链提供流动性。然而,依赖单一的 Bonder ,并且期望这个 Bonder 有足够的流动性来满足需求是不理想的。一旦这个 Bonder 不可用,虽然资金不会面临风险,但 Hop 系统跨链的速度将大大减慢。


创建一个更健壮的 Bonder 网络系统面临着很多挑战。例如,针对一笔 Transfer,哪个 Bonder 应该获得 Reward;转帐根(Transfer Root)以何种方式提交才不会导致频繁的失败;或是如何避免 Dos 攻击。


3.2 更广泛的 Layer 2 支持

非 Rollup 的 Layer 2 解决方案也可以与  Hop 协议兼容。支持更广泛的解决方案将提高灵活性,并可以提高系统的效率。未来,Hop 也可能支持与其他 Layer 1 的桥接,但在不引入新的信任假设的情况下实现这一点可能会有困难。


3.3 限制责任

在当前架构中,Hop 桥的安全性取决于所支持的最弱的 Rollup 的安全性。这给 Hop 生态参与者带来了系统性风险。虽然通过 Hop 桥移动 Token 的普通用户只是短暂地暴露于风险中,但 AMMs 的流动性提供者和一些套利者会持续面临这种风险。一种可行方法是通过限制每个 Rollup 在系统中占有的权重,从而降低系统的整体风险。


3.4 启用合约调用

智能合约和外部账户可以通过 Hop 桥发送 Token,但它们不能在目标链上发送数据或调用合约。实现此功能是简单的,但必须仔细考虑具体方法和安全风险。


参考资料:

[1] Vitalik Buterin. An incomplete guide to rollups. https://vitalik.ca/general/2021/01/05/rollup.html, January 2020. 

[2] Compound. Compound cash. https://compound.cash/](https://compound.cash/, December 2020. 

[3] Michael Egorov. Stableswap - efficient mechanism for stablecoin liquidity.

https://www.curve.fi/stableswap-paper.pdf, November 2019. 

[4] Aviv Zohar Jona Harris. Flood & loot: A systemic attack on the lightningnetwork. https://arxiv.org/pdf/2006.08513.pdf, June 2020. 

[5] Cristina Perez-Sola, Alejandro Ranchal-Pedrosa, Jordi Herrera-Joancomart,Guillermo Navarro-Arribas, and Joaquin Garcia-Alfaro. Lockdown: Balanceavailability attack against lightning network channels. https://eprint.iacr.org/2019/1149.pdf, 2019.

[6] Dan Robinson. Htlcs considered harmful. http://diyhpl.us/wiki/transcripts/stanford-blockchain-conference/2019/htlcs-considered-harmful/, January 2019. 

[7] taconator Ryan R. Fox, John M. Jones. bsip-0044. https://github.com/bitshares/bsips/blob/master/bsip-0044.md, August 2018.


END



原文链接:https://hop.exchange/whitepaper.pdf

翻译:kaka

审稿:joly, 0xstan

欢迎加入 Dapp Learning 翻译小组,会有 Bounty 奖励(请私戳小助手微信:DappLearning)


关注我们



微信公众号|Dapp-Learning

推特|@Dapp_Learning

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

Dapp Learning
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开