我希望在我的智能合同的constructor中创建大约100个NFT(或更多的NFT)。
·在部署期间,我将一个由100个ETH地址组成的数组传递给constructor,然后该数组使用一个for循环来遍历该数组,在每次迭代时从array创建一个NFT到当前地址。(这是通过调用OpenZeppelin的_safeMint()合同中的标准ERC721函数来实现的--我正在为这个项目使用他们的契约和库。)
·我尝试在localhost上运行所有这些,到目前为止运行起来非常棒--接下来我肯定会在Ropsten和/或Goerli上测试它。当然,我们都知道,当涉及到在mainnet上部署时,事情会有很大的变化。
所以我想找出以下几点:
顺便说一句,我们确实意识到这并不便宜,但是我们愿意承受这一打击,所以它实际上更多的是关于从技术上来说块大小的可能性--什么不是。
注意:我还计划在合同中增加一个独立的batchMint()函数,允许我们一次创建30个NFT,再次使用一个for循环来调用_safeMint() --这样我们就可以将它作为备份。
换句话说,如果我们需要总共保存300个NFT,但是构造器在部署时只能处理75个NFT,那么我们就可以手动调用batchMint()函数很多次,直到我们完成项目所需的所有NFT。
但是即使在这里,我们也需要弄清楚每次调用for函数时,在一个batchMint()循环中可以创建多少NFT的限制。
发布于 2022-08-13 17:04:22
成本是gas * gasPrice。
您可以使用JavaScript虚拟机或在测试网上进行脱机测试,并且您的实验的gas消耗应该是一致的。
您支付的gasPrice是在部署合同时建立的。它会随着市场状况和你想要分配给交易的优先级而波动。它会影响部署的“成本”,当然,如果网络拥堵且成本太高,您可以延迟部署。https://www.ethgasstation.info/可以给你一个估计的想法。
区块gasLimit是一个硬上限的天然气量,您的交易可以燃烧。除此之外,它只会失败(不惜任何代价)。看一下这里,看看这个值是什么。它也会波动。
由于您认识到在构造函数之外需要一个bulkMint()函数,我将考虑完全依赖它来避免代码中的重复。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/133560
复制相似问题