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.
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
{"p": "mon-20","op": "deploy","tick": "mytoken","max": "1000000","lim": "1000"}
Parameters
| Field | Type | Description | Required |
|---|---|---|---|
| tick | string | Ticker symbol (1–5 lowercase alphanumeric chars). Must be globally unique. Once registered, cannot be reused by anyone. | YES |
| max | string | Total maximum supply. Numeric string, no decimal point. Defines the hard cap — minting stops when this is reached. | YES |
| lim | string | Maximum tokens per single mint. Each mint call must claim ≤ lim. Set to the same value as max to allow single-mint. | YES |
| dec | string | Decimal 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
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
{"p": "mon-20","op": "mint","tick": "moni","amt": "5000"}
Parameters
| Field | Type | Description | Required |
|---|---|---|---|
| tick | string | Ticker to mint from. Must already be deployed. | YES |
| amt | string | Amount 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
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
{"p": "mon-20","op": "transfer","tick": "moni","amt": "500","to": "0xAbCd1234..."}
Parameters
| Field | Type | Description | Required |
|---|---|---|---|
| tick | string | Ticker to transfer. Must exist. | YES |
| amt | string | Amount to transfer. Must be ≤ caller's current balance. | YES |
| to | string | Recipient 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
Using the Inscribe UI
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.
Fill in the fields
Enter the ticker, amounts, and any other required parameters. The UI validates format in real time and highlights errors inline.
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.
Click Inscribe and sign
Your wallet will pop up a transaction confirmation. Verify the recipient (contract address), value (10 MON), and data before signing.
Wait for confirmation
Monad finalizes transactions in under a second. After confirmation, the Explorer and My Inscriptions page will reflect the new state.