首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ERC1155 URI存储中要重写哪个函数

在ERC1155 URI存储中要重写哪个函数
EN

Ethereum用户
提问于 2022-07-02 12:51:05
回答 1查看 662关注 0票数 0
代码语言:javascript
复制
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol";

contract MyToken is ERC1155, ERC1155URIStorage, Ownable, ERC1155Supply {
constructor() ERC1155("") {}

function mint(address account, uint256 id, uint256 amount, bytes memory data)
    public
    onlyOwner
{
    _mint(account, id, amount, data);
}

function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
    public
    onlyOwner
{
    _mintBatch(to, ids, amounts, data);
}

// The following functions are overrides required by Solidity.

function _beforeTokenTransfer(address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
    internal
    override(ERC1155, ERC1155Supply)
{
    super._beforeTokenTransfer(operator, from, to, ids, amounts, data);
}
}

我在remix....any帮助中得到了这个错误?

EN

回答 1

Ethereum用户

发布于 2022-09-16 13:03:03

首先,ERC1155URIStorage和ERC1155Supply继承了ERC1155,因此不需要将ERC1155声明为MyToken合同的另一个父级。

发生此错误是因为ERC1155URIStorage和ERC1155 (通过附加声明和通过ERC1155Supply导入)都定义了具有相同签名的函数:

代码语言:javascript
复制
function uri(uint256 tokenId) public view virtual override returns (string memory)

为了解决这个问题,您可能需要再次重写函数,以防您真的需要ERC1155Supply扩展。

代码语言:javascript
复制
function uri(uint256 tokenId) public view override(ERC1155, ERC1155URIStorage) returns (string memory) {
    return ERC1155URIStorage.uri(tokenId);
}
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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