jev-trader 部署完整清单:Bun + Docker + Railway 一键上线你的 AI 链上交易机器人
【免费下载链接】jev-traderOne AI trade decision every Monad block. Jev on Kuru MON-USDC.项目地址: https://gitcode.com/gh_mirrors/je/jev-trader
jev-trader是一个部署极简的 AI 链上交易机器人:它在 Monad 公链上运行,每 300 毫秒区块由 AI 模型 Jev 做出一次「买 / 卖」决策,并在 Kuru 交易所的 MON-USDC 盘口挂出一张真实的 post-only 限价单。本清单带你用Bun + Docker + Railway三条路径之一,把它从git clone到公网可访问的仪表盘,全程不超过 10 分钟。🚀
📦 项目能做什么(30 秒了解)
- 🤖 每区块一次决策:AI 判断未来约 30 秒内价格方向,回答买或卖
- 📈 每区块挂单:在买/卖价内侧 1 个 tick 挂 post-only 限价单,赚点差而非付点差
- 🖥️ 自带监控页:内置
Bun.serve服务,提供快照、历史 1000 条事件、SSE 实时流三个接口 - 🔒 零密钥也能跑:不配
PRIVATE_KEY自动进入dry-run(真实盘口 + 真实决策 + 模拟成交)
核心代码只有 8 个源文件,入口是 src/index.ts,配置集中在 src/config.ts,环境模板见 .env.example。
✅ 部署前检查清单
| # | 检查项 | 说明 |
|---|---|---|
| 1 | 安装 Bun | 运行时,自动读取.env,无需 dotenv |
| 2 | 克隆仓库 | git clone https://gitcode.com/gh_mirrors/je/jev-trader |
| 3 | 准备.env | 执行cp .env.example .env |
| 4 | 密钥决策 | 不填PRIVATE_KEY= dry-run;填了才真金下单 |
| 5 | (可选)Jev 模型密钥 | MODEL=jev+TYPESAFE_AI_API_KEY,默认mock动量模型 |
⚠️ 生产实盘请用专用 RPC 节点(如 Alchemy / QuickNode)替换默认的公共
RPC_URL,公共端点限速 25 rps,只适合 dry-run。
关键变量速查(完整注释见 .env.example):
RPC_URL/READ_RPC_URL/WS_URL:链上读写通道PRIVATE_KEY/DRY_RUN:实盘或模拟的开关TRADE_SIZE_MON(默认 200,即 Kuru 最小单量)、MAX_POSITION_MON、MARGIN_MON/MARGIN_USDCMAX_FEE_GWEI/PRIORITY_FEE_GWEI:Monad 按 gas limit 计费,费用是静态写死的
🚀 路径一:Bun 本地一键运行(最快)
三步走,这也是官方 README.md 给出的方式:
- 复制环境模板:
cp .env.example .env - 安装依赖:
bun install - 启动机器人:
bun run start
看到下面这行日志即代表上线成功,机器人已开始逐块决策:
jev-trader · model=mock · post-only 1 tick inside the touch · DRY RUN · :3000本地调试可用bun run dev(watch 模式)。想先验证行情读取延迟,仓库还附带了一组探针脚本(见 scripts/ 目录):
bun run scripts/bench-read.ts # 盘口读取 vs SDK:精度与延迟基准 bun run scripts/dry-encode.ts # 离线签名买/卖单,断言 calldata 与 SDK 一致🐳 路径二:Docker 构建镜像(可迁移)
项目自带 Dockerfile,基于官方oven/bun:1.3镜像,仅 7 行:
FROM oven/bun:1.3 WORKDIR /app COPY package.json bun.lock bunfig.toml ./ RUN bun install --frozen-lockfile --production COPY src ./src ENV NODE_ENV=production CMD ["bun", "run", "src/index.ts"]构建与运行:
docker build -t jev-trader . docker run -p 3000:3000 --env-file .env jev-trader.dockerignore已排除node_modules、.env和scripts,镜像干净且不会泄露密钥。🐳
☁️ 路径三:Railway 云部署(零运维公网)
Railway 支持直接读取 Dockerfile,流程:
- 新建 Railway 项目 →Deploy from GitHub repo选择 jev-trader
- 在 Variables 面板把 .env.example 里的变量逐项填入(
RPC_URL、READ_RPC_URL、WS_URL、MODEL、TRADE_SIZE_MON等) - 保存触发部署,拿到一个公网
*.up.railway.app域名
官方本身就托管着一个 dry-run + mock 模型的实例,可直接打开验证你的部署行为是否一致(端点见 README.md)。
🩺 上线后验证清单
部署完成后,依次请求这三个端点(GET即可):
| 端点 | 期望返回 |
|---|---|
GET / | 快照:模型名、钱包、dryRun标志、最新区块事件 |
GET /history | 最近 1000 条区块事件 JSON |
GET /events | SSE 流:连接先收到snapshot,之后每区块一个block事件,成交时推fill事件 |
block事件结构(类型定义见 src/trader.ts)包含decision.probabilities、本块挂单quote(含txHash与预估gasMon)、持仓position与盈亏totals,字段全貌示例在 README.md 中有完整 JSON。
✅ 验证通过的标志:终端日志每 300 ms 打印一行#区块号 买/卖概率 延迟ms 挂单信息,SSE 流持续推送block事件。
🔴 从 Dry-Run 切到实盘的三个提醒
- 资金走保证金账户:Kuru 限价单从
MARGIN_ACCOUNT扣款而非钱包,启动时机器人会自动补足MARGIN_MON/MARGIN_USDC目标余额(逻辑见 src/market.ts) - Gas 成本要心里有数:Monad 按 gas limit 计费,默认 350000,实盘每块约 0.03 MON,先 dry-run 观察
totals.gasMon - 模型可热切:
MODEL=mock(动量启发式占位)→MODEL=jev(真实 Jev,约 100 ms 出决策,费用比 gas 还低),只需改两个环境变量重启
📚 延伸阅读
- 产品设计与指标定义:SPEC.md
- 架构布局说明(8 个源码文件分工):README.md 「Layout」一节
- 热路径设计:为什么 300 ms 预算里只做 2 次 RPC 往返(「The 300 ms budget」章节)
- 开发规范约定(Bun 优先于 Node/npm 的完整理由):CLAUDE.md
复制.env.example、填好变量、bun run start——你的 AI 链上交易机器人就已在每个 Monad 区块上做出决策了。🎯
【免费下载链接】jev-traderOne AI trade decision every Monad block. Jev on Kuru MON-USDC.项目地址: https://gitcode.com/gh_mirrors/je/jev-trader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考