Create Metadata

Create and add metadata for a Solana SPL token

import { createSignerFromKeypair, generateSigner, signerIdentity } from "@metaplex-foundation/umi";
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
import { base58 } from '@metaplex-foundation/umi/serializers';
import walletSecret from './wallet.json' assert { type: "json" };
import { create } from '@metaplex-foundation/mpl-core';

const umi = createUmi("https://api.devnet.solana.com", "confirmed");
let keypair = umi.eddsa.createKeypairFromSecretKey(new Uint8Array(walletSecret));
const signer = createSignerFromKeypair(umi, keypair);

umi.use(signerIdentity(signer))

const tokenAddress = generateSigner(umi); // token address
const owner = generateSigner(umi);

const createTokenMetadata = async () => {
    const tx = await create(umi, {
        name: 'Test Token',
        uri: 'https://example.com/token.json',
        asset: tokenAddress,
        owner: owner.publicKey, // optional, will default to payer
    }).sendAndConfirm(umi);
    const txSig = base58.deserialize(tx.signature)[0];
    console.log(`Transaction: ${txSig}`);
}

createTokenMetadata();