Solidity

如何檢查使用者是否擁有特定合約中的 ERC1155 代幣?

  • February 28, 2022

我在 opensea 上有一個 ERC1155 集合,我正在嘗試檢查我的契約以查看使用者是否擁有該集合中的任何代幣,以及有多少。使用 ERC721 我能夠做到這一點,但我遇到了 ERC1155 balanceOf 的問題 -

require(IERC1155(0x00...).balanceOf(msg.sender) >= 1, "No tokens owned!");

我沒有確切的 tokenID,因為它取決於使用者擁有的東西。如何進行檢查?

編輯

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";

import "@openzeppelin/contracts/access/Ownable.sol";

import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";

contract test is ERC721URIStorage, Ownable {

using Strings for uint256;

constructor() ERC721("TEST", "TEST") {}

function viewBalance() external view returns (uint256) {return IERC1155(contractAddress).balanceOf(userAddress,tokenID);}

}

contractAddress、userAddress、tokenID - 用作文章的佔位符。我將值直接放在我的程式碼中。

不幸的是,您必須在 erc1155 中指定令牌 ID。沒有辦法對標準的 erc1155 合約執行此操作。

引用自:https://ethereum.stackexchange.com/questions/121800