跳转到主要内容

什么是结算者?

结算者是一个链下服务,从用户收集签名的交易意图,按池分批,并在 GeodeHook 合约上调用 geodeSettleBatch()。作为回报,结算者从协议中赚取结算费用和 Gas 报销。
结算是无许可的 — 任何人都可以运行结算者。给定结算窗口中第一个提交的有效批次赢得费用。

架构

用户签署意图 (Permit2)          结算者机器人
        │                     ┌─────────────────────┐
        └──── POST /intents ──►  意图队列            │
                              │  (按池分组)           │
                              │       │              │
  索引器 (indexer.geode.ag)   │  每 2 秒             │
        │                     │       │              │
        └──── GET /tokens ───►│  自动发现池           │
              (每 30 秒)      │       ▼              │
                              │  geodeSettleBatch()  │
                              │       │              │
                              │  ┌────┴────┐         │
                              │  ▼         ▼         │
                              │ 费用    Gas 报销      │
                              │ (0.1%)  (来自盈余)    │
                              └─────────────────────┘

快速开始

1

克隆仓库

git clone https://github.com/Geode-vAMM/geode-settler.git
cd geode-settler
2

安装依赖

npm install
结算者只有三个依赖:expressetherscors
3

配置环境

cp .env.example .env
编辑 .env 并设置:
  • SETTLER_PRIVATE_KEY — 您的结算者钱包私钥
  • HOOK_ADDRESS — 已部署的 GeodeHook 合约地址
  • RPC_URL — 您的以太坊 JSON-RPC 端点
4

启动结算者

npm start
结算者将打印配置,启动结算循环,并在端口 3003 上监听意图。

配置

变量必需默认值描述
SETTLER_PRIVATE_KEY结算者钱包的私钥。必须有 ETH 用于 Gas。
HOOK_ADDRESS⚠️已部署的 GeodeHook 地址。没有则禁用自动结算。
RPC_URLhttp://localhost:8545JSON-RPC 端点
SETTLE_INTERVAL_MS2000检查待处理意图的频率(毫秒)
PORT3003HTTP API 端口
永远不要提交您的 .env 文件。 结算者的私钥控制着持有 ETH 的钱包。在生产环境中使用环境变量或密钥管理器。

API 参考

提交意图

POST /intents
Content-Type: application/json

查看待处理意图

GET /intents/:poolId

强制结算

POST /settle/:poolId

列出池

GET /pools

健康检查

GET /health

经济学

结算费用

每个已成交意图输入金额的 0.1%。 在路由前扣除——结算者直接从 PoolManager 取得未路由的费用存款。

Gas 报销

Gas 成本 × 1.5,每批次上限 0.01 ETH。 从池的累积直接交换费用盈余中提取。

源代码