123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import {loadOrGenerateKeypair, savePublicKeyToFile} from "./utils/helpers";
- import {Connection, Keypair} from "@solana/web3.js";
- import {ValidDepthSizePair} from "@solana/spl-account-compression";
- import {createCollection, createTree} from "./utils/compression";
- import {CreateMetadataAccountArgsV3} from "@metaplex-foundation/mpl-token-metadata";
- async function setup() {
- const rpc = "https://api.devnet.solana.com"
- const connection = new Connection(rpc, "confirmed")
- // Collection auth and treeCreator
- const payer = loadOrGenerateKeypair("payer");
- // Airdrop
- await connection.requestAirdrop(payer.publicKey, 1 * 10**9);
- console.log("Payer address:", payer.publicKey.toBase58());
- const treeKeypair = Keypair.generate();
- const maxDepthSizePair: ValidDepthSizePair = {
- maxDepth: 14,
- maxBufferSize: 64,
- };
- const canopyDepth = maxDepthSizePair.maxDepth - 5;
- const tree = await createTree(connection, payer, treeKeypair, maxDepthSizePair, canopyDepth);
- // locally save the addresses for demo
- savePublicKeyToFile("treeAddress", tree.treeAddress);
- const collectionMetadataV3: CreateMetadataAccountArgsV3 = {
- data: {
- name: "Super Sweet NFT Collection",
- symbol: "SSNC",
- // specific json metadata for the collection
- uri: "https://supersweetcollection.notarealurl/collection.json",
- sellerFeeBasisPoints: 100,
- creators: [
- {
- address: payer.publicKey,
- verified: false,
- share: 100,
- },
- ],
- collection: null,
- uses: null,
- },
- isMutable: false,
- collectionDetails: null,
- };
- // create a full token mint and initialize the collection (with the `payer` as the authority)
- const collection = await createCollection(connection, payer, collectionMetadataV3);
- // locally save the addresses for the demo
- savePublicKeyToFile("collectionMint", collection.mint);
- }
- // setup()
|