💡 핵심 인사이트
ERC-20은 이더리움 블록체인 위에서 누구나 자신만의 '코인(토큰)'을 발행할 때, 거래소나 지갑 앱들이 쉽게 호환해서 쓸 수 있도록 **반드시 지켜야 할 변수와 함수 이름들을 강제로 통일시킨 "이더리움 토큰 제조 표준 규격서"**입니다.
수만 개의 잡코인들이 업비트에서 버튼 하나로 사고팔릴 수 있는 이유가 바로 이 규격 덕분입니다.


Ⅰ. ERC(Ethereum Request for Comment)의 개념

이더리움은 인터넷의 HTTP 표준 제정 방식(RFC)을 본떠, 전 세계 개발자들이 "이더리움 이렇게 개선하자!"라고 아이디어를 올리는 게시판을 만들었습니다. 이 제안서들을 **EIP(Ethereum Improvement Proposal)**라고 부르며, 그중 애플리케이션 표준(토큰 규격 등)으로 합의된 문서들을 ERC라고 부릅니다. 20번째로 제안된 문서가 통과된 것이 바로 ERC-20입니다.


Ⅱ. ERC-20: 대체 가능 토큰(Fungible Token)의 헌법

ERC-20은 서로 1:1로 쪼개고 바꿀 수 있는 일반적인 돈(화폐)을 만드는 설계도입니다.

  • 대체 가능(Fungible): 내가 가진 1만 원짜리 지폐와 네가 가진 1만 원짜리 지폐는 서로 바꿔도 전혀 가치에 차이가 없는 성질.

만약 이 표준이 없었다면 A회사는 송금 함수를 sendMoney(), B회사는 transferCoin()으로 제멋대로 짰을 것입니다. 그러면 메타마스크 지갑이나 빗썸 거래소는 세상에 나오는 수만 개의 코인 코드를 일일이 분석해서 맞춰줘야 하는 지옥이 열립니다.

[ERC-20이 강제하는 6가지 필수 함수 (이름 토씨 하나 틀리면 안 됨)]

  1. totalSupply(): 이 코인은 세상에 총 몇 개 발행됐어?
  2. balanceOf(주소): 이 지갑에 지금 코인 몇 개 들어있어?
  3. transfer(받을사람, 금액): 내 지갑에서 남한테 돈 좀 보내줘! ★가장 핵심
  4. transferFrom(): 은행 자동이체처럼, 남이 내 허락받고 돈 빼가게 해줘!
  5. approve(), allowance(): 자동이체 한도액 설정과 확인.

어느 스타트업이 코인을 발행하든, 스마트 컨트랙트에 이 6개 함수를 똑같은 이름으로 구현하기만 하면 **"와! ERC-20 호환 토큰이네요!"**라며 전 세계 모든 암호화폐 거래소와 디파이(DeFi) 앱에 프리패스로 연동되는 기적이 일어납니다. (초기 ICO 광풍의 1등 공신).


Ⅲ. ERC-20의 한계 (결제 사고)

ERC-20 코인을 다른 스마트 컨트랙트(디파이 앱)로 실수로 송금(transfer)해 버리면 어떻게 될까요? 앱 컨트랙트는 자신이 코인을 받았다는 사실을 인지하지 못해 수십억 원의 돈이 갇혀버리는(Lock) 치명적인 버그가 존재했습니다. 이를 해결하기 위해 나중에 토큰을 받았을 때 수신자에게 알람을 울려주는 안전벨트를 장착한 ERC-777, ERC-1363 등 개선된 표준들이 등장했습니다.

📢 섹션 요약 비유: ERC-20은 전 세계의 **'AAA 건전지 규격'**입니다. 옛날엔 장난감 회사마다 밧데리 모양이 달라서 전용 밧데리를 구하느라 쩔쩔맸지만, "모두 길이 44.5mm, 두께 10.5mm로 통일해!(ERC-20)"라고 법을 정한 뒤부터는, 리모컨이든 미니카든 편의점에서 AAA 건전지만 사다 끼우면 무조건 작동하는 완벽한 호환성 시대가 열린 것입니다.