API Keys
.env
PINATA_JWT=your_jwt_token_here PINATA_GATEWAY_TOKEN=your_gateway_token_here
import { percentAmount, generateSigner, createSignerFromKeypair, signerIdentity, } from "@metaplex-foundation/umi"; import { createNft, mplTokenMetadata, } from "@metaplex-foundation/mpl-token-metadata"; import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; import { Keypair, LAMPORTS_PER_SOL } from "@solana/web3.js"; import { base58 } from "@metaplex-foundation/umi/serializers"; import { PinataSDK } from "pinata-web3"; import dotenv from "dotenv"; dotenv.config(); // Initialize UMI with SOON testnet const umi = createUmi("https://rpc.testnet.soo.network/rpc").use( mplTokenMetadata() );
// Create keypair and signer const payerSecretKey = new Uint8Array([]); // Your wallet's secret key let keypair = umi.eddsa.createKeypairFromSecretKey(payerSecretKey); const balance = await umi.rpc.getBalance(keypair.publicKey); console.log( "Payer Balance:", (Number(balance.basisPoints) / LAMPORTS_PER_SOL).toFixed(2), "SOL" ); const myKeypairSigner = createSignerFromKeypair(umi, keypair); umi.use(signerIdentity(myKeypairSigner));
const metadata = { name: "My NFT", description: "This is an NFT on SOON", image: "your_image_url", external_url: "https://x.com/soon-svm", attributes: [ { trait_type: "trait1", value: "value1", }, { trait_type: "trait2", value: "value2", }, ], properties: { files: [ { uri: "your_image_url", type: "image/png", }, ], category: "image", }, };
const pinata = new PinataSDK({ pinataJwt: process.env.PINATA_JWT!, pinataGateway: "your_pinata_gateway", }); const upload = await pinata.upload.json(metadata); const metadatauri = `https://your_gateway.mypinata.cloud/ipfs/${upload.IpfsHash}?pinataGatewayToken=${process.env.PINATA_GATEWAY_TOKEN}`;
const tx = await createNft(umi, { mint: NFTsigner, sellerFeeBasisPoints: percentAmount(5.5), name: "My NFT", uri: metadatauri, }).sendAndConfirm(umi);
pnpm add @metaplex-foundation/umi @metaplex-foundation/mpl-token-metadata @solana/web3.js pinata-web3 dotenv
pnpm start
https://rpc.devnet.soo.network/rpc
https://rpc.testnet.soo.network/rpc