ERC-20 분석(Block chain)

Yoonmin·2024년 4월 3일
0

블록체인 기술에 처음으로 들어오게되면 마주하게되는 ERC-20 ERC-20이란 뭘까?

ERC-20란?

ERC 20(Ethereum Request for Comment 20)의 약자이다.
즉, 이더리움 프로토콜 개발을 위한 표준을 제안하는 문서의 집합이다.

ERC-20 외에 ERC-223, 621, 827등 여러 다른 종류가 있다.
위에 적힌 이들은 대부분은 ERC-20을 기반으로 뻗어나간 형태이기에 ERC-20을 분석해 보도록 하겠다.

그 외에 많은 ERC-000가 있으니 여기를 클릭해 확인해보자

ERC를 알기 위핸 먼저 Ethereum, EIPs를 알아야한다

이더리움(Ethereum)이란?

이더리움은 자체 블록체인을 기반으로 탈중앙화된 애플리케이션들이 작동할 수 있도록 고안된 하나의 플랫폼 네트워크이다.

디앱(Decentralized Application의 약자 플랫폼 코인 위에 작동되는 탈중앙화 분산 애플리케이션)은 이러한 이더리움 플랫폼 상에서 스마트 계약을 이용하여 쉽고 빠르게 토큰을 발행할 수 있다.

이더리움 블록체인에서는 이더(ETH)가 사용되고, 이더리움 블록체인 상의 디앱은 또 다른 다양한 분야에 적용될 수 있는 각각의 솔루션으로 그에 맞는 토큰을 발행하게된다.

이때 발행된 토큰은 독자적인 토큰인 듯 하지만 실제로는 이더리움 생태계에서 호환 및 사용 가능하다.

이더리움 로고[출처] 이더리움

그렇다면 EIPs란?

EIPs(Ethereum Improvement Proposals)는 이더리움 개선 제안을 의미한다.
EIP는 이더리움 커뮤니티에 정보를 제공하거나 이더리움 프로세스 , 환경에 대한 새로운 시능을 설명하는 설계 문서이다.

좋다 그럼 다시 그럼 ERC로 돌아가보자.

먼저 ERC-20에서 20은 리퀘스트 숫자이다.
ERC-20은 이더리움 블록체인 네트워크에서 정한 표준 토큰 스펙이다.

이더리움 블록체인을 사용하여 생성된 대체 가능한 토큰에 대한 기술 표준이고, ERC-721의 대체 불가능 토근(NFT)와는 다릅니다.

ERC-20의 역사

ERC-20은 이더리움 블록체인의 스마트 계약 표준에 대한 필요성을 해결이 필요했다.
이에 개발자 Fabian Vogelsteller가 2015년에 Vogelsteller는 프로젝트의 Github 페이지를 통해 이더리움 의견 요청(ERC)를 제안서를 제출했다.
20번째 comment이므로 ERC-20이라는 명칭이 지정되었다.

특징

규칙으로는 하단과 같이 6가지 함수가있다.

totalSupply()
transfer(address _to, uint256 _value)
balanceOf(address _owner)
transferFrom(address _from, address _to, uint256 _value)
approve(address _spender, uint256 _value)
allowance(address _owner, address _spender)

자세히 하나씩 살펴보자

  • totalSupply ()
    • 총 발행량
totalSupply()
  • transfer() 함수
    • 송금
    • _to에게 _value만큼 토큰을 전송
transfer(address _to, uint256 _value)
  • balanceOf () 함수
    • 잔액
    • _owner가 소지하고 있는 토큰의 수량 확인
balanceOf(address _owner)
  • transferFrom () 함수
    • 사용자는 송금 기능을 사용하여 측정 토큰을 사용자가 전송및 교환 가능
    • _from으로부터 _to에게 _value만큼 토큰 전달
transferFrom(address _from, address _to, 
  • approve () 함수
    • 승인 기능 위조 토큰을 만드는 것을 방지
    • _spender에게 _value만큼 토큰의 권한을 부여
    • 토큰의 총 발행 양을 확인해 트랜잭션을 허용하거나 거부하고, 최대 토큰 수를 유지 관리하고 어떤 지갑에 어떤 토큰이 있는지 추적한다.
approve(address _spender, uint256 _value)
  • allowance ()
    • 허용 기능 누군가가 시스템을 속이고 본인이 소유한 것보다 더 많은 토큰을 보내고자 하는 상황일 때, 허용 기능을 통해사용자들은 자신들이 가진 것보다 더 많은 토큰을 보낼 수 없다.
    • _owner가 _spender에게 권한을 부여한 토큰 수량 확인
    • 거래가 이루어지면 취소된다.
    • 모든 트랜잭션은 트랜잭션이 실행되기 전에 유효한지 이중으로 확인된다.
allowance(address _owner, address _spender)

선택적 규칙

선택적 규칙은 모든 사람의 편의를 위해 존재한다.
이 옵션들은 토큰, 심볼 및 10진법 규칙이다.
토큰의 이름은 사람들이 어떤 토큰을 다루고 있는지 알 수 있도록 도와주는 역할을 한다.

예를들어 싸이클린의 ERC-20 토큰 이름은 CyClean이다.
싸이클린의 심볼은 CCL이며, Dobitrade와 HitBTC에서 이러한 방식으로 표시되어 있다.
마지막으로 10진법 규칙이 있다.
이는 토큰을 몇 개의 10진수로 나눌 수 있는지를 알려준다.
싸이클린 토큰은 18개의 소수점으로 나눌 수 있다.
10진수 값이 0이면 토큰이 분리되지 않는다.

코인

이더리움 네트워크에서 이더는 자유롭게 거래된다.
이더는 모든 종류의 거래에 사용되는 토큰이나 암호화폐로 간주한다.

이더리움 네트워크에는 이더와 교환 가치에 기반해 사용되는 다른 토큰들도 존재한다.
이더리움 블록체인에서 또 다른 토큰을 실행하려면 ERC-20이라고 불리는 스마트 계약에서 코드나 기술 표준을 설정해야 한다.

문제점

스마트 계약 결제 수단으로 ERC-20 토큰을 사용할 경우 토큰이 파괴되는 현상이 나타난다.

ERC-20 토큰은 다른 이더리움 주소 사이에서 이동할 수 있는데,
그러나 이더리움 블록체인의 일반적인 에테르 거래는 근본적으로 다르다.

트랜잭션 양 및 추가 정보에 대한 트랜잭션 필드, 정보 필드의 필드를 포함하는 이더넷을 전송한다. 그러나 이때 토큰 트랜잭션에서 보낼 토큰 수에 대한 정보는 두 번째 필드에 있다.

따라서 양쪽의 당사자의 주소 간에 전송이 가능하지만 다른 스마트 계약 기능의 트리거로 토큰을 사용하면 작동하지 않는다.

사용자가 트랜잭션을 스마트 계약으로 보내고 스마트 계약이 인식되지 않으면 트랜잭션의 에테르가 영구적으로 손실된다.
이더로만 결제해야 하는 버그가 존재하게 되어, 현재까지 이 버그 때문에 약 3백만 달러어치의 토큰이 사라져버렸다고 한다.

[출처]해시넷, 무지개곰 티스토리 블로그, Investopedia, coinmarketcap

profile
같이의 가치를 FEDev

0개의 댓글