ERC-721A: Azuki의 배치 민팅 및 가스 효율 최적화 방법

주요 결과
• ERC-721A는 배치 민팅 시 가스 비용을 크게 절감합니다.
• 순차적 토큰 ID와 압축된 소유권 데이터 구조를 통해 효율성을 높입니다.
• ERC-721A는 기존 ERC-721과의 호환성을 유지하여 지갑과 마켓플레이스에서 정상 작동합니다.
• Dencun 업그레이드 이후에도 가스 효율성은 여전히 중요합니다.
2021-2022년 NFT 붐은 제작자와 수집가 모두에게 고통스러운 진실을 드러냈습니다. 바로 다수의 ERC-721 토큰을 발행하는 것은 비싸다는 사실입니다. 기존 표준에 따라 발행되는 모든 토큰은 반복적인 스토리지 쓰기 및 토큰별 이벤트가 필요하여, 인기 있는 드롭 시 가스 비용이 천정부지로 치솟았습니다. Chiru Labs의 Azuki 팀은 ERC-721 호환성을 유지하면서도 배치 민팅 비용을 획기적으로 절감하도록 설계된 드롭인 구현인 ERC-721A로 이러한 문제를 정면으로 해결했습니다. ERC-721A가 어떻게 작동하고, 무엇을 변경하며, 2025년에 안전하게 사용하는 방법을 알아보겠습니다.
기본: ERC-721의 토큰별 비용
기존 NFT 사양인 ERC-721은 NFT의 인터페이스와 이벤트를 정의하지만, 가스 경제성은 구현에 맡깁니다. 일반적인 구현은 다음과 같습니다.
- 각 토큰의 소유권에 대한 스토리지 쓰기를 수행합니다.
- 발행된 각 토큰에 대해 Transfer 이벤트를 발생시킵니다.
- 잔액을 개별적으로 업데이트합니다.
스토리지 쓰기(SSTORE)는 가장 비용이 많이 드는 EVM 작업 중 하나이므로, 수십 또는 수백 개의 토큰을 배치로 발행하면 수수료가 누적됩니다. evm.codes의 opcode 참조를 통해 EVM 작업 및 스토리지 쓰기의 상대적 비용을 확인할 수 있으며, 이는 일반적인 ERC-721 민팅이 비싼 이유를 명확히 보여줍니다. 참조. 사양 자체는 표준 ERC-721을 참조하십시오.
ERC-721A 요약
Chiru Labs의 ERC-721A는 ERC-721 인터페이스를 유지하면서도 데이터 레이아웃과 민팅 로직을 재설계하여 배치 민팅 비용을 단일 토큰 발행 비용에 가깝게 만드는 컨트랙트 구현입니다. 공식 코드 및 문서는 Chiru Labs 저장소 ERC721A on GitHub에서 확인할 수 있습니다.
주요 아이디어:
- 순차적 토큰 ID: 토큰은 연속적인 ID로 발행됩니다. 이 구조는 각 토큰의 소유권을 저장하지 않고도 특정 범위 토큰의 소유권에 대해 추론할 수 있도록 합니다.
- 압축된 소유권 데이터: ERC-721A는 여러 매핑 대신 소유자 주소, 타임스탬프, 소각 플래그, 추가 데이터 등의 필드를 하나의 컴팩트한 스토리지 슬롯에 압축합니다. 이렇게 하면 SSTORE 작업이 줄어들고 캐시 지역성이 향상됩니다. 자세한 내용은 Solidity의 스토리지 레이아웃 관련 내용을 참조하십시오. Solidity 스토리지 레이아웃.
- 지연 초기화: 배치 민팅 시, 구현은 범위 시작 부분에서만 소유권을 한 번 작성합니다. 이후 토큰은 변경될 때까지 소유권을 추론하므로 스토리지 쓰기가 크게 줄어듭니다.
- 호환성을 유지하는 이벤트: ERC-721A는 일반 민팅 시 각 토큰에 대해 표준 Transfer 이벤트를 발생시켜 마켓플레이스 호환성을 유지합니다. 컨트랙트 생성 시 대규모 민팅의 경우, 표준에서 허용하는 ERC-2309 ConsecutiveTransfer 이벤트를 사용하여 이벤트 가스를 더욱 절감할 수 있습니다. ERC-2309.
실제로 ERC-721A를 사용하여 단일 트랜잭션으로 N개의 토큰을 발행하는 것은 N배 비싼 것이 아니라, 단지 1개를 발행하는 것보다 약간 더 비싼 정도입니다. 이것이 가스 효율성의 핵심입니다.
무엇이 동일하고 무엇이 변경되었는가
동일한 점:
- ERC-721과 동일한 외부 인터페이스를 구현하므로 지갑, 마켓플레이스 및 인덱서는 계속 작동합니다.
- 안전한 민팅 흐름, 승인 및 전송은 표준에 따라 예상대로 작동합니다. OpenZeppelin의 ERC-721 참조.
내부적으로 변경된 점:
- 소유권 조회는 가장 가까운 초기화된 소유권 슬롯까지 역방향으로 스캔할 수 있습니다(일반적인 사용 시 시간 복잡도 상수로 간주).
- "범위 경계" 주변의 전송은 추론을 올바르게 유지하기 위해 다음 토큰의 소유권을 초기화할 수 있습니다.
- 데이터 구조는 공격적인 비트 패킹과, 특정 부분에서는 unchecked 연산을 사용하여 가스를 절약합니다. ERC-721A를 확장하는 개발자는 오버플로우 또는 언더플로우를 피하기 위해 Solidity의 unchecked 블록과 불변성을 이해해야 합니다. Solidity의 unchecked.
2025년에도 이것이 중요한 이유
2024년 이더리움의 Dencun 업그레이드는 블롭 공간(EIP-4844)을 도입하여 롤업의 데이터 가용성 비용을 대폭 절감하고 L2의 수수료를 낮췄습니다. 결과적으로 많은 NFT 프로젝트가 현재 L2에서 발행하고 나중에 브릿지하거나 정산합니다. 그럼에도 불구하고 수요가 급증하거나 메인넷 발행이 출처 증명(provenance)을 위해 여전히 바람직할 때, 가스 효율성은 중요합니다. ERC-721A는 배포하는 체인에 관계없이 온체인 구성 요소를 줄여주기 때문에 계속해서 관련성을 유지합니다. Dencun 및 그 영향에 대한 맥락은 이더리움 재단의 개요를 참조하십시오. Dencun on mainnet.
ERC-721A와 대안 비교
- ERC-1155: 컬렉션이 준대체 가능(ID당 여러 복사본)하거나 진정한 배치 전송에 의존하는 경우, ERC-1155는 다른 인터페이스로 배치 작업을 기본적으로 지원하므로 더 적합할 수 있습니다. ERC-1155. 토큰별 메타데이터와 확립된 마켓플레이스 흐름을 가진 클래식 1/1 NFT의 경우, ERC-721A는 ERC-721 표면을 유지하면서 가스를 최적화합니다.
- 로열티: ERC-721A는 민팅 최적화에 영향을 주지 않고 EIP-2981을 통해 온체인 로열티 신호를 통합할 수 있습니다. EIP-2981.
- 오프체인 허용 목록 및 서명: ERC-721A를 EIP-712 서명된 바우처 기반 민팅 또는 머클 증명과 페어링하면 기본 판매를 효율적이고 유연하게 유지할 수 있습니다. EIP-712.
개발자 체크리스트: ERC-721A를 안전하게 구축하기
- Chiru Labs의 최신 감사 릴리스를 사용하고 프로덕션 출시 전에 저장소의 보안 참고 사항을 읽으십시오. ERC721A on GitHub.
- 가스 절감을 극대화하기 위해 토큰 ID를 순차적으로 유지하십시오. 연속적인 소유권 추론을 방해하는 사용자 지정 ID 스키마는 피하십시오.
- 컨트랙트 생성 시 매우 많은 양을 발행해야 하는 경우, ERC-2309 ConsecutiveTransfer 옵션을 고려하고 인덱서 스택이 이를 이해하는지 확인하십시오. ERC-2309.
- 압축된 소유권 구조에 사용자 지정 스토리지를 추가할 때 주의하십시오. 정렬 불량 또는 너무 넓은 유형은 절감을 상쇄할 수 있습니다. Solidity의 스토리지 패킹 규칙을 검토하십시오. Solidity 스토리지 레이아웃.
- 경계 조건 테스트: 범위 가장자리 근처의 전송 및 소각, 열거 확장, 토큰 열거에 의존하는 마켓플레이스와의 상호 작용.
- 대상 네트워크에서 현실적인 배치 크기로 프로파일링하십시오. Dencun 이후 메인넷 및 L2 간의 가스 경제성은 다르므로, 메타데이터 후크가 활성화된 상태에서 민팅 및 전송 흐름을 모두 벤치마킹하십시오.
수집가 및 민터용: 무엇을 알아차릴 수 있을까
- 낮은 기본 민팅 가스: 단일 트랜잭션에서 여러 NFT를 배치로 발행하는 것이 개별적으로 발행하는 것보다 훨씬 저렴해집니다.
- 부하 시 빠른 드롭: 스토리지 쓰기가 줄어들어 멤풀이 혼잡할 때 민팅이 실패할 가능성이 줄어듭니다.
- 표준 지갑 UX: ERC-721A는 ERC-721 인터페이스를 유지하므로 지갑, 마켓플레이스 목록 및 인덱서는 토큰을 올바르게 인식합니다.
일반적인 함정 및 오해
- "새로운 표준인가요?" 그렇지 않습니다. ERC-721A는 재설계된 내부 레이아웃을 가진 ERC-721의 구현입니다. 공개 인터페이스를 변경하지는 않습니다. ERC-721.
- "이벤트가 압축되어 인덱서가 망가집니다." 일반적인 배치 민팅은 여전히 토큰별 Transfer 이벤트를 발생시킵니다. 선택 사항인 ERC-2309 경로만 이벤트를 압축하며, 이는 컨트랙트 생성 시 민팅을 위한 것입니다. ERC-2309.
- "열거가 무료로 제공되나요?" 그렇지 않습니다. 모든 토큰 또는 소유자별 모든 토큰을 열거하는 기능은 가스 절약을 위해 의도적으로 내장되지 않았습니다. 필요한 경우 쿼리 가능한 확장을 추가하고 오프체인 인덱싱을 고려하십시오.
앞으로
블롭 공간으로 L2 수수료가 낮아지고 NFT 인프라가 성숙함에 따라, 제작자는 이제 드롭별로 메인넷 출처 증명과 L2 확장성 중에서 선택할 수 있습니다. ERC-721A는 높은 수요의 PFP, 허용 목록 기반 배치 민팅을 포함하는 생성 예술 세트, 그리고 ERC-721 호환성을 원하지만 ERC-721의 배치 비용은 피하고 싶은 게임 자산에 대한 실용적인 기본 선택으로 계속 사용될 것입니다. ERC-721 의미 체계를 넘어서는 경우, 사용 사례가 ERC-1155의 다중 토큰 모델에 자연스럽게 맞는지 고려하십시오. ERC-1155.
안전한 키 관리 여전히 중요
낮은 가스는 가장 중요한 규칙을 바꾸지 않습니다. 바로 키를 보호하는 것입니다. ERC-721A 민팅은 종종 EIP-712 메시지에 서명하거나 인기 있는 드롭 중에 고가치 트랜잭션을 신속하게 실행하는 것을 포함합니다. 하드웨어 지갑은 안전한 오프라인 서명, 멀티체인 네트워크 및 명확한 트랜잭션 미리보기를 지원하여 자신 있게 민팅할 수 있도록 도와줍니다. OneKey 하드웨어 지갑은 오픈 소스이며 주요 Web3 도구와 통합되며 간단한 EVM 및 EIP-712 서명 워크플로우를 제공합니다. 효율적으로 배치 민팅하면서도 서명 위험을 최소화하려는 경우 유용합니다.
빠른 자료
- ERC-721 사양 ERC-721
- Chiru Labs 구현 및 문서 ERC721A on GitHub
- 컨트랙트 생성 민팅을 위한 ConsecutiveTransfer 이벤트 ERC-2309
- OpenZeppelin Contracts (참조 ERC-721 API) OpenZeppelin ERC-721 docs
- EVM 가스 비용 참조 EVM opcodes and gas
- 2024-2025년 Dencun 및 L2 수수료 역학 Ethereum Foundation: Dencun
- 준대체 가능/배치 토큰 대안 표준 ERC-1155
- 로열티 신호 EIP-2981
- 허용 목록을 위한 형식화된 데이터 서명 EIP-712
ERC-721A는 NFT가 무엇인지를 변경한 것이 아니라, NFT를 얼마나 효율적으로 생성할 수 있는지를 변경했습니다. 블록 공간이 부족하고 관심이 fleeting한 세상에서 이는 의미 있는 업그레이드입니다.