Skip to content

Operations

Draft definitions of the ELC-20 deploy, mint and transfer operations.

Draft

ELC-20 defines three operations. Each is an ELC-20 Sigil whose body contains an op field naming the operation, followed by its arguments.

Common fields

FieldTypeRule
opstringOne of deploy, mint, transfer. Case-sensitive.
tickstringAsset ticker. Compared case-insensitively. Proposed length 1 to 16 characters, from a restricted character set.

All quantities are decimal strings of base-unit integers: digits only, no sign, no decimal point, no exponent and no leading zeros.

Deploy

Declares a new asset. The first valid deploy of a ticker defines it permanently.

deploy.json

Draft Example — Not Finalized

JSON
{
  "p": "saelis",
  "v": 0,
  "std": "elc-20",
  "body": {
    "op": "deploy",
    "tick": "demo",
    "max": "21000000",
    "lim": "1000",
    "dec": "18"
  }
}
FieldTypeRequiredRule
maxdecimal stringYesMaximum supply. Must be greater than zero.
limdecimal stringNoPer-mint limit. Defaults to max. Must not exceed max.
decdecimal stringNoDisplay decimals, 0 to 18. Defaults to 18. Presentation only.

Mint

Issues new units of a deployed asset to the account that signed the transaction.

mint.json

Draft Example — Not Finalized

JSON
{
  "p": "saelis",
  "v": 0,
  "std": "elc-20",
  "body": {
    "op": "mint",
    "tick": "demo",
    "amt": "1000"
  }
}
FieldTypeRequiredRule
amtdecimal stringYesGreater than zero and not greater than the deploy's lim.

Transfer

Moves units from the signer's balance to a recipient.

transfer.json

Draft Example — Not Finalized

JSON
{
  "p": "saelis",
  "v": 0,
  "std": "elc-20",
  "body": {
    "op": "transfer",
    "tick": "demo",
    "amt": "250",
    "to": "0x000000000000000000000000000000000000dEaD"
  }
}
FieldTypeRequiredRule
amtdecimal stringYesGreater than zero and not greater than the signer's balance at that position.
toaddressYesA 20-byte hex address. Compared case-insensitively.

Operations not included

ELC-20 intentionally omits approvals, allowances and burns in the current draft. Each would add state and edge cases, and none is required to validate the core model. They may be proposed as extensions once the base rules are settled.