Posts
Ligengxin's Blog
Cancel

稳定币收款的两次事故:精确金额、币种等价和一张过期订单

  outcometick 除了 Stripe,也支持稳定币付款。买家把 USDT 或 USDC 转到我在币安的充值地址,后台每 30 秒轮询一次充值记录,对上订单就开通权限。这一周(09-05 到 09-11),这条链路出了两次事故,排查时又翻出一个藏了很久的问题。三次都是买家已经付款,代码却没接住。 先说识别方式   收款地址只有一个,所有订单、所有币种、所有网络共用。链上转账带不了...

ot run 只回放了 289 个市场里的 2 个,退出码还是 0

  outcometick 有个 ot 命令行工具。ot run 可以用公开样本归档在本地跑回测,和线上使用同一个引擎,不要 key,也不花钱。官网、SDK 文档和 npm README 都把这条命令提供给还没决定是否付费的人。   8 月 31 号这一天,我发现这条路其实坏了两层:第一层是数据读不到,第二层是修好数据之后,它会静默地只跑一小部分。 样本仓库推不上去   给 polym...

回测为什么慢,以及 Python 策略为什么一次都没成功过

  回测上线后,8 月 24 日到 27 日主要在排查超时、运行失败和报告准确性问题,有几处最初判断错了方向。 正常策略触发每事件预算超限   回测对策略有一个性能约束:每个事件的处理时间预算是 400µs,持续超标就拒绝。24 号自己拿测试 key 在页面上试,页面自带的示例策略直接被拒了,理由是「每事件预算超限」。   当时的判定是「超限比率」:先采样 200 个事件,之后超限比例...

outcometick 回测沙箱上线记:容器里那条路从来没跑通过

  这两天(8 月 23 日到 24 日)我在给 outcometick 加在线回测。用户贴入策略代码,系统在沙箱里用真实归档重放,跑完生成报告,再按扫描的「市场日」扣预付 credits。一个市场日就是一个币种、一个 UTC 日、一个市场周期。 先定的几件事   语言先只支持 Python 和 Node.js。我也考虑过 Go 和 Rust,但编译过程本身会执行不可信代码(build....

一把只显示一次的 API key 是怎么丢的

  昨天(08-20),一位买家告诉我:支付成功了,却没拿到 API key。这是站点上线后第一次有人付了钱却没收到东西。排查后补了邮件交付,记一下丢 key 的过程和接 Brevo 时遇到的问题。 先说背景:明文只存在一次   outcometick 的 API key 格式是 <key_id>.<secret>,库里只存 secret 的 sha256。就算库...

outcometick.com 上线:从归档到自助订阅

  08-15,outcometick.com 正式上线。此前客户通过 Telegram 机器人找我手动开通、交付;上线后可以自己下单、拿 API key,再按文件下载。这里记一下 08-14 到 08-16 做的事和踩过的坑。 先把归档搬到 R2   每天的归档原来只放在一个私有 GitHub 仓库的 Release 里,客户拿不到。要做自助下载,而且流量不经过我的服务器,前提是数据在...

结算源换成 TWAP,以及一次把看门狗调快反而亏了的实验

  这周采集侧出了两件事:上游改了结算规则,每日审计报红;价格流隔一阵就会静默一两分钟,调快看门狗后数据丢得更多,当天就回滚了。 审计红了 172 个市场   我每天会对前一天的数据跑一遍审计,其中 F 项用自己采到的 Chainlink 价格,按官方规则把每个 Up/Down 市场的结果重算一遍,和官方公布的结果逐个比。08-06 那天是 2320/2320 全对。08-08 早上审 ...

采集拆到两台机器,以及预打包那把复审了五轮的文件锁

  这两周主要做了两件事:把采集从一台旧机器迁到两台新机器上,然后给全量数据包加了每晚预打包。迁移这件事 6 月下旬就在计划,因为旧机器迟早要被回收。 选址:WebSocket 推送延迟   一开始我拿 TCP 连接和 TTFB 比几个机房。Polymarket 前面有 Cloudflare,各地结果都差不多,看不出区别。后来我直接量 WebSocket 推送延迟,也就是源站发出数据到我...

归档放在 GitHub Release 上,先后撞上的两个上限

  每天凌晨,导出脚本 export-daily.mjs 把前天的前一天从 PostgreSQL 导成 csv.gz / jsonl.gz,中间留一天修数据。每个文件都作为资产传到归档仓库的 GitHub Release(tag 是 daily-<日期>),然后把 manifest 和 CHECKSUM 提交进仓库,最后发布。交付走 Telegram bot:客户要哪段数据,bo...

每日巡检的假红:三周里修掉的几处误判

  采集跑起来后,我给它配了每日巡检脚本 audit-daily.mjs,每天凌晨由 pm2 的 cron 拉起来,结果推到 Telegram。它分两段:归档前的 pre 审昨天数据,归档后的 post 审刚归档的那天。检查项按字母排。A 看采集进程实时健康,B 看结算喂价有没有大段断档,D 看盘口有没有交叉,F 最重要:拿我存下来的 Chainlink 喂价,按官方规则重算每个已结算市场,...