동도리 개발 로그
ERC1155 SmartContract 정리 본문
반응형
현재 회사에서 ERC1155를 기반으로한 서비스를 만들면서 들었던 생각을 정리 하여한다.
처음 접했을때 기존의 ERC20 이나 ERC721는 명확하게 어떤식으로 사용되는지는 그림이 그려지는데 ERC1155는 그림이 그려지지 않았다.
'20과 721가 혼합되어 개선된 스마트 컨트렉트가 1155 이다.'
말은 쉽지 뭘 어떻게 쓴다는 것인지...
https://docs.openzeppelin.com/contracts/4.x/erc1155
역시 개발자는 말보다 코드로 보는게 빨리 이해가 되는것 같다.
ERC721 처럼 NFT 스마트 컨트렉트 안에
여러개의 토큰을 생성 할 수 있으며, 해당 토큰의 갯수도 여러개로 만들 수 있다.
한개만 만들수도, 여러개를 만들 수도 있는 것이다.
// contracts/GameItems.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
contract GameItems 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, "");
}
}
GOLD, SILVER, THORS_HAMMER, SWORD, SHIELD 와 같은 토큰을 만들고
초기에 해당 토큰별로 갯수를 지정하여 mint 해주는 example이다.
0,1,2,3,4와 같은 id는 따로 지정이 가능하다.
컨트렉트의 owner는 초기의 갯수 외 추가로 발급(mint)가능하다.
반응형
'블록체인 > 이더리움' 카테고리의 다른 글
스마트컨트렉트 - ERC1155 - byte type 생성 (0) | 2022.03.18 |
---|---|
Web3j - SmartContract (ethCall Decoder) ERC1155 (0) | 2022.03.10 |