架构概览
Composer 将用户的意图(例如,“将 USDC 存入 Base 上的 Morpho”)转换为优化的、可执行的链上交易。系统有三个层次:核心组件
1. 链上 VM(执行引擎)
链上 VM 是部署在支持的 EVM 链上的智能合约。它作为通用执行引擎,可以:- 调用任何其他链上协议或协议系列
- 将一个步骤的输出作为下一个步骤的输入传递
- 在步骤之间处理代币授权、转账和余额检查
- 原子执行整个序列(同链)
0xD214A2eB3799076791A4Cde4F0AB184A49dB832d
2. eDSL 和编译器
嵌入式领域特定语言(eDSL)是一个专门构建的语言,用于在 TypeScript 中表达合约交互。当请求 Composer 路由时:- 路由引擎识别需要哪些协议和操作
- eDSL 将这些交互表达为类型化程序
- 编译器将此程序转换为链上 VM 可以执行的字节码
3. 动态调用数据注入
许多 DeFi 操作需要来自前一步骤的数据。例如,存入金库需要知道从前一步骤兑换收到的确切代币数量。Composer 通过动态调用数据注入处理这个问题:- 编译器识别步骤之间的依赖关系
- 在执行时,VM 自动拦截已完成步骤的输出
- 这些输出作为输入注入到后续步骤中
- 这完全在链上发生,在同一笔交易内
交易生命周期
这是 Composer 交易的完整生命周期,从用户请求到链上执行:逐步分解
| 步骤 | 发生什么 | 位置 |
|---|---|---|
| 1. 报价请求 | 开发者请求以金库代币作为 toToken 的报价 | 客户端 → API |
| 2. 路由优化 | LI.FI 的路由引擎在 DEX、跨链和协议中找到最优路径 | API 后端 |
| 3. eDSL 编译 | Composer 编译器为链上 VM 生成字节码 | API 后端 |
| 4. 执行前模拟 | 完整执行路径被模拟以验证它会成功并估计输出 | API 后端 |
| 5. 报价响应 | API 返回 transactionRequest(准备签署的交易)加上估计金额 | API → 客户端 |
| 6. 交易提交 | 用户签署并将交易提交到区块链 | 客户端 → 链 |
| 7. 链上执行 | 链上 VM 执行编译的字节码,原子地执行所有步骤 | 链上 |
| 8. 确认 | 交易被确认;金库代币在用户钱包中 | 链 → 客户端 |
| 9. 状态检查 | 可选地轮询 /status 进行跨链转账 | 客户端 → API |
同链 vs 跨链
Composer 的行为根据源和目标是否在同一条链上而有所不同。同链组合
- 原子执行 — 所有步骤要么都成功,要么都不成功
- 单次 gas 支付 — 一笔交易费用
- 即时完成 — 在一个区块中确认
- 模拟保证 — 如果模拟通过,执行就会成功(除非极端情况如内存池抢跑)
跨链组合
- 两阶段执行 — 源链交易触发跨链,然后目标链操作执行
- 每阶段原子性 — 每个阶段在其链内是原子的,但整体流程是最终一致的
- 跨链延迟 — 总时间取决于使用的跨链桥(秒到分钟)
- 需要状态跟踪 — 使用
/status端点监控跨链进度
Composer 本身在单条链上操作。跨链流程是通过将 LI.FI 的跨链路由与 Composer 在目标链上的链上执行相结合来实现的。从开发者的角度来看这是无缝的 — 无论它是同链还是跨链,您都进行相同的 API 调用。
执行前模拟
Composer 的关键安全功能之一是执行前模拟。在返回报价之前,后端:- 模拟完整执行路径 使用当前链状态的分叉
- 验证所有步骤成功 — 代币兑换、授权、存款
- 计算确切输出金额 — 用户将收到的估计金库代币
- 检测潜在失败 — 流动性不足、不兼容的代币、协议特定问题
Composer 作为 LI.FI 工具
在 LI.FI 架构中,Composer 被分类为工具 — 类似于跨链桥和 DEX 聚合器如何是工具。这意味着:- Composer 路由与跨链桥和兑换路由一起出现在 API 响应中
- 当 Composer 是最优路径时,路由引擎自动选择它
- 与任何 LI.FI 工具一样,集成商可以使用
allowTools/denyTools来包含或排除 Composer 从他们的路由偏好中

