Skip to main content

Mint your first jetton

Welcome, dev! It's great to have you here. ๐Ÿ‘‹

You'll learn how to create your first token on TON using TON Minter. To mint a token, we will use the TON Minter.

๐Ÿ“– What you'll learnโ€‹

By the end of this tutorial, you'll be able to:

  • deploy a token using TON Minter
  • customize your token
  • manage and use the token
  • edit token parameters

๐Ÿ“Œ Prepare before you startโ€‹

Before you start, make sure you have the following:

  1. A TON-compatible wallet (e.g., Tonhub / Tonkeeper).
  2. At least 0.25 TON to cover deployment and fees.
starter tip

~0.5 TON should be enough for this tutorial.

๐Ÿš€ Let's get started!โ€‹

Use your web browser to open the service TON Minter or TON Minter testnet.

TON Minter main page

Deploy a jetton using your browserโ€‹

Connect walletโ€‹

Open TON Minter or TON Minter testnet in your web browser. Click "Connect Wallet" and link your Tonhub or another supported wallet.

Connect wallet

Scan the QR-code in a mobile wallet (Tonhub e.g.)

Fill in the blanks with relevant informationโ€‹

  1. Name (usually 1-3 words).
  2. Symbol (usually 3-5 uppercase characters).
  3. Amount (for example, 1,000,000).
  4. Description of the token (optional).

Token logo URL (optional)โ€‹

Token logo URL field

If you want your token to stand out, youโ€™ll need to host an attractive logo online.

info

You can easily find out about the URL placement of the logo in the repository in the 'Where is this metadata stored' paragraph.

  • On-chain
  • Off-chain IPFS
  • Off-chain website

How to create your logo URL?โ€‹

  1. Prepare a 256x256 PNG image of the token logo with a transparent background.
  2. Host it online using, for example, GitHub Pages.
  3. Create a new public repository with the name website.
  4. Upload your prepared image to git and enable GitHub Pages.
    1. Add GitHub Pages to your repository.
    2. Upload your image and get a link.
  5. If possible, purchase a custom domain for your project. Use any domain seller like Google Domains or GoDaddy. Then connect your custom domain to the repository from the previous step. You can follow the instructions here.
  6. If you have a custom domain, your image URL should be https://bitcoincash.org/logo.png instead of the github.io one. This prevents dependency on GitHub and gives you full control over hosting.

๐Ÿ’ธ Send jettonsโ€‹

On the right side of the screen, you can send tokens to multi-currency wallets such as Tonkeeper or Tonhub.

Send tokens panel

info

You can also burn your tokens to reduce their amount.

Burn tokens panel

๐Ÿ“ฑ Send tokens from your phone using Tonkeeperโ€‹

Prerequisites:

  1. You must have jettons in your wallet.
  2. You need at least 0.1 TON to cover transaction fees.

Then, go to your token, set the amount to send, and enter the recipient address.

Tonkeeper send flow

๐Ÿ“š Using the token on the siteโ€‹

You can manage your token by entering its address in the search bar at the top of the TON Minter site.

info

The address can be found on the right side if you are already in the user panel, or you can find the token address when receiving an airdrop.

Owner panel wallet address

โœ๏ธ Jetton (token) customizationโ€‹

With the FunC language, you can change a token's behavior in your favor.

To make any changes, start here:

Step-by-step guide for developersโ€‹

  1. Ensure you have all dependencies from the tonstarter-contracts repository.
  2. Clone the minter-contract repository and rename the project.
  3. To install, open a terminal at the root and run:
npm install
  1. Edit the smart contract files. All contract files are in contracts/*.fc

  2. Build the project by running:

npm run build

The output will show file generation and contract discovery.

info

Read the console; it includes many tips!

  1. You can test your changes using:
npm run test
  1. Edit the name and other metadata of the token in build/jetton-minter.deploy.ts by changing the JettonParams object. Note: If this file is generated in your setup, ensure you update the corresponding source or configuration so your changes persist.
// This is example data - Modify these parameters for your jetton!
// - Data is stored on-chain (except for the image data itself)
// - Owner should usually be the deploying wallet's address.

const jettonParams = {
owner: Address.parse("EQD4gS-Nj2Gjr2FYtg-s3fXUvjzKbzHGZ5_1Xe_V0-GCp0p2"),
name: "MyJetton",
symbol: "JET1",
image: "https://www.linkpicture.com/q/download_183.png", // Image URL
description: "My jetton",
};
  1. To deploy a token, use the following command:
npm run deploy

The result of running your project:

> @ton-defi.org/[email protected] deploy
> ts-node ./build/_deploy.ts

=================================================================
Deploy script running, let's find some contracts to deploy..

- We are working with 'mainnet'

- Config file '.env' found and will be used for deployment!
- Wallet address used to deploy from is: YOUR-ADDRESS
- Wallet balance is YOUR-BALANCE TON, which will be used for gas

- Found root contract 'build/jetton-minter.deploy.ts - let's deploy it':
- Based on your init code+data, your new contract address is: YOUR-ADDRESS
- Let's deploy the contract on-chain.
- Deploy transaction sent successfully
- Block explorer link: https://tonwhales.com/explorer/address/YOUR-ADDRESS
- Waiting up to 20 seconds to check if the contract was actually deployed.
- SUCCESS! Contract deployed successfully to address: YOUR-ADDRESS
- New contract balance is now YOUR-BALANCE TON, make sure it has enough to pay rent
- Running a post deployment test:
{
name: 'MyJetton',
description: 'My jetton',
image: 'https://www.linkpicture.com/q/download_183.png',
symbol: 'JET1'
}

What's next?โ€‹

If you want to dive deeper, read this article by Tal Kol:

If you want to learn more about other token-minting solutions, read this article:

Referencesโ€‹

Was this article useful?