一个地址多条流水线:EIP-8250 给帧交易拆出多套 Nonce 序号 图 1
一个地址多条流水线:EIP-8250 给帧交易拆出多套 Nonce 序号 · 图 1

一个账户一条队伍的老问题

以太坊给每个发交易的外部账户记一个 nonce:发一笔加一,交易必须按序号排队进块。这套设计的确定性极好——同一序号只能成交一次,重放自然失效——但代价是所有交易共用一条传送带:钱包想并行发三笔就得先给它们排好 0、1、2 三个号,任何一笔卡住,后面的全部等待。序号读法与排查在 latest和pending Nonce差在哪?以太坊Nonce不连续怎么排查? 里讲过,本文关心的是 2026 年有人想把这条单行传送带改成分流匝道。

一个地址多条流水线:EIP-8250 给帧交易拆出多套 Nonce 序号 图 2
一个地址多条流水线:EIP-8250 给帧交易拆出多套 Nonce 序号 · 图 2

帧交易与这份增量提案

EIP-8250 于 2026 年 4 月 16 日提交,作者名单里有 Vitalik Buterin 等多人,状态是 Draft(草案)。它不是从零造机制,而是给 EIP-8141 帧交易打的一块补丁:帧交易把一笔交易拆成若干逻辑帧并集中携带签名,本栏目此前在 先把哈希交上去再亮内容:EIP-8209 帧交易的防抢跑排法 里介绍过这个家族。8250 要改的只有一处——把帧交易负载里的单一 nonce 字段换成两个连续字段:nonce_keysnonce_seq

键控 Nonce 的结构

规范给这套结构定了明确的骨架。nonce_keys 是一串严格递增的 uint256,最少 1 个、最多 16 个;nonce_seq 是 uint64,上限 2 的 64 次方减 1。全零键 [0] 是保留值且只能单独出现:它沿用账户的老 nonce,等价于历史行为。任何非零键则指向由系统合约管理的独立序列,提案为此预留了地址 0x000000000000000000000000000000008250,并给它配了一段调用即回退的字节码——这个地址不是给你转账的,任何普通调用都会立刻回退。规范还专门叮嘱:选这个地址的前提是激活网络在那一刻该地址上没有代码和存储,否则必须换一个。解码器要拒绝一切非规范编码:键列表不是严格递增、键值为 0 却没独占列表、数值不是最小长度 RLP 整数,统统无效。

为什么隐私场景最需要它

提案摘要点名的受益者是隐私应用:一类协议想让许多用户共用同一个发件地址发消息,账户抽象与批量场景里这很常见。问题是共享 nonce 会把所有人的交易塞进同一条序列——两个用户的交易被迫互相排队,而且序号本身泄漏了共享地址上别人的活动节奏。键控 nonce 让不同用户挂到不同的 key 上:只要两笔交易的非零键集合不重叠,它们就在重放保护上互不相干,可以并行签发并行入块,序号也不再替别人报数。这等于把重放保护从身份级细化到了子通道级。

新键的账要怎么付

每条新序列都是要落进状态里的心智税。提案的做法是复用状态气价框架:首次启用一个非零键时,按状态字节数收取一次性开销——按其引用的 EIP-8037 当时的参数(每次状态写入 64 字节、每字节 1530),折合约 97920 的状态气费;nonce_keysnonce_seq 本身的编码也按普通交易数据计价,与帧数据、签名数据同一套算法。这是对共享 nonce 公平性的补票:老 nonce 免费搭了账户字段的车,十几路并行序列占用的协调与状态成本必须显式标价。

读这份草案的三个提醒

第一,状态词是 Draft:帧交易一族仍在快速演进,8250 的每个参数都可能随母提案改写,别把 97920 这类派生数字当长期常数引用。第二,它改的是帧交易负载,普通 1559 交易、钱包里的发送行为完全不受影响——你今天钱包里那个自动递增的序号在可见未来仍是唯一现实。第三,这类多序列思路并不新:比特币的支付通道、Solana 的 durable nonce 都在解决同一条单行队列的不同侧面,横向比较时记住各家保护的对象不同——以太坊保护的是同一账户内不重复执行,键控版本保护的是同一账户内多条通道各自不重复。

风险提示:本文为提案解读,不构成投资建议;文中机制均为草案内容,未在主网生效,请以官方仓库最新文本为准。