1986 年 Fiat 与 Shamir 给出一个通用手法:用哈希函数代替验证者掷骰子,让交互证明变成一次发完的非交互证明。今天的 Schnorr 签名、多数零知识证明系统都靠它落地。本文解释它换掉了什么、随机预言假设的真实含义,以及“在 ROM 里安全”与“现实中安全”之间已知的裂缝。
1986 年 Fiat 与 Shamir 给出一个通用手法:用哈希函数代替验证者掷骰子,让交互证明变成一次发完的非交互证明。今天的 Schnorr 签名、多数零知识证明系统都靠它落地。本文解释它换掉了什么、随机预言假设的真实含义,以及“在 ROM 里安全”与“现实中安全”之间已知的裂缝。
以太坊每个执行层区块都带一个 20 字节的 feeRecipient 地址,决定这一块的优先费和 MEV 收益打给谁;它由验证者本人事先声明、由区块构建者填进提案,填错不会让区块失效,只会让收益进别人口袋。本文拆解字段归属、声明与填充的两段链路、常见翻车场景与自查方法。
比特币的 OP_CHECKMULTISIG 有个出生自带的怪癖:要多弹一个栈上哑元素,里面装什么是自由变量,任何人都能改动它而不影响签名有效性。2016 年的 BIP147 用软分叉规定这个哑元素必须是空字节,从共识层拆掉这条可延展通道。本文还原缺陷来源、哑元素为什么会泄哈希、隔离见证时代为什么仍要补这一刀。
BIP114 把一笔输出的多条解锁条件组织成默克尔树:链上只承诺一个根哈希,花币时揭示所用分支加哈希路径,其余条件不上链。本文按体积账、隐私账、计费账拆解 MAST 默克尔化抽象语法树的机制,讲清单元素五百二十字节等脚本上限怎么逼出这套设计,BIP114 为何关闭,以及 Taproot 与 Graftroot 各自接过了哪一半。
EIP-161 之前有一小批合约留下了 nonce 为零、代码为零但存储非空的地址,各客户端对能否往这种地址部署一度各有实现。EIP-7610 把口径统一到最保守一边:任何创建遇到非零 nonce、非零代码或非空存储即整体回滚。本文复盘三不像账户的成因、四类创建路径的统一规则,以及为什么选择回滚而不是重置。
比特币核心把节点学到的对端地址记进内存地址管理器并周期性落盘到数据目录的 peers.dat,重启后优先从验证过的 tried 表重连。本文拆解 new 与 tried 两级结构、网段分桶防污染、文件损坏与陈旧的表现,以及它和封禁名单、DNS 种子的分工。
默认 SIGHASH 把签名焊死在它引用的前序输出上,通道每更新一代就得为每笔历史状态预签惩罚交易。BIP118 提议把前序引用移出签名哈希承诺,让同一份签名可以合法附着在结构相同、资金来源不同的交易上,为 eltoo 的无状态通道更新铺路。本文拆解承诺清单的构成、松绑后 eltoo 的链上两步对抗、协议自身的纪律要求,以及它停在草案状态的现实原因。
Equihash 是 2016 年 NDSS 发表的内存绑定工作量证明算法,基于广义生日问题找哈希碰撞解,靠参数 n、k、d 控制难度与内存开销,曾被 Zcash 等新币种采用。本文拆解它解方程找解的验证模型、内存-时间权衡怎么挡住专用芯片的流水线优势,以及参数换代与 ASIC 落地后的现实走向。
go-ethereum 的 syncmode 有 snap 与 full 两档,默认值是 snap。快照同步不再逐块重放历史交易,而是向网络索取一段段连续的状态数据,在本地重建默克尔树,只在接近链尖时才回退到逐块执行。本文拆解两种模式的成本结构、快照为什么必须先造一次、以及节点停在快照阶段时的排查顺序。
多签 P2SH 的重建脚本原本不要求公钥顺序,n 个密钥就有 n 的全排列级脚本变体:同一份 m 加 n 配置能开出多个合法地址,钱包之间还互相认不出对方。BIP67 规定公钥按字典序升序排列来定死唯一脚本。本文拆解排列爆炸的地址后果、排序约定的具体规则,以及隔离见证时代它的新角色。