Rollup 和 L2 扩展了以太坊,但带来了碎片化。随着更多 Rollup 和应用链上线,这种碎片化将会增加。ERC-7683 通过提供统一标准简化了跨链交易。这使得开发人员更容易构建,用户更容易在不同链之间进行交易。
随着多个区块链(Rollup 和应用链)的激增,生态系统变得更加碎片化。区块链互操作性对于在这些不同的区块链网络之间进行通信、资产转移和连接至关重要。
由于流动性碎片化和互操作性问题,在不同区块链之间交易资产可能特别具有挑战性。由 Uniswap Labs 和 Across 提出的 ERC-7683 标准(草案)用于 跨链意图,这是一个跨链交易执行系统的接口。该标准旨在通过提供一个统一的框架来简化跨链操作。
以下是跨链意图标准的详细概述,以及 UniswapX 如何在交换中实现跨链能力的分析。
一个尊重用户“意图”的系统,而不必担心执行过程的复杂性。跨链意图 是指用户希望在一个区块链上执行操作,从而在另一个区块链上产生结果。
假设 Alice 想用她在以太坊上的 USDC 交换 L2 上的 WETH。传统上,Alice 需要经过多个步骤,包括使用桥接和不同的钱包,这使得过程复杂且耗时。
使用 ERC-7683,Alice 不需要采取多个步骤或担心如何实现。基于意图的系统只需让用户指定链的最终状态——填充者网络(network of filler)竞争以尽可能快速和廉价地实现用户的结果。
许多基于意图的系统依赖于自己的填充者网络,导致单点故障和中心化风险。随着基于意图的系统的增长,为每个协议管理单独的中继器和填充者变得具有挑战性。
ERC-7683 标准通过标准化跨链意图解决了这些问题,启用通用填充者网络以实现更高效的交易,并使不同系统更容易协同工作。
A . 交换者 Swapper(用户): 签署定义订单的链下消息的用户,使用 CrossChainOrder
结构体,其中包含跨链交易订单的所有必要信息。
struct CrossChainOrder {
address settlementContract; // 结算合约地址
address swapper; // 发起交换的用户
uint256 nonce; // 防止重复订单的唯一编号
uint32 originChainId; // 源区块链的 ID
uint32 initiateDeadline; // 订单必须开始的时间
uint32 fillDeadline; // 订单必须完成的时间
bytes orderData; // 额外数据,如代币、金额、目标链
}
此外,ResolvedCrossChainOrder
结构体提供了有关订单的详细信息,使计算完成订单所需的输入和输出变得更容易。该结构体确保双方(交换者和填充者)确切知道交换哪些代币、金额和涉及的区块链。
struct ResolvedCrossChainOrder {
address settlementContract;
address swapper;
uint256 nonce;
uint32 originChainId;
uint32 initiateDeadline;
uint32 fillDeadline;
Input[] swapperInputs; // 从交换者处获取的代币
Output[] swapperOutputs; // 给交换者的代币
Output[] fillerOutputs; // 给填充者的代币
}
struct Input {
address token; // ERC20 代币地址
uint256 amount; // 代币数量
}
struct Output {
address token; // ERC20 代币地址(如果地址为 0 则为原生代币)
uint256 amount; // 代币数量
address recipient; // 接收输出的地址
uint32 chainId; // 目标区块链 ID
}
B. 填充者(完成交易的实体): 填充者是负责在源链上发起交易、在目标链上执行订单并结算跨链订单的实体或智能合约。
填充者因其提供的服务而获得奖励。它们具有灵活的设计,允许定制行为,如价格解析机制、履行约束和结算程序。
C. 结算合约:ISettlementContract
接口定义了结算合约的基本结构,如 initiate
和 resolve
函数。
interface ISettlementContract {
function initiate(CrossChainOrder order, bytes signature, bytes fillerData) external;
function resolve(CrossChainOrder order, bytes fillerData) external view returns (ResolvedCrossChainOrder);
}
通过扩展 ISettlementContract
,你可以为任何协议实现 ERC-7638 标准的跨链订单。
让我们通过一个 示例 实现来分析 ERC-7683 如何与 Permit2 和 Across 一起工作。它定义了一个处理 Across 网络上跨链订单的结算合约,并使用 Permit2 进行代币转移。其工作原理如下:
Alice 在源链上创建一个包含订单基本参数的跨链订单。她使用 Permit2 签署订单,这是一种允许安全代币转移的机制。
结算合约在源链上接收 Alice 签署的订单。它检查订单详情,验证签名,并从 Alice 的账户中提取指定数量的 ETH。
在目标链上,填充者解析订单并准备 USDC 以完成订单。
填充者调用 SettlementContract 中的 fillCrossChainOrder
以完成已发起的订单并将 USDC 转移给 Alice。
互操作性: 它允许各种网络之间的无缝交互,减少复杂性,从而在任何基础设施中实现跨链能力。
更好的用户体验: 简化用户流程,使跨链交易更加无缝。
降低进入门槛和成本: 更容易让新的填充者进入市场,扩展网络。减少复杂性和中心化降低了交易成本。
更广泛的访问: 应用程序受益于更广泛的填充者网络,提高整体效率。
2023 年 7 月,Uniswap 推出了 UniswapX 跨链功能,这是加密资产交易的未来。跨链交易 是指在不同区块链之间交易代币或资产。将 ERC-7683 集成到 Uniswap 的生态系统中,可以扩展其在以太坊及其 L2 之外的能力,使用户能够进行跨链交易。
让我们快速了解 UniswapX 的运作 以及 ERC-7683 的实现。
UniswapX 是一个基于拍卖的协议,用于在 AMM 和其他链上及链下流动性来源中找到用户交易的最佳价格。它采用基于意图的方法,引入了新的实体“填充者”,这些填充者由做市商和 MEV 搜索者组成,他们通过荷兰拍卖竞价来找到最佳价格。
荷兰拍卖竞价? 荷兰拍卖从一个较高的要价开始,逐渐降低,直到有投标者接受为止。这一概念是 UniswapX 填充者竞争为你提供最佳价格的方式。这些填充者搜索他们的流动性来源。提供最佳价格的填充者获胜。如果填充者无法完成交易,价格将下降,直到下一个填充者可以完成交易。
UniswapX 将是第一个使用跨链意图标准(ERC-7683)的应用程序。让我们看看 UniswapX 实现 ERC7683 进行跨链交易的 Alice 示例:
Alice 在 Uniswap 上创建一个 CrossChainOrder
,指定她打算在以太坊上用 ETH 交换另一条链上的 USDC,比如说,1 ETH 换 1000 USDC。
该意图随后被发送到 UniswapX 填充者网络,填充者网络检查他们的流动性来源(Uniswap Protocol、Sushiswap 等)以获取价格。
例如,填充者 A 提供 999 USDC 换 1 WETH,填充者 B 提供 998 USDC,Uniswap v3 提供 996 USDC。填充者 A 赢得竞标。
Alice 接受填充者 A,因为它提供了最佳价格。然后调用 ISettlementContract
上的 initiate
函数在以太坊上开始交易。
填充者然后在目标链上执行交易,交换代币。
填充者调用结算合约上的 resolve
函数来完成交易。如果填充者 A 无法完成交易,拍卖将以下一个最佳价格继续。
Alice 和填充者根据 ResolvedCrossChainOrder
详情接收各自的代币。
Rollup 和 L2 扩展了以太坊,但带来了碎片化。随着更多 Rollup 和应用链上线,这种碎片化将会增加。ERC-7683 通过提供统一标准简化了跨链交易。这使得开发人员更容易构建,用户更容易在不同链之间进行交易。像 UniswapX 这样的平台现在可以提供无缝的跨链交易,改善流动性,降低成本,并创建更高效的生态系统。
BuildBear 是一个专为 DApp 开发和测试量身定制的平台。开发人员可以在各种区块链网络上构建个性化的私有测试网沙盒。无限铸造原生和 ERC20 代币的自由,加上 BuildBear 上快速的交易时间(不到 3 秒!),大大增强了 DApp 开发生命周期。该平台配备了用于实时测试和调试的工具和插件,确保开发人员可以前所未有地轻松跟踪复杂的区块链交易。
Connect with us on Twitter | LinkedIn | Telegram | GitHub
Author: Sana
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!