test.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import {
  2. PROGRAM_ID as TOKEN_METADATA_PROGRAM_ID
  3. } from '@metaplex-foundation/mpl-token-metadata';
  4. import * as anchor from "@project-serum/anchor";
  5. import { CreateToken } from "../target/types/create_token";
  6. describe("Create an SPL Token", () => {
  7. const provider = anchor.AnchorProvider.env();
  8. anchor.setProvider(provider);
  9. const payer = provider.wallet as anchor.Wallet;
  10. const program = anchor.workspace.CreateToken as anchor.Program<CreateToken>;
  11. const tokenTitle = "Solana Gold";
  12. const tokenSymbol = "GOLDSOL";
  13. const tokenUri = "https://raw.githubusercontent.com/solana-developers/program-examples/new-examples/tokens/tokens/.assets/spl-token.json";
  14. const mintKeypair: anchor.web3.Keypair = anchor.web3.Keypair.generate();
  15. console.log(`New token: ${mintKeypair.publicKey}`);
  16. it("Create!", async () => {
  17. const metadataAddress = (await anchor.web3.PublicKey.findProgramAddress(
  18. [
  19. Buffer.from("metadata"),
  20. TOKEN_METADATA_PROGRAM_ID.toBuffer(),
  21. mintKeypair.publicKey.toBuffer(),
  22. ],
  23. TOKEN_METADATA_PROGRAM_ID
  24. ))[0];
  25. const sx = await program.methods.createTokenMint(
  26. tokenTitle, tokenSymbol, tokenUri
  27. )
  28. .accounts({
  29. metadataAccount: metadataAddress,
  30. mintAccount: mintKeypair.publicKey,
  31. mintAuthority: payer.publicKey,
  32. payer: payer.publicKey,
  33. rent: anchor.web3.SYSVAR_RENT_PUBKEY,
  34. systemProgram: anchor.web3.SystemProgram.programId,
  35. tokenProgram: anchor.utils.token.TOKEN_PROGRAM_ID,
  36. tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,
  37. })
  38. .signers([mintKeypair, payer.payer])
  39. .rpc();
  40. console.log("Success!");
  41. console.log(` Mint Address: ${mintKeypair.publicKey}`);
  42. console.log(` Tx Signature: ${sx}`);
  43. });
  44. });