ERC-20이란 무엇인가요? 이더리움 경제를 운영하는 토큰 표준입니다.

ERC-20이란 무엇인가요? 이더리움 경제를 운영하는 토큰 표준입니다.

저는 MetaMask 지갑에 USDT를 보유하고 있습니다. LINK도 조금 있고, 지난주 스왑으로 얻은 UNI도 약간 있으며, 누군가 에어드롭해 준 개 토큰도 있는데 파는 걸 자꾸 잊어버리네요. 이 토큰들은 각각 완전히 다른 기능을 합니다. 테더(USDT)는 현금과 국채로 뒷받침되는 스테이블코인이고, 체인링크(LINK)는 실제 데이터를 스마트 계약에 제공하는 오라클 네트워크를 운영합니다. 유니스왑(UNI)은 이더리움 기반 최대 규모의 탈중앙화 거래소(DEX)를 관리합니다. 개 토큰은 아무런 유용한 기능이 없지만, 제 지갑에서는 이 모든 토큰을 같은 목록에 표시하고, 같은 버튼으로 보낼 수 있으며, 제가 사용하는 모든 DeFi 프로토콜에서 특별한 설정 없이도 모두 받아들입니다.

네 가지 토큰 모두 동일한 규칙을 따르기 때문에 가능한 것입니다. 이들은 모두 ERC-20 토큰입니다. 동일한 인터페이스, 동일한 기능, 동일한 작동 방식을 가지고 있습니다. 그리고 ERC-20이 실제로 무엇을 의미하는지 이해하는 것이 이더리움 경제가 어떻게 작동하는지 이해하는 첫 번째 단계입니다.

파비안 포겔스텔러는 2015년 11월에 이 제안서를 작성했습니다. 그는 다소 밋밋한 이름인 '이더리움 의견 요청 20호(Ethereum Request for Comment number 20)'를 붙였습니다. 비탈릭 부테린이 최종 버전을 공동 작성했고, 2017년에 공식적으로 채택된 후 ICO 붐이 일어났습니다. ERC-20 덕분에 토큰 발행 비용이 거의 무료가 되면서 수천 개의 프로젝트가 하룻밤 사이에 토큰을 출시했습니다. 50만 개가 넘는 토큰 계약이 발행된 지금도 이 표준은 여전히 시장을 주도하고 있습니다. 이 글에서는 ERC-20의 기능과, 여러분이 솔리디티 코드를 한 줄도 작성할 계획이 없더라도 왜 이 표준에 관심을 가져야 하는지에 대해 알아보겠습니다.

ERC-20 표준의 작동 방식

이름이 필요 이상으로 복잡하네요. ERC는 이더리움 의견 요청(Ethereum Request for Comment)의 약자이고, 20은 제안 번호입니다. 그게 전부예요. 파비안이라는 개발자가 "모든 토큰이 따라야 할 규칙은 다음과 같습니다"라고 제안했고, 그 제안에 20번이라는 번호를 붙인 건 바로 다음에 번호가 나 있었기 때문입니다. 규칙이 20개도 아니고, 토큰이 20개도 아닙니다. 그저 이더리움 개선 대기열에서 20번째 제안일 뿐입니다.

해당 규칙의 요지는 다음과 같습니다. 이더리움에서 대체 가능한 토큰을 만들려면 스마트 계약에 특정 기능이 포함되어야 합니다. "대체 가능"이란 각 토큰 단위가 동일하다는 것을 의미합니다. 모든 USDC는 서로 동일합니다. 어떤 특정 UNI 토큰을 보유하고 있든 상관없습니다. 왜냐하면 모든 UNI 토큰은 서로 교환 가능하기 때문입니다. NFT는 이와 정반대입니다. 각 NFT는 고유합니다. 다른 기준이며, 별도의 글에서 다뤄야 합니다.

ERC-20 표준은 6개의 함수와 2개의 이벤트를 명확히 규정합니다. 시가총액 1400억 달러에 달하는 USDT부터 30초 전에 누군가가 출시한 밈코인까지, 모든 표준 준수 토큰 계약은 동일한 호출을 구현합니다.

기능 쉬운 영어 버전
총공급량() "이 토큰은 전 세계에 총 몇 개나 존재할까요?"
잔액(주소) "이 지갑에는 총 몇 개가 들어있나요?"
이체 대상, 금액 "내 지갑에서 다른 사람에게 X 토큰을 보내주세요"
승인(지출자, 금액) "이 DeFi 프로토콜이 내 토큰을 최대 X개까지 사용할 수 있도록 허용해 주세요."
transferFrom(from, to, amount) "저는 지갑 A에서 지갑 B로 토큰을 이동할 권한이 있습니다."
용돈(소유자, 지출자) "이 사용자는 용돈에서 얼마를 더 사용할 수 있나요?"

어떤 일이 발생할 때마다 두 가지 이벤트가 블록체인에 기록됩니다. '전송(Transfer )' 이벤트는 토큰이 지갑 간에 이동할 때마다 발생하고, '승인(Approval)' 이벤트는 누군가가 토큰 사용 권한을 부여할 때 발생합니다. 이더스캔(Etherscan)과 같은 블록체인 탐색기는 이러한 이벤트를 사용하여 토큰을 조회할 때 표시되는 거래 내역을 구축합니다.

세 가지 선택적 필드는 토큰에 개성을 더합니다. 이름은 사람이 읽기 쉬운 레이블("Chainlink")을 제공하고, 심볼은 티커("LINK")이며, 소수점 자릿수는 토큰을 나눌 수 있는 세분성을 설정합니다(대부분의 경우 ETH와 일치하도록 18자리 소수점을 사용하지만, USDT는 6자리 소수점을 사용하며 이로 인해 누구도 인정하고 싶지 않을 만큼 많은 버그가 발생했습니다).

함수 6개, 이벤트 2개, 선택적 필드 3개. 이게 전부입니다. 말 그대로 냅킨 한 장에 인쇄해도 커피 얼룩이 묻을 공간까지 남을 정도죠. 그런데 이 냅킨 크기의 사양이 수천억 달러 규모의 토큰 경제를 움직이고 있습니다. MetaMask는 이 함수들을 읽어 잔액을 보여주고, Uniswap은 스왑을 실행하며, Aave는 대출 관리에 사용합니다. 여러분이 사용해 본 모든 DeFi 프로토콜은 이 동일한 인터페이스를 통해 토큰과 상호작용합니다. 바로 이 단순함이 핵심입니다.

erc-20

ERC-20이 이더리움의 모든 것을 바꾼 이유는 무엇일까요?

저는 2016년에 암호화폐 업계에서 일했는데, 당시에는 이런 표준이 존재하지 않았습니다. 그야말로 혼돈이었죠. 모든 토큰이 맞춤형으로 만들어져야 했습니다. 누군가는 자신만의 함수 이름, 전송 로직, 잔액 조회 방식을 사용하여 토큰 컨트랙트를 구축했습니다. MetaMask는 이 토큰들의 절반도 제대로 알지 못했습니다. 거래소는 새로운 토큰 지원을 추가하는 데 몇 달씩 걸렸는데, 각 토큰마다 맞춤형 통합 코드가 필요했기 때문입니다. 탈중앙화 거래소(DEX)를 구축하는 건 꿈도 꿀 수 없었습니다. 모든 개별 토큰 구현에 대한 핸들러를 직접 작성해야 했으니까요.

ERC-20이 그 혼란을 종식시켰습니다. 표준이 채택된 후, MetaMask에 계약 주소를 붙여넣는 순간 새로운 토큰이 나타났습니다. Uniswap은 누구의 허가도 없이 해당 토큰을 상장할 수 있었고, Aave는 단 한 줄의 사용자 지정 코드도 작성하지 않고 담보로 받아들일 수 있었습니다. 하나의 표준, 보편적인 호환성이 가능해진 것입니다.

2017년 ICO 열풍이 그 증거였습니다. 기숙사 방에 있는 어떤 학생이라도 점심 식사 후에 ERC-20 토큰을 배포하고, 백서를 올린 웹사이트를 만들고, 자정까지 투자자들로부터 이더리움을 받을 수 있었습니다. 저는 그 과정을 실시간으로 목격했습니다. 프로젝트들은 수십억 달러를 모금했습니다. 어떤 프로젝트는 실제로 제품을 개발하는 합법적인 프로젝트였습니다. 대부분은 형편없는 프로젝트였고, 몇몇은 명백한 사기였습니다. 하지만 그 기반이 된 기술은 어땠을까요? 완벽하게 작동했습니다. 표준은 설계된 목적대로 토큰 생성과 상호 작용을 매우 쉽게 만들어주었습니다.

현재 규모는 실로 엄청납니다. 이더리움 네트워크에는 50만 개가 넘는 ERC-20 토큰 계약이 존재합니다. ERC-20 토큰의 총 시가총액은 수천억 달러에 달합니다. USDT만 해도 1,400억 달러를 넘어섰습니다. 여기에 USDC, LINK, UNI, DAI, SHIB, MKR 등을 더하면 이더리움 전체 경제적 가치의 대부분이 ERC-20 계약 안에 존재한다고 볼 수 있습니다.

인기 ERC-20 토큰 범주 시가총액(대략)
USDT(테더) 스테이블코인 1400억 달러 이상
USDC(원) 스테이블코인 600억 달러 이상
링크(체인링크) 오라클 네트워크 80억 달러 이상
유니(유니스왑) DEX 거버넌스 40억 달러 이상
다이(메이커) 탈중앙화 스테이블코인 50억 달러 이상
에이비 대출 프로토콜 20억 달러 이상
시바견 미미코인 60억 달러 이상
MKR(제조사) 통치 15억 달러 이상

ERC-20 토큰 생성: 생각보다 쉽습니다

예전에 유튜브 생중계에서 누군가가 ERC-20 토큰을 배포하는 걸 본 적이 있는데, 14분이나 걸렸어요. 시청자들에게 자기가 뭘 하고 있는지 설명하는 시간까지 포함해서 말이죠.

이건 스트리머가 얼마나 똑똑했는지 자랑하려는 게 아닙니다. OpenZeppelin 덕분에 얼마나 쉽게 토큰을 만들 수 있었는지에 대한 이야기입니다. OpenZeppelin은 검증되고 실전에서 성능이 입증된 Solidity 코드 라이브러리로, 모든 복잡한 작업을 처리해 줍니다. 토큰 이름("MyToken"), 심볼("MTK"), 소수점 자릿수(ETH와 동일하게 18자리), 초기 발행량만 선택하면 됩니다. 라이브러리가 6가지 ERC-20 함수, 이벤트, 보안 검사를 모두 처리합니다. 템플릿을 복사하고 변수 4개만 변경한 다음 이더리움에 배포하면 실제 토큰을 사용할 수 있습니다.

배포에 드는 가스 비용은 변동적입니다. 네트워크가 한산할 때는 20~50달러 정도이고, NFT 발행일처럼 네트워크가 혼잡할 때는 200~500달러까지 올라갈 수 있습니다. 하지만 이더리움 메인넷 대신 아비트럼(Arbitrum)이나 베이스(Base)에 배포하면 몇 달러 정도로 떨어집니다. 재정적 장벽이 거의 없는 셈이죠.

이러한 접근성의 어두운 면이 드러납니다. 이더리움 블록체인은 토큰 계약의 적법성을 검증하지 않습니다. 개발팀을 확인하거나, 코드를 감사하거나, 사업 모델을 평가하지도 않습니다. 가스 수수료만 지불할 수 있다면 토큰을 배포할 수 있습니다. 이더스캔(Etherscan)에 수십만 개의 토큰 계약이 등록되어 있고, 그중 대부분이 버려진 실험이거나 사기인 이유가 바로 여기에 있습니다. ERC-20 표준은 호환성만 보장할 뿐, 토큰을 보유할 가치가 있는지 여부는 전혀 보장하지 않습니다.

ERC-20과 다른 이더리움 토큰 표준 비교

사람들은 제게 "ERC-20이 유일한 토큰 표준인가요?"라고 묻습니다. 아닙니다. 전혀 그렇지 않습니다. 하지만 ERC-20은 최초로 제대로 작동한 표준이었고, 그 이후에 나온 표준들은 ERC-20이 해결하지 못했던 문제들을 보완했습니다.

ERC-721이 등장하면서 NFT가 탄생했습니다. 모든 ERC-20 토큰은 서로 교환 가능하지만(당신의 USDC는 나의 USDC와 동일합니다), 각 ERC-721 토큰은 고유한 ID를 가지고 있습니다. Bored Ape #4293은 Bored Ape #7810과 완전히 다른 자산입니다. 내부적으로 비슷한 기능을 하지만, 로직은 일반적인 수량이 아닌 개별 항목을 대상으로 작동합니다. Bored Ape를 절반만 보낼 수는 없습니다. 전부 보내거나 전혀 보내지 않거나 둘 중 하나입니다.

ERC-1155는 게임 개발자들이 아이템 종류마다 개별 계약을 배포하는 데 지쳐서 탄생했습니다. 하나의 계약으로 금화(ERC-20처럼 대체 가능), 철검(반대체 가능, 동일한 복제품 50개), 그리고 고유한 전설 투구(대체 불가능, 단 하나뿐)를 처리할 수 있습니다. 일괄 전송 방식을 통해 가스를 절약할 수 있습니다. 100개의 아이템을 각각 따로 전송하는 대신 한 번의 거래로 처리할 수 있습니다.

BEP-20은 바이낸스 스마트 체인이 자체적으로 사용하는 버전입니다. 동일한 기능과 이벤트를 제공하지만 블록체인은 다릅니다. 더 저렴한 네트워크에 ERC-20을 복사해서 붙여넣은 것과 같습니다. 솔라나의 SPL 표준은 솔라나가 이더리움과 호환되도록 설계되지 않았기 때문에 완전히 다른 아키텍처를 사용하지만 동일한 기능을 수행합니다.

기준 토큰 유형 대체 가능한가요? 사용 사례 회로망
ERC-20 대체 가능 토큰 통화, 거버넌스, 유틸리티 이더리움
ERC-721 대체 불가능 토큰 고유 ID 없음 NFT, 디지털 아트, 수집품 이더리움
ERC-1155 멀티 토큰 둘 다 게임, 다양한 자산 유형 이더리움
비에프-20 대체 가능 토큰 ERC-20과 동일합니다. BNB 체인
SPL 대체 가능 + NFT 둘 다 솔라나 생태계 솔라나

탈중앙화 금융(DeFi)에서 ERC-20 토큰의 역할: 이 표준이 탈중앙화 금융을 움직이는 이유

ERC-20을 없애버리면 DeFi는 하룻밤 사이에 무너집니다. "고군분투"가 아니라 완전히 붕괴하는 겁니다. 시스템의 모든 구성 요소가 토큰들이 같은 언어를 사용한다고 가정하기 때문입니다.

유니스왑은 풀에 있는 두 개의 ERC-20 토큰을 쌍으로 묶어 서로 교환할 수 있도록 해줍니다. USDC도, SHIB도, 심지어 친구가 새벽 2시에 출시한 그 밈코인도 다 작동합니다. 탈중앙화 거래소(DEX)는 토큰의 용도에는 관심이 없습니다. 중요한 건 계약이 `transfer()`와 `approved()` 메서드를 구현하는 것입니다. 유동성 풀을 추가하기만 하면 바로 거래가 시작됩니다. 상장 신청도, 거래소 심사도, 대기 기간도 필요 없습니다.

Aave와 Compound는 ERC-20 토큰을 대출해 줍니다. 프로토콜은 balanceOf() 함수를 호출하여 예치금을 확인하고, transfer() 함수를 호출하여 토큰을 이체합니다. 대출금을 상환할 때는 approve()와 transferFrom() 함수를 사용합니다. 인터페이스가 이미 알려져 있기 때문에, 새로운 토큰이라도 배포되는 즉시 대출 시장이 형성될 수 있습니다.

그리고 ETH 관련해서 이상한 문제가 하나 있습니다. ETH는 ERC-20 표준보다 먼저 존재했기 때문에 표준을 따르지 않습니다. 이로 인해 구성 가능성이 떨어집니다. 해결책은 WETH입니다. Wrapped Ether는 네이티브 ETH를 ERC-20으로 감싼 토큰입니다. 1 ETH를 예치하면 DeFi 프로토콜에서 정상적으로 처리할 수 있는 1 WETH를 받을 수 있습니다. WBTC도 비트코인에 대해 동일한 방식으로 작동하여, 실제 비트코인을 1:1로 담보로 하는 ERC-20 토큰 형태로 비트코인의 가치를 이더리움 생태계에 도입합니다.

실질적인 결과는 다음과 같습니다. 저는 오늘 모든 ERC-20 토큰(아직 존재하지 않는 토큰 포함)과 호환되는 DeFi 프로토콜을 구축할 수 있습니다. 제 코드는 USDT에 대해 구체적으로 알 필요가 없습니다. 내일 누군가 새로운 스테이블코인을 출시한다고 해서 코드를 업데이트할 필요도 없습니다. 인터페이스가 모든 것을 처리합니다. 이러한 구성 가능성 덕분에 이더리움은 다른 어떤 블록체인보다 더 많은 DeFi 활동, 더 높은 TVL, 그리고 더 풍부한 개발자 도구를 보유하고 있습니다. ERC-20 표준은 모든 것이 구축되는 기반입니다.

보안 위험 및 일반적인 ERC-20 문제

수백만 달러의 손실을 초래한, DeFi 사용자들에게 큰 부담을 안겨준 승인 버그에 대해 이야기해 드리겠습니다. 이 버그는 직접 겪어보기 전까지는 거의 아무도 이해하지 못합니다.

유니스왑에서 토큰을 교환하거나 Aave에 입금할 때, dApp은 토큰 사용을 "승인"해달라고 요청합니다. 대부분의 dApp은 기본적으로 무제한 승인을 허용합니다. 언뜻 보기에는 무해해 보이지만, 그 의미를 제대로 이해해야 합니다. 해당 스마트 계약은 사용자가 명시적으로 권한을 취소하기 전까지 언제든지, 영원히 지갑에 있는 해당 유형의 모든 토큰을 사용할 수 있습니다. 만약 6개월 후 해당 스마트 계약이 해킹당한다면, 공격자는 사용자가 이전에 승인했던 권한을 이용해 사용자가 접근 권한을 부여했다는 사실조차 잊고 있던 토큰을 빼돌릴 수 있습니다.

이런 일이 종종 발생합니다. 한두 번이 아니죠. 해결책은 간단하지만 좀 번거롭습니다. 각 거래에 필요한 정확한 금액만 승인하는 것입니다. 아니면 Revoke.cash를 사용해서 잊어버린 오래된 승인 내역을 정리할 수도 있습니다. 저는 몇 달에 한 번씩 확인하는데, 항상 예상보다 상황이 심각합니다. ERC-2612는 온체인 승인을 서명된 허가서로 대체하는 새로운 표준으로, 이러한 위험을 줄여줍니다. 하지만 대부분의 dApp은 여전히 이전 방식을 사용하고 있습니다.

가짜 토큰 때문에 매주 피해자가 발생합니다. 사기꾼은 "Uniswap" 또는 "Chainlink"라는 이름의 ERC-20 스마트 계약을 배포하는데, 계약 주소가 약간씩 다릅니다. 탈중앙화 거래소(DEX)에서 이 계약을 검색하면 익숙한 이름이 보이고, 그 가짜 계약을 구매하게 됩니다. 그러면 여러분의 돈은 사기꾼의 지갑으로 바로 들어갑니다. 진짜 LINK 스마트 계약 주소는 0x514910771AF9Ca656af840dff83E8264EcF986CA입니다. 가짜 계약 주소는 0x514910... 뭐 이런 식일 수 있습니다. 항상 CoinGecko나 공식 프로젝트 사이트에서 주소를 확인하세요. 이름으로만 검색하지 마세요.

그리고 숨겨진 속임수가 있는 토큰들도 있습니다. 겉보기에는 일반적인 ERC-20 계약처럼 보이지만, 배포자는 무제한으로 새로운 토큰을 발행할 수 있는 기능을 추가하거나, 토큰 교환 시 99%의 수수료를 부과하는 판매 수수료 기능을 추가하거나, 배포자 외에는 누구도 판매할 수 없도록 블랙리스트를 설정하는 등의 기능을 숨겨놓을 수 있습니다. ERC-20 표준은 계약이 할 수 없는 일에 대해서는 아무런 언급도 하지 않습니다. 단지 최소한의 기능만 명시할 뿐입니다. 그 외의 모든 것은 개발자의 재량에 달려 있습니다. 토큰 감사, DextScore, Etherscan의 검증된 계약들이 존재하는 이유는 바로 이러한 표준의 단순함과 사기꾼들의 창의성 사이의 간극 때문입니다.

질문이 있으십니까?

네. 누구나 Solidity와 OpenZeppelin, Remix IDE 같은 도구를 사용하여 이더리움에 ERC-20 토큰을 배포할 수 있습니다. 기술적 진입 장벽은 낮습니다. 기본적인 토큰 생성에는 한 시간도 채 걸리지 않으며, 네트워크 상황에 따라 가스비는 20달러에서 500달러 정도입니다. 어려운 부분은 토큰을 만드는 것이 아니라, 토큰을 만들 만한 가치가 있는 무언가를 구축하는 것입니다.

이더리움 네트워크에는 50만 개 이상의 ERC-20 토큰 계약이 배포되었습니다. 대부분은 비활성화되었거나, 방치되었거나, 사기입니다. 의미 있는 거래량과 실제 사용처를 가진 계약은 몇천 개에 불과합니다. 시가총액 상위 ERC-20 토큰(USDT, USDC, LINK, UNI, DAI)이 전체 가치의 대부분을 차지합니다.

아니요. ERC-20은 기술 표준(설계도)입니다. USDT는 ERC-20 표준을 사용하는 특정 스테이블코인 토큰입니다. ERC-20을 USB 사양으로, USDT를 특정 USB 장치로 생각하시면 됩니다. USDT는 다른 블록체인(트론, 솔라나, 애벌랜치)에서도 각 블록체인의 토큰 표준을 사용하여 존재하지만, 이더리움 버전은 ERC-20 토큰입니다.

사용자 지정 토큰을 지원하는 모든 이더리움 지갑은 ERC-20 지갑입니다. MetaMask, Trust Wallet, Coinbase Wallet, Rainbow, Plisio, Trezor, Ledger는 모두 ERC-20 토큰을 표시하고 관리합니다. MetaMask에 토큰의 계약 주소를 추가하면 ERC-20 함수(balanceOf, symbol, decimals)를 읽어 잔액을 표시합니다. ERC-20 토큰을 위해 특별한 지갑이 필요한 것은 아닙니다. 이더리움에 연결되는 모든 지갑을 사용할 수 있습니다.

아니요. 코인베이스는 암호화폐 거래소입니다. 하지만 코인베이스는 이더리움 네트워크를 통해 ERC-20 토큰의 입출금을 지원합니다. 또한 코인베이스는 이더리움 기반의 레이어 2 네트워크인 Base를 구축하여 ERC-20 토큰을 더 낮은 가스 수수료로 사용할 수 있도록 했습니다. 코인베이스 계정으로 ERC-20 토큰을 전송할 때는 자금 손실을 방지하기 위해 이더리움 네트워크(또는 올바른 레이어 2)를 선택했는지 확인하십시오.

아니요. ETH는 이더리움의 네이티브 암호화폐입니다. 프로토콜 수준에서 존재하며 ERC-20 표준보다 먼저 만들어졌습니다. ERC-20 토큰은 스마트 계약을 사용하여 이더리움 위에 구축됩니다. ETH는 ERC-20 규칙을 따르지 않기 때문에, DeFi에서 사용할 수 있도록 ETH를 ERC-20 호환 형식으로 변환해주는 WETH(Wrapped ETH)가 존재합니다. 대부분의 DeFi 프로토콜을 사용할 때, 사용자의 ETH는 백그라운드에서 자동으로 WETH로 변환됩니다.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.