—
—
—
1 · 只认链上 Transfer,不认报表。对账唯一依据是 Base 主网 USDC 合约的 Transfer 事件,按 topics[2](收款地址)过滤。任何"我觉得应该是这个数"都不算。
2 · 别从 0 扫链。公共节点查 archive 状态要 token,从创世块扫必失败。正确做法:从链头回退 2000 块作为起点,之后记录 lastScanned 增量扫。
3 · 分块 + 限流。eth_getLogs 一次查太多块会被限流。我们线上是 400 块一段、段间 250ms,配多节点失效转移(publicnode / base.org / drpc 依次兜底)。
4 · 金额容差 ±$0.02。入账金额与应付额按"近似匹配"(±$0.02)判定,不要写死相等——链上金额是最小单位整数,四舍五入会有分位差。
5 · 改数据文件前必须停服务。服务内存里有全量 db,心跳 30 秒落盘一次;运行时直接改 JSON 会被内存旧值覆盖回去(我们迁移费率时被写回过一次)。