Create a New Token of Solana
Create WorkSpace
- create dir
mkdir solana-token
cd solana-token
Create Solana KeyPairs (Wallet Address)
- Generate Solana KeyPairs, and use is KeyPairs to sign all transactions
# gen keypair,
➜ solana-token: solana-keygen grind --starts-with bos:1
Searching with 10 threads for:
1 pubkey that starts with 'bos' and ends with ''
Searched 1000000 keypairs in 1s. 0 matches found.
Searched 2000000 keypairs in 3s. 0 matches found.
Wrote keypair to bosAWJC8axC1gTFaKEzv7PfL5tn8pRP2DmU2qZnCdLb.json
# use is keypair to sign all transactions
solana config set --keypair bosAWJC8axC1gTFaKEzv7PfL5tn8pRP2DmU2qZnCdLb.json
- change network(devnet)
➜ solana-token: solana config set --url devnet
- get some SOL to
bosAWJC8axC1gTFaKEzv7PfL5tn8pRP2DmU2qZnCdLbaddress from faucet, then check balance with below command
➜ solana-token: solana balance
5 SOL
- create a token account user to store token
➜ solana-token: solana-keygen grind --starts-with mnt:1
Searching with 10 threads for:
1 pubkey that starts with 'mnt' and ends with ''
Searched 1000000 keypairs in 1s. 0 matches found.
Searched 2000000 keypairs in 3s. 0 matches found.
Searched 3000000 keypairs in 5s. 0 matches found.
Wrote keypair to mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp.json
Create a New Token
- create a new Token
➜ solana-token: spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --enable-metadata mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp.json
Creating token mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp under program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
To initialize metadata inside the mint, please run `spl-token initialize-metadata mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp <YOUR_TOKEN_NAME> <YOUR_TOKEN_SYMBOL> <YOUR_TOKEN_URI>`, and sign with the mint authority.
Address: mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp
Decimals: 9
Signature: BUkQciaMmtDaw4AxNGzSU1tM9VBZykwnfV8EjJD4ZEKXvSyY7nKTLUjuKG9uzmQi5UH2jrb7CxySCJ3bd1YhR7a
Success! mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp is an address of new token.
- Set a some metadata for Token
spl-token initialize-metadata <TOKEN_MINT_ADDRESS> <YOUR_TOKEN_NAME><YOUR_TOKEN_SYMBOL> <YOUR_TOKEN_URI>
The token URI is normally a link to offchain metadata you want to associate with the token. You can find an example of the JSON format here.
➜ solana-token: spl-token initialize-metadata mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp 'Grey' 'GYPL' https://raw.githubusercontent.com/solana-developers/opos-asset/main/assets/DeveloperPortal/metadata.json
Create a New Token Account
- making a
PAD
➜ solana-token: spl-token create-account mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp
Creating account HWqSkjVoYRDhcY28EtF2zT6p1K9R7MPUW4q88dZJ3K1w
Signature: 59k7KkzPTMfWMmoAxWoordynFTNdtymn38muJqj1U82vNenv7841bcwhbthdbzZ2MRD6LGHqAcdgspvhP4svtdWY
- mint token (we mint 998 token)
➜ solana-token: spl-token mint mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp 998
Minting 998 tokens
Token: mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp
Recipient: HWqSkjVoYRDhcY28EtF2zT6p1K9R7MPUW4q88dZJ3K1w
Signature: 2xeScNSVsrdC8zt3A1w3xeFn6N7ReDekvExYMd7b4AeEyC74VW7MUDP7rAgrHYewhF5TaQv4BpqoECZ5PXRwtVAt
Account Description
bosAWJC8axC1gTFaKEzv7PfL5tn8pRP2DmU2qZnCdLb:Wallet AddressmntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp:Unique Token FlagHWqSkjVoYRDhcY28EtF2zT6p1K9R7MPUW4q88dZJ3K1w: Token Account Address, associated Wallets and Token.
- Token Account: A Token Account tracks the individual ownership of tokens for a specific mint account.
- Mint Account: A mint account represents a unique token on the network and stores global metadata such as total supply.
- Associated Account (PDA): An Associated Token Account is a token account created using an address derived from the address of the owner and mint account.
For a wallet to own units of a certain type of token, it needs to create a token account for the specific type of token (minted) that designates the wallet as the owner of the token account. A wallet can create multiple token accounts for the same type of token, but each token account can only be owned by one wallet and can only hold units of a particular type of token.

Transfer Token
spl-token transfer mntKKmMvLPq8zhceYtScSWaeEgBdsUrfeAic35aGgJp 9 C1ezD8HHK5wj97ZL3NV4gABWqkqwf1fGKgDgJuwfWAWm --fund-recipient
C1ezD8HHK5wj97ZL3NV4gABWqkqwf1fGKgDgJuwfWAWm: Wallet Address--fund-recipient: Find PDA address for Token Account address from Wallet Address