Creating the token mint

We recommend using a UNIX-like OS when following this guide.

1. Installing Solana Tools

First we need to follow this guide to install Solana Tools on our system.

2. Create folder

mkdir new-token
cd new-token

3. Create a keypair if we don't already have one

solana-keygen new

First, in order to serve the off-chain metadata and the token logo image, we need to decide where should these files be hosted.

Metaplex foundation has an excellent guide explaining some of the options for storage providers: https://developers.metaplex.com/storage-providers. The documentation is targeted towards NFT projects but it is still applicable to our situation.

Once you picked a storage provider, we can proceed to upload your token logo image file. For example, here is pwrSOL token logo hosted on Arweave: https://arweave.net/vmJI1aPZNfTTIWH7ZLFxBP1VK7ptapg1hBukoDDNPME

With the URL of your hosted token logo image, we can prepare a json file containing the off-chain metadata and upload it to your storage provider of choice, e.g.:

# pwrSOL's off-chain metadata file hosted at https://2brtlweuaijbz7y4fyizzsqqotfak4tm6y6ct7wp772s4yflcmkq.arweave.net/0GM12JQCEhz_HC4RnMoQdMoFcmz2PCn-z__1LmCrExU
{
    "name": "Power Staked SOL",
    "symbol": "pwrSOL",
    "description": "MEV-Performance Optimized Liquid Staking Derivative from The Lode validator.",
    "image": "https://arweave.net/vmJI1aPZNfTTIWH7ZLFxBP1VK7ptapg1hBukoDDNPME"
}

With the off-chain metadata correctly pointing your token logo image hosted on a storage provider, we can now proceed to the on-chain portion of the setup process.

5. Setting Up Token Mint and On-chain Metadata Accounts


Let's start by preparing a json file containing your token's on-chain metadata. The uri field should be set to the URL obtained from the last step (off-chain metadata), e.g.:

# on-chain metadata: <MY-TOKEN-METADATA>.json
{
    "name": "bonkSOL",
    "symbol": "bonkSOL",
    "uri": "https://arweave.net/Hrt2n848OTwpQoTJM60SPmTADB2DlFWwhJbPdOzx7-w",
    "seller_fee_basis_points": 0,
    "creators": null
}

For creating a token mint account and an on-chain metadata account, we like to use metaboss command line tool: https://metaboss.rs/create.html

# Create a token mint account and an on-chain metadata account
metaboss create fungible \
    --decimals 9 \
    --metadata <MY-TOKEN-METADATA>.json

After a successful run, you should see the signature of the transaction as well as token mint address and on-chain metadata address e.g.:

Signature: 4weLm2Nxq24t4Mx78PYo9FGdrYsuFbVy3MMMMYgU5RzaGp8PwfBm5aKozvpeXoMPhqQb2eXdCRNDdGDdUfrzUteH
Mint: 6DUW9uU9uw69Gj1gF7Je5f2VxFAhodX5WbujeLkCqM4V
Metadata: 3Spyme9RpDxxMzh4oytgSG8qiTM6hX52xHwTnS1Y1ubG

If you want to use vanity key for your token mint, then you can first grind a keypair using solana-keygen:

# Generate a vanity keypair <MY-VANITY-KEYPAIR>.json
solana-keygen grind --starts-with <STARTING-WORD>:1

Once you obtain a keypair, run metaboss:

# Create a token mint account and an on-chain metadata account
# using a keypair file for the mint pubkey
metaboss create fungible \
    --decimals 9 \
    --metadata <MY-TOKEN-METADATA>.json \
    --mint-path <MY-VANITY-KEYPAIR>.json

6. Disable the freeze authority and temporarily transfer the mint authority to Sanctum

After your token mint account is setup, the freeze authority of the token should be disabled as follows:

spl-token authorize --disable <YOUR-MINT-ADDRESS> freeze

And temporarily transfer the mint authority to Sanctum:

spl-token authorize <YOUR-MINT-ADDRESS> mint GRwm4EXMyVwtftQeTft7DZT3HBRxx439PrKq4oM6BwoZ

GRwm4EXMyVwtftQeTft7DZT3HBRxx439PrKq4oM6BwoZ is the manager key controlled by Sanctum.

To launch your stake pool, you'll need to temporarily transfer the mint authority of your LST to us. Once your stake pool is live, the mint authority will be transferred to your pool, ensuring that only your stake pool can mint new LSTs.

By using an explorer, make sure the following values are correctly set for your token mint account:

  • 9 decimals

  • 0 initial supply

  • no freeze authority

And confirm the on-chain metadata is correctly loading, e.g.:

Last updated

Logo

Copyright © 2024 Sanctum Labs