资助申请:程序化订单API
摘要
AI 生成本提案旨在为CoW协议开发一个程序化订单API,以支持可组合订单和闪电贷订单等高级交易策略。该API将提供统一的订单追踪和管理功能,支持前端集成、EOA用户访问及第三方开发者使用。通过构建可扩展的GraphQL索引器基础设施,实现对多种订单类型的全面监控,包括TWAP、止损、永续互换等,从而提升CoW协议的程序化交易体验和开发者生态。
注:摘要由 AI 自动生成,可能与正文存在差异,仅供参考。
提案内容
AI 翻译资助申请:程序化订单 API
资助标题:
程序化订单 API
作者:
@bleu @yvesfracari @ribeirojose @mendesfabio
关于您:
bleu 作为 Web3 技术和用户体验合作伙伴,与公司和 DAO 合作。我们热衷于弥合在区块链和 Web3 领域所见的体验鸿沟。我们已经为 CoW 协议完成了 10 多项资助项目,包括 Hook 去中心化应用、框架无关 SDK、Python SDK 以及各种 Safe 应用。
相关链接:
我们为 CoW 协议完成的工作包括:
- [CoW] 框架无关 SDK:重构了 CoW SDK,以支持多个 EVM 适配器(ethers v5/v6, viem, wagmi),实现了框架无关的集成。
- [CoW] Hook 去中心化应用:开发了一套集成在 CoW Swap 前端的 Hook 去中心化应用,包括流动性池 Hook、领取空投和归属 Hook。
- [CoW] Python SDK:创建了 CoW SDK 的 Python 版本,供开发者查询链上数据、管理订单以及与 CoW 协议的智能合约集成。
- [CoW] AMM 部署器:用于从 Safe 钱包部署新的 CoW AMM 资金池的 Safe 应用。
- [CoW] 止损:用于创建止损订单的 Safe 应用。在此资助期间,我们开发了一个 API 来跟踪可组合 CoW 订单的创建并解码止损订单:https://composable-cow-api.up.railway.app/
资助类别:
核心基础设施与开发者工具
资助描述:
CoW 协议支持多种类型的程序化订单,以实现高级交易策略:
- 可组合 CoW 订单:条件订单,如 TWAP、止损、永续互换、指定时间后生效和高于阈值交易
- 闪电贷订单:通过预部署的辅助合约集成的 AAVE
随着程序化订单通过 CoWShedForComposableCow 和其他机制对 EOA 可用,需要统一的索引基础设施来支持 CoW Swap 前端和生态系统应用。
目前,缺乏统一的基础设施来高效地跟踪和查询所有类型的程序化订单。这带来了一些问题:
- 订单簿之前缺乏订单可见性:程序化订单只有在实际下达且可执行时,才会在 CoW 协议订单簿中可见。在此之前,没有集中化的方式来跟踪待处理订单、监控其状态或向用户展示。
- 难以将 CoWShedForComposableCow 合约与 EOA 映射:每个用户通过自己的 CoWShed 代理合约与可组合 CoW 交互,这使得建立代理地址与实际 EOA 所有者之间的关系变得困难。
- 闪电贷订单所有权跟踪:AAVE 集成依赖于一种模式,即 EOA 下达一个订单,其所有者是一个未部署的辅助合约,该合约随后在预部署中部署。这实现了强大的功能,但造成了糟糕的用户体验,因为更难跟踪订单的原始所有者和显示交易历史。
我们提议构建一个程序化订单 API,提供对所有程序化订单数据的可查询访问。该 API 将使用 Ponder 作为索引框架构建,并将:
- 索引在支持的链上创建的所有可组合 CoW 订单,并进行实时监控
- 解码所有可组合 CoW 订单类型:
- TWAP(时间加权平均价格)订单
- 止损订单
- 永续互换订单
- 指定时间后生效订单
- 高于阈值交易订单
- 通过将已部署的辅助合约与其合法的 EOA 所有者关联来跟踪闪电贷订单(AAVE 集成)
- 通过与 CoW Shed 集成来解析所有权,将合约地址映射到 EOA 所有者
- 通过 GraphQL 端点提供 API 访问,具备全面的查询能力
闪电贷订单索引方法:
对于闪电贷订单(AAVE 集成),我们需要在已部署的辅助合约和原始 EOA 所有者之间建立链接。目前,没有事件链接这两个地址,因此我们建议添加此事件以提高索引器效率。然而,我们针对已执行的订单提出了两种变通方法:
解决方案 1:工厂事件监控
- 监控
AaveV3AdapterFactory.deployAndTransferFlashLoan调用,其中接收者是辅助合约,所有者是创建订单的 EOA - 挑战:需要调用跟踪,但并非所有链都支持,并且依赖于昂贵的 RPC 调用
解决方案 2:交易事件模式检测
- 监听交易事件,并通过调用特定的 ABI 方法来验证所有者是否遵循辅助合约模式
- 挑战:需要大量 RPC 调用,但在所有链上都有效
资助目标与影响:
此项资助将为 CoW 协议的程序化订单生态系统提供关键基础设施,通过实现以下功能:
- 支持 CoW Swap 前端集成:使前端能够向用户展示所有程序化订单(可组合 CoW 订单和闪电贷订单),提供对其活跃、已完成和已取消订单的完整可见性。
- EOA 支持:随着程序化订单通过 CoWShedForComposableCow 和辅助合约向普通钱包开放,用户将需要一个统一的方式来管理和监控他们的订单
- 统一订单追踪:支持所有程序化订单类型:
- 可组合 CoW 订单(TWAP、止损、永续互换、定时生效、阈值以上交易)
- 闪电贷订单(AAVE 集成、通用包装器)
- 第三方集成:开发者可以使用相同的 API 来调试和追踪他们自己的程序化订单
- 可扩展的基础设施:可扩展的架构,随时准备支持新开发的程序化订单类型
GraphQL 模式草案:
索引器将通过 GraphQL API 公开以下模式:https://dbdiagram.io/d/[DRAFT]-CoW-Programmatic-Orders-Indexer-6978e864bd82f5fce2c96408
模式设计原理:
- 交易:追踪订单创建和取消的所有交易详情
- 用户:可以是 EOA 或代理合约(AAVE 闪电贷辅助合约或 CoW Sheds)。如果是代理,则引用其真实所有者。
- ComposableCoW:可组合 CoW 订单的核心实体,包含所有权信息。
- 订单类型实体:每种可组合 CoW 订单类型都有其特定参数的专用字段
- 代币:标准化实体 ,以避免数据重复并支持聚合统计
- 订单:链接到 CoW 协议订单簿上的订单,并关联创建该订单的实体。对于在创建可组合 CoW 时未定义 UID 的订单(如 PerpetualSwap),这会更复杂,但可以通过与
getTradableOrderWithSignature进行比较来实现。这将需要历史地和实时地汇集订单簿数据,由于这是链下数据,需要对索引框架进行调整。此外,为了最小化实时索引的延迟,我们需要对订单匹配算法进行复杂的优化。
里程碑:
| 里程碑 | 时长 | 付款 |
|---|---|---|
| 可组合 CoW 订单追踪 | 2 周 | 6k xDAI |
| 闪电贷订单追踪 & CoWShed 所有权映射 | 1.5 周 | 4.5k xDAI |
| 订单簿集成 | 3 周 | 9k xDAI |
| 审查与文档 | 1.5 周 | 4.5k xDAI |
可组合 CoW 订单追踪与解码(2 周)
- 使用 PostgreSQL 数据库设置 Ponder 索引器
- 监听可组合 CoW 订单创建和取消事件
- 历史数据回填和实时监控
- 为所有五种订单类型实现解码器(TWAP、止损、永续互换、定时生效、阈值以上交易)
- 将缺失的条件订单(除 TWAP 外的所有类型)集成到 cow-sdk。
闪电贷和 CoWShed 订单追踪(AAVE)(1.5 周)
- 闪电贷订单到 EOA 所有者的映射(AAVE 集成)
- 实现工厂事件监控
AaveV3AdapterFactory.deployAndTransferFlashLoan - 实现交易事件作为后备方案
- 支持合约事件增强(当可用时)
- 实现工厂事件监控
- CoWShedForComposableCow 代理到 EOA 所有者的映射
- 追踪 CoWShed 代理部署
- 将代理合约链接到其控制的 EOA
订单簿集成(3 周)
- 汇集历史和实时的订单簿数据。
- 订单簿订单与生成器的匹配。
- 将订单链接到其原始的程序化订单生成器
- 追踪可组合 CoW 订单的执行状态
审查与文档(1.5 周)
- CoW 团队审查和错误修复
- 完整的 API 文档(GraphQL 模式、示例)
- 前端和第三方开发者的集成指南
- 关于如何运行和部署应用程序的 README 文档
资金请求:
我们建议在每个里程碑获得批准后支付相应款项。
此外,我们请求额外 40k COW 代币,分 12 个月线性释放,以覆盖同期的持续维护工作。
预算明细:
我们建议采用与我们之前赠款类似的支付结构:
- 每个里程碑完成后支付 xDAI
- COW 代币分 12 个月线性释放,用于持续维护和支持
- RPC 成本应由 CoW 协议通过提供私有 RPC 连接链接来覆盖。理想情况下,应为每条链提供一个 RPC,但 仅在一条链上开发也是可行的。
Gnosis Chain 地址(用于接收赠款):
0x554866e3654E8485928334e7F91B5AfC37D18e04
其他信息:
- 由于快照 10k 字符的限制,其他信息已省略。但可以在此处链接的论坛帖子中查看。
条款与条件:
通过提交此赠款申请,我确认并同意受 CoW DAO 参与协议和 CoW 赠款条款与条件的约束。