首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ERC1155令牌,如何创建ERC1155令牌

ERC1155令牌,如何创建ERC1155令牌
EN

Stack Overflow用户
提问于 2021-08-05 05:56:48
回答 1查看 1.6K关注 0票数 0

我正在尝试使用ERC1155的git存储库创建一个开泽平令牌。

我正在尝试编写contract.sol文件,但是我遇到了一些错误。

代码语言:javascript
复制
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol";

contract KapilERC1155Token is ERC1155 {
    uint256 public constant GOLD = 0;
    uint256 public constant SILVER = 1;
    uint256 public constant THORS_HAMMER = 2;
    uint256 public constant SWORD = 3;
    uint256 public constant SHIELD = 4;

    constructor() ERC1155("https://game.example/api/item/{id}.json") {
        _mint(msg.sender, GOLD, 10**18, "");
        _mint(msg.sender, SILVER, 10**27, "");
        _mint(msg.sender, THORS_HAMMER, 1, "");
        _mint(msg.sender, SWORD, 10**9, "");
        _mint(msg.sender, SHIELD, 10**9, "");
    }
         function getBalance(address account, uint256 id) external {
             _mint(account, id);
          
      }
    }

上面是我的密码。以下是我的错误

代码语言:javascript
复制
TypeError: Wrong argument count for function call: 2 arguments given but expected 4.
--> ERC1155token.sol:22:14:
|
22 | _mint(account, id);
| ^^^^^^^^^^^^^^^^^^

我可以理解,我在_mint()中使用的getbalance()需要4个参数,参数如下。

代码语言:javascript
复制
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data

_mint()是-

代码语言:javascript
复制
function _mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) 

因此,我尝试传递4个参数,并在传递第三个参数时获得新的错误。

代码语言:javascript
复制
    function getBalance(address account, uint256 id, uint256 amount) external {
             _mint(account, id, amount);
          
      }

我所犯的错误-

代码语言:javascript
复制
TypeError: Wrong argument count for function call: 3 arguments given but expected 4.
--> ERC1155token.sol:22:14:
|
22 | _mint(account, id, amount);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^

这根本不起作用。所以我所做的。我使用了在openzepplin(https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol)合同中定义的相同函数,这是我在合同中继承的。

代码语言:javascript
复制
  function balanceOf(address account, uint256 id) external{
             _mint(account, id);
         }

这给了我另一个错误,见下文。

第一-

代码语言:javascript
复制
TypeError: Overriding function is missing "override" specifier.
--> ERC1155token.sol:21:10:
|
21 | function balanceOf(address account, uint256 id) external{
| ^ (Relevant source part starts here and spans across multiple lines).
Note: Overridden function is here:
--> https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol:69:5:
|
69 | function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
| ^ (Relevant source part starts here and spans across multiple lines).

现在,我在创建ERC1155令牌时完全被困住了。我在找人帮忙。最后一件事是我用混编编辑器来写我的合同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-05 07:44:24

为什么_mint在getBalance函数中

  1. 这是balanceOf函数 函数balanceOf(地址帐户,uint256 id)公共视图虚拟覆盖返回(uint256) { require(account != address(0),"ERC1155: balance query for the zero address");返回_balancesid;} 这个函数已经在ERC1155中了,所以您不需要编写它
代码语言:javascript
复制
1. You need to write mint function cause it is internal

函数薄荷(地址帐户,uint256 id,uint256金额)公开{_mint(帐户,id,amount,"");}

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

https://stackoverflow.com/questions/68661290

复制
相关文章

相似问题

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