ERC 20카테고리 · ERC유형 · 표준 트랙상태 · 최종

Token Standard

쉬운 설명

우리가 쓰는 대부분의 토큰(USDT, LINK 등)이 이 표준으로 만들어져요. 잔액 조회, 전송, 위임 허용 등 토큰이 반드시 갖춰야 할 기능을 정의한 거예요.

ERC-20은 이더리움 위에서 대체 가능한(fungible) 토큰을 발행하기 위한 표준 인터페이스입니다. 2015년 Fabian Vogelsteller가 제안했으며, USDT·USDC·LINK·UNI 등 오늘날 사용되는 대부분의 토큰이 이 표준을 따릅니다. 공통 인터페이스 덕분에 지갑·거래소·DeFi 프로토콜이 토큰의 내부 구현과 관계없이 동일한 방식으로 상호작용할 수 있습니다.

6개의 필수 함수

① totalSupply() — 토큰의 총 공급량을 반환합니다. ② balanceOf(address) — 특정 주소의 잔액을 반환합니다. ③ transfer(to, amount) — 호출자가 직접 토큰을 전송합니다. ④ transferFrom(from, to, amount) — 위임받은 권한으로 제3자가 토큰을 전송합니다. ⑤ approve(spender, amount) — 특정 주소가 사용할 수 있는 한도를 설정합니다. ⑥ allowance(owner, spender) — 현재 승인된 한도를 반환합니다.

Transfer 이벤트와 Approval 이벤트

Transfer(address indexed from, address indexed to, uint256 value) 이벤트는 모든 토큰 이동 시 반드시 emit되어야 합니다. 발행(mint) 시에는 from을 0x0으로, 소각(burn) 시에는 to를 0x0으로 설정합니다. Approval(address indexed owner, address indexed spender, uint256 value) 이벤트는 approve() 호출 시 emit됩니다. 이 두 이벤트 덕분에 블록 탐색기와 인덱서가 토큰의 모든 이력을 추적할 수 있습니다.

approve/transferFrom 패턴과 DeFi

DeFi 프로토콜은 사용자 대신 토큰을 움직여야 할 때 approve + transferFrom 패턴을 사용합니다. 사용자가 먼저 DEX 컨트랙트에게 원하는 금액만큼 approve하면, DEX는 나중에 transferFrom으로 해당 금액을 가져갑니다. 이 패턴은 무한 승인(infinite approval)의 보안 위험을 내포하므로, 최근에는 ERC-2612(permit)처럼 서명 기반 일회성 허가를 사용하는 경향이 늘고 있습니다.

선택적 함수: name, symbol, decimals

name(), symbol(), decimals()는 표준에서 선택 사항이지만 사실상 모든 구현체가 포함합니다. decimals는 토큰의 최소 단위를 나타내며, 가장 일반적인 값은 18입니다(ETH와 동일). 예를 들어 1 USDC는 실제로 스마트 컨트랙트에 1,000,000(6 decimals)으로 저장됩니다. UI는 이 값을 읽어 사람이 이해할 수 있는 소수 형식으로 표시합니다.

ERC-20이 중요한 이유

ERC-20 이전에는 토큰마다 서로 다른 함수명을 사용해 지갑과 거래소가 각 토큰을 개별 지원해야 했습니다. ERC-20 표준이 생긴 후 어떤 토큰이든 동일한 ABI로 상호작용할 수 있게 되어 생태계 구성 요소들의 조합 가능성(composability)이 폭발적으로 증가했습니다. 이는 Uniswap, Aave, Compound 같은 DeFi 프로토콜이 임의의 토큰을 지원할 수 있는 기반이 됩니다.

공식 ERC 문서open_in_new