2026 年 9 月 27 日 22:58:54(北京时间),我们在 Robinhood Chain 使用 38 个子钱包,以一笔原子交易投入 0.6 ETH 买入 U。买单位于开盘第 3 个 L2 区块,比首块晚 2 块,实际获得 10,998,997.18 U;随后七地址归集和全部子钱包委托撤销完成。
这次实盘验证了批量执行、资金分配和恢复保护能够完成整套任务,也暴露了开盘策略、发送测量和成交质量约束的不足。现有证据更支持优先研究开盘边界尝试与排序器送达路径,没有发现本地程序卡顿两块的证据;但缺少排序器内部接收时间,尚不能把差距精确归因到某一节点、网络路由或唯一原因。
一、先明确结果与评价标准
| 指标 | 实际结果 | 评价 |
|---|---|---|
| 买入本金 | 0.6 ETH | 按原定预算执行,手续费另计 |
| 子钱包数 | 38 | 全部在同一笔交易中完成买入 |
| 收到代币 | 10,998,997.183789562923949469 U | 明显低于开盘前无竞争状态的模拟量 |
| 成交区块 | 74028192 | 开盘第 3 块,落后首块 2 块 |
| 块内交易索引 | 137 | 从 0 开始计数,即该块第 138 笔交易 |
| 后续处理 | 七地址归集完成,子钱包 U 余额归零,委托撤销完成 | 资金处理闭环完成 |
| 五个交易阶段总费用 | 0.00130870067599 ETH | 部署、授权、买入、归集、撤销合计 |
| 服务运行 | 原进程继续运行,重启次数 0 | 日志未显示开盘前后进程重启 |
应当分开评价三件事:执行是否完整、排名是否达标、成交价格是否合格。本次执行完整;排名没有进入首块;如果目标是接近开盘前报价,本次成交质量没有达到这个目标。由于没有给出明确的策略价格底线和后续卖出结果,不能进一步判断最终盈利或亏损。
费用明细如下,买入本金不包含在表内:
| 阶段 | 实际费用 ETH |
|---|---|
| 部署执行合约 | 0.0000301995252 |
| 7702 授权 | 0.000019602287552 |
| 买入 | 0.000756359074296 |
| 归集 | 0.000349022435246 |
| 撤销委托 | 0.000153517353696 |
| 合计 | 0.00130870067599 |
费用属于本次历史回执结果,不能直接套用到下一次开盘或新增边界重试的成本估算。
二、时间线:本地触发、链上收录和确认是不同环节
以下时间均为北京时间,来自正式服务日志。区块时间戳只有整秒精度。
| 时间或位置 | 发生了什么 | 能证明什么 |
|---|---|---|
| 开盘前 | 部署、38 钱包委托、模拟、签名和三份记录准备完成 | 买单发送前已完成准备工作 |
| 22:58:54.002 | 13 条发送任务启动 | 本地已进入发送流程,不能证明排序器已收到 |
| 同次触发记录 | 定时器延后 0.413ms,触发至全部任务启动 2.043ms | 本地调度没有显示两块量级的停顿 |
| 区块 74028192,索引 137 | 买单成功执行 | 实际成交位于开盘第 3 块 |
| 22:58:54.318 | 日志记录仍在等待精确交易回执 | 该日志时点尚未进入确认完成状态 |
| 22:58:54.634 | 日志记录等待 L2 区块确认 | 程序已转入确认等待,不能当作精确收录时刻 |
| 22:58:54.863 | 汇总 ACK:13 路中 3 路返回匹配 hash | 只是所有路径结果的汇总,无法反推出首个响应或首个送达路径 |
| 22:58:55.983 | 买单达到确认要求 | 确认完成时间晚于实际收录时间 |
| 22:59:01.516 | 七地址归集完成 | 实际数量已按分配账本归集 |
| 22:59:07.408 | 任务完成 | 子钱包委托清理完成,任务进入 done |
源码中,发送任务先增加 dispatched 计数,再执行 await send()。因此日志里的 2.043ms,严格含义是“所有发送任务已经启动”;它没有测量每条连接什么时候完成写入,也没有测量远端什么时候接受交易。
本次实际触发方式是本地时钟,提前量为 0。记录中的 provider=ALCHEMY 是触发时缓存链头的来源,不代表程序等待 Alchemy 报告开盘。开盘附近 WSS 足够新鲜,HTTP 后备读取受到静默规则抑制,20ms 后备轮询不是本次排名差距的直接解释。
当前 NTP 同步正常,也不能反向证明开盘那一刻绝对时钟误差恰好为 0。定时器回调迟到量衡量本地调度,服务器 UTC 偏差衡量绝对时钟,两者需要分别记录。
为什么“晚两块”不能直接写成“网络慢了 200ms”
74028189 的时间戳为 22:58:53,74028190 首次达到开盘时间 22:58:54,74028191、74028192 仍显示 22:58:54。因此第 3 块和相差 2 块是可核实的链上位置。
附近观察到约每秒十个 L2 区块,但区块间隔会变化,整数时间戳也无法提供每块的精确毫秒边界。两块差距不能拆成精确 200ms 的网络耗时,更不能据此直接设置提前 200ms。
脚本默认等待 12 个后续 L2 区块并核对区块 hash。这个等待发生在收录之后;缩短它不会让原买单进入更早的区块。L2 确认也不等于 Ethereum 硬最终性,官方区分排序器的快速软确认和提交到 Ethereum 后的最终性。Robinhood Chain 差异说明
三、开盘竞争有多强:前两块已改变曲线状态
| 位置 | L2 区块 | 成功买入交易 | Bought 调用次数 | 买入事件累计输入 ETH |
|---|---|---|---|---|
| 开盘前最后一块 | 74028189 | 0 | 0 | 0 |
| 开盘第 1 块 | 74028190 | 19 | 193 | 5.97557 |
| 开盘第 2 块 | 74028191 | 43 | 206 | 6.11282 |
| 开盘第 3 块,整块统计 | 74028192 | 68 | 108 | 1.77748 |
第三块这一行包含我们的买单及其后的交易,不能把整块数据都算成“排在我们前面”。按交易顺序截断至我们的买单之前,结果为:
- 234 笔全链交易在前,其中 118 笔触发该池成功买入。
- 累计 458 次 Bought 调用,涉及 200 个不同买入地址。
- 买入事件累计输入约 13.09067 ETH。
交易数、调用数、钱包地址数各有不同含义,都不能直接等同于自然人数量。累计买入额没有扣除同期卖出,也不是净储备增加额。
进一步用历史区块状态,对同一笔假设的 0.6 ETH 输入调用 previewBuyTokensOut:
| 查询状态 | 对应报价 U |
|---|---|
| 开盘前最后一块结束 | 81,195,297.18 |
| 首块结束 | 25,515,154.74 |
| 第二块结束 | 12,145,701.40 |
| 本次 38 钱包实际合计 | 10,998,997.18 |
前两块结束后的报价明显下降,说明仅仅进入第 3 块,面对的曲线状态就已与开盘前相差很大。实际数量比开盘前历史报价低约 86.45%。这是成交数量对参考报价的比较,不是账户亏损 86.45%,也不是卖出收益的计算。
历史报价是指定区块状态下的假设输入,不是对我们的整套钱包限额与执行顺序的完整重放,也不承诺任何排队中的交易能获得该数量。复盘可以用它说明价格环境变化,不能把它当作已经锁定的成交订单。
四、对手的优势:持续覆盖开盘边界
最早成功买入交易位于首块索引 1,发送地址为 0xc44f5ead7abd6b80a4af82411d1ad3bd6b53377e。该地址在开盘前两块出现 nonce 23~30 的连续八笔失败交易,首块成功交易 nonce 为 31。首块成功买单
另一个首块批量地址 0xd5c625c6e43fb76c27f2898cfc6dda5e494cc714,开盘前 nonce 544~546 失败,首块 nonce 547 成功,一笔交易完成 82 次钱包买入。82 钱包批量交易
两者都体现了不同 nonce 的连续尝试,已经上链的失败会消耗手续费和 nonce。我们的主单则在本地开盘时刻才启动发送,确认失败后才允许激活备用 nonce。两套策略争取边界位置的方式不同。
事实是对手在开盘前已有连续失败记录,随后进入首块。推断是持续尝试提高了覆盖开盘边界的机会,可能是领先的重要因素。尚未取得对手的本地发送日志、节点接收时间和完整实现,因此不能证明它是唯一原因,也不能照着 nonce 序列反推出精确发送间隔。
本轮对开盘前两块、池及三个领先执行合约抽查的 62 张回执均失败。池源码要求 block.timestamp >= tradingStartsAt,但未逐笔取得内部 revert 原因,不能断言所有失败都只由时间检查造成,更不能说已经检查全部开盘前交易。
三种操作不能混为一谈
| 操作 | 实际含义 | 必须注意 |
|---|---|---|
| 同一签名多路广播 | 同一个 hash 经不同通道提交 | 增加送达机会,正常情况下只执行这一笔交易 |
| 同 nonce 改价替换 | 构造另一笔签名,竞争替换未决交易 | 节点替换规则与链上结果需要单独处理 |
| 不同 nonce 连续尝试 | 多笔独立交易依次占用 nonce | 可多次失败并付费,前序未决还可能阻塞后序 |
提前广播同一个 hash,一旦它已经失败上链,不能靠重播让它在开盘后重新执行。增加边界尝试必须设计新的 nonce 状态机和费用控制,不能仅把现有计时器提前。
五、我们做得好的地方,以及这些优势的边界
1. 把准备工作移出了开盘发送路径
部署、委托、完整模拟、预签名、三份记录写入和核对均提前完成。开盘不再重新部署、报价、查 nonce、签名或同步写盘,本地调度只用了约 2ms。这一设计值得保留。
它解决的是本地准备开销,无法代替网络传输、提供商转发和排序器排队的测量。下一步应当在已有快速发送路径外增加观察能力。
2. 13 路发送同一个 hash,回执观察独立进行
本次使用 HTTP、WSS 和官方排序器路径,并发发送同一份预签名买单。程序不等待所有 ACK 才去看回执,避免慢响应拖住后续处理。
此前真实自转账测试中,官方排序器路径曾出现“先观察到成功回执,后收到发送 ACK”。这说明 ACK 慢不等于交易送达慢;本次汇总只有 3 路返回匹配 hash,也不能理解成其他 10 路导致买单失败。
但多个端点不一定有独立上游,路径数量也不等于独立送达机会。现有记录不足以判定哪一路最先到达排序器。
3. 38 钱包保持原子执行,避免部分买入
买入由一笔协调交易执行,任一子钱包未满足条件时,整个批次回滚。链上固定总预算、单钱包金额上限、钱包集合、最低输出及截止时间;协调合约和子钱包分别有一次买入保护。
原子性降低了部分成交后的账务复杂度,也意味着任一钱包委托、额度、最低输出或其他执行条件异常,可能让整批失败。它保证批次一致性,不保证首块位置。
4. 归集按实际数量分配,收尾完成
分配依据实际买入事件和余额,前三个目标地址合计分得总量的 1/3,后四个合计分得 2/3,各组内均分并处理整数尾差。程序没有沿用开盘前模拟量作为应分配数量。
本次七个地址的实际余额与账本一致,38 个子钱包 U 余额归零,委托全部撤销。归集还检查目标地址持仓容量,容量不足时等待,而不是盲目转账。
5. 恢复机制限制重复买入
预签交易写入三份持久化记录并核对后才能广播;未知回执时继续观察或重播相同字节,不凭超时立即换 nonce。阶段状态和链上防重标记共同约束恢复行为。
历史本地链集成测试覆盖授权后重启、买单发送后重启和退款路径,本次实盘也完成了完整闭环。这些证据支持当前流程的正确性,不代表所有外部故障都已验证。
六、主要不足:测量、策略和成交标准没有形成闭环
| 不足 | 本次具体表现 | 后续改进 |
|---|---|---|
| 发送路径测量不完整 | 只有启动时点与 ACK 总数,错误被归为失败布尔值 | 逐路径记录写入、响应、错误分类及最终包含结果 |
| 日志窗口设计不足 | 缓冲最多 4,096 条事件,累计丢弃 760,801 条,广播后很快结束 | 普通链头去重或采样,关键事件独立保留,延续到回执和收录核验 |
| 边界策略偏保守 | 到点发送主单,失败确认后才允许备用单 | 增加显式启用、有预算上限的边界尝试模式 |
| 优化指标不够贴近目标 | 读取约 2ms 容易被误当作提交很快 | 以成交块、块内位置、输出和失败费用验收 |
| 批量入口参数较大 | 买单 calldata 为 3,876 字节 | 比较预设订单与少参数触发入口 |
| 价格底线过宽 | 90% 滑点允许数量大幅减少后仍成交 | 明确最低总输出、每钱包最低输出和最多可接受均价 |
| 灾备与多机边界不足 | 三份副本默认同机,本地锁不能协调多台机器 | 增加独立恢复副本和单实例协调机制 |
| 操作文档存在新旧混用 | 部分说明仍对应旧单钱包行为 | 明确默认入口、状态命令、预算来源和恢复语义 |
760,801 是长时间累计后被环形缓冲覆盖的事件数,不代表全部发生在开盘瞬间,也不能据此断言 CPU 在开盘卡住。最近约 38 秒的记录仍能说明触发和链头情况,真正缺少的是广播到包含阶段的逐路径证据。
读取、提交、确认:过去测试各自覆盖了什么
此前在同一服务器进行过 42 笔零金额自转账,全部成功,其中 3 笔采用 13 路并发、3,876 字节输入:
| 指标 | 3 笔并发样本结果 |
|---|---|
| 本地广播返回 | 1.86~2.93ms |
| 首个有效 hash ACK | 141.74~188.22ms |
| 观察到成功回执 | 164.21~204.09ms |
这一小样本已经表明,读取 RTT、本地发送流程耗时、有效交易 ACK 和回执可见时间是四类指标。它验证了传输大小与路径可用性,但自转账执行量约 44k Gas,不能代表本次 5,527,486 Gas 的批量买入及开盘竞争。
完整流程的离线与本地链测试证明正确性,真实自转账测试证明提交路径可以工作,主网只读模拟证明指定快照下调用可执行;这些测试都不能单独证明可以抢到首块。
90% 滑点究竟允许了什么
本次最低输出由初始报价和滑点配置生成,重试不会不断放宽底线。问题是初始设置允许输出相对参考报价减少约 90%,约保留参考数量的 10%。实际数量减少约 86.45%,因而仍可能满足保护。
这不是滑点检查没有执行,而是底线与“希望接近开盘价成交”的目标相距很远。最低输出应先由可接受的最坏结果决定,再换算为参数;不能为了让交易成功而无限提高滑点,也不能随意改成一个更小数字后声称策略更好。
将 0.6 ETH 的总量历史报价直接乘以 10%,只能辅助说明量级,不是重建每个子钱包的实际最低输出。正式验收应使用预签订单里的逐钱包 minimum 和完整模拟结果。
七、用了哪些技术:作用、收益和注意事项
1. EIP-7702 委托与主钱包赞助
EIP-7702 允许 EOA 安装指向执行代码的委托。本方案提前用 type-4 交易设置子钱包委托,由主钱包赞助相关链上操作;买入时,协调合约把资金发送给子钱包,子钱包在自己的地址上下文调用池,U 进入各子钱包。最后再通过 type-4 交易撤销委托。EIP-7702 规范
它将多钱包执行集中到少量主钱包交易中,但不是交易排序加速器,也不会自动取消代币自身的地址持仓限制。授权对象、链 ID、nonce 和执行权限都必须正确。
撤销委托与 ERC-20 的 allowance 授权不是同一概念。清除委托代码也不等于清除账户全部历史存储;后续若复用钱包或改用另一执行实现,要检查存储兼容性。本合约为钱包买入标记使用独立命名的存储槽,但不能因此推断任意复用都安全。
2. Solidity 协调合约与链上约束
UTokenBatch7702 同时承担协调合约和委托实现的角色,通过调用者、执行上下文和链 ID 检查区分两种用途。源码固定代币、池、预算与单钱包上限,并用钱包集合哈希限制本批地址。
主要保护包括:主钱包操作者检查、委托目标代码检查、钱包地址排序、一次买入标记、非零 minimum、开盘时间与 deadline、目标归集地址白名单和归集操作防重标记。当前实现没有开放任意目标调用或升级入口。
这减少了执行时可变因素。代价是它针对固定任务设计:复用于下一次开盘时,不能只改一个时间变量,还应核对链、代币、池、预算、钱包限额和接收地址,并重新编译与测试。
3. Python asyncio、aiohttp、HTTP 与 WSS
Python 事件循环负责并发节点读取、区块通知、定时触发、同 hash 广播与回执观察;aiohttp 管理 HTTP 连接,WSS 使用持续连接接收通知和发送请求。eth-account 负责签名,eth-abi 负责调用编码。
读取路径复用连接,每节点最多一个未完成的后备请求,尽量让慢响应正常结束并归还连接,避免竞速取消造成重复建连。开盘附近启用 20ms 后备轮询,遇到错误按节点退避;WSS 新鲜时减少无必要读取。
并发的价值是降低单一路径故障影响。下一步要同时记录连接是否复用、是否重连、请求是否限流,而不是只统计用了多少个 RPC。
4. 本地时钟、NTP 与单调时钟
已知开盘时间使用本地定时器触发,链头通知与 HTTP 后备作为其他触发途径。NTP 用于校准 UTC,单调时钟用于测量本地间隔和调度延后,避免将墙上时钟调整误认为真实耗时。
绝对时钟准确,不意味着到排序器的单向延迟已知。RTT 的一半、ACK 时间或整数区块时间戳,都不足以精确求得所需提前量。
5. 预签交易、持久化状态和加密钱包备份
正式发送前,三份执行记录经过写入、fsync 和读回一致性核对。恢复时沿用原始签名字节、hash、nonce 和阶段账本;子钱包保存在加密 V3 keystore 中,文件校验用于发现损坏。
同机三份目录能够降低单文件损坏的影响,不能抵御整盘或整机丢失。SHA256 校验也不等于带密钥的防篡改认证。跨机迁移要保留原主钱包身份与执行记录,并保证只有一个实例继续任务。
6. Linux systemd 与阶段状态机
systemd 管理常驻服务和重启恢复,任务按 setup、buy、collect、recover_eth、revoke、done 推进。状态为 done 时保留已完成记录,避免再次购买。
进程显示运行中不代表仍在下单,也不等于最近一次成交价合格。不要删除执行记录来“重新开始”,不要让另一台服务器用同一主钱包独立发单;本地文件锁只能约束共享同一个锁文件的进程。
7. JSON-RPC、历史状态查询与本地链测试
复盘结合区块、精确 hash 回执、Bought 事件、历史 eth_call 报价、部署代码及 nonce 序列。历史状态查询需要支持对应历史读取的节点,不能把当前报价当成开盘时状态。Robinhood Chain 连接文档
测试使用 Python 离线回归、Foundry 合约测试和 Anvil 本地链集成,覆盖真实 type-4 授权与撤销、原子买入、退款、归集和重启恢复。最终流程复核记录为 84 项不同 Python 测试、11 项合约测试通过;这是历史验证记录,本轮文章整理没有重新启动实盘或重跑链上测试。
八、批量入口能改,但不要未经验证就拆单
| 交易 | 区块 / 索引 | 买入调用数 | calldata 字节 | Gas limit | 实际 Gas used |
|---|---|---|---|---|---|
| 对手批量 A | 74028190 / 5 | 82 | 36 | 15,000,000 | 13,071,895 |
| 对手批量 B | 74028190 / 9 | 54 | 36 | 13,000,000 | 6,845,042 |
| 我们 | 74028192 / 137 | 38 | 3,876 | 7,162,063 | 5,527,486 |
首块已有比我们规模更大的批量交易,因此“38 钱包过多,必须拆单才能进首块”缺乏证据。链上显示的区块 gasLimit 和实际 gasUsed,也不能直接说明排序器当时剩余多少执行容量。
更明确的差异是入口大小。对手两个批量入口在开盘前已部署,36 字节通常就是 4 字节函数选择器加一个 32 字节参数;对应成功交易 value 为 0。可判断大量执行信息并非在该笔交易里逐项传入,但还没有完整追踪其钱包准备、资金来源及合约实现,不能把少参数入口写成已还原的方案。
我们的钱包、金额和 minimum 三组数组在每次交易里传入,可研究将订单提前固定或承诺,开盘只传订单标识及极少参数。官方文档明确指出缩小 calldata 有助于降低 L1 数据费用;具体节省多少发送与处理时间仍需对比测量。Robinhood Chain 费用说明
压缩入口必须一起比较部署费用、链上存储或代码数据读取成本、买入 Gas 和失败 Gas,同时保留预算、minimum、deadline、固定钱包集合与一次成功保护。不能为了少传参数而引入可被他人修改的订单。
拆成小批次会失去整批原子性,增加 nonce、部分成交、资金分配和恢复难度。应保留 38 钱包原子方案作为对照,只有实测有收益且可接受这些代价,才考虑拆分。
九、后续改进顺序与验收方式
第一优先级:把发送到包含的证据补完整
每条路径记录请求创建、发送任务启动、连接复用或重连、本地写入完成、首个响应、接受或重复或拒绝或超时,以及最后的交易 hash、区块和索引。保留错误码和经过脱敏的错误类别,避免全部压成 False。
旁路观察官方 sequencer feed,记录第一次看到交易的本地时点和消息序号。feed 是排序结果的传播观察,仍包含网络延迟,不是排序器内部接收时间。官方列有 feed 和 sequencer 端点,同时说明公共端点限流,不推荐作为生产服务唯一依赖。官方端点说明
测量记录在内存中生成,写盘放在关键路径之外;为触发、发送、响应和回执预留独立缓冲,按区块 hash 去重普通链头。保留明确的开盘前后窗口,直到首次回执及位置核验完成,输出丢弃计数。
验收目标是能够复原同一订单的完整事件顺序,明确哪些是本地时间、哪些是远端反馈,以及哪些仍未知。
第二优先级:明确成交质量门槛
订单应有最低总输出、逐钱包最低输出、最大投入和截止时间。固定本金下,最低输出也约束可接受的平均买入价格;若要按含费用成本评价,还需将允许费用计入。
先明确什么成交结果可以接受,再生成滑点参数。低于底线时宁可按规则失败或结束,也不能自动放宽去追。排名和输出要分别记录:进入首块仍可能价格不合格,第 3 块也不应仅因 status=1 就称为策略达标。
第三优先级:实现有上限的边界尝试模式
保留到点单次模式,另设显式启用的边界尝试模式。至少配置尝试次数、失败费用上限、最大签名资金责任、追单截止时间、最低输出和一次成功后的关闭规则。
nonce 状态机要区分未广播、已发送但未知、已包含失败、已成功和被替换;处理前序 nonce 阻塞及重启恢复。现有“精确失败确认后才能启用备单”的流程适合稳健恢复,不能直接扩展成高频不同 nonce 连发。
合约一次成功保护能阻止重复购买,但已经提交的后续尝试仍可能回滚并继续消耗 Gas。必须限制总失败成本,也不能假设停止本地广播等于撤销已经在途的交易。
先在本地链验证边界时间、先失败后成功、一次成功保护、费用耗尽与重启,再用单独限额测试钱包评估真实包含结果。提前量通过实际样本校准,不由两块差距或 RTT/2 直接指定。
第四优先级:比较服务器和真实提交路径
同一逻辑订单只签一份,用相同 hash 比较多路径送达,避免多个地区独立下单。单独隔离不同 nonce 的实验,不与正式任务混用主钱包。
测试需要覆盖多时段、连接已热和重连、接近生产大小的输入、不同执行负载及失败场景。比较成交块、块内位置、输出、失败费用和包含延迟的分布;样本不足时不使用 P99 等尾部指标给出确定排名。
目前没有证据确认排序器所在地区,也没有证明法兰克福必定是最优位置。多个 QuickNode 端点通知时间高度接近,可能共享部分上游;应研究实际路由差异,而不是只增加端点数量。
Robinhood Chain 按到达排序器的先后排序,提高优先费不能越过已经排队的交易。费率仍需足够让交易有效进入流程,但加价不能替代送达路径和边界策略优化。官方排序规则
第五优先级:压缩入口并完善操作文档
在完整测量建立后,对照当前数组入口和预设订单入口,用相同条件比较费用、执行与包含结果。保留整批原子性和恢复保护。
同步整理入口与帮助:当前多钱包 --check 和 --resume 不能理解成启动实盘;已有任务时主要展示本地状态,不能替代链上实时核验。部分预算配置仍对应旧流程,下次使用要以实际生成的订单和部署代码为准,避免以为改了配置就改变了链上约束。
十、下次开盘前、开盘中、完成后分别注意什么
开盘前
- 核对链 ID、代币、池、开盘时间和时区,以及池的真实开盘条件。
- 确认预算、最低输出、失败费用和截止时间;知道哪些条件下应放弃成交。
- 提前部署并验证代码、钱包委托、持仓限额和目标地址容量,完成模拟与预签。
- 主钱包留足本金和全流程费用;任务期间避免其他出账交易占用 nonce。
- 确认只有一个实盘实例,保留原任务记录和独立恢复副本。
- 记录绝对时钟状态,预热连接,核对节点额度、超时和后备路径。
- 确认日志窗口覆盖广播后的响应、feed 和回执,而不是只覆盖等待开盘。
开盘中
- 不在关键发送路径重新签名、查价或同步写盘。
- 区分节点反馈与精确 hash 的链上结果,不凭单个超时换 nonce。
- 单次模式和边界模式按各自规则执行,不临时拼接两套重试逻辑。
- 达到时间、次数或费用上限就停止新增尝试,同时继续追踪在途交易。
- 保留最低输出保护,不因竞争激烈自动放宽。
完成后
- 核对实际成交块、块内位置、事件数量、代币总量与全部费用。
- 按实际量归集,检查份额守恒、目标余额和子钱包余额。
- 处理残留 ETH,并确认委托确实已撤销。
- 保存回执、区块 hash、nonce、路径日志与最终阶段记录;避免删除记录重新跑。
- 分别记录执行完成、排名达标和价格达标,下一轮只针对有证据的问题改动。
十一、证据范围与仍待验证的问题
本轮重新连接指定服务器,只读核对了 systemd 状态与正式服务历史日志,确认进程 PID 953008、重启次数 0,以及开盘广播、成交确认、归集和撤销的日志时点。结合本地历史链上证据和当前源码整理文章,没有改动正式交易脚本、.env、部署合约或服务状态,没有签名、发送新交易。
公开交易证据:
本地证据归档包括 block-position.json、launch-postmortem.json、historical-launch-quotes.json、first-buy-nonces.json、analysis-validation.json、launch-timing.json 和 timing-summary.json,位于 research/live-completion-20260927/。真实路径测试位于 research/live-path-test-20260927/;流程测试记录位于 research/final-review-20260927/。这些是本地归档名称,正文没有把它们伪装成可公开访问的附件。
仍待验证的是:每条广播路径何时被远端接收、哪条实际最先到排序器、提前尝试的最佳窗口和成本、短入口对包含位置的实际收益,以及服务器地域差异。现有证据足以确定开盘位置和策略差异,尚不足以保证下一版进入首块。