本次 RUNNER 实盘的结果是:6 个钱包各花费 358 USDC,合计 2,148 USDC,买到 3,561,500.198596948490100152 RUNNER,全部通过毕业后的外盘成交。资金预算与交易恢复流程生效,但最初争取开放首块、尽量在内盘买入的目标没有实现。评价应同时包含“最终买到”和“进入得太晚”,不能用前者替代后者。
本次补查发现了比旧版复盘更关键的事实:开放区块第 0 笔交易直接调用 buy(),同笔交易触发 CurveOpened 后买入成功;市场又在同一区块完成毕业。最早买入者在开放前已有多笔失败尝试。此前把“先独立调用 advancePhase()”当作必要步骤的判断过强,本版明确纠正。
证据口径:已确认指主网交易输入、事件、回执、历史状态、调用追踪,或本地保存的程序日志直接支持;推断指与证据相符但尚不能唯一确定原因;未知指未取得对应数据。所有时间为北京时间。执行结果按 2026-10-03 01:34 左右的快照核对;后续补查针对历史开盘区块,不以现在的币价重写当时结果。
1. 最初目标与实际结果
最初目标包括:用 Python 多钱包监控指定工厂与 dev 创建的官方目标;争取可买所在首块进入;按预算和最高单价执行;兼顾白名单结束、提前售罄及毕业外盘;能够部署到服务器持续运行。目标从“创建就买”逐步收敛到实际官方市场的阶段转换,期间存在合约和工厂更新。
| 目标 | 实际结果 | 评价 |
|---|---|---|
| 锁定指定官方目标与链 | 成交落在配置的 RUNNER 市场,6 钱包回执与目标代币对应 | 本次目标匹配完成;不等于对项目安全作永久保证 |
| 首块或公开内盘进入 | 未产生本方内盘买入,最早外盘成交在开放区块之后第 6 块 | 核心速度目标未达成 |
| 多钱包完成购买 | 六钱包均成功,只有一次成功买入/钱包 | 完成执行目标 |
| 控制本金与重复下单 | 各支出 358 USDC,总计 2,148 USDC | 未出现重复本金支出 |
| 失败可恢复 | 首轮 2 成功、4 失败;4 笔重试后成功 | 恢复机制发挥作用 |
| 投资回报 | 本复盘未核验卖出与完整持仓现金流 | 不能把到账或短时浮盈记为已实现收益 |
| 钱包代号 | 支出 USDC | 到账 RUNNER | 成交区块 | 区块时间 | 回执 |
|---|---|---|---|---|---|
| wallet_01 | 358 | 627,045.032802 | 185557895 | 01:30:16 | 交易 |
| wallet_02 | 358 | 441,383.566036 | 185557889 | 01:30:11 | 交易 |
| wallet_03 | 358 | 559,249.470243 | 185557897 | 01:30:17 | 交易 |
| wallet_04 | 358 | 705,491.737048 | 185557879 | 01:30:04 | 交易 |
| wallet_05 | 358 | 413,481.688716 | 185557890 | 01:30:12 | 交易 |
| wallet_06 | 358 | 814,848.703752 | 185557878 | 01:30:04 | 交易 |
每钱包支出都是 358 USDC,综合成交成本约 0.0006031166 USDC/RUNNER。成交区块的 totalSupply() 均为 10 亿枚,因此整体成本对应总供应量估值约 60.31 万 USDC;这不是流通市值,也不是最后一笔交易后的瞬时市值。前三钱包成本对应约 65.98 万,后三钱包约 55.54 万。
上述成功交易回执状态、区块哈希和实际转账已核对;检查时钱包 token 余额与成功回执的净转入量一致。表内数量作显示舍入,合计使用完整精度。均价包含实际支付 USDC 中的交易费用,未折入 INJ 网络费。
2. 关键过程和重要决策
目标识别与部署
项目早期地址不确定,随后经历工厂、实现和市场替换。脚本最终锁定特定 factory/dev/market/token,校验链 ID、目标关系、代码与代理实现身份。阶段处理加入了 advancePhase、内盘累计限额、毕业外盘购买以及失败重试;旧版本在准备和测试期间继续运行,通过测试后再切换。
本次实际目标地址:
- 工厂:
0x6a00c8Cb5Fb5aAac9C91A2649bd42a26Ca3dEeE1 - 市场:
0xc4dC11d586608E29bf73F26288d590321a2E0496 - RUNNER:
0x56457ed519D41f0eeEFA226AB4b29f40179Ec188 - 报价 USDC:
0xa00C59fF5a080D2b954d0c75e46E22a0c371235a
参数最终为每钱包预算 358 USDC、最高单价 0.001 USDC/RUNNER、滑点参数 75%、固定 gasPrice 10 Gwei;单笔与累计 gas 预算分别为 0.5、1.5 INJ/钱包。滑点阈值与最高单价共同约束 minimumOut,不是无条件接受任意价格。
临近开放的取舍
最后阶段完成了备用节点后台校验、区块头复用、链 ID 缓存,以及静态购买模板和并行读取。01:23:18 切换到最后一版,6 钱包模板和授权就绪。本地、服务器各通过 87 项测试。预建模板没有预签买单,也没有提前广播;nonce、模拟、gas 估算等仍在发送前执行。
用户提出过定时一次性买入、提前数秒发单。定时方案当时明确暂不实施;最后数分钟保持版本稳定,避免临时引入并发和 nonce 错误。这个临场部署取舍有合理性,但不能掩盖更早阶段没有把“边界尝试”作为独立方案验证的问题。
实际时间线
| 时间/位置 | 已确认事件 |
|---|---|
| 01:29:56,185557866 | phase=0,已售 249/333,市场 maintenance=false |
| 01:29:59,185557871 块末 | 仍为 phase=0 |
| 01:30:00,185557872 index=0 | 第一笔直接 buy() 同时产生 CurveOpened 和 Traded |
| 同块 index=76 | 一笔 buy() 触发 Graduated;该块末 phase=2 |
| 同块 index=102 | 已出现经中间合约执行的外盘买入 |
| 01:30:02.688,脚本读取高度 185557873 | 首次记录 phase=2;本轮 state_ready 约 390ms |
| 01:30:03.555–01:30:04.025 | 六钱包首轮广播 |
| 01:30:04,185557878/879 | wallet_06、wallet_04 成交 |
| 01:30:11–01:30:17 | 其余四钱包重试成交 |
| 约 01:30:20 | 本方六钱包全部完成确认入账 |
开放与首买交易、触发毕业交易给出了可复核的先后顺序。服务器时钟与链上区块时间不是同一测量口径,不能直接将相减结果写成纯网络延迟;区块差和交易索引更可靠。
3. 做得好的地方及成功原因
目标约束和身份核验。 代码只处理配置目标,避免仅凭同名代币或同工厂任意实例行动。本次交易目标与核验结果一致。这个保护是控制错误目标风险,并不保证合约无漏洞。
授权准备和余额预算。 六钱包开盘前授权就绪,实际本金均未超预算。内外盘共用总预算,没有外盘再重复花一份 358 USDC。
外盘后备路径。 市场在一个区块内完成公开与毕业,外盘路径让系统仍能完成购买。它解决了交易路径覆盖问题,但不能恢复已错过的内盘价格。
持久化和恢复。 签名交易先持久化再广播;同一签名向多个 RPC 发送;待确认交易不以新 nonce 盲目重发。四笔失败确认后,受限重试重新读取状态和报价,最终补齐购买。本次没有观察到重复成功下单。
暂停标志区分。 当时 factory.maintenance=true、market.maintenance=false,真实市场交易成功。之前把工厂暂停直接当作市场不可买的条件已经修正;这个结论限于本次合约路径,不应泛化到其他项目。
发布与测试基本纪律。 准备期间保留旧进程,测试完成后切换,最后数分钟不继续临时改动。回归测试和 Bank 预编译模拟发现并处理了部分余额、额度、恢复问题。其作用是提高流程可靠性,不能把“测试数多”解释为“具备首块竞争力”。
4. 存在的问题、根因和经验教训
P0:状态机判断限制了首块能力
**事实:**第一笔成功交易的顶层目标就是市场,selector 为 0x8906b078,解码为 buy(maximum, minimum, recipient, deadline, expectedActive),expectedActive=false。调用追踪没有失败;同一交易回执包含 CurveOpened 和买入事件。前一块 phase=0,交易所在区块时间已到 01:30:00。
**修正结论:**对这版市场、这个时间边界,独立 advancePhase 交易不是买入的必要前置条件。不能再把早先某次普通买入失败推导成“主网必须单独推进”。
我们的流程等待已提交区块中的 phase=1,或在 phase=0 分支尝试独立推进,再等下一块。真实市场却在同一个区块里开放、发生内盘买入并毕业,块末状态直接到 2。等待可观察 phase=1 的策略在这次执行序列中没有内盘发送窗口;将扫描周期继续缩短,也不能制造一个不存在的块末状态。
**根因:**把“现在模拟失败”“可以通过 advancePhase 推进”“必须先独立推进”混为一谈;fork 重点验证了先推进后买,却没有优先验证到期边界直接 buy 的完整路径。合约替换后,旧版本结论还需要重新证明。
P0:目标是首块,但验收重点偏向最终可买
预算正确、失败可重试、最终可买都是必要能力,但与“开放首块提交、首块成交”是不同指标。本次最早成交在开放之后第 6 块,只能算执行完成,不能算速度目标完成。应在设计时明确:可接受失败 gas、是否允许边界提前尝试、最高成交价、最多落后几块,以及哪些安全校验绝不能省略。
此前对提前发单风险的说明有事实基础,但缺少对本链实际失败成本和早期样本的测量。复盘不能只解释为什么保守,也要承认没有充分验证更符合原始目标的方案。
P1:发送关键路径仍有明显等待
首轮日志中的六钱包 prepare 总耗时约 435–748ms。其中 gas 估算约 408–728ms、模拟约 278–398ms、nonce 与 gas 余额读取约 157–258ms,均为本轮样本范围,并非长期分位数;这些操作并行,不能把各项耗时直接相加。gas 估算是这一批预检查中最慢的分项。
此前快照读取优化的三次采样从约 41–56ms 降到 16–36ms,只覆盖局部读取。静态模板也没有移除最新报价、nonce、模拟、gas 估算。把这些局部改进描述成接近首块能力,会高估优化效果。
P1:RPC 数量不是实际送达能力
首轮 6 笔买单向 14 路广播,共记录 84 个响应:12 个 matching_hash、6 个 rate_limited、66 个通用 Web3RPCError。每笔至少有一个匹配 hash 响应,但错误分类不足,不能将后 66 个全部解释成节点宕机、丢单或已经收到交易。首个匹配 ACK 耗时约 236–728ms,也不等于首次到达验证者的时间。
应同时测量节点限流、错误原因、传播成功率和最终入块,而不是仅看 eth_blockNumber 延迟或已配置 RPC 数量。
P1:四笔失败是 Slippage,不是已证明的 gas 不足
四笔首次失败交易逐一 trace 均返回 0x7dd37f70,对应 Slippage()。它们的 minimumOut 均为 662,626.905153203933671308 RUNNER,超过按 0.001 最高单价换算的 358,000 RUNNER 下限,因此这里约束更严的是报价滑点下限。
四笔回执 gasUsed 等于 gas limit,但 trace 明确给出了 Slippage;不能据此诊断 out-of-gas。发送前模拟通过也不意味着排队期间交易条件不会变化。重新报价后重试成功,不证明继续扩大滑点总是合理,更不证明首次模拟读取错误。
P1:测试环境与测试命题必须明确
此前 fork 保留真实 EVM 合约代码,并用本地记账模拟 Injective 原生 Bank 预编译。它覆盖了售罄推进、到期推进、钱包限额及买卖流程,但不等于完整 Injective 节点,更不等于真实开盘流量、队列和同块竞争。87 项通过只说明这些测试所表达的断言成立。
下一次必须将“到期直接买”“同块多买单导致毕业”“先模拟成功但入块前报价改变”“内盘到外盘参数切换”列为独立验收项,不能用其他路径的成功替代。
5. 投入与产出是否合理
| 投入或产出 | 已核实数值/状态 | 判断边界 |
|---|---|---|
| 买入本金 | 2,148 USDC | 属于持仓成本,不是软件开发成本 |
| 到账代币 | 3,561,500.198596948490100152 RUNNER | 当时到账已核实;不等于现在仍全部持有 |
| 10 笔买入相关网络费 | 0.07367606 INJ | 不含之前的授权、其他准备交易 |
| 其中四笔失败网络费 | 0.03318261 INJ | 约占本批买入网络费的 45.04% |
| 开发、服务器、RPC 套餐成本 | 未取得完整账单和工时 | 无法量化完整 ROI |
| 卖出收入与已实现利润 | 本轮未核验 | 不作盈利或回本结论 |
从资金执行角度,6/6 完成且没有重复本金支出,工程投入带来了可靠性。从原始首块目标看,结果不理想:最早参与者已在内盘完成购买,我们在外盘承担了更高单位成本。
首笔参与者实际净支付 500 USDC,获得约 20,103,893.644256 RUNNER,平均价格对应总供应量估值约 2.49 万 USDC;我们的综合成本对应约 60.31 万,相差约 24.25 倍。这是不同成交时点、不同订单的历史单位成本对比,不是可复制利润,也不能假设我们的 6 个钱包都能获得第一笔价格。前排总容量有限,加入我们的交易还会改变后续价格和排序。
因此,下一次不应继续优先堆叠 RPC、提高 gas 或增加测试数量。先用少量预算验证最关键的阶段转换与送达策略,确认具备进入目标窗口的能力,再扩展多钱包规模。缺少完整支出与退出数据时,不能给整个项目算一个确定的投资回报率。
6. 同类优秀项目值得借鉴的做法
这里选择有公开一手文档的交易执行基础设施作为工程参照,不把它们称作已经证明盈利的狙击项目,也没有证据表明本次前排参与者使用了它们。
| 参考 | 文档明确提供的能力 | 值得借鉴的工程原则 | 在本项目中的限制 |
|---|---|---|---|
| Flashbots Auction | 带目标区块的 bundle 提交,以及基于指定状态的模拟接口 | 明确交易依赖、目标窗口、有效期与模拟状态;将“执行顺序”作为设计对象 | 文档针对其支持网络;不能据此声称 Injective 有同等可用通道 |
| Jito 低延迟发送 | 同 slot 顺序/原子 bundle、接收状态与落地状态区分、区域端点 | 区分 ACK、实际落地与回执;测量端到端成功率;分离提交与确认 | 属于 Solana 基础设施;不能直接移植 API 或原子保证到 Injective |
依据:Flashbots JSON-RPC 文档、Jito Low Latency Transaction Send。
本地应该借鉴的是明确接口保证和可测指标,而不是产品名。对于 Injective,必须先验证实际 RPC/节点是否支持所需方法、nonce 队列和排序语义。公开接口返回交易 hash 与回执确认执行成功必须分别记录。
7. 比我们更早买入的参与者:链上证据与差异
样本范围
扫描目标市场在 185557860–185557878 区间的日志,取得 189 条已识别事件、117 个关联交易,并核对交易输入与回执。以我们的首笔成功位置 185557878 / index 44 为边界,前面有 111 条成功买入事件、109 个不同 trader 地址;这不是 111 个自然人,也不是全链所有交易场所的完整排名。
其中 47 条买入处于开放到触发毕业的区间,全部解码为市场直接 buy 且 expectedActive=false;其后至我们首笔成交前有 64 条买入。开放区块本身有 48 条买入,前 47 条包含触发毕业的最后一笔,另有一笔发生在毕业之后。
111 条买入关联的顶层交易中,107 条直接以市场为 to;另外 4 条通过两类中间合约。各取一笔调用追踪后确认两类路径都最终调用了市场 buy;它们出现在毕业之后,不能据此推翻内盘 WalletOnly 限制或声称守卫合约内盘可用。
三种可观察的早期行为
| 样本 | 开放区块位置 | 关键交易参数 | 开放前证据 | 能得出的结论 |
|---|---|---|---|---|
A:0x10842108421080624A110D445fb369383E2A8102 | index 0 | 500 USDC;minimum=1 原始单位;gasPrice=0.16 Gwei;nonce=290 | 已检查的前约 13 秒窗口有 16 笔失败 buy,nonce=274–289 | 该地址确实持续尝试,随后直接 buy 触发公开并首笔成交 |
B:0x10842108421080307871Ce0d243f3ED94Aa9B2B3 | index 2 | 500 USDC;minimum=0;gasPrice=0.16 Gwei;nonce=37 | 同一检查窗口没有该地址已上链交易,窗口前后 nonce 均衔接到 37 | 同样能首块成交,但不能断言它采用与 A 相同的连续试单策略 |
C:0x108421084210B45e2d01B323d5D8FBd5ea4FE6AB | index 12 | 500 USDC;minimum≈11,111,111.11 RUNNER;gasPrice=0.16 Gwei | 01:29:57 有两笔失败交易,nonce=1、2;成功 nonce=3 | 有提前尝试,同时保留明确的最高买价约束,并非所有前排都设置 minimum=0 |
对最前五个样本地址的历史 eth_getCode 查询显示,开放前一块代码为空。对这五个地址扫描 185557852–185557871,即区块时间 01:29:47–01:29:59,找到 34 笔已上链失败交易:A 为 16 笔,另一个 index 5 的样本也是 16 笔,C 为 2 笔;B 和另一个 index 11 样本在这个窗口没有上链交易。没有上链记录不代表没有提交过被拒绝或未收录的交易。
抽查 A 的三笔失败调用追踪均返回 Invalid()(0x6dac6a09),随后成功调用仍是 buy()。这是与开放边界相关的一致证据,但 Invalid 是通用错误,不能仅凭选择器证明所有失败都只有“尚未开放”这一个条件。A 的窗口首笔失败和开放前最后一次失败可复核。
速度优势到底来自哪里
**已确认的差异:**A/C 在开放前已有真实 buy 进入区块;我们未提前发单,而是在看到已提交 phase=2 后才走报价、模拟、估算和发送。前者在边界前已有尝试进入区块,后者是在观察到结果后响应。这是与首块优势直接相关的执行模式差异。
**已确认的费用反例:**111 条更早买入中,87 条对应 gasPrice=0.16 Gwei;我们使用 10 Gwei,是其 62.5 倍。因此“只要再提高 gas 就能更早”没有被这次证据支持。不过,这也不能反推 gas 对任何排序都无影响;具体节点排队与验证者选择规则仍需专门验证。
**已确认的失败成本:**A 在已检查窗口内 16 笔失败合计消耗 0.00256 INJ;我们的单笔外盘失败约 0.00830 INJ。该比较只涵盖选定窗口,A 更早的支出未知,但它说明提前尝试的成本应按实际链和 gas 参数测量,不宜一概认定为不可接受。
**已确认的价格保护差异:**47 条内盘买入中 32 条 minimum 为 0 或 1 原始单位,几乎没有有效最少到账保护。但 C 的 minimum 对应最高均价约 0.000045 USDC/RUNNER,仍在第一个区块成交。因此,零 minimum 不是首块成交的必要条件,也不应作为默认学习对象。
**可推断但未证实:**连续 nonce、重复调用参数与紧密区块分布符合自动化批量发送的行为特征。长 deadline 和低 minimum 可以减少随报价重建参数的需求。但不能据此确认软件名称、语言、预签时点、发送频率、服务器地域或实现结构。
**未知:**各笔交易何时首次到达节点、是否进入私有通道、使用哪个 RPC、是否直连验证者、是否购买排序服务,以及是否存在场外协作。区块链不记录这些信息,现有证据不能把它们写成速度优势来源。地址前缀相似和四笔资金到同一个 recipient 只说明可观察的模式与收币汇集,不足以识别同一操作者、团队或具体工具。
两类毕业后中间合约路径也已抽样追踪:样本一、样本二。只能确认经过中间合约再调用市场,不能给它们贴上某个 swap 网站或机器人品牌。
值得学习与不应照搬的部分
值得学习的是:针对准确的边界条件设计交易;在可控成本内验证边界尝试;把区块顺序、nonce、错误类型和 minimumOut 纳入统一状态机;用完整上链样本复核结果。不能直接照搬的是无限连续发单、零价格保护或未经证明的私有通道假设。
当前样本偏向更早成功者,存在幸存者偏差。要评估提前尝试的净收益,还应补查没有成功的参与者、全部失败 gas、最终代币去向和退出交易;本轮没有完成这些全生命周期调查。
8. 改进方向、优先级和下一步行动
| 优先级 | 行动 | 验收标准 |
|---|---|---|
| P0 | 重建每版市场的阶段转换表,特别是到期直接 buy 与独立 advance 两条路径 | 固定代码/实现哈希;在边界前、边界时、售罄时分别验证,明确哪笔交易触发转换 |
| P0 | 增加同块开放→多笔买入→毕业→外盘的竞争回放 | 回放本次 185557872 的顺序,证明策略不会依赖一个不存在的块末 phase=1 窗口 |
| P0 | 将“首块竞争”和“确认后安全买入”做成明确不同的运行策略 | 分别声明允许失败成本、时间窗口、报价保护和成交目标;未经验证不以首块能力宣传 |
| P0 | 为边界尝试设计独立预算及恢复规则 | 与正常扫描共用钱包锁、nonce、本金账本;成功后停止;失败有次数/费用/时间上限,不能提前耗尽普通购买的 3 次机会 |
| P1 | 优化实测最慢的 gas 估算和模拟路径 | 在真实链约束下验证可提前准备或复用的部分;任何固定 gas 方案都需覆盖最坏分支并保留费用上限,不能凭一次样本硬编码 |
| P1 | 增加完整延迟观测 | 记录 WSS 收到、状态就绪、报价、模拟、估算、签名、各节点 ACK、首见回执;报告 P50/P95/P99 和首块/首两块成功率 |
| P1 | 完善 RPC 错误分类、限流与择优发送 | 区分已知交易、nonce 冲突、限流和传输失败;以端到端送达与落地衡量,不以节点数量或查询高度衡量 |
| P1 | 用实际竞争场景验收价格和重试规则 | 覆盖大幅价格变化、首次模拟成功后失败、毕业缩量、外盘恢复;不自动放宽用户最高单价 |
| P2 | 小额验证后再扩展钱包和部署规模 | 先验证单钱包/少量钱包的目标窗口与恢复,再做多钱包并发;提前冻结候选版本并演练回滚 |
| P2 | 建立完整投入产出账本 | 记录开发工时、RPC/服务器账单、授权/失败费用、买卖现金流及估值时点,才计算真实 ROI |
建议下一次按三个关口推进:先完成合约边界回放和策略选择,再完成低金额的真实链路径验证,最后才扩展多钱包。测试通过的标准要包含“在什么状态、何时提交、以什么成本、在哪个区块成交”,而不仅是能否签名或最终买到。
本次最可迁移的经验是:先验证交易在边界上如何改变状态,再优化发送前的毫秒;把最终成交、首块能力和投资收益作为三项独立结果报告。 关于参与者身份、工具名称、私有通道和最终利润的空白,保留为空白,不用看似合理的故事补齐。