DocsProtocolOperations

Protocol

Operations

Reference for the three MON-20 operations: Deploy, Mint, and Transfer — with examples, rules, and edge cases.

Overview

MON-20 supports exactly three operations. Each maps to a distinct JSON payload and has its own validation path in the indexer. All three share the same on-chain delivery mechanism: a signed transaction to the MonadInscriptions contract with a 10 MON protocol fee.

deployRegister a new ticker with supply rules
mintClaim tokens for your wallet
transferSend tokens to another address

Deploy

deploy creates a new MON-20 token. It registers the ticker in the protocol, locks in the maximum supply and per-mint limit, and assigns the deployer address as the token's creator. No tokens are minted at deploy time.

Payload

deploy.json
{
"p": "mon-20",
"op": "deploy",
"tick": "mytoken",
"max": "1000000",
"lim": "1000"
}

Parameters

FieldTypeDescriptionRequired
tickstringTicker symbol (1–5 lowercase alphanumeric chars). Must be globally unique. Once registered, cannot be reused by anyone.YES
maxstringTotal maximum supply. Numeric string, no decimal point. Defines the hard cap — minting stops when this is reached.YES
limstringMaximum tokens per single mint. Each mint call must claim ≤ lim. Set to the same value as max to allow single-mint.YES
decstringDecimal precision (default: 18). Optional field. Defines how balances are displayed — does not affect raw integer storage.NO

Rules

  • Ticker must not already be deployed by any address
  • max must be a positive integer string (no decimals, no scientific notation)
  • lim must be ≤ max
  • dec must be between 0 and 18 if provided
  • 10 MON protocol fee required

Deploy is final

There is no way to modify max, lim, or any other parameter after a deploy is confirmed. Plan supply mechanics carefully before deploying.

Mint

mint assigns tokens to the caller's address. Any wallet can mint from any deployed ticker until the total supply is exhausted. There are no whitelist restrictions — minting is open to everyone.

Payload

mint.json
{
"p": "mon-20",
"op": "mint",
"tick": "moni",
"amt": "5000"
}

Parameters

FieldTypeDescriptionRequired
tickstringTicker to mint from. Must already be deployed.YES
amtstringAmount to mint. Must be a positive integer string and ≤ lim defined at deploy.YES

Rules

  • Ticker must exist (deployed)
  • amt must be a positive integer string ≤ lim
  • Total minted supply + amt must not exceed max
  • If remaining supply < amt, the inscription is valid on-chain but ignored by the indexer
  • 10 MON protocol fee required per mint transaction

Bulk minting

Use the Repeat field in the Inscribe UI to send multiple mint transactions in sequence. The UI computes and displays the total MON cost before you confirm. Each transaction is independent and counted separately.

Transfer

transfer moves tokens from the caller's balance to a recipient address. The caller must have sufficient balance at the time the indexer processes the event. Transfers to unconnected or contract addresses are allowed — the protocol does not restrict recipient addresses.

Payload

transfer.json
{
"p": "mon-20",
"op": "transfer",
"tick": "moni",
"amt": "500",
"to": "0xAbCd1234..."
}

Parameters

FieldTypeDescriptionRequired
tickstringTicker to transfer. Must exist.YES
amtstringAmount to transfer. Must be ≤ caller's current balance.YES
tostringRecipient EVM address. Accepts checksummed or lowercase hex addresses (0x-prefixed).YES

Rules

  • Ticker must exist
  • Caller's derived balance must be ≥ amt at the time the event is processed
  • to must be a valid EVM address (0x + 40 hex chars)
  • Transferring to yourself is allowed but has no net effect on balances
  • 10 MON protocol fee required

Insufficient balance

If the indexer determines the caller does not have enough balance when processing the transfer event, the inscription is silently ignored. The 10 MON fee is still consumed. The UI will warn you if your balance is too low before submitting.

Using the Inscribe UI

1

Select the operation tab

Choose Deploy, Mint, or Transfer from the tabs at the top of the Inscribe panel. Each tab reveals its own input fields.

2

Fill in the fields

Enter the ticker, amounts, and any other required parameters. The UI validates format in real time and highlights errors inline.

3

Review the fee summary

The fee breakdown shows the platform fee (10 MON × count), estimated gas, and total cost. For repeat mints, the total scales with the repeat count.

4

Click Inscribe and sign

Your wallet will pop up a transaction confirmation. Verify the recipient (contract address), value (10 MON), and data before signing.

5

Wait for confirmation

Monad finalizes transactions in under a second. After confirmation, the Explorer and My Inscriptions page will reflect the new state.