NFT의 기술적 이해 - 1편
이더리움 네트워크 상에서 NFT를 구현하는 기술 중 대표적인 것이 ERC-721 이라는 이더리움 표준안입니다.
ERC-721
ERC(Ethereum Request for Comment)는 이더리움 블록체인 네트워크에서 발행되는 토큰(token, 메인 블록체인 내의 기본적인 규약을 지키면서 종속되어 돌아가는 디지털 자산을 지칭)의 표준을 뜻합니다.
일반적으로 이더리움 블록체인에서 스마트 컨트랙트에 사용되는 기술 표준은 ERC-20입니다. ERC-20은 대체가능한 토큰에 관한 프로토콜입니다. 여기서 ‘대체가능한’이라는 말은 1,000원의 지폐와 다른 누군가가 가지고 있는 1,000원의 지폐가 모두 구분 없이 동일한 가치와 의미를 지닌다는 것을 의미합니다.
반면, ERC-721은 ‘대체불가능한’ 특징을 지니고 있는 이더리움상의 NFT의 표준안입니다. ERC-721은 ERC-20와는 다르게 특정 생태계에서 거래 등에 사용되는 토큰이 아니며, 게임 등 특적 목적으로 주로 쓰입니다.
대표적인 사례는 크립토키티가 있습니다. 크립토키티는 세계 최초로 블록체인 기술과 이더리움 ERC-721 토큰 방식의 디앱으로 개발된 가상 고양이 육성 게임입니다.
크립토키티 사용자는 웹페이지 상에 존재하는 디지털 고양이를 수집하고, 기르고, 교배하고, 교환할 수 있습니다. 또한, 게임에 등장하는 모든 고양이 생김새는 각각 고유의 특징(나이, 종, 색)을 가지고 있습니다. 이로 인해 게임 유저들은 전 세계에 단 하나밖에 없는 고양이를 갖게 됩니다. 이때 각각의 고양이에 대한 고유의 특징을 부여하기 위하여 ERC-721 표준안이 사용되는 것입니다.
고양이 가격은 매력도에 따라 달라지며, 고양이를 교배시켜 가장 희귀한 고양이를 번식시키는 것이 게임의 목표입니다. 2018년 9월 당시 한 크립토키티 고양이 캐릭터 하나가 약 17만 달러(약 2억 원, 당시 600이더)에 거래된 바 있습니다.
크립토키티가 사행성을 조장한다는 우려의 목소리도 컸지만 이더리움의 거래를 활성화했다는 점에서 많은 사람의 관심을 받았습니다. 또한 게임을 디지털 자산에 접목했다는 점에서도 긍정적인 평가를 받은 게임입니다.
특히 디지털 희소성에 관한 문제의 해결이라는 점에서 의의가 있습니다. 앞서 디지털 세계에서는 복잡한 그림도 누구나 손쉽게 복사·붙여넣기 기능을 통해 소유할 수 있습니다. 하지만 크립토키티는 이더리움 토큰 발행 표준 ERC-721을 활용해 이용자들에게 ‘나만의 고양이 소유권’을 보장해주는 가치를 제공하게 된 것입니다.
ERC-721 설계
EIP 공식문서에 따르면, ERC-721와 ERC-20는 요구하는 피라미터부터 차이가 있습니다. ERC-20은 토큰의 개수(amount)를 주로 파라미터로 다룬다면, ERC-721은 토큰의 소유권(토큰ID, 토큰 소유자)을 주요 파라미터로 다룹니다.
전송(transfer) 단계에서는 ERC-20은 송신주소(sender)에서 수신주소(recipient)로 지정한 수량(amount)만큼의 토큰을 보내게 됩니다. 하지만 ERC-721은 송신주소(from)에서 수신주소(to)로 권한과 tokenId를 수신주소로 변경하는 과정을 거칩니다. ERC-721 코드 중 ownerOf 함수는, tokenId를 파라미터로 넣으면 이 토큰의 소유자가 누구인지를 알려주는 기능을 합니다. 이외 NFT에는 작품명과 이미지 등 디지털 자산을 나타내는 세부정보가 담겨있습니다. 이는 데이터 크기에 따라 오프체인(예를 들어 IPFS와 같은 방식으로)에 데이터를 저장할 수도 있습니다. ERC-721에서 사용가능한 주요 함수의 내용은 다음과 같습니다.