
백엔드
ERC20, 165, 721 살펴보기
두줄요약
OpenZeppelin 코드 관점에서 ERC20·ERC165·ERC721의 구조와 확장 기능을 살펴봤습니다. ERC20 유실 위험과 ERC721 수신 검증, 전송 단위 제약을 설명합니다.
구조와 흐름
- ERC20의 주소별 잔액 매핑과 transfer 기반 토큰 이동 구조
- OpenZeppelin ERC20 확장 기능과
_beforeTokenTransfer훅을 통한 기능 추가 - ERC165 인터페이스 식별·검증과 ERC721의 수신 검증 결합
선택 이유
- ERC20Snapshot·Pausable·Burnable·Capped를 통한 스냅샷, 일시 중지, 소각, 발행량 제한 지원
- ERC165Checker를 통한 대상 컨트랙트의 인터페이스 구현 여부 확인
- ERC721의 token ID·URI 기반 고유 자산 소유권 표현
장단점
- ERC20의 단순성과 범용성, 수신 컨트랙트 검증 부재로 인한 토큰 유실 위험
- ERC721
safeTransferFrom·safeMint의 Receiver 인터페이스 검증과 유실 방지 - ERC721의 트랜잭션당 단일 NFT 전송 제약과 ERC1155 등장 배경
주의할 점
- ERC20을 처리할 인터페이스가 없는 컨트랙트 주소로 전송 시 토큰 잠금 가능성
- ERC721 수신 컨트랙트의 Receiver 인터페이스 미구현 시 전송 트랜잭션 revert
- ERC721 인터페이스 ID 등록과 ERC165 기반 호환성 확인 필요


