본문 바로가기
개발공부일지/Block-Chain

DeFi - ERC 표준 ERC-20 Token 알아보기

by Hynn1429 2023. 7. 28.
반응형

ETH Block-chain의 표준, ERC

ERC라고 하는 Ethereum Request for Comments 는 단어 그대로 이더리움 요청에 대한 의견을 의미합니다.

이 요청은 Ethereum 블록체인 네트워크의 표준을 제정하게 되었고, 이는 2015년에 처음 제안되어 가장 활발하게 이루어지고 있습니다.

ERC에 대한 표준은 번호로 명명하여 다양하게 제정되어 있으며, 이번 프로젝트에서는 ERC-20을 기반으로 하여 Token 을 생성할 예정입니다.

ERC20의 사용

De-Fi 에서의 ERC20

DeFi 에서의 ERC20은 몇가지 특징을 가지고 운영됩니다.

먼저 ERC20 토큰은 모두 “같은” 표준화된 함수 세트를 가지고 구성됩니다. 즉, 서로 다른 토큰간의 상호작용이나 SmartContract 처리가 쉽습니다. 같은 Method, 같은 함수를 사용함으로서, 표준화된 같은 로직을 구현하고 있기 때문에 이를 손쉽게 이용할 수 있기 때문입니다.

이를 바탕으로, 표준화된 함수에는 6개의 큰 틀에서 구분이 가능합니다

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

이 여섯개의 핵심함수를 구현함으로서, ERC20 을 정의할 수 있습니다.

각각의 ERC20 함수는 이렇게 핵심함수가 표준화된 인터페이스에 포함됨으로서, 다른 SmartContract, Token 과의 상호작용을 손쉽게 통합할 수 있게 됩니다.

각각 함수의 기능은 아래와 같습니다.

totalSupply()

이 함수는 토큰의 총 공급량을 반환하도록 작성해야 합니다.

balanceOf(address _owner)

이 함수는 특정주소(_owner) 의 토큰 잔액을 반환합니다.

transfer(addresss _to, uint256 _value)

이 함수는 메시지 발신자(msg.sender) 계정에서 특정 주소(_to) 로 토큰을 전송합니다. 즉 매개변수의 _to 는 토큰을 보낼 주소, _value는 토큰의 수량입니다.

transferFrom(address _from, address _to, uint256 _value)

이 함수는 _from 의 주소의 계정에서 매개변수로 _to 주소의 계정으로 토큰을 전송합니다.

즉 매개변수에는 _to, _value 가 들어가야 하고, _from 의 계정은 이후에 다루를 approve 함수에서 토큰을 전송할 수 있는 권한을 부여해야 합니다. 다만 Solidity 사용시 Ethereum을 다루는것이 아니라 Token 을 다루는 것이므로 payable 로 작성하지 않도록 주의해야 합니다.

Approve(address _spender, uint256 _value)

위의 “transferFrom” 함수를 동작하기 위해서는 이 함수를 통해 권한을 부여받아야 합니다. 즉, 이 함수를 통해 권한을 부여받지 못한 발신자는 토큰을 전송할 수 없습니다.

즉 여기서의 _spender는 “토큰을 전송할 권한을 받는 주소가 됩니다.

allowance(address _owner, address _spender)

이 함수에서는 _owner 가 spender 에게 허용한 토큰의 양을 반환할 때 사용됩니다.

반응형

댓글