﻿---
title: "ERC-20"
description: "ERC-20은 이더리움에서 대체 가능한 토큰을 위한 표준 인터페이스입니다. 잔액, 전송, 허용량, 승인의 작동 방식과 이 표준이 보장하지 않는 사항을 알아봅니다."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ERC-20

> 교육 목적으로만 제공되며 투자 조언이 아닙니다. 투자로 손실이 발생할 수 있습니다.

<a id="answer"></a>

## 직접 답변

ERC-20은 이더리움의 대체 가능한 토큰 컨트랙트를 위한 표준 인터페이스입니다. 지갑, 거래소, 탈중앙화 애플리케이션은 동일한 호출을 사용해 공급량이나 잔액을 조회하고, 토큰을 전송하며, 다른 주소가 정해진 한도까지 지출하도록 허용할 수 있습니다. 대체 가능하다는 것은 같은 토큰의 동일한 수량을 서로 바꿔 쓸 수 있도록 설계되었다는 뜻입니다.

핵심 인터페이스에는 다음 항목이 포함됩니다.

- 공급량과 계정 잔액을 조회하는 `totalSupply`와 `balanceOf`.
- 호출자의 토큰을 보내는 `transfer`.
- 지출자의 한도를 설정하고 조회하는 `approve`와 `allowance`.
- 해당 한도 안에서 소유자의 잔액을 지출하는 `transferFrom`.
- 전송과 승인을 기록하는 `Transfer` 및 `Approval` 이벤트.

이 표준이 정의하는 것은 상호운용성이지 자산의 품질이 아닙니다. ERC-20 준수는 고정 공급량, 공정한 시장 가치, 상환 가능성, 유동성, 안전한 관리, 심지어 구현 간 동일한 동작도 보장하지 않습니다.

<a id="mechanism"></a>

## 작동 방식

ERC-20 잔액은 주소와 연결된 토큰 컨트랙트 상태의 항목입니다. 지갑은 그 상태를 표시할 뿐 별도의 토큰 파일을 보관하지 않습니다. `transfer(to, amount)`가 성공하면 컨트랙트는 호출자의 잔액을 줄이고 수령자의 잔액을 늘린 뒤 `Transfer` 이벤트를 발생시킵니다. 사용자는 일반적으로 네트워크 가스비를 ETH로 지불합니다. 실행이 되돌려지면 토큰 상태 변경은 취소되지만, 이미 사용된 가스는 전액 환불되지 않습니다.

위임 지출에는 허용량을 사용합니다. `approve(spender, amount)`를 호출하면 해당 지출자가 호출자의 잔액에서 사용할 수 있는 금액이 설정됩니다. 이후 지출자는 `transferFrom(owner, to, amount)`을 호출할 수 있으며, `allowance(owner, spender)`는 남은 한도를 알려 줍니다. 승인은 한 네트워크의 한 토큰 컨트랙트에서 하나의 소유자-지출자 쌍에 속하며, 지갑의 모든 자산에 대한 권한이 아닙니다.

`approve`를 다시 호출하면 이전 허용량을 덮어씁니다. EIP-20 명세는 트랜잭션 순서로 인해 지출자가 이전 한도와 새 한도를 모두 사용할 수 있으므로, 사용자 인터페이스가 기존 허용량을 다른 영이 아닌 값으로 설정하기 전에 `0`으로 만들도록 경고합니다. 허용량을 `0`으로 설정하면 해당 소유자-지출자-토큰 조합에 대한 향후 `transferFrom` 호출을 막을 수 있지만, 이미 전송된 토큰을 되찾을 수는 없습니다.

EIP-20에서 `name`, `symbol`, `decimals`는 선택적 메타데이터 메서드입니다. `decimals`는 표시 단위에 영향을 주지만 컨트랙트의 정수 회계에는 영향을 주지 않습니다. 또한 이 표준은 토큰을 발행하거나 소각하는 방식, 전송을 일시 중지하거나 과세할 수 있는지, 주소를 동결할 수 있는지, 프록시 로직을 업그레이드할 수 있는지를 규정하지 않습니다. 이러한 동작은 배포된 코드, 현재 구현, 관리 권한을 통해 확인해야 합니다.

<a id="example"></a>

## 예시

지갑에 ERC-20 토큰 1,000단위가 있고 사용자가 탈중앙화 거래소 라우터로 100단위를 교환하려 한다고 가정해 보겠습니다. 사용자는 먼저 `approve(router, 100)`을 제출합니다. 이 호출이 성공하면 라우터는 `transferFrom(user, pool, 100)`을 호출할 수 있으며, 전액을 지출한 뒤 일반적인 남은 허용량은 0입니다. 승인 트랜잭션과 스왑 트랜잭션은 별개의 온체인 작업이므로 각각 가스가 필요할 수 있고 서로 독립적으로 실패할 수 있습니다.

가능한 최댓값을 승인하면 반복 승인을 피할 수 있지만, 라우터나 그 업그레이드 권한 또는 승인을 받는 데 사용된 인터페이스가 침해될 경우 더 큰 금액이 더 오래 노출됩니다. 제한된 허용량은 이러한 노출을 줄이지만 스마트 컨트랙트, 토큰 가격, 유동성 또는 트랜잭션 위험을 없애지는 않습니다.

<a id="risks"></a>

## 위험

- **잘못된 컨트랙트 또는 네트워크:** 이름, 심볼, 아이콘은 복제될 수 있으므로 의도한 네트워크의 컨트랙트 주소를 확인해야 합니다.
- **과도한 허용량:** 악의적이거나 침해된 지출자는 사용하지 않은 허용량을 승인 한도까지 사용할 수 있습니다.
- **비표준 동작:** 널리 쓰이는 일부 토큰은 예상한 방식으로 반환값을 제공하지 않으며, 전송 수수료를 부과하거나 잔액을 리베이스하고 주소를 차단하거나 전송을 일시 중지하는 토큰도 있습니다.
- **관리자 통제:** 발행, 동결, 업그레이드 또는 기타 특권 작업은 사용자가 토큰을 취득한 뒤에도 위험을 바꿀 수 있습니다.
- **복구 불가능한 전송:** 잘못된 주소나 토큰을 처리하지 못하는 컨트랙트로 보내면 복구가 불가능할 수 있습니다.

ERC-20 표준화는 통합 마찰을 줄이지만 컨트랙트, 발행자, 수탁, 시장 또는 운영 위험을 없애지는 않습니다. 서명하기 전에 네트워크, 토큰 컨트랙트, 지출자 주소, 승인 금액, 트랜잭션 호출을 확인해야 합니다.

<a id="misconceptions"></a>

## 흔한 오해

### 오해 1: ERC-20 표시가 있으면 토큰이 정당하다는 뜻이다

누구나 익숙한 이름이나 심볼을 사용한 컨트랙트를 배포할 수 있습니다. 이 표시는 인터페이스에 관한 주장만 나타냅니다. 컨트랙트 주소를 확인한 다음 코드, 권한, 발행자, 유동성, 시장을 각각 평가해야 합니다.

### 오해 2: 승인하면 승인된 토큰이 즉시 전송된다

`approve`는 일반적으로 허용량을 변경할 뿐, 그 자체로 토큰을 지출자에게 옮기지는 않습니다. 이후의 `transferFrom` 호출이 토큰을 이동시킵니다. 그럼에도 사용하지 않은 허용량은 실제 권한이며, 소진되거나 교체되거나 `0`으로 설정될 때까지 계속 사용될 수 있습니다.

### 오해 3: 모든 ERC-20 토큰은 똑같이 작동한다

이 표준은 최소한의 공통 인터페이스를 규정합니다. 특정 공급 정책을 요구하지 않으며 수수료, 일시 중지, 블랙리스트, 리베이스, 업그레이드 가능성을 금지하지도 않습니다. 통합 시에는 ERC-20 표시만 믿지 말고 실제 구현을 고려해야 합니다.

<a id="related"></a>

## 관련 주제

- [소셜 복구 지갑](/ko/crypto/social-recovery-wallet/)
- [토큰 표준](/ko/crypto/token-standard/)
- [코인과 토큰의 차이점은 무엇인가요?](/ko/crypto/token-vs-coin/)
- [지갑 승인](/ko/crypto/wallet-approval/)
- [ZK 롤업](/ko/crypto/zk-rollup/)

<a id="sources"></a>

## 출처

- [ERC-20: Token Standard](https://eips.ethereum.org/EIPS/eip-20) - Ethereum Improvement Proposals (확인일: 2026-08-20)
- [ERC-20 Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/) - Ethereum.org (확인일: 2026-08-20)

Source: https://wiki.fcontext.com/ko/crypto/erc20/index.mdx
