如何单次调用TokenMintTransaction在Hedera批量铸造多个NFT
问题解答
不需要累计调用100次TokenMintTransaction(),Hedera Token Service原生支持单笔交易批量铸造NFT,单笔交易最高支持单次铸造100个NFT,完全可以通过一次API调用完成你100个NFT的铸造需求。
.setMetadata()参数要求
这个方法接收元素为Buffer类型的数组作为入参,数组的长度对应当次交易铸造的NFT数量,数组中每一个Buffer元素对应单个NFT的元数据(通常是你存储元数据的CID转成的Buffer值)。
你当前的代码里只在数组中传入了1个CID转成的Buffer,所以每次只会铸造1个NFT,要实现一次性铸造100个,只需要把100个NFT各自对应的CID分别转成Buffer,统一放到数组中传入即可。
参考实现代码
// 1. 提前整理好100个NFT对应的元数据CID列表 const nftCidList = [ "bafybeih1xxxxxxxxx第一个NFT的CID", "bafybeih2xxxxxxxxx第二个NFT的CID", // 此处省略中间97个CID条目,累计凑够100个即可 "bafybeih100xxxxxxxxx第一百个NFT的CID" ]; // 2. 将所有CID转为Buffer格式,组装成元数据数组 const batchMetadata = nftCidList.map(cid => Buffer.from(cid)); // 3. 构造批量铸造交易 let mintTx = new TokenMintTransaction() .setTokenId(tokenId) .setMetadata(batchMetadata) // 传入长度为100的Buffer数组 .freezeWith(client);
注意事项
- 单笔
TokenMintTransaction批量铸造NFT的数量上限为100个,刚好匹配你本次的铸造规模,不需要拆分多笔交易 - 交易执行后,铸造出的NFT会按照你传入元数据数组的顺序,依次分配序列号
- 请确保传入的每个CID都对应已上传完成、可正常访问的元数据文件,避免铸造出的NFT无法解析元数据
内容的提问来源于stack exchange,提问作者Ed Marquez
相关产品推荐
相关产品推荐

