我们应该如何自己做一个 批量mint NFT的合约,节省gas,也防止别人抽税。
批量mint的好处
- 节省人力,如果项目只能一次Mint一张的话,不需要那么费事费力手动去点
- 节省gas,同mint 100张nft, 批量合约mint,大概能省个 8~15%的gas费用 (有的可能会更多,不一定的,不过用eip-1167的话倒是比较省)
- 可以收费,既然批量mint合约可以省时省gas,就可以开源给别人用,并且在代码里面,写明收 x%的费用,或者mint 20张收1张 - 熟悉代码,有的时候能找到一些bug
大概路径
路径超级简陋图如下:
对于批量mint NFT,要结合具体的项目合约来使用,有的合约有限制的时候是不可以进行批量mint的
有些是可以,如之前的 $xen $clips $ferc 都是可以做到批量mint,特别是 $ferc 由于合约的问题,当时mint一个会吃税,但是有批量mint合约的话,只会吃税1次,但是得到了100 不要特别迷信批量mint就会省钱,
因为
- 成本:部署合约 + 调用合约成本
- 可能存在的收益:节省gas + 收税开源给别人使用
基础前提
得有一定的solidity基础,如果没有solidity基础的话,可以先去学或者直接先看一下熟悉一下也行
然后对于以后有些nft或者airdrop的领取的话,自己都可以去看项目代码看能否使用批量
如果对于抓不准的,也欢迎大家发我,然后我看看能不能写批量,毕竟我也想实践中成长
具体代码撰写思路
- 若项目合约不存在地址校验,则批量mint只需要连接一次项目合约,遍历循环即可
- 若项目合约只存在 msg.sender 的判断,如 msg.sender 一天只能mint一次,则此时我们只需要在合约中创建多个子合约去调用即可
- 若项目合约将 msg.sender 为合约账户给ban掉, 如 (msg.sender !=tx.origin) 则此时我们不能做批量合约
具体代码链接
- 直接循环mint:
https://github.com/balckecn/solidityTemplate/blob/main/batch/batchMint.sol
- 创建子合约mint:
https://github.com/balckecn/solidityTemplate/blob/main/batch/batchMintBySubContract.sol
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。