https://secureum.substack.com/p/solidity-201



151. 기본 ERC721 구현

OpenZeppelin의 ERC721은 EIP-721 표준에 맞춘 대체 불가능 토큰(NFT) 구현입니다.

각 토큰은 고유한 tokenId를 가지며, 소유권과 메타데이터를 안전하게 관리할 수 있습니다.

주요 함수

함수 설명
balanceOf(address owner) → uint256 특정 계정이 소유한 NFT 개수 반환
ownerOf(uint256 tokenId) → address tokenId의 소유자 주소 반환
transferFrom(address from, address to, uint256 tokenId) NFT 전송(안전성 체크 없음)
safeTransferFrom(address from, address to, uint256 tokenId) 안전 전송 (컨트랙트 수신자 ERC721 수신 가능 여부 확인)
approve(address to, uint256 tokenId) 특정 NFT 전송 권한 부여
getApproved(uint256 tokenId) → address NFT 전송 권한이 있는 주소 조회
setApprovalForAll(address operator, bool approved) 모든 NFT에 대한 전송 권한 부여/취소
isApprovedForAll(address owner, address operator) → bool 특정 오퍼레이터가 모든 NFT를 관리할 수 있는지 여부

safeTransferFrom 사용 권장 — transferFrom은 수신자 컨트랙트가 ERC721 수신 기능을 구현하지 않으면 NFT가 영구적으로 잠길 수 있음.

주요 확장(Extensions)

2.1 ERC721Burnable


2.2 ERC721Enumerable