首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ERC721被创建为空地址。

ERC721被创建为空地址。
EN

Ethereum用户
提问于 2022-04-20 12:15:10
回答 1查看 383关注 0票数 0

下面是薄荷ERC721令牌的合同代码:

代码语言:javascript
复制
contract NFT is ERC721URIStorage, Ownable {

    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;

    constructor()ERC721 ("Lambo", "LMB") public {}

    function mintNFT(address to, uint256 tokenId, string memory tokenURI) public {
        require(to != address(0), "ERC721: token mint to contract owner address");
        require(!_exists(tokenId), "ERC721: token already minted");
        _mint(to, tokenId);
        _setTokenURI(tokenId, tokenURI);
    }

    function burnToken(uint256 tokenId) public {
        _burn(tokenId);
    }

    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for zero address");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        return owner;
    }
}

为薄荷ERC721令牌编写测试,并验证造币地址是否拥有令牌:

代码语言:javascript
复制
const firstMinter = accounts[4]; //0xD235287FcBE172407F5692Bc25cD73989a7d6777

it("Minting ERC721 Tokens", async() => {
        let nftInstance = await mintNFTs.deployed();

        await nftInstance.mintNFT(firstMinter, 1, "ipfs://QmQZTUekV9P7cKRiVVwdahyaFNZEt6Yt7fGtcRfsLSWpyP/evocube.json");

        console.log("ERC721 Tokens have been minted for whitelist")
    })

    it("Verifying Whitelist Owners have ERC721 Tokens", async() => {

        const nftInstance = await mintNFTs.deployed();

        let firstOwner = await nftInstance.ownerOf(1);
        console.log(firstOwner);
        assert.equal(firstMinter, firstOwner, "Error: First Minter doesn't own the token");
    })

以下是我所收到的测试结果:

AssertionError: Error: First不拥有令牌:预期'0xD235287FcBE172407F5692Bc25cD73989a7d6777‘等于’0x00000000000000000000000000000000000000000‘。

EN

回答 1

Ethereum用户

发布于 2022-04-20 16:38:10

我认为您的问题在于,firstMinter在部署tokenID 1之前还没有拥有NFT,所以firstOwner是空的。

代码语言:javascript
复制
assert.equal(firstMinter, firstOwner, "Error: First Minter doesn't own the token");
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/126573

复制
相关文章

相似问题

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