ERC1155代币,如何创建ERC1155代币
ERC1155 Token, How To Create ERC1155 Token
我正在尝试使用 openzeppelins 的 git 存储库创建一个 ERC1155 令牌。
我正在尝试编写 contract.sol 文件,但遇到了一些错误。
// 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);
}
}
以上是我的代码。
以下是我的错误
TypeError: Wrong argument count for function call: 2 arguments given but expected 4.
--> ERC1155token.sol:22:14:
|
22 | _mint(account, id);
| ^^^^^^^^^^^^^^^^^^
我可以理解我在 getbalance()
中使用的 _mint()
需要 4 个参数,而参数是。
address account,
uint256 id,
uint256 amount,
bytes memory data
_mint() 是-
function _mint(
address account,
uint256 id,
uint256 amount,
bytes memory data
)
所以我尝试传递 4 个参数并在传递第三个参数时出现新错误。
function getBalance(address account, uint256 id, uint256 amount) external {
_mint(account, id, amount);
}
我得到的错误-
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)合约中定义的相同函数,我在合约中继承了该函数。
function balanceOf(address account, uint256 id) external{
_mint(account, id);
}
这给了我另一个错误,见下文。
第一-
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 令牌时完全卡住了。我正在寻求帮助。我正在使用 remix editor 编写合同的最后一件事。
为什么在 getBalance 函数中_mint
这是balanceOf函数
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
require(account != address(0), "ERC1155: balance query for the zero address");
return _balances[id][account];
}
这个函数已经在ERC1155里面了,不用写了
你需要编写 mint 函数因为它是内部的
函数薄荷(
地址帐户,
uint256 ID,
uint256 金额
) public {
_mint(帐户,ID,金额,“”);
}
我正在尝试使用 openzeppelins 的 git 存储库创建一个 ERC1155 令牌。
我正在尝试编写 contract.sol 文件,但遇到了一些错误。
// 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);
}
}
以上是我的代码。 以下是我的错误
TypeError: Wrong argument count for function call: 2 arguments given but expected 4.
--> ERC1155token.sol:22:14:
|
22 | _mint(account, id);
| ^^^^^^^^^^^^^^^^^^
我可以理解我在 getbalance()
中使用的 _mint()
需要 4 个参数,而参数是。
address account,
uint256 id,
uint256 amount,
bytes memory data
_mint() 是-
function _mint(
address account,
uint256 id,
uint256 amount,
bytes memory data
)
所以我尝试传递 4 个参数并在传递第三个参数时出现新错误。
function getBalance(address account, uint256 id, uint256 amount) external {
_mint(account, id, amount);
}
我得到的错误-
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)合约中定义的相同函数,我在合约中继承了该函数。
function balanceOf(address account, uint256 id) external{
_mint(account, id);
}
这给了我另一个错误,见下文。
第一-
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 令牌时完全卡住了。我正在寻求帮助。我正在使用 remix editor 编写合同的最后一件事。
为什么在 getBalance 函数中_mint
这是balanceOf函数
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: balance query for the zero address"); return _balances[id][account]; }
这个函数已经在ERC1155里面了,不用写了
你需要编写 mint 函数因为它是内部的
函数薄荷( 地址帐户, uint256 ID, uint256 金额 ) public { _mint(帐户,ID,金额,“”); }