Mint To (Token)

You can mint some token for testing.

Token Program - Mint To Checked

tokenprog.MintToChecked(tokenprog.MintToCheckedParam{
	Mint:     mintPubkey,
	Auth:     alice.PublicKey,
	Signers:  []common.PublicKey{},
	To:       aliceTokenRandomTokenPubkey,
	Amount:   1e8,
	Decimals: 8,
}),

Mint is the mint you want to mint

To is the receiver

Auth is the mint owner, need to sign the tx.

Signers we pass empty first, I will take another chapter to discuss it

Amount the number you want to mint. It is the minimum number. If decimals is 8 and you want to mint 1, you will pass 1e8

Decimals the mint decimals

There is an instruction call MintTo You also can use it to mint token.

Full Code

package main

import (
	"context"
	"log"

	"github.com/portto/solana-go-sdk/client"
	"github.com/portto/solana-go-sdk/common"
	"github.com/portto/solana-go-sdk/program/tokenprog"
	"github.com/portto/solana-go-sdk/rpc"
	"github.com/portto/solana-go-sdk/types"
)

var feePayer, _ = types.AccountFromBytes([]byte{178, 244, 76, 4, 247, 41, 113, 40, 111, 103, 12, 76, 195, 4, 100, 123, 88, 226, 37, 56, 209, 180, 92, 77, 39, 85, 78, 202, 121, 162, 88, 29, 125, 155, 223, 107, 139, 223, 229, 82, 89, 209, 27, 43, 108, 205, 144, 2, 74, 159, 215, 57, 198, 4, 193, 36, 161, 50, 160, 119, 89, 240, 102, 184})

var alice, _ = types.AccountFromBytes([]byte{196, 114, 86, 165, 59, 177, 63, 87, 43, 10, 176, 101, 225, 42, 129, 158, 167, 43, 81, 214, 254, 28, 196, 158, 159, 64, 55, 123, 48, 211, 78, 166, 127, 96, 107, 250, 152, 133, 208, 224, 73, 251, 113, 151, 128, 139, 86, 80, 101, 70, 138, 50, 141, 153, 218, 110, 56, 39, 122, 181, 120, 55, 86, 185})

var mintPubkey = common.PublicKeyFromString("29oPCpWj6QiXEipwtmXPrDJAR2P29Z6wHKpHRxEsbnSr")

var aliceTokenRandomTokenPubkey = common.PublicKeyFromString("BSqFxVXT9FtFuHDCDgm6aUW1NHMwYGTCiYc9aoSc4atw")

var aliceTokenATAPubkey = common.PublicKeyFromString("9rFqLfKdxKfeFY9GE1EmcoMmoACskhixKw8w1JrWJb32")

func main() {
	c := client.NewClient(rpc.LocalnetRPCEndpoint)

	res, err := c.GetRecentBlockhash(context.Background())
	if err != nil {
		log.Fatalf("get recent block hash error, err: %v\n", err)
	}
	tx, err := types.NewTransaction(types.NewTransactionParam{
		Message: types.NewMessage(types.NewMessageParam{
			FeePayer:        feePayer.PublicKey,
			RecentBlockhash: res.Blockhash,
			Instructions: []types.Instruction{
				tokenprog.MintToChecked(tokenprog.MintToCheckedParam{
					Mint:     mintPubkey,
					Auth:     alice.PublicKey,
					Signers:  []common.PublicKey{},
					To:       aliceTokenRandomTokenPubkey,
					Amount:   1e8,
					Decimals: 8,
				}),
			},
		}),
		Signers: []types.Account{feePayer, alice},
	})
	if err != nil {
		log.Fatalf("generate tx error, err: %v\n", err)
	}

	txhash, err := c.SendTransaction(context.Background(), tx)
	if err != nil {
		log.Fatalf("send raw tx error, err: %v\n", err)
	}

	log.Println("txhash:", txhash)
}

Last updated