initializeMint method

Future<Mint> initializeMint({
  1. required Ed25519HDKeyPair mintAuthority,
  2. required int decimals,
  3. Ed25519HDPublicKey? freezeAuthority,
  4. SignatureCallback? onSigned,
  5. Commitment commitment = Commitment.finalized,
})

Create a new token owned by mintAuthority with number of decimals.

Optionally, you can specify a freezeAuthority. By default the freezeAuthority is not set.

Finally, you can also send the transaction with optional commitment.

Implementation

Future<Mint> initializeMint({
  required Ed25519HDKeyPair mintAuthority,
  required int decimals,
  Ed25519HDPublicKey? freezeAuthority,
  SignatureCallback? onSigned,
  Commitment commitment = Commitment.finalized,
}) async {
  final mint = await Ed25519HDKeyPair.random();

  const space = TokenProgram.neededMintAccountSpace;
  final rent = await rpcClient.getMinimumBalanceForRentExemption(
    space,
    commitment: commitment,
  );

  final instructions = TokenInstruction.createAccountAndInitializeMint(
    mint: mint.publicKey,
    mintAuthority: mintAuthority.publicKey,
    freezeAuthority: freezeAuthority,
    rent: rent,
    space: space,
    decimals: decimals,
  );

  final message = Message(instructions: instructions);

  await sendAndConfirmTransaction(
    message: message,
    signers: [mintAuthority, mint],
    onSigned: onSigned ?? ignoreOnSigned,
    commitment: commitment,
  );

  return getMint(address: mint.publicKey, commitment: commitment);
}