ERC-721은 이더리움에서 대체 불가능 토큰(NFT)을 위한 표준입니다. 표준이란 공개적으로 게시된 규칙 모음을 말합니다. 대체 불가능하다는 것은 각 토큰이 서로 구별된다는 뜻입니다. ERC-721은 인터페이스를 규정하는데, 인터페이스란 스마트 컨트랙트가 제공하는 함수와 이벤트의 목록입니다. 스마트 컨트랙트는 블록체인에 저장된 프로그램입니다. ERC-721에서 토큰이란 스마트 컨트랙트를 통해 기존 블록체인 위에서 발행되는 단위를 말합니다.
ERC-721은 이더리움 개선 제안(EIP)으로 게시되었으며, 이는 이더리움 커뮤니티를 위한 설계 문서입니다. 이 제안의 번호가 721이기 때문에 ERC-721은 EIP-721이라고도 표기됩니다. ERC는 애플리케이션 수준의 표준, 즉 토큰 표준처럼 이더리움 위의 애플리케이션이 따르는 표준을 위한 제안 분류입니다.
ERC-721의 코드는 해당 인터페이스를 ERC721이라고 명명합니다. ERC-721 토큰이란 ERC-721을 따르는 컨트랙트가 발행한 토큰을 의미합니다.
함수란 컨트랙트가 제공하며 사용자가 호출할 수 있는 이름이 지정된 연산입니다. 이벤트란 어떤 변화가 일어났을 때 컨트랙트가 블록체인에 기록하는 알림으로, 소프트웨어가 해당 변화를 추적할 수 있게 해줍니다. 이벤트를 기록하는 것을 '발생(emit)시킨다'고 합니다.
블록체인이란 순서대로 보관되는 거래 내역의 공유 기록입니다. 거래(트랜잭션)란 사용자가 블록체인에 보내는 요청으로, 예를 들어 토큰을 이동시키는 요청이 있습니다. 주소란 블록체인에서 사용자 또는 스마트 컨트랙트를 식별하는 식별자입니다.
ERC-721 표준은 무엇을 규정하나요?
ERC-721 표준은 인터페이스를 규정합니다. 즉, 컨트랙트가 반드시 제공해야 하는 함수와 반드시 발생시켜야 하는 이벤트입니다. 이를 통해 소프트웨어는 ERC-721을 따르는 컨트랙트들을 동일한 방식으로 호출할 수 있습니다.
ERC-721은 또한 ERC-165를 통한 인터페이스 감지를 요구하는데, 이는 컨트랙트가 자신이 지원하는 인터페이스를 알릴 수 있게 하는 표준입니다.
ERC-721은 두 가지 선택적 확장 기능을 설명합니다. 메타데이터 확장은 컨트랙트 토큰의 이름과 기호, 그리고 각 토큰 ID에 대한 링크를 반환하는 함수를 추가하며, 열거형 확장은 컨트랙트가 추적하는 토큰들을 나열하는 함수를 추가합니다.
ERC-721은 여러 NFT 표준 중 하나이며, 이더리움을 위해 작성되었습니다. 다른 블록체인이나 다른 표준은 ERC-721과 다르게 작동할 수 있습니다.
ERC-721을 따르는 컨트랙트는 토큰 ID, 즉 컨트랙트가 각 토큰에 부여하는 번호로 토큰들을 구별합니다. 토큰을 추적하는 컨트랙트의 주소와 토큰 ID를 함께 사용하면 하나의 토큰을 식별할 수 있으며, ERC-721은 컨트랙트가 존재하는 한 토큰 ID가 변하지 않아야 한다고 규정합니다.
ERC-721과 ERC-20: 두 표준은 어떻게 다른가요?
ERC-721과 ERC-20은 컨트랙트가 무엇을 추적하는지, 전송이 무엇을 지정하는지, 승인이 무엇을 포괄하는지에서 차이가 있습니다. ERC-20은 대체 가능 토큰, 즉 단위들이 서로 교환 가능해서 한 단위가 다른 단위와 동일한 토큰을 위한 표준입니다. ERC-721은 대체 불가능 토큰을 위한 표준으로, 컨트랙트가 토큰 ID로 토큰들을 구별하기 때문에 두 토큰을 맞바꾸는 것은 동일한 것끼리의 교환이 아닙니다.
- ERC-20 컨트랙트는 각 주소가 보유한 단위 수를 기록하는 반면, ERC-721 컨트랙트는 각 토큰 ID를 어느 주소가 제어하는지를 기록합니다.
- ERC-20 전송은 토큰의 수량을 지정하는 반면, ERC-721 전송은 토큰 ID를 지정합니다.
- ERC-20 승인은 다른 주소가 전송할 수 있는 수량을 포괄하는 반면, ERC-721 승인은 하나의 토큰 ID만 포괄하거나, 오퍼레이터를 지정하는 경우에는 동일한 컨트랙트 내에서 해당 주소가 제어하는 모든 토큰을 포괄합니다. 오퍼레이터란 토큰을 제어하는 주소가 자신의 모든 토큰을 전송할 수 있도록 허락한 주소입니다.
ERC-721은 어떤 함수와 이벤트를 정의하나요?
아래 표는 ERC-721이 정의하는 함수와 이벤트를 이름별로 나열하고, ERC-165의 인터페이스 감지 함수도 함께 포함하여 각각이 어떤 역할을 하는지 설명합니다.
어떤 함수가 수신 컨트랙트를 확인하나요?
safeTransferFrom 함수는 토큰을 이동시킨 후 수신자 확인을 실행합니다. 수신 주소가 스마트 컨트랙트인 경우, ERC-721 컨트랙트는 해당 컨트랙트에서 onERC721Received라는 이름의 함수, 즉 수신자 함수를 호출합니다. 수신 컨트랙트는 이 수신자 함수를 제공해야 하며, 이 함수는 ERC-721이 정의하는 특정 응답값을 반환하여 수신 컨트랙트가 해당 전송을 받아들인다는 것을 ERC-721 컨트랙트에 알립니다. 수신 컨트랙트가 다른 값을 반환하면 해당 거래는 취소되며, ERC-721에서는 이를 되돌림(revert)이라고 부릅니다.
transferFrom 함수는 수신자 함수를 호출하지 않습니다. ERC-721은 수신 주소가 토큰을 받을 수 있는지에 대한 확인을 호출자, 즉 해당 함수를 호출하는 거래를 보내는 주체에게 맡깁니다. 수신자 함수를 제공하지 않는 컨트랙트로 전송된 토큰은 유실될 수 있습니다.
승인과 오퍼레이터는 어떻게 작동하나요?
승인은 다른 주소가 토큰을 전송할 수 있도록 허용합니다. approve 함수는 하나의 토큰 ID에 대해 한 주소를 지정하며, getApproved는 그 주소를 반환합니다. ERC-721에 따르면 토큰이 전송되면 승인된 주소는 다시 없음(none) 상태로 초기화됩니다.
오퍼레이터란 setApprovalForAll을 통해 다른 주소가 동일한 컨트랙트 내에서 제어하는 모든 토큰을 전송할 수 있도록 허용받은 주소입니다. ERC-721은 토큰을 제어하는 각 주소에 대해 컨트랙트가 둘 이상의 오퍼레이터를 허용하도록 요구하며, isApprovedForAll은 한 주소가 다른 주소의 오퍼레이터인지 여부를 반환합니다.
ERC-721에서 전송은 토큰을 제어하는 주소, 그 주소의 오퍼레이터, 또는 해당 토큰 ID에 대해 승인된 주소에 의해 요청될 수 있습니다.
선택적 메타데이터 확장은 무엇을 추가하나요?
ERC-721의 선택적 메타데이터 확장은 컨트랙트에 name, symbol, tokenURI라는 세 가지 함수를 추가합니다. 메타데이터란 토큰을 설명하는 데이터이며, 이 세 함수가 이를 반환합니다.
name 함수는 컨트랙트가 추적하는 토큰들의 이름을 반환하고, symbol은 그 축약된 이름을 반환합니다.
tokenURI 함수는 하나의 토큰 ID에 대한 URI를 반환합니다. URI는 'uniform resource identifier'의 줄임말로, 일종의 링크입니다. 이 확장을 포함하지 않는 컨트랙트에는 URI가 존재하지 않습니다.
ERC-721에 따르면 tokenURI가 반환하는 URI는 JSON 파일을 가리킬 수 있는데, JSON은 구조화된 데이터를 위한 텍스트 형식입니다. 이 파일에는 이름, 설명, 이미지 필드가 담길 수 있습니다.
ERC-721은 컨트랙트가 특정 토큰 ID에 대해 반환하는 URI를 변경할 수 있도록 허용하므로, 동일한 토큰 ID가 이후에 다른 파일로 연결될 수 있습니다. ERC-721은 해당 URI가 가리키는 파일이 어디에 저장되는지는 규정하지 않습니다.
ERC-721이 각 컨트랙트에 맡기는 것은 무엇인가요?
2026년 10월 기준으로, ERC-721은 토큰의 콘텐츠, 토큰과 연결된 어떠한 권리, 토큰 파일이 저장되는 위치, 토큰이 생성되거나 소각되는 방식, 또는 토큰의 법적 지위를 정의하지 않습니다. 대체 불가능 토큰(NFT) 용어집 항목에서는 토큰의 기록, 즉 컨트랙트가 각 토큰에 대해 보관하는 정보가 무엇을 다루지 않는지를 설명합니다.
ERC-721을 따르는 컨트랙트라 해도 동작 방식에서는 차이가 있을 수 있습니다. ERC-721은 전송이 반드시 실패해야 하는 경우들을 명시하며, 그 외의 경우, 예를 들어 전송이 일시 중단된 동안에는 컨트랙트가 전송을 취소하는 것을 허용합니다. 따라서 컨트랙트는 ERC-721이 명시하지 않은 이유로도 전송을 거부할 수 있습니다.
2026년 1월 5일










