블록체인
ERC-721ERC-721
ERC-721은 이더리움(Ethereum) 블록체인 위에서 대체 불가능한 토큰(Non-Fungible Token, NFT)을 발행하기 위한 표준 인터페이스다. 2018년 William Entriken 등이 제안했으며, 각 토큰이 고유한 tokenId를 가지는 것이 핵심이다.
핵심 원리
ERC-721의 모든 토큰은 고유한 정수 tokenId로 식별된다. 같은 컨트랙트 내에서도 토큰마다 소유자와 메타데이터가 다를 수 있다.
표준 인터페이스
| 함수 | 역할 |
|---|---|
balanceOf(owner) | 주소가 보유한 토큰 수 조회 |
ownerOf(tokenId) | 토큰 소유자 조회 |
safeTransferFrom(from, to, tokenId) | 안전한 토큰 전송 (수신자 확인) |
transferFrom(from, to, tokenId) | 토큰 전송 |
approve(to, tokenId) | 특정 토큰 이전 권한 부여 |
setApprovalForAll(operator, approved) | 모든 토큰 이전 권한 부여 |
tokenURI(tokenId) | 메타데이터 URI 반환 |
safeTransferFrom은 수신 주소가 스마트 컨트랙트일 경우 ERC-721 처리 기능이 있는지 확인하여 토큰 영구 잠금을 방지한다.
주요 확장 표준
| 표준 | 기능 |
|---|---|
| ERC-2981 | 재판매 로열티 표준화 — royaltyInfo()로 마켓플레이스가 수익 분배 가능 |
| ERC-4906 | 동적 메타데이터 — MetadataUpdate 이벤트로 마켓플레이스 갱신 |
| ERC-6551 | 토큰 바운드 계정 — NFT가 독립적인 지갑처럼 자산 보유·실행 가능 |
| ERC-2309 | 연속 전송 — 대량 민팅 시 단일 이벤트로 가스 절감 |
| ERC721Enumerable | 온체인 열거 — 컨트랙트 내 모든 토큰 목록 조회 (가스 비용 높음) |
ERC-2981 로열티
NFT 재판매 시 원작자에게 자동으로 수익 일부를 분배하는 표준이다. royaltyInfo(tokenId, salePrice)를 통해 수취인 주소와 금액을 반환한다. 단, ERC-2981은 정보를 정의할 뿐 강제 집행하지 않는다 — 마켓플레이스가 자발적으로 준수해야 한다.
메타데이터 표준
tokenURI는 아래 형식의 JSON을 가리킨다.
메타데이터 저장 방식
| 방식 | 특징 | 영구성 |
|---|---|---|
| 온체인 | 블록체인에 직접 저장 | 최고 |
| IPFS (Pinata, NFT.Storage) | 분산 파일 시스템 | 높음 |
| 중앙 서버 (API) | 유연하지만 서버 의존 | 낮음 |
주요 NFT 프로젝트
| 프로젝트 | 표준 | 특징 |
|---|---|---|
| CryptoPunks | 자체 (ERC-721 전) | 최초 NFT 컬렉션 |
| BAYC | ERC-721 | 최대 블루칩 PFP |
| Axie Infinity | ERC-721 | P2E 게임 아이템 |
| OpenSea Storefront | ERC-1155 | 반대체 가능 아이템 |
ERC-721 vs ERC-1155
| 항목 | ERC-721 | ERC-1155 |
|---|---|---|
| 토큰 유형 | NFT 전용 | FT + NFT 혼합 |
| 배치 전송 | 미지원 | 지원 (가스 절감) |
| 적합한 사용처 | 단일 고유 자산 | 게임 아이템, 대규모 드롭 |
| 복잡도 | 단순 | 높음 |
관련 개념
- •NFT — ERC-721이 구현하는 개념
- •ERC-20 — 대체 가능 토큰 표준
- •Ethereum — ERC-721이 동작하는 플랫폼
- •스마트 컨트랙트 — ERC-721 구현 기반