궁금한 주제를 찾아보세요

비트코인, 스테이블코인, 온체인 데이터처럼 주제로 검색하세요.

다시 읽을 이야기

저장한 글은 이 브라우저에만 보관됩니다.

해설기술·생태계

ERC-721과 ERC-1155, NFT 식별과 전송 구조 비교

ERC-721의 tokenId별 단일 소유와 ERC-1155의 id별 수량 장부를 비교하고 승인·배치 전송·안전 수신 검사를 읽는 방법을 설명합니다.

단일 조각상 진열대와 여러 칸 수집함을 대비한 ERC-721·ERC-1155 비교 그림
주제의 이해를 돕기 위해 imagegen으로 제작한 AI 생성 개념 일러스트
먼저 읽는 핵심

ERC-721의 balanceOf는 NFT 개수이고 ownerOf(tokenId)는 개별 소유자를 찾는다.
ERC-1155의 balanceOf(account,id)는 특정 id 수량이며 batch 함수로 여러 항목을 한 번에 다룬다.
ApprovalForAll은 한 작품이 아니라 해당 계약의 여러 자산을 관리할 수 있는 넓은 권한이다.

ERC-721은 계약과 tokenId 조합으로 개별 NFT를 식별하고 ownerOf가 한 소유자를 반환합니다. ERC-1155는 하나의 계약에서 여러 id를 관리하며 주소별로 각 id의 수량을 기록해 대체 가능·비대체 항목을 함께 표현할 수 있습니다. 두 표준 모두 안전 전송 수신 훅과 operator 승인을 제공하지만 함수, 이벤트, 배치 처리 방식은 다릅니다.

ERC-721은 tokenId마다 소유자 한 명을 기록한다

ERC-721 계약에서 NFT는 계약 주소와 tokenId의 조합으로 구분됩니다. ownerOf(tokenId)는 현재 소유자를 반환하고 balanceOf(owner)는 그 주소가 해당 계약에서 가진 NFT 개수를 반환합니다. 같은 tokenId를 두 주소가 각각 0.5개씩 소유하는 표준 장부는 아닙니다.

tokenId 숫자 자체가 이미지나 희소성을 뜻하지는 않습니다. 선택적 tokenURI가 메타데이터 위치를 가리킬 수 있지만 이미지와 속성의 저장 방식, 변경 가능성, 서버 지속성은 별도입니다. 소유권 장부와 콘텐츠 보존을 나눠 평가해야 합니다.

ERC-721과 ERC-1155 핵심 구조
항목 ERC-721 ERC-1155
잔액 조회 balanceOf(owner) 개수 balanceOf(account,id) 수량
개별 식별 계약+tokenId 계약+id, 수량 포함
배치 전송 기본 표준에 없음 safeBatchTransferFrom
대표 이벤트 Transfer TransferSingle·TransferBatch

ERC-1155는 하나의 계약에 여러 id와 수량을 둔다

ERC-1155는 Multi Token Standard로 한 계약에서 다양한 token id를 관리합니다. 특정 id의 발행량이 1이면 비대체 항목처럼, 여러 개면 게임 아이템이나 이용권처럼 수량 자산으로 표현할 수 있습니다. 주소별 잔액은 owner와 id 두 축으로 조회합니다.

여러 id와 수량 배열을 safeBatchTransferFrom으로 한 번에 전송하고 balanceOfBatch로 묶어 조회할 수 있습니다. 대량 아이템 이동에서 호출 수를 줄일 수 있지만 배열 길이와 각 수량을 모두 검증해야 합니다. 배치 거래 하나에 다양한 가치와 권한이 포함될 수 있습니다.

표준 이름보다 계약 주소·id·수량의 세 값을 함께 읽어야 한다.

JOBCOIN 해설

안전 전송은 계약 수신자의 응답을 확인한다

ERC-721의 safeTransferFrom은 수취인이 계약이면 onERC721Received를 호출하고 정해진 값을 반환하지 않으면 거래를 되돌립니다. 일반 transferFrom에는 이 수신 확인이 없어 NFT를 처리하지 못하는 계약에 잠길 수 있습니다. 안전 전송도 수취 계약이 올바른 후속 회계까지 한다는 경제적 보증은 아닙니다.

ERC-1155의 safeTransferFrom과 safeBatchTransferFrom도 수취 계약의 onERC1155Received 또는 onERC1155BatchReceived 응답을 확인합니다. 개인 주소로 보내는지 계약으로 보내는지, 해당 계약이 표준 수신 인터페이스를 구현하는지 봅니다. 브리지나 마켓 계약은 공식 입금 함수를 요구할 수 있습니다.

  • 계약 주소와 tokenId 또는 id를 함께 확인한다.
  • ERC-1155는 수량 배열의 순서와 값을 모두 읽는다.
  • 계약 수취인은 표준 receiver 훅을 구현했는지 확인한다.
  • 메타데이터 URL과 소유권 장부를 별도 검증한다.

개별 승인과 전체 operator 승인을 구분한다

ERC-721 approve는 특정 tokenId의 제어 주소를 지정하고 전송이 일어나면 해당 개별 승인이 초기화됩니다. setApprovalForAll은 operator가 소유자의 해당 ERC-721 계약 내 모든 NFT를 관리하도록 허용합니다. 컬렉션 하나를 거래하려고 서명했더라도 전체 operator 권한일 수 있습니다.

ERC-1155는 표준적으로 setApprovalForAll을 사용해 operator에게 소유자의 모든 id를 이동할 권한을 줍니다. 특정 id 한 개의 전송 승인이라고 가정하면 안 됩니다. 승인 화면에서 operator 주소, 토큰 계약, 전체 승인 bool을 확인하고 사용 후 해제 여부를 결정합니다.

이벤트 형식이 인덱싱과 공급량 해석을 바꾼다

ERC-721은 Transfer 이벤트의 tokenId가 indexed라 개별 소유권 이동을 추적하기 쉽습니다. 민팅은 일반적으로 from이 zero address인 이동으로, 소각은 to가 zero address인 이동으로 나타납니다. 생성자에서 예외가 있을 수 있어 공급량을 이벤트만으로 재구성할 때 표준의 caveat를 확인합니다.

ERC-1155는 TransferSingle과 TransferBatch로 operator, from, to, id, value를 기록합니다. zero address 규칙을 이용해 발행·소각량을 계산할 수 있지만 배치 배열을 정확히 펼쳐야 합니다. URI 이벤트는 메타데이터 위치 변경을 알릴 수 있으며 모든 id의 고정 콘텐츠를 보증하지 않습니다.

마켓 화면보다 인터페이스와 실제 호출을 확인한다

같은 이미지가 여러 플랫폼에 보여도 계약 주소가 다르면 다른 토큰입니다. ERC-165 supportsInterface로 표준 지원을 조회하고 verified source의 구현을 확인합니다. 프록시 계약이라면 현재 구현과 업그레이드 권한도 봅니다.

서명 전에는 safeTransferFrom인지 setApprovalForAll인지, 단일 id인지 배치인지 확인합니다. 거래 뒤에는 표준 이벤트와 잔액·ownerOf 변화를 대조합니다. 오프체인 주문 서명은 즉시 전송이 아니어도 나중에 마켓 계약이 실행할 수 있으므로 nonce와 만료, 취소 상태를 별도로 관리합니다.

자주 묻는 질문

ERC-1155는 모두 대량 발행 NFT인가요?

아닙니다. id별 수량을 1로 두면 비대체 항목처럼 쓸 수 있고, 여러 수량이면 반대체 자산도 표현할 수 있습니다.

safeTransferFrom이면 자산이 절대 잠기지 않나요?

표준 receiver 응답을 확인해 단순 오입금을 줄이지만 수취 계약의 사업 로직과 인출 가능성까지 보증하지 않습니다.

ApprovalForAll은 NFT 한 개 승인인가요?

아닙니다. 지정 operator가 해당 토큰 계약에서 소유자의 여러 자산을 관리할 수 있는 넓은 권한입니다.

직접 확인한 자료

자료 확인 2026.09.27
  1. ERC-721: Non-Fungible Token Standardeips.ethereum.org
  2. ERC-1155: Multi Token Standardeips.ethereum.org
AI 활용 안내

이 글은 AI로 초안을 구성한 뒤 공개 원문과 기술 문서를 대조해 작성했습니다. 대표 이미지는 AI 생성 개념 일러스트이며 실제 사건 사진이나 가격 차트가 아닙니다.

이해를 위한 정보 콘텐츠

이 글은 특정 자산의 매수·매도 또는 수익을 권유하지 않습니다. 자료의 발표 시점과 이후 변경 사항을 함께 확인해 주세요.

편집 원칙과 정정 안내 →