import { PROGRAM_ID as TOKEN_METADATA_PROGRAM_ID } from '@metaplex-foundation/mpl-token-metadata'; import * as anchor from "@project-serum/anchor"; import { CreateToken } from "../target/types/create_token"; describe("Create an SPL Token", () => { const provider = anchor.AnchorProvider.env(); anchor.setProvider(provider); const payer = provider.wallet as anchor.Wallet; const program = anchor.workspace.CreateToken as anchor.Program; const tokenTitle = "Solana Gold"; const tokenSymbol = "GOLDSOL"; const tokenUri = "https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json"; const mintKeypair: anchor.web3.Keypair = anchor.web3.Keypair.generate(); console.log(`New token: ${mintKeypair.publicKey}`); it("Create!", async () => { const metadataAddress = (await anchor.web3.PublicKey.findProgramAddress( [ Buffer.from("metadata"), TOKEN_METADATA_PROGRAM_ID.toBuffer(), mintKeypair.publicKey.toBuffer(), ], TOKEN_METADATA_PROGRAM_ID ))[0]; const sx = await program.methods.createTokenMint( tokenTitle, tokenSymbol, tokenUri ) .accounts({ metadataAccount: metadataAddress, mintAccount: mintKeypair.publicKey, mintAuthority: payer.publicKey, payer: payer.publicKey, rent: anchor.web3.SYSVAR_RENT_PUBKEY, systemProgram: anchor.web3.SystemProgram.programId, tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID, tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID, }) .signers([mintKeypair, payer.payer]) .rpc(); console.log("Success!"); console.log(` Mint Address: ${mintKeypair.publicKey}`); console.log(` Tx Signature: ${sx}`); }); });