Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Glossary

Create Operation

In the Sidetree protocol, a Create Operation is the foundational, cryptographically-signed transaction that initiates a new Decentralized Identifier (DID) on the underlying ledger.
Chainscore © 2026
definition
BLOCKCHAIN FUNDAMENTALS

What is a Create Operation?

A foundational action in blockchain networks that instantiates new on-chain accounts or smart contracts.

A Create Operation is a specific type of transaction or state transition in a blockchain that results in the on-chain creation of a new account or smart contract. Unlike a standard transfer, which moves value between existing addresses, a create operation generates a new, unique address with its own state, code, and storage. This is the fundamental mechanism for deploying smart contracts on platforms like Ethereum, where the CREATE and CREATE2 opcodes are used, and for creating new accounts in systems like Stellar or Ripple. The operation typically consumes more computational resources (gas) than a simple transfer due to the initialization of new state.

The process involves several key steps: the initiator submits a transaction with the necessary creation data and fees, validators execute the operation according to the protocol's consensus rules, and the network permanently records the new account's address and initial state in a block. For smart contracts, the creation data includes the contract's bytecode and any constructor arguments. A critical security feature is that the resulting address is deterministically derived from the creator's address and a nonce (for CREATE) or a salt and init code (for CREATE2), preventing address collisions.

Create operations are essential for ecosystem growth, enabling everything from decentralized applications (dApps) and decentralized autonomous organizations (DAOs) to non-fungible token (NFT) collections and new token standards. In account-based models like Ethereum's, every user account besides the genesis block's starts with a create operation. Understanding this mechanism is crucial for developers, as choices between CREATE and CREATE2 impact address predictability and deployment strategies, and for analysts tracking the creation rate of new contracts as a metric for network developer activity and innovation.

how-it-works
BLOCKCHAIN STATE MUTATION

How a Create Operation Works

A technical breakdown of the on-chain process for deploying new smart contracts and creating new token contracts.

A Create Operation is a specific type of state-changing transaction that deploys a new smart contract account onto a blockchain, permanently storing its bytecode and initializing its state. Unlike a standard transaction that sends value between externally owned accounts (EOAs), a create operation results in the genesis of a new, autonomous account with its own address, storage, and logic. This is the fundamental mechanism behind deploying everything from simple multi-signature wallets to complex decentralized applications (dApps) and token standards like ERC-20 and ERC-721.

The process is initiated when a user submits a transaction with a zero to address and includes the compiled contract bytecode in the transaction's data field. The network's execution layer (e.g., the Ethereum Virtual Machine) processes this, generating a new contract address deterministically from the sender's address and their transaction nonce. The gas cost for a create operation is typically higher than a simple transfer, covering the computational work of initialization and the permanent storage cost of the contract's code on-chain.

Key technical components initialized during a create operation include the contract's nonce (set to 1), its storage root (initially empty), and its code hash (the Keccak-256 hash of the deployed bytecode). For token contracts, the create operation often executes the constructor function, which sets initial parameters like the token name, symbol, and total supply. This one-time deployment is irreversible; the contract's core logic is immutable unless it was explicitly designed with upgradeability patterns like proxies.

From a network perspective, successful create operations are recorded in a block's transaction list and permanently alter the global state trie. The new contract address becomes a node in this trie, from which all future interactions and state changes will stem. This operation is semantically equivalent to the CREATE opcode used internally by contracts, enabling factory patterns where one contract can deploy many others, a common architecture for scalable dApp design.

key-features
BLOCKCHAIN FUNDAMENTALS

Key Features of a Create Operation

A create operation is the fundamental on-chain action that deploys a new smart contract or mints a new NFT, establishing a permanent, unique address and state on the ledger.

01

Deploys a New Contract

In smart contract platforms like Ethereum, a create operation is a transaction with no to address and data in the input field. This data is the compiled bytecode of the contract. The network's execution environment (EVM) runs this code, and the resulting state is stored at a newly generated contract address, derived from the sender's address and their transaction nonce.

02

Mints a New NFT

For NFTs, a create operation is the initial minting transaction that brings a unique token into existence. This is typically executed by calling the mint or safeMint function on an existing NFT contract (like ERC-721 or ERC-1155). The operation assigns a new token ID, links it to metadata (often via a tokenURI), and transfers it to the minter's address, creating a new, non-fungible asset on-chain.

03

Generates a Unique Address

Every create operation results in a new, deterministic address on the network.

  • For Contracts: The address is calculated as keccak256(rlp_encode(sender_address, nonce))[12:].
  • For EOAs: A new externally-owned account address is generated from a new public/private key pair. This address becomes the permanent identifier for the created entity, used for all future interactions.
04

Initiates Persistent State

The operation establishes the initial, immutable state of the new entity. For a smart contract, this includes:

  • The deployed bytecode stored at the address.
  • Initialized storage variables set by the constructor.
  • For an NFT, the initial state includes the token ownership mapping and its metadata pointer. This state becomes the root for all subsequent state transitions via calls to the contract.
05

Requires Gas and a Fee

Like all transactions, a create operation consumes computational resources (gas). It is often one of the most gas-intensive operations because it involves:

  • Paying for bytecode storage permanently on-chain.
  • Executing constructor logic.
  • The base cost for creating a new account in the state trie. The sender must pay the gas fee, denominated in the network's native token (e.g., ETH, MATIC).
06

Contrast with Call Operation

A create operation is distinct from a call operation (or message call).

  • Create: to address is empty/zero, input is initcode. Result is a new address and contract.
  • Call: to address is an existing contract, input is function selector + arguments. Result is a state change or returned data from the called contract. Understanding this distinction is key to analyzing transaction types and gas usage.
payload-structure
CREATE OPERATION

Payload Structure & Components

A detailed examination of the data structure that defines and initiates the creation of a new smart contract or token on a blockchain.

A Create Operation is a specific transaction payload that instructs a blockchain's execution environment to deploy a new smart contract account from its associated bytecode, permanently storing the contract's logic and initial state on-chain. Unlike a simple value transfer, this operation results in the genesis of a new, unique account address derived from the sender's address and a nonce. The core components of this payload are the initiator's signature, the contract's compiled bytecode, and often an initial endowment of native currency (e.g., value in Ethereum) to fund the new contract's balance. This is the fundamental mechanism behind deploying decentralized applications (dApps), non-fungible tokens (NFTs), and fungible token standards like ERC-20.

The technical execution involves the Ethereum Virtual Machine (EVM) or equivalent runtime processing the init code within the transaction. This code execution determines the final runtime bytecode and the contract's initial storage. A critical security and design pattern is the use of factory contracts, which are themselves deployed contracts that programmatically issue CREATE or CREATE2 operations. This allows for complex, conditional deployment logic and the creation of multiple contract instances from a single, audited codebase. The CREATE2 opcode provides a significant enhancement by enabling the pre-computation of a contract's address before it is deployed, a feature essential for state channels and counterfactual instantiation.

From a data structure perspective, the create operation is embedded within a standard transaction envelope. Key fields include the to address, which is set to a null value (e.g., 0x), signaling a contract creation, and the data field, which contains the initialization bytecode. Network validators process this, consuming gas for the computational and storage costs. Upon successful execution, the transaction receipt will contain the new contract's address in the contractAddress field. Failed deployments still incur gas costs and are reverted, leaving no contract on-chain, which underscores the importance of thorough testing on testnets before mainnet deployment.

examples
CREATE OPERATION

Protocols & Implementations

A Create Operation is a fundamental blockchain transaction that deploys a new smart contract or account onto the ledger, initializing its state and code. This section details its core mechanisms and ecosystem implementations.

01

Core Mechanism

A Create Operation is a special transaction that results in the deployment of a new contract account on-chain. Unlike a simple value transfer, it:

  • Contains the initialization code (constructor logic) and deployed bytecode.
  • Generates a new, deterministic contract address, typically derived from the sender's address and a nonce.
  • Consumes gas for code execution and storage initialization.
  • Is irreversible; once created, the contract's code is immutable on networks like Ethereum.
02

Ethereum (CREATE & CREATE2)

Ethereum defines two primary opcodes for contract creation.

  • CREATE: The standard operation. The new contract's address is a function of the sender's address and their transaction nonce (keccak256(rlp([sender, nonce]))).
  • CREATE2: Introduced in EIP-1014. Allows address prediction before deployment. The address is derived from the sender's address, a custom salt, and the initialization code hash. This enables advanced patterns like counterfactual instantiation and state channel deployments.
03

Account Abstraction (ERC-4337)

In the ERC-4337 standard for account abstraction, a UserOperation can trigger a Create Operation to deploy a new smart contract wallet. This allows a user's first transaction to both create their wallet (if it doesn't exist) and execute a desired action within a single atomic operation, improving the user experience for new entrants to the ecosystem.

04

Layer 2 & Rollup Variations

Optimistic and Zero-Knowledge Rollups handle Create Operations with layer-specific optimizations.

  • They batch creation transactions off-chain and submit proofs or state diffs to L1.
  • ZK Rollups like zkSync often use a CREATE2-like pattern for predictable addresses, crucial for bridging and composability.
  • Gas costs for creation are significantly reduced compared to L1, but finality depends on the rollup's dispute period or proof submission time.
05

Security Considerations

Contract creation introduces unique security vectors:

  • Front-running: A malicious actor can intercept a pending CREATE transaction and deploy a contract at the predicted address first.
  • Constructor Failures: If the initialization code reverts, the Create Operation fails, gas is consumed, and no contract is deployed (though the sender's nonce is still incremented on Ethereum).
  • Address Collision: While cryptographically improbable with CREATE, poorly chosen salts in CREATE2 can lead to intentional collisions.
cryptographic-commitments
FOUNDATIONAL CONCEPT

The Role of Cryptographic Commitments

Cryptographic commitments are a fundamental building block in blockchain and distributed systems, enabling protocols to hide information while later proving its integrity and origin.

A cryptographic commitment is a digital protocol that allows one party to commit to a chosen value (or statement) while keeping it hidden from others, with the ability to later reveal the committed value in a way that is verifiably consistent with the initial commitment. This is achieved through a two-phase scheme: the commit phase, where a secret value is used to generate a binding but concealing commitment string (often a hash), and the reveal phase, where the original value and secret are disclosed for verification. The core properties that define a secure commitment scheme are hiding (the commitment reveals nothing about the value) and binding (the committer cannot later reveal a different value).

In blockchain systems, commitments are ubiquitous. They are the mechanism behind Merkle trees, where a single root hash commits to the entire state of a dataset, allowing for efficient and secure proofs of inclusion. Pedersen commitments and vector commitments are used in privacy-focused protocols like Confidential Transactions and zk-SNARKs to hide transaction amounts while enabling mathematical proofs of validity. The commit-reveal scheme is also a critical pattern for preventing front-running in decentralized exchanges and other on-chain auctions, as participants first commit to hashed bids before revealing them.

The security and functionality of these systems rely entirely on the cryptographic guarantees of the underlying commitment. For binding, it must be computationally infeasible to find two different inputs that produce the same commitment output (a collision). For hiding, the commitment should leak no statistical information about the plaintext value. These properties enable trustless interactions where parties can agree on the existence and integrity of data without knowing its content upfront, forming the basis for more complex constructs like zero-knowledge proofs and verifiable delay functions.

security-considerations
CREATE OPERATION

Security Considerations

The CREATE and CREATE2 opcodes enable smart contract deployment, introducing unique security vectors for both deployers and the network.

01

Constructor Code Validation

Contracts deployed via CREATE and CREATE2 execute initialization code in their constructor. Malicious or buggy constructor logic can lead to immediate self-destruction, fund locking, or privilege escalation before the contract is fully deployed. Auditors must treat constructor logic with the same rigor as regular contract functions.

02

Address Precomputation & Front-Running

CREATE2 allows the precomputation of a contract's address before deployment using the sender, salt, and init code hash. This enables:

  • Factory pattern security: Trustless deployment of counterfactual contracts.
  • Front-running risks: A malicious actor can monitor the mempool for a pending CREATE2 transaction, compute the future address, and send funds to it, potentially disrupting the deployment logic.
  • Salt collision attacks: If the salt is not sufficiently random, an attacker could deploy a malicious contract at the predicted address first.
03

Gas Stipends & Out-of-Gas Attacks

When a contract is created, the initiating transaction allocates a gas stipend for the constructor's execution. Complex constructors or those that perform external calls can run out of gas, causing the entire deployment to revert. Attackers can exploit this by:

  • Crafting init code that consumes variable gas based on block state.
  • Causing a revert in a factory pattern, which may waste the caller's gas without creating the intended contract.
04

Init Code Hijacking (CREATE2)

The security of a CREATE2-deployed contract depends on the immutability of its init code hash. If a project's deployment script or factory contract allows the init code to be altered, an attacker could deploy a malicious contract at a previously used, trusted address. This underscores the need for immutable factory contracts and verified deployment bytecode.

05

Reentrancy in Constructors

While the constructor is executing, the new contract's address is determinable but its code is not yet stored. However, if the constructor makes an external call to another contract, that contract can attempt to interact with the not-yet-fully-initialized address. Although the called contract cannot execute code on the new address (as storage is not yet set), this pattern can still lead to unexpected state interactions and should be minimized.

06

Denial-of-Service via Block Gas Limit

Deploying large contracts with extensive constructor operations or using CREATE in a loop within a factory can approach or exceed the block gas limit. This can be exploited for Denial-of-Service (DoS) by making deployment impossible during periods of high network congestion. CREATE2 does not mitigate this core blockchain constraint.

DID METHOD OPERATIONS

Create Operation vs. Other DID Method Operations

A comparison of the foundational Create operation with subsequent core operations defined by the W3C DID Core specification.

Operation / FeatureCreateRead (Resolve)UpdateDeactivate

Primary Function

Generate the initial DID Document and DID identifier

Retrieve the current DID Document

Modify an existing DID Document

Revoke a DID, making it permanently inactive

Initial State Required

Writes to Ledger/Registry

Modifies DID Identifier

Modifies DID Document State

Creates initial state

Reads current state

Updates state

Sets state to deactivated

Can Add Verification Methods

Initial set only

Authorization Required

None (initial creation)

None (public resolution)

Controller's cryptographic proof

Controller's cryptographic proof

Typical Use Case

Onboarding a new identity

Verifying credentials or interactions

Key rotation, service endpoint update

Account closure, key compromise response

CREATE OPERATION

Frequently Asked Questions

Common questions about the CREATE and CREATE2 opcodes, which are fundamental to deploying smart contracts and counterfactual addresses on Ethereum and other EVM-compatible blockchains.

The CREATE opcode is an Ethereum Virtual Machine (EVM) instruction that deploys a new contract from a contract's bytecode, generating its address deterministically from the sender's address and their current nonce. When a contract executes CREATE, it:

  • Takes the initiation bytecode from its input.
  • Deducts gas for the deployment.
  • Executes the constructor logic.
  • Stores the resulting runtime bytecode at a new address derived from keccak256(rlp([sender, nonce])).
  • Returns the new contract's address. This is the standard method for contract deployment from within another contract, used by factories and upgradeable proxy patterns.
ENQUIRY

Get In Touch
today.

Our experts will offer a free quote and a 30min call to discuss your project.

NDA Protected
24h Response
Directly to Engineering Team
10+
Protocols Shipped
$20M+
TVL Overall
NDA Protected Directly to Engineering Team