在去中心化交易所(DEX)领域,限价单功能一直是用户关注的重点。1inch网络通过其限价单协议(Limit Order Protocol, LOP)及在此基础上构建的Fusion与Fusion+模式,为用户提供了丰富且灵活的交易选择。本文将深入探讨这些协议的核心机制与实现原理。
限价单协议的核心机制
1inch限价单协议的核心仓库位于GitHub,其核心功能集中在OrderMixin.sol合约中。该协议最重要的特性是订单验证机制。
订单创建与验证
用户(maker)创建订单时,可以设置多种条件:
- 订单过期时间
- 资产接收地址(可不同于maker地址)
- 指定特定taker地址(用于私有订单)
- 选择代币授权的批准方式(approve、permit、permit2)
- 允许或禁止部分成交和多次成交
- 添加交换前后的ETH/WETH包装/解包操作
- 定义订单执行前必须满足的条件(如止损单、止盈单)
- 指定订单成交前后与maker代码的任意交互
- 设置订单的"nonce或epoch",允许按批次大量取消订单
订单数据结构
协议的主要实体是Order结构体。订单标识符(bytes32 orderHash)通过哈希其序列化的内存表示形式确定性生成。关键字段包括taker/maker资产和数量,以及用于维护额外限价单数据完整性的特殊salt参数。
订单的附加条件编码在MakerTraits结构中,而所有这些功能的额外数据则存储在订单的extension中——这是一个与订单伴随的独立数据包,通过salt参数与相应订单进行密码学连接。
订单成交过程
协议提供了四种订单结算函数,它们操作相似但在传递的链下签名和额外参数上有所不同:
fillOrder()和fillOrderArgs()检查用户设置的链下签名fillContractOrder()和fillContractOrderArgs()检查智能合约根据EIP-1271制作的签名
这些函数最终都会调用主要的_fill()函数,执行以下关键步骤:
- 扩展数据验证:检查扩展内容是否哈希到订单的salt参数,防止taker修改扩展参数
- 发送者和过期参数检查:验证订单发送者和过期相关参数
- 谓词检查:执行maker定义的外部调用,确定订单是否允许被执行
- 数量处理:根据taker选择的路径(精确制作量或精确获取量)计算目标数量
- 无效状态检查:使用BitInvalidator检查订单无效状态
- 预交互处理:如果MakerTraits中设置了预交互,则执行相关调用
- 资产转移:处理从maker到taker的资产转移,包括必要的WETH包装/解包操作
- taker交互:允许taker在收到资产后添加任何操作
- 资产反向转移:处理从taker到maker(或maker指定的接收者)的资产转移
- 后交互处理:订单成交后执行的后交互操作
Fusion协议:荷兰拍卖机制
在了解限价单协议的基础上,1inch进一步开发了Fusion协议,为LOP提供特殊订单类型,允许taker参与荷兰拍卖(持续降价拍卖,第一个出价者获得成交)。
荷兰拍卖的实现
荷兰拍卖是DeFi中非常有用的原语,它需要最少的交互,且不需要多个参与者多次出价。使用荷兰拍卖可以让用户快速获得响应,并使出价者无需多次与协议交互即可竞争。
Fusion限价单创建功能可在GitHub仓库中找到,其中关键的auctionDetails字段包含荷兰拍卖参数,编码了价格随时间变化的函数。在Fusion协议中,不仅可以设置价格下降的"速度",还可以用多个点编码这个函数,使其成为分段线性函数(当然有下限)。
燃气相关参数
拍卖参数的另一重要部分是燃气相关参数,包括订单开始时的燃气成本和燃气估算,用于覆盖订单填充者的燃气成本。
Fusion+:跨链交换解决方案
Fusion协议和荷兰拍卖的应用开启了另一个1inch协议扩展——由协议解析器执行的跨链交换。
原子交换机制
Fusion+背后的关键算法是原子交换,这是一种基于"哈希锁"的知名协议,用于在两个网络之间交换资产,通过提供哈希的原像来解锁资产。在任何区块链上都可以实现原子交换,包括比特币和其他基于UTXO的区块链。
原子交换是一种无需信任且安全的算法,只需要两方而不需要相互信任,似乎是DeFi的理想解决方案。然而,基于原子交换的项目并未获得普及,因为基于哈希锁的交互需要在交换双方至少进行两笔交易("提交"和"揭示"),在交换过程中存储秘密值,并包含时间窗口以确保交换安全。
Fusion+的工作流程
1inch的限价单协议允许实现时间和哈希锁,并具有额外的中继服务和交换解析器。这些元素结合后,能够构建一个用户麻烦最少的基于原子交换的协议。
跨链交换使用Fusion协议的订单进行,但流程比Fusion协议更复杂,因为跨链交换要求解析器执行"预交换"操作:在目标网络中放置"哈希锁定"的资金。通过Fusion订单的后交互在源网络中执行相同的"哈希锁定"放置。
常见问题
1. 什么是1inch限价单协议?
1inch限价单协议是一个去中心化的交易协议,允许用户创建带有各种条件的限价订单。它提供了灵活的订单设置选项,包括过期时间、部分成交控制、前置和后置交互逻辑等,为去中心化交易提供了丰富的功能集。
2. Fusion模式如何改善交易体验?
Fusion模式通过引入荷兰拍卖机制,使taker能够参与价格竞争,从而为maker提供更好的成交价格。这种机制减少了必要的交互次数,提高了交易效率,同时通过燃气成本补偿机制确保订单能够被及时填充。
3. Fusion+如何实现跨链交换?
Fusion+基于原子交换原理,利用哈希锁和时间锁技术实现跨链资产交换。通过在中继服务的协调下,确保双方资产在不同区块链上的安全转移,实现了真正去中心化的跨链交易解决方案。
4. 限价单协议支持哪些自定义条件?
该协议支持广泛的自定义条件,包括价格条件、时间条件、数量条件以及通过谓词检查实现的任意复杂条件。用户还可以定义订单执行前后的自定义交互逻辑,为实现复杂交易策略提供了极大灵活性。
5. 如何确保跨链交换的安全性?
Fusion+通过原子交换协议确保安全性,该协议基于哈希锁和时间锁技术,无需信任中间方。即使过程中断,也不会导致资金损失,最多只是暂时锁定资产,用户可以通过恢复程序取回资金。
6. 普通用户如何利用这些协议?
普通用户可以通过1inch官方界面或其他集成这些协议的去中心化应用使用这些功能。对于开发者来说,1inch提供了完善的SDK和文档,便于将限价单、Fusion模式和跨链交换功能集成到自己的应用中。
通过1inch限价单协议、Fusion和Fusion+的组合,去中心化交易体验得到了显著提升。从基本的限价单功能到复杂的跨链交换,这些协议为DeFi生态系统提供了强大而灵活的基础设施,为用户和开发者创造了更多可能性。随着技术的不断发展,这些协议有望进一步推动去中心化金融的普及和创新。