https://secureum.substack.com/p/solidity-201
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가 영구적으로 잠길 수 있음.