create

Call v210 → v323, v326 → current #2

Deploys a new smart contract using CREATE opcode logic.

View calls on chain

Click items to navigate. Pan and zoom to explore.

Used by: developers

The Big Picture

Contract deployment creates permanent on-chain code at a deterministic address.

Use Cases

  • Deploy ERC-20 tokens
  • Deploy DeFi protocols
  • Deploy NFT contracts

From Chain Metadata

Issue an EVM create operation. This is similar to a contract creation transaction in Ethereum.

Migration Notes

v323 v326 Breaking

added field authorization_list (Vec<AuthorizationListItem>)

Update decoders: SCALE encoding is positional, so any signature change (added, removed, or type-changed fields, or storage shape changes) shifts byte offsets and existing decoders will misparse this item. Re-derive types from the new metadata.

Input Parameters

#NameTypeDescription
0
source
H160 source: 20-byte address (Ethereum-style)
1
init
Vec<u8> Vec init (Vec<u8>)
2
value
U256 value: 256-bit unsigned integer (Ethereum-style)
3
gas_limit
u64 gas_limit (u64)
4
max_fee_per_gas
U256 max_fee_per_gas: 256-bit unsigned integer (Ethereum-style)
5
max_priority_fee_per_gas
Option Option<U256>max_priority_fee_per_gas: optional 256-bit unsigned integer (Ethereum-style)
6
nonce
Option Option<U256>nonce: optional 256-bit unsigned integer (Ethereum-style)
7
access_list
Vec<(H160, Vec<H256>)> Vec access_list (Vec<(H160, Vec<H256>)>)
8
authorization_list
Vec<AuthorizationListItem> Vec AuthorizationListauthorization_list (Vec<AuthorizationListItem>)

Permissions

Origin
Unknown
Required Role

Permission data inferred from metadata. May be incomplete.

Requirements

  • Valid init code
  • Sufficient gas
  • Whitelisted if required

Effects

Postconditions

  • Contract at deterministic address
  • AccountCodes updated

Side Effects

  • Address derived from sender + nonce

Code Examples

// ----------------------------------------------------------------------
// HEADS UP: 2 args below have a complex type with no usable default.
// Look for `undefined as any` and replace them with real values
// before running — the snippet compiles, but will fail at runtime as-is.
// ----------------------------------------------------------------------
import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443

const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);

// Build create call (typed, named args)
const source = "0x0000000000000000000000000000000000000000";
const init = Binary.fromOpaque(new Uint8Array(0));
const value = undefined as any /* U256 — replace with real value */;
const gas_limit = 0n;
const max_fee_per_gas = undefined as any /* U256 — replace with real value */;
const max_priority_fee_per_gas = undefined;
const nonce = undefined;
const access_list = [] as [];
const authorization_list = [] as [];

const tx = api.tx.EVM.create({
  source,
  init,
  value,
  gas_limit,
  max_fee_per_gas,
  max_priority_fee_per_gas,
  nonce,
  access_list,
  authorization_list,
});

Version History

v210 block 4,345,556 8 args
v326 block 6,608,228 9 args Current

Runtime Info

Pallet Index
22
Call Index
2
First Version
v210
Current Version
v411