본문 바로가기
블록체인/블록체인이란?

ERC1155 란 무엇일까?! 스마트 컨트랙트 코드로 이해해보기.

by 제이제이_은재 2022. 9. 12.
반응형

 

💡ERC1155

 

프로젝트에서 ERC1155를 기반으로 한 서비스를 제작하기로 했고, 이와 관련해서 계속해서 공부 중이다.

 

검색하다 보면 이런 말을 찾을 수 있다. ERC20 그리고 ERC721의 장점을 결합하여 만든 것이 ERC1155이다. 이게 말이 쉽지, 뭔가 명확하게 머릿속에 박히지는 않는다.

 

https://docs.openzeppelin.com/contracts/4.x/erc1155

 

ERC1155 - OpenZeppelin Docs

We’ll use ERC1155 to track multiple items in our game, which will each have their own unique attributes. We mint all items to the deployer of the contract, which we can later transfer to players. Players are free to keep their tokens or trade them with o

docs.openzeppelin.com

 

공식 문서에 나와있는 코드를 확인해보면 다음과 같다.

 

// 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, "");
    }
}

 

우리가 흔히 NFT로 알고 있는 ERC721 처럼 스마트 컨트랙트 안에 여러개의 토큰을 생성할 수 있고, 해당 토큰의 갯수도 여러개로 만들 수 있는 것이다. 여기서 장점은 가스비를 한번만 내면되는 것이다.

 

위 코드 예제처럼, GOLD, SILVER, THORS_HAMMER, SWORD, SHIELD와 같은 토큰을 만들고 해당 토큰의 갯수를 아래처럼 지정할 수 있다. 

반응형

댓글