Transaction Types On Celo L2
Table of Contents
Different categories of transaction types are relevant to Celo. Some are inherited from Ethereum, others were added to support Celo's Fee Abstraction feature, and some older ones have been superseded and are no longer supported. When developing new applications, please use the tx types marked as "recommended" below.
The docs.celo.org page about tx types contains additional information on how to handle different tx types, their differences and tooling support.
Ethereum Compatible Tx Types
To achieve its high level of Ethereum compatibility, Celo supports all Ethereum tx types relevant for an L2. The following transaction types can be used in exactly the same way as on Ethereum and don't require any changes to client libraries or other tooling.
- EIP-1559 (recommended), type 2
- EIP-2930, type 1
- Legacy Ethereum transaction as described in the Ethereum Yellow Paper, type 0
The EIP-4844 tx type 3, which provides blobs for data availability on Ethereum, is not supported.
Celo-Specific Tx Types
The following tx types are an essential part of Celo's Fee Abstraction feature. For more details, read the respective CIPs, linked below, and the Fee Abstraction section.
Older, Unsupported Tx Types
These tx types won't be accepted anymore, but transactions in blocks before the L2 migration can still contain transactions of these types.
- CIP-42, type 124
- Legacy Celo transaction, type 0, but with different fields than the Ethereum legacy tx
Details on Celo Legacy Transactions
For historic reasons, the Celo legacy txs are not prefixed with a tx type number, just like Ethereum legacy txs. To tell these two legacy tx types apart, you have to look at the tx content, which contains additional feeCurrency
, gatewayFeeRecipient
, and gatewayFee
fields for Celo legacy txs:
RLP([nonce, gasPrice, gasLimit, feeCurrency, gatewayFeeRecipient, gatewayFee, recipient, amount, data, v, r, s])
There is no CIP number for this tx type because it was included in version 1 of the Celo blockchain and CIPs only describe changes introduced after that point in time.