# 附录 A · 纸条游戏（动手版）
## 《签名能看见什么》的实体玩具 —— 和孩子一起玩

> **验收标准**：孩子能玩明白，这本书就写成了。
> 这是一套用**纸、剪刀、笔**就能做出来的游戏。一根"交易纸条" + 一个"按手印"的动作，
> 就能把全书的 sighash、covenant、看不见邻座、那堵墙，全玩出来。
> **比喻负责上手，第四节「知识卡」负责教真名字（ALL/NONE/SINGLE…）—— 玩完就学，不全靠比喻。**
> 中文为主（陪孩子玩用），方括号里是书里的学名（成书时英文版照此重画）。

---

## 一、先做零件（一次性，二十分钟手工）

### 零件 1 · 交易纸条 [the transaction strip / sighash preimage]
一根长纸条，从左到右画 **4 个格子**，每格写上大字 + 小图：

```
┌─────────┬──────────────┬──────────────┬─────────┐
│ 📅 第几版 │ 🙋 谁出钱      │ 🎁 钱给谁      │ ⏰ 等多久 │
│ [version]│ [inputs/输入] │ [outputs/输出]│[locktime]│
├─────────┼──────────────┼──────────────┼─────────┤
│   2     │ 小王、小李     │ 给🍜餐厅 8块  │   马上   │
└─────────┴──────────────┴──────────────┴─────────┘
```

> 这根纸条，就是"这笔买卖到底是怎么回事"的全部信息。多做几根空白的。
> **进阶**：🙋和🎁其实都是"一串"（好几个人出钱、好几个地址收钱）。玩到第四节矩阵时，把这两格各画成几行。

### 零件 2 · 硬币卡 [coins / UTXO]
小卡片，画一枚币，写上**有多少钱**、**谁的**，角上留一个回形针口（待会儿夹"纸条"）。

```
┌──────────┐
│  🪙 ×5    │
│  小王的    │
│        📎 │
└──────────┘
```

### 零件 3 · 爸爸的纸条 [covenant / 盟约]
更小的卡片，用回形针夹在硬币卡上。写一句**这枚币只能怎么花**：

```
[普通]   「我只能去 🍜 餐厅」
[递归]   「我只能去 🍜，而且下一手也得夹一张和我一样的条」  ← 第四章那张狠纸条
```

### 零件 4 · 眼罩 [sighash flag 的物理身体]  ★换掉了原来的"盖板"
几张**小布片 / 小窗帘**，刚好蒙住纸条上一个格子。
**按手印时，蒙住"你不看"的格子——蒙住 = 我没看见 = 这格签完还能随便改，我也不赖账。**

> 为什么是"蒙眼"不是"盖章"：这本书叫《签名**能看见什么**》，核心就是"看见"。
> "盖章"在生活里是"我认这个"，跟游戏里"放手"打架；**"蒙眼"才对——看得见的我才认，蒙住的我管不着。**

### 零件 5 · 手印卡 [signature / 签名]  ★全游戏的心脏
一叠空白小卡。签名 = 在这张卡上**抄下你睁眼看见的格子**。底下留一行签名 + 一个手印位（蘸点印泥按个指印最香，孩子最爱这一下）。

```
┌─────────────────────────┐
│ 我认下这几格：             │
│ 📅2 │ 😑 │ 🎁给🍜8块 │ ⏰马上 │   ← 😑 = 这格我当时蒙着，没看
│ ─────────────────────── │
│ 签名：小王  指印：[👍]    │
└─────────────────────────┘
```

### 零件 6 · 碗 [钱池 · the pool]  ★扛起"边际"
中间摆一个**碗**（或画个圈写"💰钱碗"）。硬币卡先**倒进碗里**，账单再从碗里取钱。一进碗，谁的币是谁的就**分不清了**——这只碗，就是"账单只记菜价、不记谁出的"那条**边际**的身体。

---

## 二、核心动作：怎么"按手印" [signing]

这是整套游戏唯一要学会的动作，学会它，后面全是变着花样玩。

**按手印（签名）三步：**
1. **蒙**：把你**不看**的格子，蒙上眼罩。
2. **抄**：把**睁眼看见**的每一格，照原样抄到手印卡上（蒙着的画个 😑）。
3. **按**：写名字，按指印。——这张手印卡，就是你的签名。

**验手印（谁都能验）：**
- 看交易**现在长什么样**，当初蒙住的格继续蒙着、不比；**睁眼看过的格，一格一格对**。
  - 全对 → ✅ **手印有效，这笔买卖算数。**
  - 有一格变了 → ❌ **手印对不上，作废！**（"你赖账！"——孩子最爱抓这个）

> 一句话给孩子：**你按手印认下的，是你当时看得见的那几格。改了你看过的 → 作废；改了你蒙住的 → 你管不着。**

---

## 三、七关游戏（照书的顺序，难度往上爬）

### 🍽️ 第 0 关 · 一顿饭 [第一章]
**摆**：桌上两枚硬币卡（小王🪙×5、小李🪙×3），中间一根纸条，🎁那格写"给🍜餐厅 8块"。
**玩**：要这笔买卖成立，**两个人都得按手印**。少一个手印 → 这单买不成。
**啊哈**：钱不是谁规定怎么动的，是**所有人点头（按手印）才动**。

---

### 🥣 第 0.5 关 · 一个碗 [边际 · 输入池化]
**摆**：小王🪙×5、小李🪙×3，全**倒进中间那个碗**。账单🎁那格写"给🍜 8块"。
**玩**：问孩子——"这道🍜，是谁的钱付的？" 让他从碗里指出来。**指不出来**：五块三块倒一块儿，分不清了。
再问："能在账单上加一行'这道菜必须是小李出的'吗？" 翻遍账单——**没有这一栏**。账单只写"菜多少钱、给谁"，不写"谁出的"。
**啊哈**：**账单的粒度，到"这道菜八块"就到头了；再往细——谁出的——账单上没有，链上也没有。** 钱进了碗，就藏住了自己的来路。
*（钩子：这"分不清"，第 7 关那堵墙会再用一次；而"钱在碗里藏住来路"，是另一个大题目——隐私 / 混币——的种子。）*

---

### 🔍 第 1 关 · 看全单 [第二章 · SIGHASH_ALL]
**玩**：小王按手印时**一格都不蒙**，整根纸条全抄进手印卡。
**捣乱**：趁人不注意，把🎁那格偷偷改成"给隔壁小明 8块"。
**验手印**：手印卡写的是🍜，现在变小明了 → ❌ **抓到！作废。**
**啊哈**：**你把整张单子都看了、都认了，那谁也别想偷改。**

---

### 🙈 第 2 关 · 蒙住一格 [第二章 · ANYONECANPAY / SINGLE]
**玩 A**：小王按手印时**蒙住"🙋谁出钱"那格**（画 😑）。签完，又跑来个小李要一起出钱，往"谁出钱"里加了名字。
**验手印**：那格当初是 😑、本来就没看 → ✅ **照样有效！**
**啊哈**：**你没看"谁出钱"，那别人加进来你当然管不着。**（这就是众筹的玩法。）

**玩 B（吓人的一关，SINGLE 空行 bug）**：让小王把**所有格子都蒙住**去按手印——手印卡上全是 😑，等于按了张**白卡**。
**捣乱**：谁都能照着白卡再按一张一模一样的 → **把小王的钱拿走。**
**啊哈**：**啥都不看就按手印 = 按了张白条，谁都能拿你的钱。** 看得越少，越危险。

---

### 📜 第 3 关 · 爸爸的纸条 [第三章 · covenant]
**摆**：给小王那枚币夹上爸爸的纸条「我只能去 🍜」。
**玩**：想把🎁那格写成"给 🎮 游戏厅" → **纸条管理员**（找个人当裁判）摇头：不行！写"给 🍜" → 通过。
**啊哈**：**这枚币从一进口袋就背着规矩，不是你想去哪就去哪。**

---

### 🔁 第 4 关 · 纸条传给下一手 [第四章 · 递归 / CTV]
**摆**：硬币卡上预先**拓好一个"🎁该长啥样"的手印**（提前把去向抄死在币上）。
**玩**：想花这枚币，你的"🎁钱给谁"那格**必须和币上预拓的手印一模一样**，否则花不动。再夹上递归纸条「下一手也得带我这张条」。
**啊哈**：**爸爸的规矩能一手一手传下去**——钱流到哪，条贴到哪。
*（注意：这一关全程只在"比手印"，根本没按签名手印——对应书里"CTV 靠 hash 对不对，不靠签名"。）*

---

### 🙉 第 5 关 · 你看得见邻座的纸条吗？ [第五章 · ★转折]
**摆**：小王、小李各拿自己的币，**爸爸的纸条扣过来盖住 / 藏到小屏风后面**。规矩：**不许看别人的纸条！** 但中间那张共同账单（🎁钱给谁）大家都看得见。
**玩**：小王想确认"小李这枚币也是干净的、也背着正经纸条" → **他做不到**，因为他看不见小李扣着的那张条。
**啊哈**：**在这个游戏里，你只能看自己的纸条，抬头只看得见中间的账单，看不见邻座手里攥着的条。** ——这就是全书的转折。

---

### ✍️ 第 6 关 · 手抄纸条 [第六章 · CSFS+CAT，手搓内省]
**玩**：既然不许偷看，那就**让小李把自己纸条上的字一句一句念出来、摆一排"抄字卡"在桌上**；小王**照着抄到自己的手印卡上**，自己核对签名对不对。
**啊哈**：**虽然不能直接看，但只要对方肯把内容摆出来，我就能亲手抄一遍、自己验。** ——绕一圈，居然真能核！
*（这就是 CSFS+CAT 的 parity：链上真做过，TxID `2f3451…`。）*
**诚实小提醒**（给大一点的孩子）：小李得把**整张条**都念出来摆桌上，**桌子会很挤**（见证更大）——抄出来的是"一样的效果"，不是凭空长了双能直接看穿的眼睛。

---

### 🧱 第 7 关 · 墙 [第八章 · ★结局，separation 定理]
**玩**：小王想立一条新规矩——**「我的币要花，桌上就必须同时有小李的币也在花」**（共同买单）。他挽起袖子用第 6 关的老办法：让人把字摆桌上、我抄、我验。
**做不出来。** 为什么？让孩子**亲眼看见**：

> 摆**两桌**买卖：A 桌有小李的币，B 桌没有小李的币。**其余一切都一样。**
> 小王按手印，只能抄**他看得见的格子**。可"小李在不在场"这件事，**不在他抄的那几格里**。
> 于是——**两桌按出来的手印卡，长得一模一样！**
> 把两张手印卡并排放给孩子看：**一模一样。**
> 小王分不出哪桌是哪桌 → 他**没法只放行有小李那桌、拦住没小李那桌** → 规矩立不起来。

**啊哈（带着高兴讲，别沮丧）**：**你只能认你看得见的东西；看不见的，你按出来的手印对它毫无反应，所以你永远拿它没办法。** 这不是笨，这是**墙**——而且那个厉害的 CTV 也翻不过这堵墙。
*（两张一模一样的手印卡 = 不可区分 = separation 定理的孩子版，也就是第八章「墙」。）*

**回声**：还记得第 0.5 关那个碗吗？倒进去就分不清谁的钱——那是这堵墙**更早的一块砖**。看不见，有时是因为那东西**压根不在账上**。

---

### 🧒 收尾 · 把尺子给孩子 [第九章]
玩完七关，问孩子一句：**「外面大人吵的，是不是就是'纸条到底能不能写得更细、让我们多看见一点'？」**
能点头，他就拿到了这本书唯一想给的东西——**一把尺子**：碰到任何新玩法，就问"它让签名多看见了什么？因此能多管住什么？"

---

## 四、★ 知识卡：真正的 sighash 矩阵（玩完了，学真名）

玩具是比喻，**底下是真东西**。把刚才玩的，对上比特币里的真名字——这一节别全靠比喻，把知识教到位。

**两个旋钮**（蒙/看 → 真名）：

| 旋钮 | 蒙 / 看（玩具） | 真名（比特币） |
|---|---|---|
| 🙋 进 · 谁出钱 | 都看 / 只看我这份 | 认所有输入 / **ANYONECANPAY** |
| 🎁 出 · 钱给谁 | 都看 / 全蒙 / 只看我那行 | **ALL** / **NONE** / **SINGLE** |

进 **2** 档 × 出 **3** 档 = **6 种**，就是真实 sighash flag 的全部。

**★ 可视化：把旋钮拧进矩阵**（每格自带"看/蒙花样"，一眼看清 6 种怎么来的）

```
图例   ● = 看见（认下，改了作废）     ○ = 蒙住（放手，改了我也认）
       进 = 谁出钱[别人, 我] —— 我永远 ●（蒙不掉自己正在花的那枚币）
       出 = 钱给谁[一串收款行]

   进旋钮 2 档：  ●● 都看   │   ○● 只看我(ANYONECANPAY)
   出旋钮 3 档：  ●●● 都看 ALL │ ○○○ 全蒙 NONE │ ○●○ 只看我那行 SINGLE

   进 = 行，出 = 列，两个旋钮一停，落在哪个交叉格 = 那个 flag。
```

| 进 ↓ ＼ 出 → | 都看 `●●●` **ALL** | 全蒙 `○○○` **NONE** | 只看我那行 `○●○` **SINGLE** |
|---|---|---|---|
| **都看 `●●`**（默认） | **① ALL**<br>整单钉死〔请客〕 | **② NONE**<br>钱去哪随便〔空白支票〕 | **③ SINGLE**<br>只认我那行收款 |
| **只看我 `○●`**（+ANYONECANPAY） | **④ ALL\|AC**<br>**众筹** | **⑤ NONE\|AC**<br>最松 | **⑥ SINGLE\|AC**<br>**铭文原子交换** |

> 读法：每格 = 左边那行的**进花样**（●●或○●）× 上面那列的**出花样**（●●●/○○○/○●○）。
> **拧进旋钮 = 上下换行；拧出旋钮 = 左右换列。** 6 格 = 旋钮所有能停的位置，不多不少——
> 这也是为什么是 **6** 不是随便蒙的 16：旋钮只有几个**档位**，拧不到档与档中间。

**一句一种：**
- **① ALL** — 啥都不蒙：整笔钉死，动一格作废。**日常默认**（请客）。
- **② NONE** — 蒙住"钱给谁"全部：出钱阵容钉死，钱去哪随便。空白支票，危险，少用。
- **③ SINGLE** — 只看对着我那行收款：我那行 + 出钱阵容钉死，别的收款行随便加。⚠️ 没有对着我的那行时 → "按白条" bug（第 2 关玩 B）。
- **④ ALL｜ANYONECANPAY** — 蒙住"还有谁出钱"：别人能凑进来，但目标去向不变。**众筹 / 凑份子**。
- **⑤ NONE｜ANYONECANPAY** — 两头蒙到只剩"我这份"：最松，几乎啥都没认。罕见。
- **⑥ SINGLE｜ANYONECANPAY** — 只看我的货进 + 我的钱出：只锁自己那个角，买家填其余。**铭文原子交换**。

**哪一关玩的是哪一格：**
- 第 1 关 = ① **SIGHASH_ALL**
- 第 2 关玩 A = ④ **ALL｜ANYONECANPAY**（众筹）
- 第 2 关玩 B = ③ **SINGLE** 的空行 bug（按白条）
- （待加）第 8 关 = ⑥ **SINGLE｜ANYONECANPAY**（铭文原子交换；需把🎁拆成多行）

**为什么"进"只有 2 档、"出"却有 3 档？**（进 2 × 出 3 的根因）
你按手印是为了授权"花你这枚币"，手印天生钉在"你这个输入"上——**你不可能一边花这枚币、一边蒙住它说"我不认"**。所以进那头最少也得看"我自己这份"，没有"全蒙输入"这一档，只剩"都看 / 只看我"两档。出那头没这个钉子，所以能多出一档"全蒙"（NONE）。

**两条规律，记住就通：**
1. **越往右下，蒙得越多 = 越松 = 留给别人填的越多**（① 最紧 → ⑤ 最松）。
2. **"只看我那一行"是把两头统一起来的齿轮**：进那头叫 **ANYONECANPAY**（只看我自己，没别的可挑），出那头叫 **SINGLE**（一串收款里挑对着我那行）——⑥ 铭文交换就是**两头同时拨到它**。

> 这张 2×3，就是 Aaron 最早问"sighash 的格子算原创吗"那张矩阵的底座；纸条游戏和论文里那张图，是同一张桌子。

---

## 五、给爸爸的小抄（一页速查）

| 书里的词 | 纸条游戏里的东西 | 一句话 |
| --- | --- | --- |
| sighash 纸带 | **交易纸条**（4 格） | 这笔买卖的全部信息 |
| 边际 / 账单粒度 | **碗**（硬币倒进去分不清） | 账单只记菜价、不记谁出的；细不到那儿 |
| 签名 | **按手印**（抄下看得见的格子） | 你认下了你看见的 |
| sighash flag | **眼罩**（蒙住不看的格） | 你选择看多少；蒙住=放手 |
| SIGHASH_ALL | 一格不蒙 | 整单都认，谁都改不了 |
| ANYONECANPAY | 蒙住"谁出钱" | 别人能加入（众筹） |
| SINGLE | 只看对着我那行收款 | 我那行钉死，别行随便加 |
| NONE | 蒙住"钱给谁"全部 | 钱去哪随便（空白支票） |
| SINGLE 空行 bug | 蒙到没有自己那行 = 按白条 | 啥都不看，钱被拿走 |
| covenant | **爸爸的纸条**（夹币上） | 钱背着规矩 |
| 递归 covenant / CTV | **币上预拓的去向手印** | 规矩传下一手；只比手印不签名 |
| cross-input introspection | **扣过来的邻座纸条** | 看不见邻座的条 |
| CSFS+CAT 手抄 | **念出来 → 抄字卡 → 自己抄进手印卡** | 绕一圈也能核 |
| 铭文原子交换 | **两头都只看自己那一角**（货进+钱出） | SINGLE｜ANYONECANPAY |
| 那堵墙 / separation | **两桌按出一模一样的手印卡** | 看不见的，永远管不着 |

---

## 六、待补（成书时）
- 把上面的纸条 / 硬币 / 眼罩 / 手印卡画成**可直接打印剪裁的一页 PDF**（现在是手绘示意，你今晚先手画就能玩）。
- **🎁 拆成多行 + 加第 8 关「一手交画一手交钱」**（铭文原子交换 = SINGLE｜ANYONECANPAY），把第四节矩阵的 ⑥ 也变成可玩。
- 英文版 Appendix A 照此重画（字段学名已在方括号里给好）。
- 第 4、7 关可拍几张实拍照放进书里，当"小孩都能玩"的证据。

---

*纸条游戏 v0.3 · 2026-06-27 · 眼罩替换盖板 + 增「真矩阵知识卡」+ 旋钮拧进矩阵的可视化（每格自带 ●○ 看/蒙花样）。配套 `MANUSCRIPT_CN.md` 各章。验收线：孩子玩明白 = 写成功。*
