- ERC-20은 이더리움 블록체인 네트워크에서 정한 표준 토큰 스펙이다.
- ERC-20은 EIP-20에서 논의되어 생성된 standard로, 이를 통해서 FT(Fungible Token)를 만들 수 있다.
🍋 EIP(Ethereum Improvement Proposal)는 이더리움의 핵심 프로토콜 사양과 클라이언트 API 및 계약 표준을 포함하여 이더리움 플랫폼의 표준을 설명한다.- Ethereum Request for Comment 중에서 20번째 request를 가리키는 ERC-20은 이더리움 네트워크의 개선안을 제안하는 EIPs에서 관리하는 공식 프로토콜이다.
- 필요한 이더리움과 호환성이 있는 모든 요구사항을 충족시키는 표준은 ERC-20으로 간주된다.
- ERC-20 토큰은 이더리움과 교환이 가능하며 이더리움 지갑으로 전송할 수 있다.
이더리움 블록체인 상의 디앱은 다양한 분야에 적용될 수 있는 각각에 솔루션이 있고, 그에 맞는 토큰을 발행한다.
🥡 이때 발행된 토큰은 이더리움 생태계에서 호환되어 사용이 가능하다.
dApp내에서 토큰 교환과 다른 이더리움 플랫폼 기반의 dApp의 토큰과의 교환이 가능하고, 이는 ERC-20 표준으로 가능해졌다.
🍅 따라서, 이더리움 플랫폼에서 각각의 dApp이 발행한 토큰을 통합하여 한 번에 쉽게 이더리움으로 바꿀 수 있다.
ERC-20 토큰은 스마트 컨트랙트의 속성을 지원한다.
🥝 ERC-20 토큰의 기준으로 스마트 컨트랙트 기능이 있는지, 없는지가 될 수 있다.
ERC-20 토큰은 표준 이더리움 지갑(My Ether Wallet, Meta Mask, Mist ...)에 자유롭게 전송할 수 있다.
ERC-20 에서 소유자가 토큰을 전송할 때에는 tranfer 함수를 사용하고, 승인받은 유저가 토큰을 사용할 때는 transferFrom 함수를 사용한다.
ERC-20 기반의 토큰으로 펀디엑스(NPXS), 오미세고(OMG), 비체인(VEN)가 있으며, 이오스(EOS)나 트론(TRX)역시 과거에는 이더리움 기반 토큰이었다.
🥥 이오스와 트론은 자체 메인넷이 출시되면서 독립적인 코인으로 재탄생하였다.
ERC-20 토큰은 스마트 계약을 통해 생성되며, 스마트 계약이 CyClean(싸이클린) 토큰을 만드는데 사용된다.
🫑 스마트 계약은 싸이클린의 채굴 시스템에서 중요한 역할을 한다.
스마트 계약을 통해 ERC-20 토큰을 만들면, 이 토큰을 다른 주소로 보낼 수 있고 토큰은 이더리움 생태계의 dApp에서 여러가지 역할을 한다.
ERC-20 토큰을 개발하기 위해서 추가적으로 Ganache(가나슈, 가상의 이더리움 네트워크), Truffle 프레임워크, OpenZeppelin 프레임워크(스마트 컨트랙트 개발) 등을 사용할 수 있다.
🍄 오픈제플린의 ERC-20 코드 : https://github.com/OpenZeppelin/openzeppelin-contracts/tree/v2.5.1/contracts/token/ERC20
🍄 EIP-20 : https://eips.ethereum.org/EIPS/eip-20
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.10;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract ZeppelinTestToken is ERC20 {
constructor() ERC20("ZeppelinTestToken", "ZTT") {
_mint(msg.sender, 100000000e18);
}
}
- 이더리움의 EIP와 동일하게 클레이튼에서는 KIP(Klaytn Improvement Proposals)가 있다.
- 클레이튼의 FT(Fungible Token)의 표준은 KIP-7이다.
- KIP-7은 REC-20을 기반으로 만들어졌다.
- KSA 프레임워크를 통해서 truffle로 빌드할 수 있고, 오픈제플린 처럼 클레이튼에서도 스마트 컨트랙트 개발을 위한 공식 라이브러리가 제공된다.
🧅 Klaytn-contracts : https://github.com/klaytn/klaytn-contracts- 라이브러리를 통해서 가나슈 역시 사용할 수 있다.
🍄 KIP-7에 대한 코드 : https://github.com/klaytn/klaytn-contracts/blob/master/contracts/token/KIP7/KIP7.sol
🍄 클레이튼 docs : https://docs-space.klaytn.com/smart-contract/token-standard
한글 문서 : https://ko.docs.klaytn.com/smart-contract/token-standard
🍄 KIP-7 : https://kips.klaytn.com/KIPs/kip-7
참고 자료 출처 : 코드 스테이츠