Each Ethereum upgrade has introduced new transaction types for new capabilities: EIP-1559 for priority fees, EIP-4844 for blobs, and EIP-7702 for authorizations. Both EIP-4844 and EIP-7702 extend and reuse mostly the fields from EIP-1559, yet each required an entirely new transaction type. This leads to combinatorial growth: new features cannot be combined across types. This EIP proposes a single extensible transaction format where new capabilities are added as typed capabilities, allowing future enhancements without new transaction types.
I don’t think we should call this “combinatorial growth”: Ethereum has always added 1 transaction type at a time, so it is linear growth. Combinatorial suggests that the factorial operator is at play.
The current practice here is that each new transaction type has all the fields of the previous one, and it’s trivial to set them to a neutral value in order to disable the functionality. The one exception is EIP-4844 transactions, which branch off from EIP-1559 because blob posters are highly specialized entities that won’t need to post delegations or get sponsorship. (my interpretation)
By contrast, code that implements capabilities according to this EIP could exhibit state explosion since any combination of capabilities could be present, meaning a lot of branching and variables are required to track what’s actually in the transaction. As such I think this argument is misplaced and a simpler, dumber design would actually be safer.
Transaction sponsorship — where a third party pays gas on behalf of the sender — has been a long-sought feature. EIP-8141 proposes a powerful but complex solution using execution frames, new opcodes (APPROVE, TXPARAMLOAD), and per-frame gas budgets. This complexity raises the implementation burden on all clients and increases the attack surface.
If we are talking solely about an EOA serving as the sponsor, this EIP successfully provides gas sponsorship. However, in EIP-8141 and ERC-4337, the sponsor should be able to be a paymaster contract that e.g. swaps tokens for ETH on demand. See 💰 Paymasters - ERC-4337 Documentation. It’s not clear that this EIP helps a lot with implementing such flows.
Let’s say we are the sponsor and we want to get reimbursed atomically onchain: we should examine transactions that senders submit to us and sign them only if we expect them to reimburse us when executed. However, since there’s presumably only one “frame” in the transaction which is a call from the sender to their intended smart contract, senders can’t really build their transactions in such a way that we also get paid. By contrast, ERC-4337, possibly combined with EIP-7702, already enable this flow in production today. So does EIP-8141.
Let’s say instead we don’t require atomic payment because the user paid in advance. In that case, we could use EIP-7702 to upgrade the user’s EOA, and then have the sponsor account initiate the transaction directly. This is something AA providers already do today without this EIP.
Could it be that the real benefit of this EIP to enable native support for different signature types, with Ed25519 as a first example? I don’t want to assume your intentions but that seems like that’s the best argument for adopting it.