首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将NFT空投给特定的NFT所有者?

如何将NFT空投给特定的NFT所有者?
EN

Stack Overflow用户
提问于 2022-07-08 16:21:30
回答 2查看 234关注 0票数 0

我想了解如何将免费的ERC721或ERC20令牌提供给特定的NFT所有者地址。例如,无聊的Ape游艇俱乐部创造了一个ERC20硬币,它的数量是预先确定的,只能向BAYC的所有者索赔。我试图在他们的智能契约中找到答案,但我找不到他们的ERC20硬币合约,因此我不知道如何限制硬币的分发。

在我的项目中,我希望创建2个ERC721智能契约,第一个合同中的NFT的所有所有者都应该能够创建来自第二个智能契约的免费NFT。如果您是智能合同1的NFT的所有者,您可以从智能合同2中获得免费的NFT。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-08 17:29:00

在第二个智能契约中,您可以检查mint函数的调用方是否是第一个智能契约的令牌持有者。

代码语言:javascript
复制
function mint() external {
  require(IERC721(_firstToken).balanceOf(msg.sender) > 0, 'should be a holder of the first token');

  _mint();
}

您可以从ERC721导入openzeppelin文库接口,也可以直接从EIP-721中剪切和粘贴。

票数 1
EN

Stack Overflow用户

发布于 2022-07-11 07:43:38

对于每个单个nftTwo令牌可以创建多少nftOne令牌,必须有一些限制。否则,您将被利用,用户将能够制造无限数量的nftTwo令牌。

代码语言:javascript
复制
IERC721 public nftOne;
uint public nftTwoMaxMintCount;
mapping(uint => uint) public nftTwoMints;

function mintNftTwo(uint nftOneTokenId) external {

    // Only the owner of nftOne token can execute mint
    require(msg.sender == nftOne.ownerOf(nftOneTokenId), "not the owner of nftOne token");

    // The number of allowed nftTwo token mints is limited by nftTwoMaxMintCount 
    require(nftTwoMints[nftOneTokenId] <= nftTwoMaxMintCount, "nftTwo token mints overflow");

    // Increment the number of minted nftTwo tokens per nftOne token id
    nftTwoMints[nftOneTokenId] += 1;

    // Execute mint
    _mintNftTwo(); 

}

请查看OpenZeppelin的ERC721实现并阅读他们的文档以获得更多细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72914296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档