4. Create your own Move coin

This tutorial covers how to make my own coin and mint them using 0x1::managed_coin module, and how to interact with the Move module.

Step 1: Initialize Coin

Call 0x1::managed_coin::initializearrow-up-right function and start creating a new coin on Initia.

public entry fun initialize(
    account: &signer,
    maximum_supply: Option<u128>,
    name: String,
    symbol: String,
    decimals: u8,
    icon_uri: String,
    project_uri: String,
)

TIP: On the entry function, signer is included in msg sender and is omitted on msg args.

> initiad tx move execute 0x1 managed_coin initialize \
  --args "option<u128>:null string:my_coin string:MYCOIN u8:6 string: string:" \
  --from [key-name] \
  --gas auto --gas-adjustment 1.5 --gas-prices 0.15uinit \
  --node [rpc-url]:[rpc-port] --chain-id [chain-id]

Step 2: Mint Coin

Call 0x1::managed_coin::mintarrow-up-right function and mint the tokens create on Step 1.

What is metadata?

Metadata is the coins unique identity. To be more specific, it is an objectarrow-up-right or an address where 0x1::fungible_asset::Metadata is saved. Fungible asset is using named object to generate deterministic address which is the form of sha3_256(creator+symbol+0xFE).

How do I get metadata?

A view function 0x1::coin::metadata can be used to get metadata of a coin. You can also get the metadata by using sha3_256(creator+symbol+0xFE).

Now that we know the metadata address, let's mint coins.

Check the minted coins by querying the balances.

TIP: If creator is 0x1, cosmos denom is equal to the symbol. If not, cosmos denom is equal to move/{metadata_address}

Last updated