0x0000 到 0xffff 这片地不批建房:EIP-1352 的地址保留带与它没写完的部分 图 1
0x0000 到 0xffff 这片地不批建房:EIP-1352 的地址保留带与它没写完的部分 · 图 1

地址空间的最东头有一片空地

以太坊的地址是 20 字节,能组合出约 2 的 160 次方个格子,随便一个普通钱包地址都落在后半段深邃的随机区。2018 年 7 月 27 日,Alex Beregszaszi 提交 EIP-1352,提议在地址空间最开头圈一块地:从 0x00000000000000000000000000000000000000000x000000000000000000000000000000000000ffff,也就是低 16 位可枚举的那 65536 个地址,整片划给预编译合约和系统合约使用,普通合约不许部署到这里。提案后来停在 Stagnant(停滞),从未激活,但它像一块插在地图上的试桩,标记了协议设计者对地址空间分层的一次认真思考。

0x0000 到 0xffff 这片地不批建房:EIP-1352 的地址保留带与它没写完的部分 图 2
0x0000 到 0xffff 这片地不批建房:EIP-1352 的地址保留带与它没写完的部分 · 图 2

提案正文短到什么程度

1352 的规范部分只有一段:上述地址区间为预编译与系统合约保留。再加一句耐人寻味的免责:由于概率极低且缺乏充分的测试手段,不应加入显式检查去阻止外部签名交易或 CREATE 指令恰好算出保留区里的地址。理由一栏写 N/A,测试用例一栏写 N/A,实现一栏也写 N/A——一连串 N/A 排下来,这份提案在 EIP 史上都算诚实得罕见的半成品。兼容性一节给出的论证是:截至提案时,主网上这些地址上还没有创建过合约,所以圈地不伤及存量。整份文件读下来,你会看到一次没有护栏的边界宣言:它只想把规矩写下来,连执法都不打算做。

这些低地址今天住着谁

圈地的动机并非空穴来风。主网创世起,0x010x0a 一带就住着协议预装的加密车间——恢复公钥的 ecRecover、各类哈希函数、后来的配对曲线检查,每个版本都在往这个街区添新房客,完整清单见 预编译合约是什么?EVM 预装的加密车间清单。再往后,以太坊改进提案里反复出现把治理、分片管理、版本契约这类协议职能放到固定低地址系统合约上的设想。把这些设想叠在一起看,1352 想干的事就是把门牌号靠前的是机构设施、随机分布的是普通住户这条潜规则写进条文:以后谁要实现系统级功能,默认在这里挂牌,而不是各挑各的幸运地址。

为什么连检查都不肯加

那句不加显式检查的免责值得多说两句。CREATE 指令的新地址由创建者地址与 nonce 的哈希算出,外部账户的地址由公钥哈希算出——要让它们恰好撞进前 65536 格,需要的穷举量对 160 位哈希来说低到可以忽略。如果协议为这千万分之一的巧合加一条校验,等于给每笔创建交易都上了一道永远用不上的税,还要回答撞上了怎么办、旧合约怎么迁移这一串没有答案的问题。提案作者选择用最省的方式处理:先立规矩,真出事(几乎不会)再议。这是标准文本里少见的克制,也是它停在 Stagnant 的原因之一——没有任何机制的边界,既不会被生态感知,也不会被工具尊重。

对钱包和工具开发者的余温

1352 没有生效,但按它的划分写工具依然好用:地址的十六进制串去掉 0x 后若前 40 位里有 36 个以上连续零,这个地址大概率不是普通用户账户——可能是预编译、系统契约或早期实验合约,转账界面给这类地址一个不同的图标或提示并不过分。反过来,钓鱼者喜欢伪造的是视觉相似的 vanity 地址,靠的是中段字母游戏,跟低 16 位保留区完全是两回事;看到 0x0000...00ab 这种地址不必条件反射当骗子,它是真实存在的低位地址段。把地址的数值区间、生成方式和视觉形态三件事分开看,是很多地址类误判的解药。

怎么读一份满是 N/A 的提案

提案考古的读法在这里最见功力:先确认状态字段是 Stagnant,不是 Final,别把圈地当法律;再查它提到的地址段现状——哪些预编译确实住着、哪些设想中的系统合约至今没有挂牌;最后评估这种宣言式条文的寿命——没有检查、没有迁移路径、没有激活时间的边界声明,通常要等到第一个真占用该段的功能出现时才会被重新翻出来。那一天如果来了,1352 会被当作先例引用,这大概就是它留在仓库里的唯一使命。

风险提示:本文为协议历史分析,不构成投资建议;向任何地址转账前请以钱包与区块浏览器的实测信息为准,勿凭地址形态推断归属。