# 一步模型（One-step Model）— 实例：TapeoutLLM

**命名（用户 2026-09-14）**：本项目的一步模型语言模型统一叫 **TapeoutLLM**；"一步模型"是形态，TapeoutLLM 是这个形态的第一个实例（字符级、纯组合、烧在 TapeOut CPU 上）。

**主信息**：一步模型是**能被区块链共识直接执行的最小认知单元**——一个纯组合网表，输入进去、每个门求值一次、输出出来，没有循环、没有状态、没有第二次机会。它的价格严格等于门数，它的结果任何节点都能重放，它同时是链上的合约字节和硅片上的门。2026-09-14 的第一个实物：37,334 NAND 的字符预测器，held-out top-1 0.426（trigram 0.371），在 1,111,508 个上下文上与参考逐位一致；带网表内采样的 21,208 NAND 版本（0.380）能在一笔 BSC 交易内烧录并执行，本地官方 CPU 字节码实测每 NAND 步 2,293 gas、烧 2,923 gas。

**关联上下文**：TapeOut 上一次 `step()` = 一笔交易 = 一次完整求值，计费 52k + 1,921·NAND + 6,705·LATCH（拟合，校准到 632 NAND）。深度免费、输入走 calldata 几乎免费、latch 每步收费。区块上限约 29,800 NAND。Blonskr 的 BNN 元件（08/23）绕开网表用 Solidity 直算，说明网表解释的成本墙是真实的；一步模型是正面回答这堵墙的方式。

**下一步判断**：先烧 1.9k 采样锚点（≈5.7M gas）再烧 g44 贪心版（57.2M）或 s41 采样版（58.7M）到自建 CPU 并存证；用原版 difflogic 检验"电路能否被训练出来"（tp-2ea.15）；然后给它加可塑状态，让它活起来。

## 1 · 定义

一个一步模型 M 是一个布尔函数 f: {0,1}^nIn → {0,1}^nOut，以 TapeOut 官方编码（7 字节 NAND 记录，last_outs）给出，满足：
- **无状态**：nLatch = 0；同一输入永远同一输出。
- **一步**：一次 `step()` 完成全部计算；工作量 = 记录数。
- **可执行**：记录数 ≤ 单笔交易能负担的门数（当前 BSC 约 29,800），或在 v2 级别以 `eth_call` 证明可达。
- **学来的**：f 的结构由数据决定（统计表、可微逻辑门网络、进化），不是手写。

不是一步模型的：带 latch 的多步机器（那是"容器"或"裁判"）、链下执行链上验证的模型（那是乐观结算或 zk）、手写的固定逻辑（那是电路）。

## 2 · 为什么它是链上推理的理想形态

| 链的计费特点 | 一步模型怎么利用 |
|---|---|
| 门数计费、深度免费 | 可以任意深，只要门少 |
| calldata 每字节 16 gas | 上下文可以很宽（192 位 ≈ 8 个门的价钱） |
| latch 每步 6,705 gas | 干脆没有 latch |
| 每步固定 52k | 只付一次 |
| 每笔交易有上限 | 定义了"足够多门"的现役边界，链进化会推高它 |

同一份网表既是合约里的字节也是硅片上的门（tt/ 流程已证明可出 GDS）：芯片跑快路径，链做裁判，中间不需要翻译。

## 3 · 它不是什么

- 不是缩小的 LLM。对话/编程需要 10⁹–10¹⁰ 门，比区块上限大 10⁵ 倍，链怎么进化都填不平；那两件事走乐观结算或 zk"一步验证"。
- 不是查表。v0 恰好用 n-gram 表实现，但定义只要求"学来的布尔函数"；difflogic 训出的网络、进化出的网表都算。
- 不是智能本身。它是反射弧；智能在它外面的三个循环里——环境每 tick 给新输入和纠正、可塑状态让同一具身体偏移、谱系让身体被替换。

## 4 · 台阶（2026-09-14 10:54Z，abc 再综合后；每档在 111,508 held-out + 50,000 随机输入上与参考 0 位差）

| 级 | 门数 | 状态 | 证明什么 |
|---|---|---|---|
| 4k → 1.9k | 1,935 NAND（采样） | 0.314，步 ≈4.4M、烧 ≈5.7M | 一步推理在链上真实成立，便宜 |
| **最佳贪心 g44** | **19,567 NAND**，nIn 192 | **0.434**，烧 57.2M（0.84 区块）、步 44.9M（0.66） | 现役链一笔可烧可跑的最强一步模型 |
| **最佳采样 s41** | **20,073 NAND**，nIn 200 | **0.411**，烧 58.7M、步 46.0M | 同上，生成不循环 |
| 旧 v0 贪心 | 37,334 → 17,905 NAND | 0.426 | 再综合把"烧不进一笔"的边界证明为旧编译器的产物，不是 ISA 的 |
| **v2 · 61.6k** | **61,646 NAND**（11,565 条规则再综合） | **0.4985**；本地放宽上限的官方 CPU 实测：烧 183.2M、步 187.1M gas（各 2.7 个区块） | **一步可达性与门数无关；唯一的限制是链的 68.4M 区块上限，这是链进化的问题** |
| **v3 · 64.6k** | **64,596 NAND** (12,337 rules, abc re-synth) | **0.5002** (bit acc 0.7842); local measurement running (452 kB burn) | v2 +772 rules: the last verified point before the 10^5 push |
| **v2 to 10^5 direction** | 40,000-rule budget | saturated at 12,337 rules (candidate pool at min-support 5) = the v3 row above | to reach 10^5 NAND, lower min-support again and accept a longer local burn |
| DLGN | 同门数 | 原版 difflogic 纯 Python 2k–14k 门只到 0.15–0.16 | 该规模下查表比可微逻辑门好 2 倍以上；"电路能被训练"尚未证明 |

计费：本地官方 CPU 字节码实测，每 NAND 步 2,293 gas、烧 2,923 gas；区块 68,444,479。

## 5 · 通向活体

一步模型 + 几十位可塑状态 + 链自带的自监督任务（预测下一区块的若干位）+ 追加式生长与谱系合约 = 能感知、预测、被纠正、繁殖的链上实体。一步模型是它的身体；这份文档只定义身体。

## 6 · 证据

`onestep_lm/`：SPEC.md、REPORT.md、ONESTEP.md、netlist_v0_4k.json、netlist_v1_23k.json、netlist_v1_29k.json、netlist_v0.json、verify_*.json、curve.json、local_cpu_gas.{py,json}、reachability.json、LM_BURN_KIT.md + burn_calldata/、index.html（build_demo.py 生成）。
