用 BLS 签一笔转账会怎样:EIP-7591 的新交易类型与签名账 图 1
用 BLS 签一笔转账会怎样:EIP-7591 的新交易类型与签名账 · 图 1

每笔交易各验各的签,是笔糊涂账吗

以太坊每笔交易带一个 secp256k1 签名,约 65 字节,节点验证也是一笔验一次。这个模式运行了十年,没人觉得贵——直到有人算了另一笔账:信标链早就在用 BLS 签名,几千个签名能聚合成 96 字节一起验。那么执行层的交易签名为什么不换成同一套?2024 年 1 月 10 日,客户端开发者 Marius van der Wijden 把答案的一部分写成 EIP-7591:新增一种用 BLS 签名封装的交易类型。BLS 聚合的机制本体在 BLS 聚合签名是什么?几千个签名怎么压成一个 里讲透,本文算的是把它搬进交易格式之后的收支表。提案停在 Stagnant(停滞)。

用 BLS 签一笔转账会怎样:EIP-7591 的新交易类型与签名账 图 2
用 BLS 签一笔转账会怎样:EIP-7591 的新交易类型与签名账 · 图 2

交易格式怎么改

提案给新交易分配的类型常量是 BLS_TX_TYPE = 0x04,负载按 rlp 列表排布:链号、nonce、最大优先费、最大总费、gas 上限、收件人、金额、数据、访问列表,再加两个新面孔——sender 直接放 BLS 公钥,signature 放 BLS 签名。账户地址的定义随之改写:地址等于对 sender 公钥做 keccak256 后取前 20 字节,不再经过 secp256k1 公钥那条老路。签名对象是交易类型字节拼上前面全部字段的 keccak256 摘要。改动不止交易:区块头要加一个 aggregated_sig 字段,装下本区块所有 BLS 交易签名的聚合值。也就是说验一块链从逐笔验签变成先验一个聚合值,这是一次牵动区块验证流程的硬分叉,兼容性一节对此毫不含糊。

省下来的字节到底有多少

理由一节的算术诚实得可爱。去掉 ECDSA 签名省 65 字节,但公钥要占 48 字节(BLS 公钥比 secp256k1 的 33 字节长),聚合签名每块再花 96 字节。按每天约 7000 个区块、100 万笔交易、每块约 150 笔交易的估算口径,每块净省 2454 字节——对平均 160KB 的区块来说约 1.5%。作者自己都承认这笔节省算不上丰厚,但两点额外价值让提案值得一写:一是证明交易类型这个插槽能装下新签名算法,二是给未来的抗量子签名探路。同样的探路在 2026 年有了续集:EIP-8197 想把交易体和签名拆开,让换签名算法连新交易类型都不用造,详见 交易体和签名分家:EIP-8197 想让换签名算法不必新造一种交易

那个 0x04 编号的旧账

细节爱好者会立刻发现:0x04 这个类型号在以太坊标准里有别的主人。2021 年 EIP-3534 曾圈占 0x04 做条件交易(停在 Stagnant),而最终把它用掉的是已定稿生效的 EIP-7702——SET_CODE 交易类型的常量正是 0x04。7591 提案文本写作时 7702 尚未定稿,这属于同一编号上的又一次排队未遂。类型号从 0 到 4 的完整争夺史见 从六十四到四:以太坊交易类型号的演进史。读提案考古文时记住这条纪律:某提案写了类型号 X,不等于 X 归它,只看哪个提案真的进了升级。

钱包与节点视角的连锁反应

若这类交易上线,钱包软件要多管一把钥匙:BLS 私钥派生、聚合签名上下文,与现有助记词派生路径是两套逻辑;区块浏览器要给聚合字段做展示与验证入口;交易池要同时接收两种签名族并保持公平计价。这些工程都不是不能做,只是没有紧迫感:聚合验签的收益集中在验证端与全节点带宽,用户端的Gas账单几乎不动,而 secp256k1 的生态惯性——每一代签名库、每一条审计经验、每一套硬件钱包适配——都是迁移成本。这是签名换型提案停在 Stagnant 的结构性原因:收益弥散,成本集中。

值得带走的三个认知

第一,以太坊对签名算法的更换通道是交易类型而不是全局替换:老交易的验证规则永远不变,新算法寄居新类型号,这个模式比 7591 本身活得更久。第二,看任何换签名提案先问三件事:地址定义变不变、验证流程要不要改区块结构、现有地址体系是否兼容——7591 在前两件事上都动了刀。第三,省字节类提案要自己复算:作者给的 1.5% 建立在 2024 年的流量估算上,换签名算法值不值这笔账,每个时代都要重算一遍。

风险提示:本文为提案机制分析,不构成投资建议;文中签名方案均未在主网生效,勿据此调整任何钱包或密钥管理方案。