As was previously announced during the Gingerbread hardfork, two TX types were deprecated - Celo Legacy Type 0 TXs and CIP-42.
This post gives some context on why it was done and contains a call to action for dApp developers for migrating to one of the non-deprecated types.
What is Celo Legacy TX type
Legacy Celo Legacy Type 0 TXs is the oldest TX type, incompatible with Ethereum tooling. It was the only available type at the Mainnet Launch.
About a year later, in CIP-35 we added Ethereum-compatible transactions support and, finally, in CIP-42 EIP-2718 Envelope TXs were added removing the last use case for the original Ethereum-incompatible type. That’s why we made a decision not to migrate it to CEL2.
What it means for you
If you’re still using the Celo Legacy Type 0 transactions, please migrate to one of the supported types.
If you’re not paying for gas with ERC-20 tokens (cStables, USDC etc), consider migrating to EIP-1559 Type 2 or Ethereum-compatible legacy Type 0 TXs.
If you’re paying for gas with ERC-20 tokens, please use CIP-64-style TXs.
Our client libraries already implement this behavior. viem has been following this logic from the beginning, ContractKit follows the same behavior by default starting with version 8.0.0.
How to check if I’m affected
If you’re using versions of ContractKit prior to 8.0.0
there is a chance that you’re using Celo Legacy transactions.
You can check type
and ethCompatible
fields in the RPC response of the eth_getTransactionByHash
method for your transaction. If type
is 0x0
and ethCompatible
is false
, it means that you’re using Celo Legacy Type 0 transactions and need to migrate.
curl -s -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x669f7704413672f348b1a70b095ec64bea3d201214849007a180e22ae9b2498b"],"id":1}' "<https://forno.celo.org>"
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"hash": "0x669f7704413672f348b1a70b095ec64bea3d201214849007a180e22ae9b2498b",
"blockHash": "0x49f734d16553c13d079fb92c603b5bc28b4686ab39f130b30a4a147e927ea87a",
...
**"ethCompatible": false**
}
}
For more information on supported types, see our explainer. If you have any questions or concerns, I’m happy to address them here!