Ed *_*uez 3 hashgraph hedera-hashgraph
我想铸造 100 个 NFT。我需要调用“TokenMintTransaction()”100 次吗?有没有办法在一次 API 调用中铸造 100 个 NFT?
这是我正在使用的代码:
let mintTx = new TokenMintTransaction().setTokenId(tokenId).setMetadata([Buffer.from(CID)]).freezeWith(client);
Run Code Online (Sandbox Code Playgroud)
我可以在 .setMetadata() 中传递什么来铸造多个 NFT?
是的,可以在一个 NFT 中铸造多个NFTTokenMintTransaction(),但有一些事情需要注意。
一笔交易的最大大小为 6,144 kb(包括签名)。
.setMetadata()接受一系列 NFT 元数据。每个数组元素都会生成一个 NFT,该 NFT 具有在令牌类型下创建的唯一序列号。交易收据将包含该交易创建的所有新序列号。
密切关注元数据的大小非常重要,因为如果您在数组中放入太多项目,您将收到错误TRANSACTION_OVERSIZE,并且不会铸造任何 NFT。
以下是在单笔交易中铸造多个 NFT 的示例:
let metadata = [];
let CID = [];
for (let i = 0; i < 3; i++) {
// NFT STORAGE
const fileName = `LEAF${i + 1}.jpg`;
metadata[i] = await nftClient.store({
name: `LEAF${i + 1}`,
description: "Leaf NFT.",
image: new File([await fs.promises.readFile(fileName)], fileName, { type: "image/jpg" }),
});
CID[i] = Buffer.from(metadata[i].url);
// IPFS URI FOR NFT METADATA - See HIP-412: https://hips.hedera.com/hip/hip-412
let ipfsBaseUrl = "https://ipfs.io/ipfs/";
let ipfsGatewayLink = ipfsBaseUrl + metadata[i].ipnft + "/metadata.json";
console.log(`- IPFS link for serial ${i + 1}: ${ipfsGatewayLink} \n`);
}
// MINT NEW BATCH OF NFTs
let mintTx = new TokenMintTransaction().setTokenId(tokenId).setMetadata(CID).freezeWith(client);
let mintTxSign = await mintTx.sign(operatorKey);
let mintTxSubmit = await mintTxSign.execute(client);
let mintRec = await mintTxSubmit.getRecord(client);
console.log(`- Minting fees: ${mintRec.transactionFee._valueInTinybar.c[0] * 1e-8} hbar \n`);
Run Code Online (Sandbox Code Playgroud)
虽然一次创建 100 个 NFT 可能不太可能,但您应该能够一次创建数十个(取决于元数据大小)。
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |