Minting adalah proses pembuatan token NFT baru dalam koleksi Anda. CreateKit menyediakan sistem minting dua fase yang unik yang mengoptimalkan efisiensi gas dan pengalaman pengguna.
Operasi mint pertama adalah spesial - ia men-deploy kontrak koleksi dan mencetak token pertama dalam satu transaksi:
Deploy dan Mint Pertama
Copy
Ask AI
import { CollectionManager } from '@b3dotfun/basemint'const collectionManager = new CollectionManager(publicClient)// Asumsikan kita memiliki metadata koleksi dan tanda tangan pembuatconst predictedAddress = collectionManager.predictCollectionAddress( collectionMetadata, creatorSignature)// Hasilkan tanda tangan deployerconst deployerSignature = await collectionManager.generateDeployerSignature( walletClient, predictedAddress)// Buat instance koleksiconst collection = collectionManager.createCollection( predictedAddress, collectionMetadata.tokenStandard)// Deploy dan mint NFT pertamaconst mintTx = await collection.mint( walletClient, 1n, // kuantitas undefined, // URI metadata (menggunakan baseURI) collectionMetadata.mintPrice || 0n, [], // bukti whitelist (kosong untuk umum) creatorSignature, // Diperlukan untuk mint pertama deployerSignature // Diperlukan untuk mint pertama)console.log(`🚀 Koleksi dideploy dan token pertama dicetak: ${mintTx}`)
CreateKit mendukung standar ERC721 dan ERC1155 dengan perilaku minting yang berbeda:
Token Unik ERC721
Copy
Ask AI
// ERC721 - Setiap token adalah unikconst erc721Collection = collectionManager.createCollection( predictedAddress, "ERC721")// ERC721 selalu mencetak kuantitas 1await erc721Collection.mint( walletClient, 1n, // Selalu 1 untuk ERC721 "https://example.com/metadata/1.json", // Metadata unik untuk token ini parseEther("0.01"), [])// Setiap minting menciptakan ID token unik baru// ID Token bertambah: 1, 2, 3, dll.
// Dapatkan bukti untuk alamat mintingconst userAddress = account.addressconst proof = whitelist.getProof(userAddress)// Verifikasi pengguna ada di whitelist (pemeriksaan opsional)const isWhitelisted = whitelist.verify(userAddress, proof)if (!isWhitelisted) { throw new Error("Alamat tidak dalam whitelist")}// Mint dengan bukti whitelistawait collection.mint( walletClient, 1n, undefined, parseEther("0.005"), proof // Sediakan bukti whitelist)
CreateKit dapat secara otomatis menghasilkan metadata berdasarkan pengaturan koleksi:
Metadata Otomatis
Copy
Ask AI
// Menggunakan baseURI untuk metadata otomatisconst autoMetadataCollection = { name: "Koleksi Metadata Otomatis", symbol: "AMC", creator: account.address, gameOwner: account.address, // baseURI akan dihasilkan secara otomatis oleh CDN BaseMint}// Mint dengan metadata otomatis (gunakan undefined untuk URI)await collection.mint( walletClient, 1n, undefined, // Menggunakan baseURI + tokenId 0n, [])// Metadata akan tersedia di: {baseURI}/{tokenId}
Untuk koleksi ERC1155, Anda dapat mencetak beberapa token secara efisien:
Minting Batch
Copy
Ask AI
// Satu transaksi, beberapa tokenawait erc1155Collection.mint( walletClient, 10n, // Mencetak 10 token dari jenis yang sama "https://example.com/metadata/resource.json", parseEther("0.001") * 10n, // Harga total untuk semua token [])// Untuk jenis token yang berbeda, gunakan transaksi terpisahconst tokenTypes = [ { uri: "https://example.com/wood.json", quantity: 5n }, { uri: "https://example.com/stone.json", quantity: 3n }, { uri: "https://example.com/gold.json", quantity: 1n }]for (const tokenType of tokenTypes) { await erc1155Collection.mint( walletClient, tokenType.quantity, tokenType.uri, calculatePrice(tokenType.quantity), [] )}
// Untuk ERC1155: Mencetak beberapa token dalam satu transaksiawait erc1155Collection.mint( walletClient, 10n, // Lebih efisien gas daripada 10 transaksi terpisah metadataURI, totalPrice, proof)// Untuk ERC721: Pertimbangkan operasi batch di tingkat aplikasiconst mintPromises = []for (let i = 0; i < 5; i++) { mintPromises.push( collection.mint(walletClient, 1n, undefined, mintPrice, proof) )}// Eksekusi mint secara bersamaan (hati-hati dengan pengelolaan nonce)const results = await Promise.all(mintPromises)