ERC-20

chris0205.eth·2022년 2월 20일
0

이더리움

목록 보기
2/2
post-thumbnail

들어가며

NFT, 스마트 계약, ICO(Initial Coin Offering) 등에 많은 관심이 쏟아지고 있다. 이처럼 토큰을 배포하는 행위가 어떻게 가능할까?

이더리움은 자체 블록체인을 기반으로 다양한 탈중앙화된 애플리케이션들이 작동할 수 있도록 고안된 하나의 플랫폼 네트워크이다. dapp은 이러한 이더리움 플랫폼 상에서 스마트 계약을 이용하여 쉽고 빠르게 토큰을 발행할 수 있다.

이더리움 블록체인에서는 이더(ETH)가 사용되고, 이더리움 블록체인 상의 댑은 또 다른 다양한 분야에 적용될 수 있는 각각의 솔루션으로 그에 맞는 토큰을 발행한다. 여기서 발행된 토큰은 독자적인 토큰인 듯 하지만 실제로는 이더리움 생태계에서 호환 및 사용 가능하다.

여기서, 다양한 댑의 토큰들에 대한 표준으로써 ERC 20 토큰 표준이 만들어졌다.


ERC 20

Ethereum Request for Comments 20의 약자로 이더리움 네트워크 상에서 유통할 수 있는 토큰의 호환성을 보장하기 위한 표준 사양이다.

ERC-20 토큰은 스마트 계약의 속성을 지원해야만 한다. 스마트 계약은 온라인 환경에서 암호화폐 교환 시, 일정 행동이 불가역적으로 전개되는 기능을 통해, 중앙관리가 배제된 서비스를 구현할 수 있는 것이 강점이며, 이더리움 블록체인에서 구현이 용이하다.

댑은 이더리움 블록체인 플랫폼을 활용해 자신의 비즈니스를 구현하고, 자금모집 및 거래체계, 플랫폼 사용료를 이더리움으로 지불하는 체계를 가지고 토큰을 발행하며, 실제로 이더리움 기반으로 토큰 발행이 많다. 즉, ERC-20 토큰이 되기 위한 기준은 스마트 계약 기능이 포함이 되었나, 되지 않았나로 볼 수 있다.

ERC 20 토큰은 스마트 계약으로 생성된다.
일반적인 계약이 조항과 조건들을 포함하듯이 ERC 20 스마트 계약도 프로그래밍 언어로 쓰여진 몇가지 함수들의 모임을 포함한다.

ERC 20 token Standard Interface

ERC 20 토큰은 여섯가지 함수와 두가지 이벤트, 그리고 선택적 규칙 세가지를 갖는다.

간략하게 위의 함수들과 이벤트를 살펴보자.

functions

  • totalSupply() : 총발행량을 말하며, 총발행량은 토큰이 총 몇 개나 있는지 알려주고 생성되어 순황에 사용할 수 있는 토큰 수를 지정한다.
  • balanceOf() : 잔액을 말하며, 계정에 있는 토큰을 반환하고, 모든 지갑의 토큰 균형을 추적한다.
  • allowance() : 허용 기능으로 누군가가 시스템을 속이고 본인이 소유한 것보다 더 많은 토큰을 보내고자 하는 상황일 때, 허용 기능 덕분에 사용자들은 자신들이 가진 것보다 더 많은 토큰을 보낼 수 없다. 거래가 이루어지면 취소된다. 모든 트랜잭션은 트랜잭션이 실행되기 전에 유효한지 이중으로 확인된다.
  • transfer() : 송금을 말하며, 이 함수를 통해 토큰을 총 발행 주소에서 개인 계정으로 송금할 수 있다. 초기 토큰 배포를 지정된 지갑으로 실행한다. 이 함수는 ICO 토큰이 일반적으로 ERC-20 토큰이다.
  • approve() : 승인 기능은 사람들이 위조 토큰을 만드는 것을 방지한다. 토큰의 총 발행 양을 확인해 트랜잭션을 허용하거나 거부하고, 최대 토큰 수를 유지 관리하고 어떤 지갑에 어떤 토큰이 있는지 추적한다.
  • transferFrom() : 사용자는 송금 기능을 사용하여 측정 토큰을 사용자가 전송하고 교환한 수 있다. 이 함수는 지갑 주소, 수령인, 송금액을 얻은 중개인처럼 작동한 다음 거래를 수행한다.

events

  • Transfer() : 한 주소에서 다른 주소로 이동한 토큰에 대한 상호작용의 세부사항을 제공한다.
  • Approval() : 토큰의 승인에 관한 세부사항을 제공한다.

optionals

모든 사람의 편의를 위해 존재한다.

  • 토큰 이름
  • 심볼
  • decimals : 토큰을 몇 개의 10진수로 나눌 수 있는지를 알려준다. 10진수 값이 0이면 토큰이 분리되지 않는다.

Dark side of ERC 20

모든 코인에는 양면이 있듯이, ERC 20 토큰 또한 one-size-fits-all(누구에게나 다 맞는) 해결법은 아니다.

The batchOverflow Bug

간단히 말해서, 이 버그는 해커가 난데없이 많은 토큰을 소유할 수 있게 해주는 버그이다.

source

Unexpected Money Losses

모든 토큰들은 스마트 계약이며, 이 스마트 계약들은 토큰의 동작을 정의하다. 이러한 스마트 계약들은 특정한 종류의 토큰들과 작동하도록 설계되어 있다.

만약 이더를 사용하지 않는 스마트 계약에 이더가 전송되면 이더는 사라져버린다.
(warning 이란 경고창 하나 없이 말이다.)

Other Standard

ERC 223 token standard

ERC 223 표준은 ERC 20 표준에 비해 개선되었으며 하위 호환성을 가진다. 따라서 ERC 20 토큰과 ERC 223 토큰은 상호작용이 가능하다.

개선된 내용으로는 지급받는 토큰이 무효한 스마트 계약상에서도 사라지지 않도록 하는 것이 있다. 또 다른 내용은 토큰들이 스마트 계약에서 한 번에 다른 지갑으로 보내질 수 있도록 지원한다. 이 기능 때문에 지갑은 원장 업데이트를 위해 토큰 스마트 계약을 필요로 하지 않는다. 이 새로운 기능에 따른 부산물은 두 개가 아니라 하나의 기능을 확인하는 것이기 때문에 가스비가 절반 정도밖에 안 된다는 것이다.

ERC 721 token standard

최근 아주 핫한 NFT(non-fungible token)의 표준이다.
말에서 드러나듯이 복수의 소유자들 사이에서 공유될 수 없는 토큰을 개발할 수 있게 한다.

ERC 721 표준에 대한 것은 추후에 있을 포스트에서 좀 더 자세하게 다뤄보도록 하겠다.


마치며

ERC 20 기반 토큰은 펀디엑스(NPXS), 오미세고(OMG), 비체인(VEN) 등이 있으며, 이 외에도 수많은 토큰들이 이더리움 블록체인 네트워크를 기반에 두고 있다. 이오스(EOS), 트론(TRX) 등은 이더리움 기반 토큰으로 생성되었으나 자체 메인넷 출시와 함께 독립적인 코인으로 재탄생했다.

이처럼 토큰 개발 초기에는 돈, 시간 등을 아끼기 위해 이더리움 네트워크를 사용해 비교적 쉽게 토큰을 만들어 사용한다. 하지만, 시간이 지남에 따라 자체적인 메인넷을 구축하여 독립적인 코인으로 개발을 하기도 한다.

이러한 자체 개발된 메인넷 상의 토큰과 이더리움 네트워크, 비트코인 네트워크 등의 코인들 간에 상호운용성은 어떻게 구축되는 것인지 궁금하기 시작했다.


참고

ERC 20 token standard
Smart contracts
How to creat and deploy an ERC 20 token on Ethereum blockchain

profile
long life, long goal

2개의 댓글

comment-user-thumbnail
2022년 3월 2일

잘보고갑니다

1개의 답글