123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import * as anchor from "@coral-xyz/anchor";
- import { Program } from "@coral-xyz/anchor";
- import { CreateToken } from "../target/types/create_token";
- import { Metaplex } from "@metaplex-foundation/js";
- import { SYSVAR_RENT_PUBKEY, SystemProgram, PublicKey } from "@solana/web3.js";
- describe("create-token", () => {
- const provider = anchor.AnchorProvider.env();
- anchor.setProvider(provider);
- const program = anchor.workspace.CreateToken as Program<CreateToken>;
- // Generate new keypair to use as data account
- const dataAccount = anchor.web3.Keypair.generate();
- const wallet = provider.wallet;
- const connection = provider.connection;
- // Metadata for the token
- 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";
- it("Is initialized!", async () => {
- // Initialize data account for the program, which is required by Solang
- const tx = await program.methods
- .new()
- .accounts({ dataAccount: dataAccount.publicKey })
- .signers([dataAccount])
- .rpc();
- console.log("Your transaction signature", tx);
- });
- it("Create an SPL Token!", async () => {
- // Generate a new keypair for the mint
- const mintKeypair = anchor.web3.Keypair.generate();
- // Get the metadata address for the mint
- const metaplex = Metaplex.make(connection);
- const metadataAddress = await metaplex
- .nfts()
- .pdas()
- .metadata({ mint: mintKeypair.publicKey });
- const tx = await program.methods
- .createTokenMint(
- wallet.publicKey, // freeze authority
- 9, // decimals for the mint
- tokenTitle, // token name
- tokenSymbol, // token symbol
- tokenUri // token uri (off-chain metadata)
- )
- .accounts({
- payer: wallet.publicKey, //payer
- mint: mintKeypair.publicKey, // mint
- metadata: metadataAddress, // metadata address
- mintAuthority: wallet.publicKey, // mint authority
- rentAddress: SYSVAR_RENT_PUBKEY,
- metadataProgramId: new PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),
- })
- .signers([mintKeypair])
- .rpc({ skipPreflight: true });
- console.log("Your transaction signature", tx);
- });
- it("Create an NFT!", async () => {
- // Generate a new keypair for the mint
- const mintKeypair = anchor.web3.Keypair.generate();
- // Get the metadata address for the mint
- const metaplex = Metaplex.make(connection);
- const metadataAddress = await metaplex
- .nfts()
- .pdas()
- .metadata({ mint: mintKeypair.publicKey });
- const tx = await program.methods
- .createTokenMint(
- wallet.publicKey,
- 0, // decimals for the mint, 0 for NFTs "non-fungible"
- tokenTitle,
- tokenSymbol,
- tokenUri
- )
- .accounts({
- payer: wallet.publicKey, //payer
- mint: mintKeypair.publicKey, // mint
- metadata: metadataAddress, // metadata address
- mintAuthority: wallet.publicKey, // mint authority
- rentAddress: SYSVAR_RENT_PUBKEY,
- metadataProgramId: new PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),
- })
- .signers([mintKeypair])
- .rpc({ skipPreflight: true });
- console.log("Your transaction signature", tx);
- });
- });
|