# [ERC6047] コントラクトデプロイ時のNFT発行でイベントを発行する提案を理解しよう！

> ERC6047は、ERC721の仕様を拡張してNFTの追跡やインデックス作成をしやすくするために、コントラクト作成時にもTransferイベントを発行することを義務付ける提案です。

- URL: https://cardene.dev/articles/ed29f903ca52017d4f1d
- 公開日: 2025-03-17
- 更新日: 2025-03-17
- トピック: Blockchain
- タグ: ethereum, solidity, smartcontract, ブロックチェーン

## はじめに

『DApps開発入門』という本や色々記事を書いているかるでねです。

https://amzn.asia/d/gxvJ0Pw

今回は、コントラクトデプロイ時にNFTを発行するときに、必ずイベントを含むようにする提案している**ERC6047**についてまとめていきます！

:::message
以下にまとめられているものを翻訳・要約・補足しながらまとめていきます。
:::

https://eips.ethereum.org/EIPS/eip-6047

他にも様々なEIPについてまとめています。

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4

## 概要

**ERC6047**は、**ERC721**の仕様を拡張してNFTの追跡やインデックス作成をしやすくするために、コントラクト作成時にも`Transfer`イベントを発行することを義務付ける提案です。

**ERC721**では、NFTの送付やMint（`0x0`からの送付）、Burn（`0x0`への送付）が起きた時に`Transfer`イベントを発行するよう定められています。
しかし、コントラクト作成時にミントが行われた場合は、このイベントを発行する必要がありません。
このEIPでは、コントラクト作成時にも`Transfer`イベントを発行することを義務付けています。

## 動機

現在の**ERC721**の仕様では、NFTが新しくMintされた場合は`Transfer`イベントを発行するルールになっていますが、コントラクト作成時にMintされたNFTは例外となっておりイベントが発行されません。

一方で、**ERC1155**ではMint時のイベント発行が必須となっており、コントラクト作成時でも必ずイベントが発行される仕様になっています。
このため、インデックスサービスやオフチェーンサービスは、**ERC1155**のNFTについては確実に追跡できるのですが、**ERC721**ではコントラクト作成時にMintされたNFTを正しく追跡できないという問題が発生します。

これにより、以下のメリットがあります。

- NFTのMint・送付・Burnを一貫して記録できる
- インデックスサービスが全ての**ERC721**トークンを確実に取得できる
- オフチェーンアプリケーションのデータ整合性が向上する

## 仕様

**ERC6047**に準拠するコントラクトは、以下の条件を満たす必要があります。

- **ERC721**を実装すること
- NFTの送付・Mint（`0x0`からの送付）・Burn（`0x0`への送付）が起きた時に、必ず`Transfer`イベントを発行すること
- コントラクト作成時のMintについても、必ず`Transfer`イベントを発行すること

## 補足

**ERC6047**では、新しく「`Creation`」イベントなどを作らず、既存の`Transfer`イベントを使うことで、既存のインデックスサービスとの互換性を維持できるようにしています。

もし新しいイベントを作ってしまうと、現在のインデックスサービスやオフチェーンアプリが対応するために追加の開発が必要になります。
しかし、`Transfer`イベントの仕様を拡張するだけなら、既存の仕組みをそのまま使えるため、変更の影響を最小限に抑えることができます。

## 互換性

**ERC6047**に準拠する全てのコントラクトは**ERC721**にも準拠します。
ただし、**ERC721**に準拠する全てのコントラクトが**ERC6047**に準拠するわけではありません。

## 引用

Zainan Victor Zhou (@xinbenlv), "ERC-6047: ERC-721 Balance indexing via Transfer event [DRAFT]," Ethereum Improvement Proposals, no. 6047, November 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-6047.

## 最後に

今回は「コントラクトデプロイ時にNFTを発行するときに、必ずイベントを含むようにする提案している**ERC6047**」についてまとめてきました！
いかがだったでしょうか？

質問などがある方は以下のTwitterのDMなどからお気軽に質問してください！

[Twitter @cardene777](https://twitter.com/cardene777)

他の媒体でも情報発信しているのでぜひ他も見ていってください！

https://chaldene.net/

https://zenn.dev/heku

https://cardene.substack.com/

https://mirror.xyz/0xcE77b9fCd390847627c84359fC1Bc02fC78f0e58

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4
