Hop Exchange 设计了一个媒介通证:hToken,例如 hWETH,hDAI,hUSDC,并在各个支持的 L2 上部署了 hToken:Token 的 AMM 兑换池。
Hop Exchange 中见证人角色被称为 Bonder ,中文可译为连接者。Bonder 是实现快速提款和快速交易的流动性垫付者,也是在 Layer 之间传递消息的中间人。Bonder 要在 L1 上抵押原生 Token,以获得在 L2 上铸造对应的 hToken 的额度。(此处注意,只是获得额度,并不是 L1 抵押原生 Token ,立即在 L2 生成 hToken )。
下文我们将在 USDC 为例
依照当前系统设置,设 AMM 流动池手续费 0.3%
依照当前系统设置,设 Bonder 提供的垫付服务手续费为 0.2%
假设 AMM 流动池是绝对平衡的,1 USDC 始终兑换 1 hUSDC
暂且忽略批量交易机制
的情况下,阐述 Hop Exchange 的系统设计。
▸ L2→L1
当 Alice 需要从 L2 快速提款 1000 USDC 到 L1 时,需要经历以下过程:
Step1:Alice 通过 L2 上的 AMM 兑换池,将 1000 USDC 兑换为 997 个 hUSDC;
Step2:Alice 通过 L2 的 HopBridgeContract (下文简称 HBC),在 L2 上销毁 997 hUSDC,设该交易为 X;
Step3:Bonder 监听到交易 X,在 L1 上从自己的抵押金里垫付 995 USDC 给 Alice ,Alice 在 L1 上拿到 995 USDC,对于 Alice 而言,交易已完成;
Step4:交易 X 被提交到 L1,通过欺诈证明或零知识证明,被 L1 验证;
Step5:L1 的 HBC 获取到交易 X 已被完成的信息,向 Bonder 归还 997 USDC。
▸ L2⇄L2
当 Alice 需要将 L2-1 上的 1000 USDC ,转移到 L2-2 上时,需要经过以下过程:
Step1:Alice 使用 L2-1 上的 AMM 兑换池,将 1000 USDC 兑换成 997 hUSDC;
Step2:Alice 调用 L2-1 上的 HBC,销毁 997 hUSDC,设该交易为 X;
Step3:Bonder 监听到交易 X,使用自己的 hUSDC 铸造额度,调用 L2-2 上的 HBC,为 Alice 铸造 995 hUSDC,Alice 将 995hUSDC,在 AMM 池中兑换为 992 USDC,此时,对 Alice 而言,交易已完成;
Step4:交易 X 被传回 L1 ,经过欺诈证明或零知识证明,被 L1 验证;
Step5:Bonder 监听到被验证的交易 X,同步给 L2-2 上的节点;(为了加快速度,Hop Exchange 建议 Bonder 自己运行 L2 节点)。
Step6:L2-2 节点验证后,L2-2 上的 HBC 为 Bonder 铸造 997 hUSDC。
批量处理机制
如果每一笔兑换的流动性归还步骤,都需要走一遍 L1 的话,会耗费很多 Gas,所以 Hop Exchange 实际上是批量处理流动性归还的。系统会收集一段时间内的垫付,再把流动性归还的需求打包为一个 Transfer Root 处理,代价是 Bonder 的回款周期会延长一些。
(责任编辑:admin) |