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::initialize 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::mint 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 object 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