ERC20이란? (Openzepplin)

HyeongA·2023년 7월 25일
1

Blockchain

목록 보기
2/8
post-thumbnail

📝ERC-20이란?

  • EIP중 20번째로 제안한 proposal
  • A standard interface for tokens
  • 토큰이라는 개념이 가장 유명하게 사용된 사례

ERC-20은 토큰이라는 개념의 표준화 작업을 통해 유저들과 어플리케이션간에 쉽고 원활한 소통을 제공하고자 시작되었다. ERC-20은 토큰의 가장 대표적인 사례이지만 두 개념이 동일한 것은 아니다. ERC-1155도 토큰을 발행할 수 있으며, ERC-20으로 토큰 외 다른 서비스를 제공할 수도 있다.


  • ERC-20은 코드가 공개되어 있어 누구나 쉽게 배포 가능함
  • 가장 표준적이고 안정적인 구현체 : Openzepplin, Consensys

💻 ERC-20 (Openzepplin)

🔎 Openzepplin ERC-20 (ERC20_openzeppelin)

: openzeppelin의 ERC20 코드는 필수적인 요소 외에도 사용하기 편한 기능들이 많이 포함되어 있다.

CODE 구성

구성요소
functionname, symbol, decimals, totalSupply, balanceOf, transfer, allowance, approve, transferFrom
eventTransfer, Approval
mapping_balances, _allowances

ERC20으로 인식되기 위한 기본 함수와 event다. 표에 명시된 function, event, mapping값은 사람들이 보편적으로 사용하는 부분이며, 이외 부분들은 자유롭게 필요에 따라 기능을 추가 및 수정할 수 있다.

🔎 Function / Event / Mapping

  • name (ex : ethereum)
  • symbol (ex : ETH)
  • decimals (ex : 18)
    ▪ 1 ether = 101810^{18} wei
    ▪ 1 A = 10decimals10^{decimals} a
    심볼 A를 이루는 기본 단위 a가 존재하고, decimals로 설정할 수 있음
    즉, a가 A로 도달할때 필요한 제곱수를 의미
  • totalSupply : 총 발행량

  • _balances : key-주소 / value-잔고인 mapping
  • balanceof : 해당 account의 잔고
  • transfer : to에게 amount만큼의 돈을 전송

approve → allowance 확인 → transferFrom
: 다른 사람에게 내 돈을 쓸 수 있도록 허락해주는 과정

  • _allowances : 이중 매핑 구조로 내가 CA에게 허락해준 돈의 양
    mapping(address => mapping(address => uint256)) private _allowances
    첫번째 address는 나의 주소(owner),
    두번째 address는 CA의 주소(spender),
    uint256은 허락한 돈의 양(amount)
  • approve (_approve) : owner가 spender에게 amount만큼을 허용해주는 함수
  • allowance : CA에게 얼마나 허락한지
  • transferFrom : from에서 to로 amount만큼 전송

transfer vs transferFrom

  • transfer는 EOA가 transferFrom은 CA가 작동시킴
  • transfer은 내가 직접 전송함
  • transferfrom은 허락한 범위 내에서 컨트랙트가 나 대신 전송해줌
  • transferFrom을 사용하는 상황
    ex ) 게임을 하기전에 CA가 A토큰 10개를 전송할 수 있는 권한을 넘겨줌

코드와 함께 살펴보기

profile
Today I Learned

0개의 댓글