ERC-20이란 무엇일까? ERC-223, ERC-777, ERC-721, ERC-998와의 비교
본문 바로가기
Block Chain

ERC-20이란 무엇일까? ERC-223, ERC-777, ERC-721, ERC-998와의 비교

by 쏠수있어ㅤ 2022. 3. 2.
반응형

이더리움 블록체인 공부를 하다보면 자주 등장하는 "ERC-20"

토큰 규격이라는 모호한 개념만 알아서 이번에 자세하게 공부겸 정리해보기

 

ERC-20이란?

Ethereum Request for Comment 20 의 약자이다. 

ERC-20은 이더리움 블록체인 네트워크에서 정한 표준 토큰 스펙이다. 즉, "ERC-20" 규격에 맞춰 만든 토큰은 이더리움 네트워크 상에서 이더리움과 교환 가능하며 이더리움 지갑으로 전송이 가능하다. 

 

비트코인과 다르게 이더리움은 "코인"이자 "플랫폼"의 기능 또한 수행한다. 덕분에 smart contract, 스마트 컨트렉트를 포함한 트렌젝션을 일으킬 수 있고 이 스마트 컨트렉트 안에서 내 마음대로 토큰을 발행할 수 있다. 요 부분이 비트코인과 이더리움의 가장 큰 차이이다. 

 

이 때, 만드는 토큰이 모두 이더리움 네트워크 상에서 자유롭게 거래되고 움직일 수 있는 것이 아니다. 토큰끼리의 호환을 위해서 "ERC-20"이라는 표준을 사용해야 한다. 즉, 스마트 컨트렉스 안에 생성하는 토큰을 ERC-20규격에 맞춰 만드는 것이다. ERC-20기반으로 만들어진 토큰은 펀디엑스(NPXS), 오미세고(OMG), 비체인(VEN) 등이 있다. 

 

 

 

ERC-20 규칙 

ERC20 기반의 토큰을 생성하게 되면 해당 스마트 컨트렉트에는 아래와 같은 규칙이 생긴다. 개발자들에게는 규칙이라는 단어보다 "함수"가 더 이해가 잘 될듯 하다.

approve()  위조 토큰 생성을 방지한다.
토큰의 총 발행량을 체크해서 트렌젝션을 승인할지 정한다. 
최대 토큰 수를 유지 관리하고 어떤 지갑에 어떤 토큰이 있는지 추적한다. 
allowance() 본인이 소유한 것보다 더 많은 토큰을 보내는 것을 방지한다. 
모든 트렌젝션은 실행되기전 이중으로 유효성 검사를 받게되고 만약 거래가 이루어지더라도 취소된다.
transfer() 요 함수를 이용하여 토큰 발행 주소에서 개인 계정으로 송금할 수 있다. 
transferFrom() 사용자가 토큰을 전송하고 교환한다. 
balanceOf() 계정 안에 있는 잔액을 보여준다. 

위 토큰 발행은 ERC20기반으로 만든 클레이튼의 스마트 컨트렉트이다. 여기서도 자동 생성된 함수들을 찾아볼 수 있다. 

 

 

 

ERC-20의 문제점 

스마트 컨트렉트 결제 수단으로 ERC20 기반 토큰을 사용할 경우 토큰이 파괴되는 현상이 발견 되었다. 사용자가 스마트 컨트렉트를 담은 트렌젝션을 보내고 스마트 컨트렉트가 인식되지 않으면 트렌젝션의 에테르가 영구적으로 손실된다. 즉, 거래는 무효가 되고 전송되야하는 토큰은 유실된다. 이러한 버그를 방지하려면 ETH, 이더로만 결제해야 한다.

 

수많은 dApp 디앱 프로젝트들이 ERC-20기반으로 수행하여 토큰들이 유실되었다. 이 문제로 인해 현재까지 약 3백만 달러(36억 정도)의 토큰이 사라졌다. (복구 불가능)

 

위와 같은 ERC20의 문제점을 개선하기위해 새로운 토큰 표준들이 생겨났다. 

 

 

ERC-223 

ERC-233은 토큰 스마트 계약에서 직접 토큰을 보낼 때 유실될 수 있는 문제점을 가진 ERC-20을 수정한 규약이다. 

또한 토큰들이 스마트 계약에서 한번에 다른 지갑으로 이체가 가능하다. 때문에 지갑은 원장 업데이트를 위해 토큰 스마트 계약을 필요로 하지 않는다. => 가스비(수수료)가 절반밖에 들지 않는다. 

 

 

ERC-777

ERC-777은 ERC-20 버그를 해결한 또 다른 해결책으로 나온 규약이다. 이전에 나온 ERC-223의 기능 또한 제공한다. 

ERC-777은 모든 사람에게 스마트 컨트렉트 주소를 볼 수 있게 하고 기능을 체크할 수 있도록 한다. 그리고 이를 트렌젝션이나 요구된 액션들을 검증하는데 사용한다. 

 

새로운 기능으로 ERC-777은 실행하려는 행동들의 본성을 체크하고 액션 실행 여부를 결론 내린다. 당장 ERC-777규격이 ERC-20를 사용하고 있던 기존의 모든 프로젝트에 적용되는 것은 아니고 이더리움 커뮤니티의 합의가 나오는데에 시간은 조금 걸리겠지만 ERC-20를 대체할 차세대 토큰 규격임에는 틀림없다. 

 

 

ERC-721

ERC-721은 NFT(Non-Fungible Token) 의 기본 규격이다. 일반 토큰이 아닌 단 하나의 주소값을 갖는 요즘 핫한 NFT를 만들 때 사용하는 기준이 된다. 앞에 나온 ERC-20, ERC-223, ERC-777 기반으로 만든 토큰들과 다르게 ERC-721을 사용하여 발행한 토큰들은 모두 각각의 고유한 값을 가지게 된다. ERC-721 규격을 사용하여 토큰을 발행하게되면 개발자들은 같은 값을 갖는 토큰을 만들 수 없고, 사용자들 중 동일한 토큰을 갖는 복수의 소유자는 나올 수 없게 된다. 

 

ERC20, ERC223, ERC777 - 대체 가능한 토큰 (Fungible Token)
: 각 토큰은 동일한 가치를 지니며 모든 동일한 토큰끼리 서로 호환이 가능하다. 
ERC721 - 대체 불가능한 토큰 (Non-Fungible Token)
: 각 토큰 하나하나 고유한 가치를 지녀 토큰 간의 호환이 불가능하다. 

 

NFT는 무제한으로 공급이 가능하지만 가치 하락을 방지하기 위해 전체 공급량에는 제한이 있다. 대표적으로 현재 가장 유명한 NFT로는 BAYC가 있다. (NFT를 활용하여 만든 원숭이 캐릭터들. 커뮤니티가 가장 활성화 되어 있고 작품 하나의 최저가가 현재 기준 가장 높은 작품으로 총 10,000개의 토큰이 발행되어 거래되고 있다. 가장 비싼 4개 토큰 가격은 모두 합쳐 100억 - 개발자 입장에서 랜덤으로 암호화된 변수 하나의 값이 수 억에 거래되고 있다고 생각하면 뭔가 아이러니)

 

 

 

ERC-998

ERC-998은 ERC-721과 함께 사용되는 기술로 플레이어들이 모든 통계와 항목 및 토큰을 포함한 전체 캐릭터를 한 번에 전송할 수 있게 한다. 

 

 

결론: 코드로 보면 하나의 변수 (그것도 내가 마음대로 수량을 타자로 쳐서 정할 수 있는) 중 하나의 값이 토큰이 되고 그 토큰을 생성해낼 때 어떤 토큰 규격을 따르는지도 잘 살펴봐야 한다. 그리고 NFT의 발전은 무궁무진할 것 같다.

 

 

 

Reference : http://wiki.hash.kr/index.php/ERC-20#cite_note-.EC.9D.B4.EB.8D.94.EB.A6.AC.EC.9B.80-3

반응형

댓글