这次 TMF Pass 项目的结果是:16 个 Deng 成功交入,主钱包最终取得 4 张 Pass,但“无人值守、开盘后自动完成领取”的最初目标没有完全实现。脚本完成了 ApeChain 的交入,随后在官网 voucher 请求上收到 HTTP 415;最后的 Pass 领取由用户手动完成。
链上顺序比“买到没有”更能说明问题:本次开盘窗口内,三个钱包的交入分别排第 2、3、4,而主钱包领取排第 79。下次最值得投入的方向,是验证并缩短交入后的领取流程。
本文全部时间使用北京时间(UTC+8),复盘数据于 2026 年 10 月 5 日读取。范围是 00:59:00 至 01:10:00 的开盘窗口;“第几名”只表示这个窗口内按区块高度、交易位置排列的成功交易顺序,不表示全项目历史排名、二级市场买入排名或资金收益排名。一个地址也不等于一个自然人。
证据来自链 ID 经核验的 ApeChain(33139)和 Robinhood Chain(4663)JSON-RPC:交易、回执、事件日志、区块时间及部分历史状态;同时对照运行日志、交易状态文件、代码和网页源码检查记录;并于 12:59 补做服务器真实主钱包登录会话的接口对照,核对当前页面实际加载的领取模块和用户成功领取交易的 calldata。共解析 177 笔成功交入、143 笔成功 Deng 领取。关键交入回执经两个 Ape 节点交叉核对,手动领取回执也由 RH 公共节点复核。浏览器查询工具未能读取对应浏览器交易页,文中的交易链接用于人工复核,数据结论来自 RPC。
1. 最初目标与实际结果
最初目标是配置私钥和费用上限后,脚本长期监控开盘,并自动把当前持仓兑换成累计 4 张 TMF Pass,无需人工守候。
这个项目实际包含两条链和一个官网签发环节:持有钱包在 ApeChain 向 Deng Desk 交入 NFT,官网汇总档案积分并签发 voucher,主钱包再在 Robinhood Chain 调用 dengClaim 领取。链上 NFT 交入成功,并不等于 Pass 已经领取,也不能原子地锁定另一条链的库存。
| 验收项 | 实际结果 | 证据与评价 |
|---|---|---|
| 监控真实开盘 | 完成 | Desk 在区块 51120850 的 open 为 false,在 51120851 为 true;对应时间为 01:01:02 |
| 自动交入 16 个 Deng | 完成 | 三笔回执 status 均为 1,合计 2064 个百分之一积分,即 20.64 积分 |
| 累计取得 4 张 Pass | 完成 | 01:04:01 的领取交易铸造编号 615–618;复查 dengClaimed 和 balanceOf 均为 4 |
| 自动领取、无需人工 | 未完成 | 01:01:14.596 的 voucher 请求收到 415,脚本停止;脚本状态文件没有 RH 领取交易 |
| 费用上限有效、没有盲目重买 | 已观察到符合预期 | 本次三笔授权、三笔交入均成功,未出现替换版本;恢复服务检测到已领取后退出 |
实际领取交易发生在 RH 区块 80098628,交易位置为 6,调用 dengClaim,累计 allowance 为 4,转入原生币 value 为 0。链上本身只能证明钱包成功领取;结合用户“我手动领取了”的说明、脚本没有 RH 交易记录以及恢复服务的提前退出日志,才能确认这次领取应归因于用户操作。
此前记录中的“01:09 确认到账”是复查时间,不能当作实际领取时间。项目应评价为“兑换数量达标,自动化验收未达标”。
2. 关键过程和重要决策
最先厘清了项目机制和钱包角色。当前 16 个 Deng 分布在三个持有钱包,主钱包负责官网档案登录及 RH 领取。主钱包没有持有本次需要交入的 Deng,因此不需要为这些持有钱包的交易支付 APE;持有钱包分别支付自己的 APE gas,主钱包支付 RH ETH gas。
准备阶段核对了官网接口路径、方法、参数、快照证明、关联证明、NFT 归属、nonce 和两链余额。所有当前持仓的证明请求均返回成功,16 个 Deng 每个 1.29 积分,15 个只有 19.35 积分,无法达到需要的 20 积分,所以交入 16 个符合本次目标。虽然官网还有未计分快照地址的分支,脚本没有完整支持,该缺口没有影响这三个当前钱包。
针对持续运行,加入临时接口错误退避、429 的 Retry-After、分阶段登录恢复、RPC 重连,以及同 nonce 的交易恢复和提价。登录调试中,普通验证码任务的 token 被官网拒绝,M1 及相应浏览器上下文通过验证;这也说明身份验证需要真实联调,不能只对照参数名称。
费用决策是在用户授权后把 Ape 总上限设为 2 APE,RH 总上限维持 0.005 ETH。上限是保护条件,不是计划消费金额。预签交易保留开盘报价刷新能力及有限提价空间,没有取消预算检查。
10 月 4 日约 16:46 服务部署并登录成功;19:56 三个钱包提前完成授权,交入交易提前签好。服务使用单实例锁、持久交易状态和受限文件权限,异常时没有配置无限自动重启。
官网公布时间是 10 月 5 日 01:00,但历史 open 状态证明链上实际在 01:01:02 才开放。脚本以链上状态为准,没有仅按倒计时盲发。开放所在区块的 Desk 交易前后,open 从 false 变为 true;本文不根据未核实的函数名称猜测管理操作细节。
| 阶段 | 链上时间或运行日志时间 | 结果 |
|---|---|---|
| Desk 开放 | 链上 01:01:02 | open 为 true |
| 持有钱包交入 6 个 Deng | 链上 01:01:10;日志确认 01:01:11.644 | 成功,第 2 笔交入 |
| 持有钱包交入 3 个 Deng | 链上 01:01:11;日志确认 01:01:12.382 | 成功,第 3 笔交入 |
| 持有钱包交入 7 个 Deng | 链上 01:01:12;日志确认 01:01:12.732 | 成功,第 4 笔交入 |
| voucher 请求失败 | 日志 01:01:14.596 | HTTP 415,进程停止 |
| 用户手动领取 | 链上 01:04:01 | 4 张 Pass,领取窗口第 79 笔 |
| 修复后恢复服务检查 | 日志 01:07:44.751 | 已领取 4 张,正常退出,没有新领取交易 |
区块时间只有秒级精度,服务日志是本机记录的毫秒时间;两者不能直接相减来计算网络提交延迟,也不能把日志看到回执的时间当作交易进入区块的时间。
异常后修复了空 POST 的请求头,加入真实本地 HTTP 接收端的回归测试,本机和服务器完整 234 项测试通过。恢复使用 claim-only 保留已有记录;检测到用户已完成领取后,服务正常结束,随后取消开机自启并暂停自动监控。12:59 的补充复查又在真实登录会话中验证了修复后的业务响应,并确认脚本编码与手动成功交易一致;但账户已经领取完,没有取得新 voucher 或发送自动领取交易,因此仍不能宣布整个自动流程已经实测成功。
3. 做得好的地方及成功原因
首先,机制分析基本正确。识别了持有钱包、主档案、积分、官网凭证和两链 gas 的关系。三笔交入的链上 calldata 解码与既定方案一致,证明这部分准备没有停留在网页文案层面。
其次,提前授权和预签发挥了作用。实际前三笔授权都在开盘前数小时成功,等待阶段不用再处理授权或首次 nonce 分配。在开盘窗口内,只有一个地址先于我们的交入,之后三笔连续排第 2、3、4,是交入阶段取得的实际结果。没有对照实验,不能准确量化每项优化贡献了多少秒,但准备完成与较早进入链上是有证据的。
第三,费用和恢复边界有用。本次没有因为补 gas 就扩大任意消费范围;交易状态保留了六笔已完成操作,恢复只检查领取,没有重新交入。成功标准使用回执、铸造事件和累计领取数,而不是“RPC 接收”日志。
第四,人工兜底确实保护了结果。用户在自动领取中断后手动完成领取,修复后的进程又识别了已有成果。这里的成功原因包含人工介入,不能将它全部计入脚本可靠性。
WSS 第三个节点持续出错时,HTTP 轮询仍可工作,交入结果说明整个监控没有因此失效。不过日志没有记录开盘信号具体来自 WSS 还是 HTTP,不能确定是哪条通道抢先发现开放。
4. 问题、根因和经验教训
实现与验收责任
这次自动领取中断的直接原因,是 Codex 编写的脚本发送了错误的 HTTP 请求格式;此前的检查也漏掉了实际报文验证。责任在脚本实现和验收。 用户手动完成了领取,补充对照又在同一真实登录会话中复现了旧请求的 415,因此本次中断有明确的实现层证据。此前给出“可以挂着自动运行”的判断过于确定,没有说明真实 voucher 签发和自动领取仍未验证。
漏检的具体环节是:核对了网页中的路径、POST 方法、业务参数和合约调用,却把“代码没有传 body”当成了“HTTP 客户端实际发送的报文与浏览器一致”。curl 底层会为这种空 POST 隐式添加 Content-Type: application/x-www-form-urlencoded,官网 voucher 接口拒绝这种媒体类型,返回 HTTP 415。必须检查客户端最终发出的请求,不能只读调用代码。
当前源码与真实请求的补充证据
本轮沿当前页面的加载器找到实际使用的 deng-personal.e664bf7a1c60c1c3.js,而非只复用旧版本源码。领取凭证调用为:
fetch("/backoffice/api/dengs/voucher", { method: "POST", credentials: "include", cache: "no-store"})请求没有正文、没有 JSON,也没有主动设置 Content-Type。账户身份由登录 Cookie 提供;前端传入的主钱包参数用于核对返回 voucher 的 wallet,并未作为请求正文发送。修复是在生产 HTTP 客户端中去掉空 POST 的隐式 Content-Type,登录用的 JSON 请求仍保持 application/json。
2026 年 10 月 5 日 12:59,在服务器同一个真实主钱包登录会话中,实际结果为:
| 对照项 | 实际响应 | 能证明什么 |
|---|---|---|
| 旧空 POST 调用 | HTTP 415 | 已登录仍会因旧请求格式失败 |
| 修复后的生产 Api.request | HTTP 409,reason 为 claimed | 已到达业务判断;服务端明确表示当前档案已全部领取 |
| 登录及会话复查 | HTTP 200,钱包匹配,未被封禁 | 本轮对照确实使用有效的主钱包会话 |
| 官网账本与链上领取数 | 可兑换累计 4 张,dengClaimed 为 4 | 当前 claimed 响应与已完成领取的状态一致 |
此前匿名请求“415 变成 401”只能说明格式错误不再阻挡身份验证;新增本地 HTTP 测试也只能验证报文格式。这次真实登录的 409 业务响应提供了更强的修复证据,但它仍不是成功签发新 voucher 的 200 响应,更不是自动领取成功的证明。
还从用户的成功领取交易提取参数,用生产 voucher_data 重新编码,所得 calldata 与该交易逐字节相同:目标为官方 Pass 合约,发送钱包为主钱包,参数顺序为 allowance、deadline、signature,累计 allowance 为 4,deadline 使用秒,签名为 65 字节,转账 value 为 0。这证明本次编码与已成功交易一致;不能据此宣称取得新 voucher 后的完整自动流程已跑通。
两次诊断登录各调用一次验证码服务,没有签名或广播链上交易;服务和交易状态文件均保持不变。本轮两项真实 HTTP 格式回归测试通过。当前账户已领取完,修复后仍缺少“真实官网签发有效 voucher → 主钱包自动领取上链”的完整实测。
下一次必须补上的验收
更深的根因是验收没有覆盖最后一个外部依赖。离线逻辑测试、网页源码对照和临时替换 signer 的合约模拟分别验证了局部行为,无法替代“部署的 HTTP 客户端 + 真实登录会话 + 官网签发 + 实际领取”的联调。Geth 的 state override 只临时改变模拟状态。Geth state override 文档
下次上线前必须分别记录四类证据:源码合同已核对、真实客户端报文已验证、真实登录接口已联调、有效 voucher 到链上领取已验收。重点对比最终请求的路径、方法、Cookie、Content-Type 和正文,区分空正文、空 JSON 对象和表单请求;客户端或依赖升级后重新验证。原始 Cookie、私钥及可用签名不能进入普通日志。
只有前几项通过时,交付结论就必须明确列出尚未验证的领取步骤。没有测试档案、测试环境或有效领取窗口时,应保留人工接管,把这一项标为未验证;单测数量、合约模拟成功或非 415 响应不能代替完整验收。上线判断由负责实现和检查的 Codex 提供证据,不能把漏检责任留给用户在开盘时发现。
另一个问题是可观察性不足。现有日志能说明交入和异常发生了什么,却没有细分首次检测 open、各次 preflight、积分可兑换、voucher 请求完成、领取签名、广播开始与回执到达的时间。最后一笔交入至领取相隔 169 秒,但不能把这 169 秒全部归因于 415;其中还可能包括官网处理和用户响应,缺少我们的 voucher 最早可用时间。
代码也暴露出一个待测的性能问题:整批广播前和每个钱包广播前都会运行领取可行性检查,重复读取 RH 状态、nonce、余额及官网会话。服务器日志中的 RH 预热延迟曾在约 0.1–1.5 秒之间,而当前只有一个 RH 节点。因此这些检查可能延长关键路径。没有分阶段耗时,无法断言具体浪费了多少秒,更不能简单删除预算、nonce 或库存检查来换速度。
异常分类和告警需要改进。415 这类确定的请求格式错误没有必要无限重试,但交入已成功后,进程停止应立即明确报告“交入完成、领取未完成、需接管”。单纯配置 Restart=always 会再次触发登录与外部费用,也不会修好报文问题。
5. 投入与产出是否合理
链上可直接计算的执行成本如下,按回执 gasUsed × effectiveGasPrice 计算,使用原生币计价:
| 项目 | 实际费用 |
|---|---|
| 三笔提前授权 | 0.01410512741892 APE |
| 三笔 Deng 交入 | 0.12433096786584 APE |
| ApeChain 执行费用合计 | 0.13843609528476 APE |
| 用户手动 RH 领取 | 0.00000198737319 ETH |
| 每张 Pass 分摊的 Ape 执行费用 | 0.03460902382119 APE |
三笔交入的实际 gas 分别为 459274、260246、503214,均低于配置上限;手动领取实际 gas 为 99319。没有因为 gas 不足出现链上失败,本次 gas 配置在实际交易中够用。2 APE 总上限约使用了 6.92%,0.005 ETH 上限也远高于手动领取实际费用。用户转入钱包的剩余 gas 余额属于资产,不应记为已经消耗的成本。
但这不是完整项目成本。还缺少 16 个 Deng 的取得成本与交入后的机会成本、验证码实际扣费总账、节点及服务器费用、补币及跨链费用、人工和开发工时,以及 4 张 Pass 的可兑现价值和后续收益。不能仅凭 gas 很低判断整个项目盈利,也不能把 16 个交入 NFT 的经济成本当作零。
只看已确认的执行费用和拿到 4 张的数量目标,投入受控、结果可接受。按无人值守的工程目标衡量,投入大量检查后仍由人工完成最后一步,测试资源分配并不理想:内部防重发测试较充分,最后的真实 HTTP 报文与签发链路没有得到同等验证。更合理的下一次投入,是补齐高风险外部边界,并把 nonce、预算、恢复框架复用于其他项目,减少一次性适配成本。
6. 同类成熟工程值得借鉴的做法
没有证据可以识别本次领先地址的私有脚本,也没有经核实的同类收益排行榜。因此这里借鉴的是公开项目的工程做法,而不是把某个“抢购神器”当作经过验证的赢家。
Flashbots 的公开 searcher 示例把发现、评估和提交分为不同阶段;其排障文档要求先确认交易能执行,再分析出价、冲突和到达时间,保存模拟与提交记录,并用各阶段时间定位延迟。这个顺序适合本项目:先确保真实领取能完成,再谈降低提交延迟。公开示例、排障方法
ERC-4337 bundler 的文档将模拟失败原因、执行成功率、包含延迟、gas 估计误差与运行状态作为持续监控对象,并提供兼容性测试体系。我们可以学习“兼容性证据”和“运行指标”分开记录:单测通过、真实客户端报文通过、真实接口联调通过、链上业务完成,各有独立状态。监控指标、兼容性测试
这些来源不证明 Flashbots 的 Ethereum 提交通道适用于 ApeChain 或 RH,也不证明 TMF 领先参与者用了这些工具。借鉴的是验证和测量方法;是否采用特定通道,要单独核验目标链支持情况。
7. 更早参与者是怎样完成的
“更早买入”在这里应拆为更早交入 Deng、和更早凭 voucher 领取 Pass。这次讨论的是兑换入口,所分析交易 value 为 0,不是二级市场付款买入。
唯一先于我们交入的地址
地址 0x23dc798d14fdffd4d34344b3df69a26ff5021438 在 01:01:07 的交入交易中,一次提交 16 个 Deng、20.61 积分,发送钱包就是领取档案钱包,linkProof 长度为 0。其提前授权发生在前一天 17:39:47。
我们首笔交入在 01:01:10,晚约 3 秒;全部交入在 01:01:12 完成。我们的 16 个 Deng 在三个钱包,分别传入长度为 8 的关联证明,再把积分合到主钱包。对方只需一笔交入,我们需要三笔,这是已确认的账户结构差异。两方 NFT 和证明内容不同,不能精确将全部 gas 或时间差都分配给“少两个钱包”。
对方使用 type-2 交易,maxFeePerGas 为 203.36552 gwei、maxPriorityFeePerGas 为 0;我们的交入是 type-0、gasPrice 为 203.36552 gwei。两方回执的 effectiveGasPrice 都为 101.68276 gwei。当前证据不支持对方通过支付更高实际 gas 单价领先;type-2 与 type-0 的格式区别也不能单独解释速度优势。
尤其值得注意:这个地址在01:04:24 才领取 4 张,比我们的最终领取晚 23 秒。最早交入并不等于最早拿到 Pass。
更早完成领取的代表样本
以下三个地址都是一次领取 4 张,目标数量与我们更接近;另列最早领取者,用来说明不同积分组合:
| 地址简写 | 交入时间 | 交入 Deng 数 | 领取时间/数量 | 交入至领取 |
|---|---|---|---|---|
| fddc…ae29 | 01:01:34 | 1 | 01:02:02/3 张 | 28 秒 |
| b999…6724 | 01:01:37 | 9 | 01:02:13/4 张 | 36 秒 |
| cbf8…87dc | 01:02:22 | 14 | 01:03:04/4 张 | 42 秒 |
| 1a74…39f8 | 01:02:27 | 14 | 01:03:06/4 张 | 39 秒 |
| 我们:707d…d80b | 最后交入 01:01:12 | 16,三个钱包 | 01:04:01/4 张 | 169 秒 |
领取证据分别为最早领取、b999 的 4 张、cbf8 的 4 张、1a74 的 4 张。
这些样本都直接调用同一 Desk 的 tender,再直接调用同一 Pass 合约的 dengClaim;领取时提供了有效的项目签名 voucher。被选样本的交入发送钱包与档案钱包相同,都是一笔交入。最早领取者一个 Deng 的积分达到 15,另外三个 4 张样本的总积分分别为 20.25、20.20、20.67;我们的积分为 20.64。NFT 组合及账户结构会影响交易数量和执行工作量,但高积分 NFT 的价格与机会成本没有核实,不能建议只为了省 gas 就去买更贵的组合。
我们领取前,这个窗口已有 78 个地址完成 78 笔 Deng 领取,共 297 张。我们在全部领取交易里排第 79;在“此前一次领取恰好 4 张”的可比样本中,只有三个地址比我们早。最早领取者比我们早 119 秒,最早的 4 张样本早 108 秒。多个更晚交入的地址先领取成功,说明最后一段确实能改变最终顺序。
已确认的优势是流程形态较简单,以及在交入后较快完成领取,没有像我们的脚本一样在该次领取链路上停住。链上只能显示他们成功调用了函数,无法显示登录方式、voucher 的获取请求、具体软件、是否预签、RPC 品牌、机器地域、请求并发数或是否手动操作。有效项目签名也不证明参与者一定直接调用了我们所用的官网 API。
合理推测包括:会话事先准备、持续获取 voucher、节点传播较快、减少本地等待。只有自有阶段日志或对方公开说明才能验证这些猜测。没有证据支持“内部接口”“项目白名单”“专线”“MEV 特权”或任何特定抢购工具的结论。
Arbitrum 系的交易顺序还取决于具体链采用的排序策略。官方资料区分到达时间排序和优先费排序等机制;本次没有核实两条链当时的具体配置,因此既不能断言提高 gas 必然排到前面,也不能断言 gas 在所有情况下都不起作用。Arbitrum Sequencer 文档
下一次可以学习减少不必要的交易和依赖,但必须先确认快照归属、关联规则和持仓转移是否允许。不能在快照已固定后,为了模仿单钱包样本就盲目转移 NFT。当前证据支持先优化领取链路,再测量那约 3 秒的交入差距。
8. 改进方向、优先级和下一步行动
| 优先级 | 具体行动 | 验收标准 |
|---|---|---|
| P0 | 保留空 POST 修复,验证每个外部接口实际发出的 HTTP 报文 | 使用部署版本和依赖检查路径、方法、Cookie、Content-Type 与正文;空 voucher POST 无隐式类型;JSON 登录保持正确格式;依赖升级后复验 |
| P0 | 把真实签发及领取联调列为独立门槛 | 真实登录后核对状态码和业务原因;有条件时用授权测试档案或测试环境取得有效 voucher,并完成领取;未取得新 voucher 或未上链就分别标记未验证 |
| P0 | 上线结论附验收证据,由实现及检查方负责 | 分别列出源码、真实报文、登录接口和实际领取的验证状态;缺哪一项明确写哪一项,不因离线测试通过就承诺无人值守完成 |
| P0 | 增加“交入已完成、领取未完成”的即时状态及告警 | 发生 415、认证失效或永久错误时几秒内记录明确原因和接管方式;接管前以主钱包累计领取数检查,避免重复操作 |
| P1 | 给整个流程增加 UTC 与单调时钟耗时 | 分别记录 open 检测、批次检查、每钱包广播、积分/voucher 可用、签名、提交、回执;敏感凭证不进入普通日志 |
| P1 | 合并重复的 RH 与会话检查,并测试领取节点冗余 | 通过短时有效的共享批次检查减少往返;保留 nonce、余额、预算和库存边界;在延迟与断线场景下测量 p50/p95/p99 |
| P1 | 加入恢复与人工接管演练 | 一个钱包交入后退出、回执未知、voucher 暂不可用、用户先手动领取等场景下,不新增重复 nonce,不重复交入 |
| P2 | 优化 NFT 组合、钱包数量及领取策略 | 按项目规则验证归属和证明,比较总成本;是否分批领取由业务目标决定,并评估额外 gas、nonce 和库存风险 |
| P2 | 固化版本和成本台账 | 修复进入 Git,服务器文件哈希与版本对应;记录节点、验证码、工时与 NFT 成本,复盘时可算完整投入 |
真实 voucher 联调不能通过强行再次领取已经领取完的 4 张来完成。当前账户的目标已经达成,应保持服务停止,使用测试档案、项目测试环境或下一次有明确授权的有效领取窗口验收。
下一次上线前,应先列出完整流程和无法提前验证的条件,使用部署版本做真实 HTTP 报文测试及登录接口联调,再验证有效 voucher、合约模拟与故障恢复。开盘前冻结版本、预热两链和官网会话、确认余额与 nonce;运行中分别展示“交入完成”和“领取完成”,以最终 NFT 铸造及累计领取数作为成功判据。
目前空 POST 修复已部署且测试通过,真实登录后的业务响应和成功交易的 calldata 编码也已核对;但仍未完成新 voucher 签发到自动领取的真实验收,最新修复尚未形成新的 Git 提交。服务已停止、开机自启已取消,自动监控暂停。本次补充复查有两次验证码服务调用,其实际扣费尚未查账;没有启动服务或发送新链上交易。
这次留下的可复用经验是:内部逻辑正确、参数一致、费用充足和交入靠前,都不能代替最后一个外部依赖的验证。把最终领取链路跑通、把失败立即暴露、把每段耗时测出来,才能在下一次项目中同时提高可靠性与速度。