---
title: "ERC-20 토큰과 Solidity 완벽 가이드 (2025)"
description: "Solidity ERC20 표준의 개념, 작동 방식, 사용 시점"
---

# ERC-20 토큰과 Solidity 완벽 가이드 (2025)

[Ethereum 생태계](https://www.alchemy.com/dapps/ecosystem/ethereum)에는 [스마트 컨트랙트](https://www.alchemy.com/overviews/solidity-smart-contract)의 생성부터 배포까지의 기능을 나타내는 다양한 표준이 존재한다. 가장 일반적인 표준으로는 ERC-20, ERC-721, ERC-777, ERC-1155가 있으며 각각 고유한 목적을 갖는다.

이 글에서는 ERC-20 토큰을 정의하고 그 용도 몇 가지를 소개하며, 개발자가 이 표준을 준수하기 위해 사용해야 하는 [Solidity 프로그래밍 언어의 필수 함수](https://www.alchemy.com/overviews/solidity-functions) 일부를 설명한다. [Solidity](https://www.alchemy.com/overviews/solidity)를 사용해 직접 ERC-20 토큰을 만들고자 한다면, 이 글에서 다루는 가이드라인과 정의를 통해 그 방법을 더 잘 이해할 수 있을 것이다.

## **ERC-20 토큰이란?**

**ERC-20은 Ethereum 또는 EVM 호환 블록체인과 호환되는 대체 가능한(fungible) 암호화폐 토큰 표준이다.** 이는 블록체인 상에서 무엇이든 나타낼 수 있는 디지털 자산 역할을 하며, 이를 통해 다양한 사용 사례에 유연하게 대응할 수 있다.

이 사전 정의된 스마트 컨트랙트는 개발을 위한 기술 표준으로 사용될 수 있는 특정 인터페이스를 포함한다. 개발자는 ERC-20 토큰과 이에 연관된 토큰 규칙을 활용해 더 쉬운 개발 경험을 얻을 수 있다. [Uniswap](https://www.alchemy.com/dapps/uniswap)이나 SushiSwap 같은 인기 있는 탈중앙화 거래소 프로토콜들은 모두 ERC-20 토큰 표준을 자신들의 생태계에 매끄럽게 통합하기 위한 구성 요소로 활용하고 있다.

### **ERC-20 토큰은 어떻게 사용되는가?**

**ERC-20 토큰은 무엇을 나타낼지에 제약이 없기 때문에 일반적인 암호화폐(예: ETH)를 넘어서는 범위까지 확장될 수 있다. 요구 사항으로서 ERC-20 자산은 대체 가능하고 전송 가능하며, 최대 공급량으로 제한될 수 있다. 이는 리워드, 실물 자산, 회사 지분 등을 만들 때 유용하다.**

토큰 개발을 표준화하기 위해 설계된 ERC-20 토큰은 Ethereum 블록체인 상의 어떤 대체 가능 자산이든 나타낼 수 있다. 특정 자산을 나타내는 몇 가지 변수(예: 이름, 심볼, 공급량)만 제공하면 누구나 표준 동작과 인터페이스를 갖춘 ERC20 토큰을 발행할 수 있다.

ERC-20 토큰은 각 토큰이 다른 토큰과 정확히 동등하다는 점에서 대체 가능하다. 개별 토큰에 특별한 권리나 동작이 부여되지 않기 때문에, ERC-20 토큰 간의 이러한 가치의 동등성은 교환 수단, 화폐, 투표권, 스테이킹 등의 응용에 유용하다.

### **ERC-20 토큰 표준은 왜 중요한가?**

ERC-20 토큰 표준은 대체 가능 토큰에 대한 특정 접근 방식을 도입하여 모든 토큰이 유사한 속성을 공유하도록 보장한다.

[2015년에 제안된](https://eips.ethereum.org/EIPS/eip-20) 이후, ERC-20 토큰 표준의 개발 덕분에 다른 프로토콜, 플랫폼, 개발자들은 새로운 토큰마다 별도의 로직을 만들 필요 없이 이 표준을 따르는 어떤 토큰이든 사용할 수 있는 스마트 컨트랙트를 만들 수 있게 되었다. 스마트 컨트랙트의 표준화는 개발 과정을 개선하며, 이는 결과적으로 전체 암호화폐 생태계에 큰 이익을 가져다준다.

## **모든 ERC-20 토큰에 필수적인 Solidity 함수는 무엇인가?**

**ERC-20 표준에는 표준의 모든 구현체에 반드시 존재해야 하는 메서드와 이벤트 집합이 포함되어 있으며, 여기에는 가치를 전송하는 메서드, 주소별 잔액을 조회하는 메서드, 기타 메타데이터를 가져오는 메서드가 포함된다.**

Solidity 언어의 세부 사항에 대한 이해와 [Ethereum 상에서 ERC-20 토큰을 생성하는](https://www.alchemy.com/docs/reference/token-api-overview) 함수 사용법에 대한 실질적인 지식은 Solidity 개발자로 성장하는 과정을 앞당길 수 있다.

### **1. totalSupply**

_totalSupply_ 메서드는 현재 유통 중인 토큰의 총 공급량을 나타낸다. 예시는 다음과 같다:

### **2. balanceOf**

_balanceOf_ 메서드는 특정 지갑 주소가 보유한 토큰의 수를 계산한다. 예시는 다음과 같다:

### **3. Transfer**

_transfer_ 메서드는 한 주소에서 다른 주소로 토큰을 전송하며, 이때 발신자는 트랜잭션의 출처가 된다. 예시는 다음과 같다:

### **4. Approve**

_approve_ 메서드는 다른 주소가 자신을 대신하여 토큰을 사용할 수 있도록 허용한다. 이는 자신의 토큰에 접근이 필요한 스마트 컨트랙트와 상호작용할 때 유용하다. _approve_ 메서드의 대표적인 사용 사례는 탈중앙화 거래소이다. 예시는 다음과 같다:

### **5. transferFrom**

_transferFrom_ 메서드는 _approve_ 메서드와 함께 사용할 때 유용하다. 누군가에게 자신의 토큰 사용을 승인하면, 그 사람은 트랜잭션의 일부로 자신의 계정에서 다른 계정으로 토큰을 _transferFrom_할 수 있다. 대표적인 사용 사례는 탈중앙화 거래소이다. 예시는 다음과 같다:

### **6. Allowance**

_allowance_ 메서드는 한 주소가 다른 주소를 대신하여 사용할 수 있는 금액을 나타낸다. 예시는 다음과 같다:

## **모든 ERC-20 토큰에 선택적인 Solidity 함수는 무엇인가?**

**이름(name), 심볼(symbol), 소수점 자릿수(decimals)는 모두 ERC-20 토큰 컨트랙트의 기본 인터페이스에 대한 확장 역할을 하는 선택적 함수이다.** 이 함수들은 필수는 아니지만 컨트랙트의 목적을 이해하는 데 도움이 되는 추가 정보를 제공한다. 이 [핵심 인터페이스](https://www.alchemy.com/overviews/solidity-interface)는 스마트 컨트랙트에 대한 추가적인 커스터마이징과 확장의 기반이 될 수 있다.

### **1. Name**

name은 컨트랙트의 목적을 나타내는 사람이 읽을 수 있는 이름이다. 예시는 다음과 같다:

### **2. Symbol**

symbol은 토큰을 나타내는 데 사용할 수 있는, 사람이 읽을 수 있는 티커이다. ETH, BTC 등과 유사하다. 예시는 다음과 같다:

### **3. Decimals**

decimals는 해당 화폐의 최소 단위의 소수점 자릿수를 정의한다. 가장 일반적인 값은 18이며, 이는 ether와 동일한 단위이다([ether의 최소 단위는 wei](https://www.alchemy.com/gwei-calculator)이며, 1 ether는 1e18 wei이다).

## **ERC-20 데이터 구조는 무엇인가?**

잔액 테이블, 허용량(allowance) 테이블과 같은 ERC-20 데이터 구조는 블록체인 상의 연산을 조직화하고 구현하는 데 도움을 준다.

### **Balances**

토큰 잔액에 대한 내부 테이블은 지갑 주소별 전체 소유량을 추적하는 데 사용된다. 각 전송은 한 잔액에서의 차감과 다른 잔액으로의 추가로 이루어진다.

### **Allowances**

토큰 허용량에 대한 내부 테이블은 지갑 주소가 위임한 지출 권한을 추적하는 데 사용된다. [중첩 매핑(nested mapping)](https://www.alchemy.com/overviews/solidity-mapping)을 사용하며, 기본 키는 토큰 소유자의 주소로, 이는 소비자(spender) 주소에 매핑되어 위임된 지출 가능 금액을 제공한다.

## **Alchemy로 개발 시작하기**

ERC-20 표준은 Ethereum 생태계에서 등장한 가장 중요한 표준으로, 가장 중요한 스마트 컨트랙트 프로토콜 전반에서 널리 채택되어 사용되고 있다. 개발자라면 이 표준을 이해하는 데 시간을 투자하고 직접 ERC-20 토큰을 배포해보는 것을 강력히 권장한다.

[ERC-20 토큰](https://www.alchemy.com/overviews/learn-solidity)과 그 외 Solidity 프로그래밍 기초에 대해 배우려면, Alchemy University의 Ethereum Developer Bootcamp에 자리를 확보하라.
