기타/개념정리

[이더리움] EIP20(토큰) 이해

코드아키택트 2022. 4. 9. 22:48
반응형

https://youtu.be/M576WGiDBdQ

 위의 튜토리얼을 듣기 시작한지 꽤나 많은 시간이 흘렀다. 기초를 거쳐, 이제는 Brownie, Openzeppelin 등을 이용하고 있다. 개념을 최대한 이해하면서 하려고 하지만, 진도를 따라가다보면 놓치는 경우가 많아서 위에서 나온 내용들을 잠시 정리해보는 시간을가진다

목차

1. EIP vs ERC

2. ERC20

3. 토큰 배포를 위한 solidity 코드

4. ICO를 위한 ERC20토큰

5. 끝맺으며


 

1. EIP vs ERC

 어디선 EIP 어디선 ERC라고 해서 둘의 차이를 간략히 알아본다.

ERC : Ethereum Request (for) Comments

 새로운 기능을 개발하기위해 개발자들이 따라야하는 규칙 또는 추천사항을 정의한 것이다. ERC는 EIP와 관련된 온체인 적용(applicaiton)레이어다

EIP : Ethereum Improvement Proposal

이더리움 커뮤니티에 디자인, 정보 또는 새로운 기능과 관련된 환경을 처리하는 것을 제공한다. 이더리움에 새로운 기능을 제안하는 가장 주된 기능이다.

 즉 위 내용만 봤을땐, EIP는 새로운 기능을 제안하는 행위로 볼 수 있다. 대략 어떻게 작동하는지 원리나 어떤 것이 필요한지 정보를 제공하는 행위로 볼 수 있다. 하지만 ERC는 EIP 내용을 누군가 제안 했을때, 개발자들이 따라야 하는 약속이라고 보면 될 것 같다.  그리고 EIP는 여러가지 기능을 제공하는 것이기 때문에 이더리움 주요 기능에 대한 여러가지를 제안하는 방식이지만, ERC는 Application  layer(dApp)에만 직접적으로 연관이 있다고 보면 될 것 같다.  그래서 결론적으로 단순히 블록체인을 응용한 dApp만 신경쓴다면 ERC라는 파트만 신경쓰면 되며, 본인이 가져다 쓰는 코드들은 다 ERC라고 생각하면 된다. 반대로 이더리움이라는 전반적인 생태계에 기여하고 싶다면 EIP라는 좀더 큰 카테고리를 건드리는 것이 맞다고 본다.

 

2. ERC20

 한창 알트코인들이 유행하던 시절, 지금도 그런지는 모르겠다. 수많은 코인 들이 튀어나왔다. 짧게 찾아본 결과, 이 코인들은 ERC20라는 것을 볼 수 있었다. 사실 ERC20은 누구나 원한다면 원하는 갯수만큼 만들 수 있다. 이게 거래소에 올라갈 수 있다면 현금으로 교환할 가능성이 생기고 그게 아니라면, 본인의 프로젝트를 위해 다양하게 쓰이는 물건이라고 보면 된다. 이더리움 개발자 페이지를 보면 ERC20 토큰의 용도를 여러가지로 정의하고 있다. 예를들어 온라인 플랫폼 평점, 게임케릭터 스킬, 복권 티켓, 주식, 화폐 등등. 즉 우리가 친근한게 돈으로 사고파는 류의 토큰이라서 그렇지 본인의 용도에 따라서 여러가지로 쓸 수 있다

 

3. 토큰 배포를 위한 단 세줄

// contracts/GLDToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract OurToken is ERC20 {
    //단위는 wei
    constructor(uint256 initialSupply) ERC20("OurToken", "OT") {
        _mint(msg.sender, initialSupply);
    }
}

EIP에도 나와있지만, 이미 필요한 기능들을 여러 개발 단체에서 만들어 놓았다. 유명한 양대산맥이 둘 있는 것 같은데, 튜토리얼에서는 Openzeppelin것을 사용한다. 많은 기능들이 이미 개발되어 있고, java의 extends 처럼 is 를 써서 해당 기능을 가져다 쓰면 된다. 자신의 토큰을 만들떄는, 최초 발행량, 토큰 이름, 심볼만 정의하면 된다. 이 튜토리얼에서 쓴 ERC20은 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/9b3710465583284b8c4c5d2245749246bb2e0094/contracts/token/ERC20/ERC20.sol 를 가져다 쓰고 있다. 근데 내용을 보니, 계약을 배포한사람(소유주) 이외에도 민팅(토큰을 더 찍어내는 행위)을 할 수 있도록 되어 있다. ERC20이 무엇인지 이해하는 수준으로만 한다면 위의 코드로 충분해 보인다. 만약 좀더 상업적 용도로 쓰고 싶다면 https://docs.openzeppelin.com/contracts/3.x/access-control 이 부분을 참조해서 개발하면 될 것 같다. 이곳에는 소유주만 토큰을 더 만들어 낼 수 있는 부분이 추가되어 있다.https://rinkeby.etherscan.io/token/0x8f9ff6245f915362011eb5c50291fdaa2667690d?a=0xF7575c46eA44411e5181fc2ac913F04e5DFC487c 

튜토리얼을 통해 배포한 토큰

4. ICO를 위한 ERC20 토큰?

 쓰다보니 이런 궁금증도 들었다. ICO(Initial Coin Offering, 토큰을 거래소에 상장하는 것)는 어떻게 되는 걸까? 한국인으로서 한국걸 알아봐야 겠지만 다른걸 봤다. 바로 Sushiswap.  이러한 거래소를 DEX(Decentralised Exchange)라고 부르는데 그 중 유명한 Sushiswap의 문서를 참고했다. Sushiswap문서에 따르면, 본인들 자체적인 기술로 어떠한 ERC20토큰도 본인들의 거래소에 올릴 순 있다곤 한다. 아마 이 뜻은 심사를 거쳐 거래소에 상장은 시켜줄 수 있다는 말로 보인다. ERC20을 미리 만든 사람은 어쩔수 없겠지만 Sushiswap에선 Miso라는 기능을 제공해 주는 것을 확인했다. 일본 컨셉충인거 같던데 미소된장국의 그 미소인것 같다. 그래서 설명인 즉, 미소를 사용하면 편리하게 Sushiswap에 상장할 수 있는 토큰을 만들 수 있는 것이다. 

deFi.cx MISO: Your Minimal Initial SushiSwap Offering라고 쓰여있다. 그만큼 쉽게 ICO할 수 있다는 뜻인듯

5. 끝맺으며

 블록체인 토큰얘기가 한창 많았었다. 직접 코드로 구현해보고 내용을 찾아보니 이제 어떤건지 대략 감이 잡힌다. 다들 ICO에 편중해서 사용했다는 점이 약간은 잘 모르겠다고 해야할지 아쉽다고 해야할지 하여튼 그런  생각이 들었다. 즉, 평판관리나 게임 캐릭터 스킬레벨 표시를 위해서도 쓸 수 있다는데 그런 사용예를 본적이 없어서 그랬다. ERC-20은 토큰 컨트랙트 중 초기에 나온 거라고 한다. 여기서 좀더 발전된 다른 프로토콜들도 있다고 한다. 필요에 따라서 참조해서 쓰면 될 것 같다.

 

끝.

 

 

참고링크


https://medium.com/coinmonks/what-the-heck-is-eip-and-how-can-i-create-one-ethereum-standards-eip-erc-faqs-2fd1194eebe0#:~:text=The%20main%20difference%20between%20EIPs,so%20popular%20and%20often%20discussed. 

 

What the heck is EIP and how can I create one ? Ethereum Standards EIP ERC FAQs

Defining roles of Ethereum Standards, EIPs, ERCs, how to build your own EIP, what’s the process of accepting EIP

medium.com

https://eips.ethereum.org/

 

Home | Ethereum Improvement Proposals

Ethereum Improvement Proposals (EIPs) describe standards for the Ethereum platform, including core protocol specifications, client APIs, and contract standards.

eips.ethereum.org

 

https://cointelegraph.com/blockchain-for-beginners/a-beginners-guide-to-understanding-the-layers-of-blockchain-technology#:~:text=Smart%20contracts%2C%20chaincode%20and%20decentralized,communicate%20with%20the%20blockchain%20network.

 

A beginner's guide to understanding the layers of blockchain technology

Five layers of technology make up blockchain architecture. In this guide, we will explain these layers and how blockchain's scalability issue can be solved.

cointelegraph.com

 

https://ethereum.org/en/developers/docs/standards/tokens/erc-20/

 

Home | ethereum.org

Ethereum is a global, decentralized platform for money and new kinds of applications. On Ethereum, you can write code that controls money, and build applications accessible anywhere in the world.

ethereum.org

https://docs.sushi.com/products/miso

 

Miso - Sushi

To enable new projects the best opportunity to launch cleanly onto the SushiSwap exchange, the Ingredients listed above can be combined in various ways - creating "Recipes". These recipes provide project teams the flexibility they need to create the launch

docs.sushi.com

https://instantmiso.gitbook.io/miso/faq

반응형