EIP-8360: TCREATE Opcode

Discussion topic for EIP-8360

Abstract

This EIP introduces a new EVM opcode, TCREATE, where T stands for transient, providing an official, gas-efficient, and state-aware mechanism for deploying temporary contracts.

Can a contract deployed via TCREATE execute a regular CREATE?

As written, it seems yes, since all other opcodes retain normal behavior. In that case, the transient contract’s nonce would increase during execution, but be deleted at the end of the transaction.

This creates a problem across transactions:

  1. TCREATE deploys contract A with nonce 0.

  2. A uses CREATE, deploying child B from nonce 0.

  3. A’s nonce is removed at transaction end.

  4. A is deployed again later and starts from nonce 0.

  5. Its next CREATE derives B’s address again and collides under EIP-684.

This would make persistent CREATE deployments from a reusable transient address unreliable. Should CREATE/CREATE2 be prohibited inside TCREATE contracts, or should their children also be transient?

That has been considered. In fact, TCREATE is the cost-effective version of the CREATE2/SELFDESTRUCT combination, and its issues are expected to be similar. Deploying to a target address already has code forbidden by EIP-684 means there is no risk if CREATE deployments are made via temporary contracts. If you use the TCREATE/CREATE combination for contract deployment, it is essentially the CREATE3 model currently in use.