ERC-20ERC-20
ERC-20은 이더리움(Ethereum) 블록체인 위에서 대체 가능한 토큰(Fungible Token)을 발행하기 위한 표준 인터페이스다. 2015년 Fabian Vogelsteller가 제안했으며, 오늘날 수천 개의 암호화폐·스테이블코인·거버넌스 토큰이 이 표준을 따른다.
핵심 개념: 대체 가능성
ERC-20 토큰은 모든 단위가 동일한 가치를 가진다. 1 USDC는 다른 1 USDC와 완전히 동일하게 교환된다. 이는 고유한 ID를 가진 NFT(ERC-721)와 대비된다.
표준 인터페이스
ERC-20 토큰은 다음 함수를 반드시 구현해야 한다.
| 함수 | 역할 |
|---|---|
name() | 토큰 이름 반환 (예: "USD Coin") |
symbol() | 토큰 심볼 반환 (예: "USDC") |
decimals() | 소수점 자릿수 반환 (보통 18) |
totalSupply() | 전체 발행량 조회 |
balanceOf(address) | 특정 주소의 잔액 조회 |
transfer(to, amount) | 토큰 전송 |
approve(spender, amount) | 지출 허가 |
transferFrom(from, to, amount) | 허가된 지출 실행 |
allowance(owner, spender) | 허가된 잔액 조회 |
이벤트
표준은 두 가지 필수 이벤트를 정의한다.
- •Transfer(from, to, value) — 토큰이 이동할 때마다 발생
- •Approval(owner, spender, value) — approve() 호출 시 발생
Approve / Allowance 패턴
approve() → transferFrom() 패턴은 사용자가 스마트 컨트랙트에 일정 금액의 사용 권한을 미리 부여하고, 컨트랙트가 필요할 때 해당 금액을 인출하는 방식이다. DeFi 프로토콜(Uniswap, Aave 등)에서 광범위하게 사용된다.
무한 승인(Infinite Approval)은 type(uint256).max 값으로 승인하여 매번 approve가 불필요하도록 하는 방식이다. 편의성이 높지만 승인된 컨트랙트가 취약점을 가질 경우 전액 탈취 위험이 있다.
EIP-2612 Permit (가스리스 승인)
기존 approve()는 온체인 트랜잭션과 가스비가 필요하지만, EIP-2612 Permit은 오프체인 서명으로 승인을 대체한다.
- •사용자가 서명 → dApp이 온체인에
permit()호출 → 토큰 컨트랙트가 서명 검증 후 allowance 설정 - •deadline 파라미터로 승인 만료 시간 설정, nonce로 재전송 공격 방지
- •승인과 실행을 단일 트랜잭션으로 처리 가능 → UX 개선
- •Uniswap의 Permit2는 이를 범용화해 모든 ERC-20에 통합 승인 관리를 제공한다
⚠️ 2023-2024년 Permit 서명을 악용한 피싱 공격이 급증해 수백만 달러 피해가 발생했다. 서명 전 spender 주소와 deadline 반드시 확인이 필요하다.
주요 활용 사례
| 유형 | 예시 |
|---|---|
| 스테이블코인 | USDC, USDT, DAI |
| 거버넌스 토큰 | UNI, AAVE, MKR |
| 래핑 토큰 | WETH (Wrapped Ether) |
| DeFi 유동성 토큰 | Uniswap LP 토큰 |
보안 고려사항
- •토큰 영구 잠금: 스마트 컨트랙트에 잘못 전송된 ERC-20 토큰은 컨트랙트가 처리 기능이 없을 경우 영구 손실될 수 있다
- •무한 승인 리스크: 컨트랙트 취약점 발생 시 승인된 금액 전액 탈취 가능. 사용 후 allowance 철회 권장
- •Permit 피싱: 악의적 사이트가 Permit 서명 요청으로 허가 탈취, 서명 전 spender 주소 검증 필수
한계 및 개선안
| 표준 | 특징 |
|---|---|
| ERC-20 | 기본 표준, 수신 콜백 없음 |
| ERC-777 | 수신 훅 지원, 하위 호환 |
| ERC-1363 | transferAndCall 지원 |
| ERC-2612 | Permit 가스리스 승인 |
| ERC-4626 | 수익형 볼트 표준화 |
관련 개념
- •Ethereum — ERC-20이 동작하는 플랫폼
- •스마트 컨트랙트 — ERC-20 토큰의 구현 기반
- •DeFi — ERC-20 토큰의 주요 활용처
- •ERC-721 — 대체 불가 토큰 표준