What a Signature Can See · 签名能看见什么

附录 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
整单钉死〔请客〕
② NONE
钱去哪随便〔空白支票〕
③ SINGLE
只认我那行收款
只看我 ○●(+ANYONECANPAY) ④ ALL|AC
众筹
⑤ NONE|AC
最松
⑥ SINGLE|AC
铭文原子交换

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

一句一种:

哪一关玩的是哪一格:

为什么"进"只有 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 两桌按出一模一样的手印卡 看不见的,永远管不着

六、待补(成书时)


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

Part of What a Signature Can See · try the interactive playground.