☰
jev-trader:每 300ms 让 AI 在 Monad 链上下真实交易订单,这是什么?一文读懂
2026/10/2 3:48:00 网站建设 项目流程

jev-trader:每 300ms 让 AI 在 Monad 链上下真实交易订单,这是什么?一文读懂

【免费下载链接】jev-traderOne AI trade decision every Monad block. Jev on Kuru MON-USDC.项目地址: https://gitcode.com/gh_mirrors/je/jev-trader

🤖jev-trader是一个运行在 Monad 链上的AI 交易机器人:它盯住 Kuru 交易所的 MON-USDC 订单簿,由一个名为 Jev 的 TypeSafe AI 模型在每个区块(约 300 毫秒)只回答一个问题——买还是卖,然后在订单簿上挂出一笔真实的 post-only 限价单。它不是模拟盘,而是真金白银的链上交易,并配有一个实时刷新的仪表盘网页,让你亲眼看到 AI 每 300ms 做一次决策、上一笔订单的全过程。

一句话概括这个项目:"This AI makes a real trade decision every 300 ms on Monad."而且 AI 推理一小时的成本(约 $0.20)甚至比链上 gas 还便宜。


🧠 jev-trader 是什么:AI 决策 + 链上执行的极简组合

传统交易机器人通常由"策略规则 + 行情数据"驱动,而 jev-trader 把决策环节直接交给 AI 模型。整个系统由三部分构成:

组件作用对应文件
决策层(AI 模型)每个区块读订单簿,输出 buy / sell 及概率src/model.ts
执行层(链上交易)编码并发送 Kuru 的batchUpdate限价单src/market.ts
展示层(仪表盘)SSE 流式推送每区块事件,前端实时渲染src/server.ts、web/src/app/page.tsx

它的盈利逻辑很朴素:作为maker(挂单方)而非 taker,在最优买价/卖价内侧一个 tick 处挂单,等别人的吃单砸进来成交——赚的是价差(spread),而不是付出价差。

产品理念定义在 SPEC.md 里,核心原则是:单屏、无登录、无设置,"画面的运动本身就是内容",每 300ms 必须有东西在变化。


⚡ 核心机制:每 300ms 的"决策-下单"循环

这是整个项目最精彩的部分,主循环实现在 src/trader.ts 的onBlock方法中。每个区块到来时,它做四件事:

  1. 读订单簿:一次eth_call读取 Kuru 的 MON-USDC 订单簿(约 18ms);
  2. 问 AI:把盘口、价差、近 30 秒的成交与深度打包成一份紧凑的"交易状态",问模型一个选择题——"再过约 100 个区块,MON 价格会更高还是更低?",模型在约 100ms 内返回带概率的 buy / sell;
  3. 上一笔订单:在模型指出的那一边,挂出 200 MON 的 post-only 限价单(最优价内侧 1 个 tick),同时取消上一区块留下的旧单,一笔batchUpdate交易搞定;
  4. 记账:更新仓位、已实现/未实现盈亏、gas 与 AI 花费,并把整个区块事件推给仪表盘。

📌 如果上一笔订单还没处理完,新区块就被标记为late(迟到),本块只 hold 不下单——保证任意时刻只有一个请求在飞,绝不追赶过期区块。


🏎️ 为什么能在 300ms 里跑完?热路径上只有 2 次 RPC

这是理解项目工程含金量的关键。为了把"决策 + 下单"塞进一个区块,热循环恰好只做两次 RPC 往返(详见 README.md 的 "The 300 ms budget" 章节):

  • ✅ 一次eth_call:读订单簿(src/book.ts,手工解码getL2Book返回数据,比 SDK 少一次网络往返);
  • ✅ 一次eth_sendRawTransaction:发送签名好的交易,RPC 收到哈希即返回。

而被刻意排除在热路径之外的:

  • ❌eth_estimateGas——Monad 按 gas limit 收费,所以 limit 在启动时估算一次后硬编码;
  • ❌ gas 价格查询——使用静态 type-2 费用(400 gwei 上限 + 2 gwei 优先级);
  • ❌ 同步等待回执——回执、费用刷新、保证金检查都在后续区块的空闲时间里异步完成(见 src/market.ts 的pollPending与refresh)。

实测数据(dry run + mock 模型):订单簿读取 p50 约 18ms,整个循环 p50 约 100ms。区块来源由 src/chain.ts 提供:WebSocketnewHeads为主、150ms 轮询兜底,突发区块会合并成"只处理最新一个"。


📋 项目结构一览:每个文件各管一件事

后端只有 7 个核心文件,职责清晰(src/ 目录):

文件一句话说明
src/config.ts全部环境变量配置:RPC 地址、市场地址、gas、仓位上限、模型选择
src/chain.ts区块推送源(WebSocket + 轮询兜底)、原始 RPC 封装
src/book.ts最小往返的订单簿读取器,手解 ABI 数据
src/market.tsKuru 市场操作:读簿、手编码batchUpdate、保证金、异步确认
src/model.tsModel接口 +JevModel(真 AI)/MockModel(动量启发式替身)
src/trader.ts主循环:单请求在飞、迟到即 hold、仓位与盈亏记账
src/server.tsBun 服务器:快照/、历史/history、SSE 流/events

前端是一个 Next.js 单页应用(web/src/),组件与后端事件一一对应:决策面板 DecisionPanel、价格曲线 FlowChart、交易流水 Feed、六格计数器 StatsRow。数据经 useFeed.ts 从 SSE 流入,web/README.md 有更细的前端说明。


🚀 本地跑起来:3 条命令 + 免费 dry-run 模式

配置入口在 src/config.ts,全部走环境变量。最棒的是:不配私钥就是 dry-run——真实的订单簿、真实的 AI 决策,只是成交被模拟(订单挂一个区块,被真实盘口穿越时即视为成交)。

快速启动步骤:

  1. 复制环境模板:cp .env.example .env
  2. 安装依赖:bun install
  3. 启动:bun run start

几个关键开关(默认值见 src/config.ts):

  • MODEL=jev+TYPESAFE_AI_API_KEY:启用真正的 Jev AI(默认mock是动量+盘口失衡+噪声的确定性替身,src/model.ts);
  • TRADE_SIZE_MON:单笔数量,默认 200(Kuru 该市场的最低单量);
  • MAX_POSITION_MON:仓位上限,触顶后订单自动翻到减仓一侧(capped: true,概率仍显示模型原意);
  • DRY_RUN/ 缺少PRIVATE_KEY:进入模拟成交模式。

仓库还附了验证脚本:scripts/bench-read.ts对比自研订单簿读取器与 SDK 的精度和延迟,scripts/dry-encode.ts离线签名一笔买/卖并断言 calldata 与 SDK 完全一致——"手编码"不是猜的,是逐字节对齐过的。


📊 仪表盘:每 300ms 都在动的单屏直播间

前端页面严格遵循 SPEC.md 的五段式布局,一切为了"录一段 20 秒的屏摄就能让人看懂":

  • 头部:标题 + 跳动红点 + 每 300ms 递增的区块号 + 钱包地址 + 模型徽章(真 Jev 显示jev-latest,替身模型挂琥珀色stand-in徽章);
  • 价格主图:MON/USDC 中间价滚动窗口,每个成交打一个绿/红三角标记,几乎每个区块都有;
  • 决策面板(招牌元素):买/卖概率双向条、本块决策延迟(如 "94 ms")、底部 60 格 tick 条(绿买红卖、琥珀色迟到);
  • 计数器行:区块数、决策数、成交数、AI 花费与 gas 花费并排放置——"AI 比 gas 还便宜"这个卖点直接可视化,无需注解;
  • 成交流水:最近 12 笔成交,含区块、方向、数量、价格、延迟与交易哈希。

数据经 src/server.ts 的 SSE 端点/events推送:连接时先发snapshot,之后每区块一条block事件、回执落地时quote事件、成交时fill事件。项目还有一个已部署的公开 dry-run 实例可玩(地址见 README.md),打开就能看到 mock 模型每 300ms 下单的真实节奏。


🎯 总结:它想证明什么?

jev-trader 不是要给你一套能抄的策略(SPEC.md 明确写着"模型并非以盈利为目标"、无回测、无策略讲解)。它想证明的是:

  1. AI 决策可以快:TypeSafe 模型不产文本、直接返回带概率的结构化决策,100ms 出答案,快过一个区块周期;
  2. 成本可以低到反直觉:AI 推理一小时 ≈ $0.20,同期 gas ≈ $2–5,"The AI costs less than the gas";
  3. 一切真实可验证:钱包地址、交易哈希、区块高度全部上链,盈亏红绿照晒,亏损和盈利一样直白。

一个 300ms 节奏的"AI 心跳",配上克制的深色交易台美学——这就是 jev-trader 的核心体验:让 AI 的每个决策都以链上订单的形式,肉眼可见地发生。

【免费下载链接】jev-traderOne AI trade decision every Monad block. Jev on Kuru MON-USDC.项目地址: https://gitcode.com/gh_mirrors/je/jev-trader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询