In this track: Execution traces and low-level calls
advanced · 4 MIN READ
Contract creation with CREATE
Creation executes initialization code and may return runtime code.
LET’S PICTURE IT
Setting up a new shop runs an opening procedure before normal customer service begins.
SEE IT FOR YOURSELF
A valid counter call, step by stepStep 1 / 4
This example begins with count zero and a request to call increment(). No real contract is deployed.
This example begins with count zero and a request to call increment(). No real contract is deployed.Execution follows the code’s input and permission rules. A website button is not the access-control mechanism.The function reads zero, calculates zero plus one, and writes one to persistent storage.The accepted state contains count one. Later reads can inspect it. Events are emitted only if the code implements them.
Animated local teaching model. No wallet, RPC or live blockchain data. Some labels and hashes are abbreviated for readability.
Provide initialization code
CREATE executes supplied init code in a creation context. A Solidity constructor is part of creation-time behavior, not an ordinary later callable runtime function.
Derive the address context
The ordinary CREATE address depends on the creator and its nonce through the specified derivation. It is not selected by the human-readable contract name.
Return deployable runtime
Successful initialization returns the bytes that become deployed runtime code, subject to applicable limits and validation. Creation can fail before that result is installed.
Check the actual outcome
A factory must handle creation failure and initialization assumptions. A predicted address alone does not prove that the expected runtime was successfully deployed there.