Mint Guide
Code Snippet
Constants
Make sure to fill in constants & mintParams below
import { TipLink, TipLinkClient } from '@tiplink/api';
import {
PublicKey,
Keypair,
Connection,
SystemProgram,
TransactionMessage,
VersionedTransaction,
} from "@solana/web3.js";
const API_KEY = "<get from tiplink>"; // reach out on discord
const RPC_ENDPOINT = "<rpc endpoint for making fee transaction>";
const payer = Keypair.generate(); // use keypair you wish to pay fees
const createMint = async (payer) => {
// Initialize Client
const client = await TipLinkClient.init(API_KEY);
const mintParams = {
mintName: "Test Tiplink Client Mint", // Max length 32 characters
symbol: "TESTTMM", // Max length 10 characters
mintDescription: "OPTIONAL: This is purely for testing purposes and should not be treated as a store of value.", // Optional
mintLimit: 100,
mintImageUrl: "https://arweave.net/",
externalUrl: "https://tiplink.io", // Optional
attributes: {"TestAttr": "20", "TestAttr2": "TestString"}, // Optional
existingCollectionId: "<OPTIONAL: Existing Mint Collection>", // Optional
creatorPublicKey: payer.publicKey,
campaignName: "Test Client Created Campaign",
campaignDescription: "Test Description for dashboard", // Optional
// themeId: 1, // Optional: premium feature
royalties: 20, // Optional: Max 50 as percentage
royaltiesDestination: payer.publicKey, // Optional
};
// Get Mint Fee Informatino
const mintFees = await client.mints.getFees(mintParams);
// Setup Fee Payment
const connection = new Connection(RPC_ENDPOINT, "confirmed");
const latestBlockhash = await connection.getLatestBlockhash();
const instructions = [];
// Create Fee Payment Instruction
instructions.push(
SystemProgram.transfer({
fromPubkey: payer.publicKey,
lamports: Math.ceil(mintFees.feeLamports),
toPubkey: mintFees.publicKey,
})
);
// Make Fee Payment
const messageLegacy = new TransactionMessage({
instructions,
payerKey: payer.publicKey,
recentBlockhash: latestBlockhash.blockhash,
}).compileToLegacyMessage();
const transaction = new VersionedTransaction(messageLegacy);
transaction.sign([payer]);
const signedTransaction = await connection.sendTransaction(transaction);
// Add fees transaction has to mintParams
mintParams["feeTransactionHash"] = signedTransaction;
// create mint
const mint = await client.mints.create(mintParams);
return mint;
};
createMint(payer).then(mint => {
// Log dashboard page for this mint campaign
console.log(`https://tiplink.io/pro/campaigns/${mint.campaign_id}`);
// Log mint url
console.log(mint.getMintUrl().toString());
});