在区块链浏览器里点开两笔以太坊交易,你可能同时看到两种面貌:一种字段列表里只有 nonce、gas price、to、value、data、v/r/s;另一种多了 max fee per gas、max priority fee per gas、access list 或者 max fee per blob gas。钱包和节点不会凭字段猜类型,它们看的是交易二进制负载的第一个字节。这一篇把这条演进线从头到尾串一遍。
起点:没有类型号的裸列表
以太坊最初的交易就是一段 RLP 编码的字段序列,没有版本也没有标签。这在协议早期不是问题,但带来了两个后果:任何字段扩展都必须靠”在列表尾部追加”来实现,老节点遇到更长的列表可以选择忽略尾部,这本身脆弱;而节点无法在不完整解析的前提下快速判断”这条消息我会不会处理”,只能先解码再发现字段数不对。
EIP-2718 提出的类型化交易信封(Typed Transaction Envelope)解决的就是这个:把交易定义成一个字节字符串,首字节是类型号(取值 0 到 127 之间的一段),后面才是这条交易自己的 RLP 负载。对交易做哈希或签名时,被签的对象是”类型号加上负载”这一段整体,也就是说类型号参与签名,攻击者不能通过换头来篡改语义。这条规则看似平淡,实则是后续所有费用模型改造能共存的地基。

五个类型号
0 号就是传统交易,等价于历史格式,用于兼容。协议文档里它被描述为向后兼容的路径,钱包在发送老格式时可以不带前缀,节点内部把它归到 0 号处理。
1 号对应 EIP-2930 引入的可选访问列表(access list),在 Berlin 升级相关阶段落地。它允许交易在发送时声明”我接下来会读哪些账户与存储槽”,节点据此提前把它们变成热数据,减少冷访问的 gas 支出。这是第一次在交易体里塞进与执行效率直接相关的结构,也验证了”加类型、不动老类型”这条路走得通。
2 号是 EIP-1559 的动态费交易,把 gas price 拆成两个上限:一个是可以被销毁的基础费上限,另一个是给出块者的优先费上限。实际燃烧额由协议按区块拥挤程度自动决定的基础费决定,发送者填的是天花板而不是成交价,多出的部分不燃烧也不给验证者。这是普通用户能直接感知到的一次改动——钱包从”猜一个价格”变成”估两个上限”。
3 号是 EIP-4844 的分片 blob 交易,多了一种要验证的负载形态:附属数据块(blob)。链上不会把 blob 内容永久存着,执行层交易本身只是通过带承诺的方式引用它们,费用也单独用一条市场曲线定价。这类交易的字段里因此多了 blob 费用上限与承诺列表。
4 号是 EIP-7702 的代码授权交易,它让一个普通外部账户在这一笔交易里声明”把某个地址的代码临时挂到我身上执行”,从而在不迁移资产的前提下获得部分脚本能力。它的字段重点是授权列表:链上、地址、 nonce 与签名的组合。需要强调的是,这条规则的落地依赖具体升级是否在你的链上生效,各条以太坊兼容链采用的时间与范围并不一致。
读一笔交易时,类型号改变了什么
对区块浏览器和索引服务来说,类型号意味着解析函数需要分派,字段不再能假定齐全。对钱包来说,类型号决定签名模板:签的是哪串字节,一旦选错就直接导致签名无效或恢复出错误地址。对节点来说,类型号是策略闸门——收到自己不认识的更高类型时,节点有明确的处理规则,不会像早期那样先解一半再报错。
一个实际影响经常被提起:类型 2 普及之后,链上交易里同时出现新老两种格式,费率估算器看到的历史样本被切成两段。老式交易的 gas price 是个数,新式交易则有两个上限和一条动态基准,粗心地用”平均值”跨类型聚合,会把用户的出价意愿算错。这也是为什么靠谱的钱包在解释费用时会分链、分升级阶段处理,而不是一条曲线通吃。
为什么演进要靠类型号而不是字段追加
把协议演化写成”字段往后加”的代价在别的系统里看过很多次:每个实现要用不同轮次的字段长度判断版本,边界条件成倍增加。类型号方案让每一次语义变化都变成一个新的、自包含的解析分支,节点可以渐进支持,网络可以长期共存。它的成本是每个新特性都要重新写一次序列化、签名哈希与交易池准入规则,这是一份实打实的工程账,只是这笔账付在一个地方比散落在几十处更便宜。
常见误区
第一,把类型号当成版本号。类型号描述的是交易的结构语义,不是协议版本;同一轮升级里可能同时允许多种类型。第二,以为换类型就能少付钱。类型只决定字段集合与费用结构的一部分,实际扣费仍由执行消耗与当时的市场基准决定。第三,忽视兼容链差异。有些以太坊兼容链只支持到某个类型,硬发高类型交易会被拒绝或被按另一种规则处理,具体支持范围要看该链的文档。
快速算术
把五类交易排成一条时间线看:从只有列表的老格式,到加访问列表、加双上限、加 blob 字段、加授权列表,每一次都是”字段变多、签名对象变长”。这也是签名安全的前提——任何想让交易意义改变的字段,都被要求出现在被签的字节里,否则就等于给篡改留了后门。
风险提示
不同链对交易类型的支持范围与激活时间不同,发送前应以目标链文档和自身钱包的实际行为为准。本文不构成投资建议,不构成任何链上资产价值的判断。
风险提示:本文只描述公开技术机制,不构成任何投资建议。数字资产价格可能剧烈波动。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。