ERC-721とは?
ERC-721は、一般にNFTと呼ばれる非代替性トークンを作成・管理するためのEthereumトークン規格です。ERC-721の各トークンには固有のトークンIDがあり、同じスマートコントラクトで管理されるほかのトークンと区別できます。公式のERC-721仕様では、所有権の追跡、トークンの移転、ほかのアドレスにNFTの管理を許可するための標準ルールが定められています。
ERC-721は、Final Ethereum Request for Comments規格に分類されています。個別に識別・追跡する必要がある資産を、代替可能トークンの規格では正確に表現できないことから作られました。ERC-721トークンは、デジタルコレクティブル、ゲームアイテム、会員資格、仮想不動産、イベントチケット、金融ポジション、ドメインに類似した資産、または実物に関連する記録などを表すことができます。この規格はブロックチェーン上の所有権と移転の挙動を定めますが、著作権、法的所有権、真正性、金融的価値、外部資産に対する権利を自動的に確立するものではありません。ERCとは?
ERCは「Ethereum Request for Comments」の略です。ERCは、Ethereumエコシステム内の相互運用性を高めるために、アプリケーションやスマートコントラクトが従うことのできる技術規格を定めます。ERC-721は、非代替性トークン規格に割り当てられた識別番号です。この番号は、トークンの供給量、価格、ブロックチェーンアドレス、公開日を示すものではありません。ERC-721を実装するコントラクトは、必須の挙動が規格に準拠している限り、任意の拡張機能やカスタム関数を追加できます。ERC-721が作られた理由
代替可能資産では、通常、同じ資産の各単位が同じ役割を持つため、互いに交換できます。非代替性資産は、各単位の特性、履歴、希少性、権利、価値が異なる場合があるため、個別に追跡する必要があります。ERC-721は、ウォレットやアプリケーションが各固有トークンの所有者を特定するための共通の方法を提供します。また、移転、承認、オペレーター権限、所有権に関するイベントログも標準化します。共通規格がなければ、NFTコントラクトごとに異なる連携方法が必要になる可能性があります。共通の関数により、汎用ウォレット、ブロックチェーンエクスプローラー、インデクサー、ゲーム、レンディングプロトコルなど、さまざまな暗号資産アプリケーションが多くのNFTコレクションと連携できます。ERC-721の仕組み
ERC-721スマートコントラクトは、有効な各トークンIDに対応する所有者を保存または計算します。また、コレクション内で各アドレスが保有するNFTの数も追跡します。権限のある移転が行われると、コントラクトは送信者から所有権を取り除き、受取人にトークンIDを割り当てます。コントラクトは標準化された
トークンIDとは?
トークンIDは、ERC-721コントラクト内の1つのNFTを一意に識別する符号なし整数です。同じトークンIDが複数の異なるコントラクトに存在しても、同じ資産を表すとは限りません。したがって、NFTはブロックチェーンネットワーク、コントラクトアドレス、トークンIDの組み合わせで識別されます。たとえば、あるコントラクトのトークンID 50は、別のコントラクトのトークンID 50とは無関係です。トークンIDは、必ずしも0から始まる必要も、単純な連番である必要もありません。コレクションは、連番のID、ランダムに割り当てたID、エンコードされた識別子、またはコントラクトがサポートする別の方式を使用できます。指定した範囲内のすべての番号が既存のNFTを表すと想定せず、アプリケーションはコントラクトに問い合わせる必要があります。ERC-721が非代替性である理由
ERC-721の各トークンは、個別のブロックチェーンオブジェクトとして追跡されます。同じコレクションの2つのNFTでも、メタデータ、履歴、特性、希少性、市場価値が異なる場合があります。あるトークンIDを所有していても、別のトークンIDの所有権は得られません。標準的なERC-721トークンは、小数単位ではなく、1つの完全なトークンとして移転されます。経済的な所有権を分割するには、ERC-721のコア規格とは別のスマートコントラクトまたはトークン構造が必要です。2つのNFTが非代替性であっても、別々のトークンIDが類似または同一のメタデータを参照する場合があるため、視覚的な内容が異なるとは限りません。ERC-721の主な関数
コア規格には、所有権の確認、NFTの移転、移転権限の管理を行う関数が含まれています。必須関数は、
balanceOf関数
ownerOf関数
transferFrom関数
safeTransferFrom関数
ERC-721には、2種類の
受取人がスマートコントラクトの場合、NFTコントラクトは受取人の
ERC-721レシーバーとは?
ERC-721レシーバーとは、
互換性のあるレシーバーは、通常
最新のERC-721実装ドキュメントには、NFTを受け取る必要があるコントラクト向けのレシーバーインターフェースと基本的なレシーバーユーティリティが含まれています。
レシーバーは、入金を記録したり特典を付与したりする前に、コールバックを呼び出したNFTコントラクトを確認する必要があります。ERC-721の承認
ERC-721の承認を利用すると、NFTの所有者は所有権をすぐに移転することなく、移転権限を委任できます。トークン単位の承認は、1つのトークンIDに適用されます。オペレーター承認は、同じコントラクト内で1つのアドレスが所有するすべてのNFTに適用されます。承認はオンチェーンに記録され、有効な間は所有者から追加の署名を得なくても利用できます。ユーザーはNFTの承認リクエストを、慎重に扱うべき金融上の権限として認識する必要があります。信頼できないアドレスを承認すると、承認先が価値のあるNFTを移転できる可能性があります。approve関数
getApproved関数
アカウントがNFTを移転できるか確認するアプリケーションは、
setApprovalForAll関数
isApprovedForAll関数
この関数は
ERC-721のイベント
ERC-721は、
Transferイベント
ApprovalイベントとApprovalForAllイベント
ERC-165によるインターフェース検出
ERC-721に準拠するすべてのコントラクトは、ERC-165によるインターフェース検出に対応する必要があります。ERC-721のコアインターフェースIDは
準拠するコントラクトは、この識別子をサポートしているか尋ねられた際に
ERC-721のメタデータ
ERC-721には任意のメタデータ拡張があります。この拡張は、
そのERC-165インターフェースIDは
tokenURIの仕組み
メタデータ更新イベント
ERC-721自体は、メタデータが変更されるたびに発行する標準イベントを定めていません。任意のERC-4906メタデータ更新拡張は、
ERC-4906のインターフェースIDは
ERC-721の列挙
任意の列挙拡張を使うと、オンチェーン関数を通じてNFTの供給量や所有リストを確認できます。そのインターフェースIDは
この拡張は、
オフチェーンアプリケーションは、代わりにインデックス化した
ERC-721トークンのミント
ミントは新しい有効なトークンIDを作成し、最初の所有者を割り当てます。ERC-721コア規格は、誰がミントできるか、ミントをどのように申請するかを定めていません。コレクションは、誰でも参加できるミントを許可したり、認可された役割に制限したり、支払いを必要としたり、許可リストを使ったり、デプロイ時にすべてのNFTを作成したりできます。ミントでは通常、ゼロアドレスからの
ERC-721トークンのバーン
バーンは、NFTを有効な所有権記録から取り除きます。ERC-721コアインターフェースは、公開バーン関数を必須としていません。コレクションによっては、所有者、承認済みオペレーター、管理者、またはプロトコルのロジックがトークンをバーンできます。バーンでは通常、ゼロアドレス宛ての
ERC-721のロイヤリティ
クリエイターロイヤリティはERC-721コア規格に含まれていません。任意のERC-2981 NFTロイヤリティ規格は、販売価格に対するロイヤリティの受取人と推奨額を通知する方法を提供します。
ERC-2981はロイヤリティ情報を伝達しますが、すべての移転やアプリケーションに支払いを強制するものではありません。実装が対応していれば、コレクションは標準またはトークン別のロイヤリティ設定を定められます。コントラクトが管理者に権限を付与している場合、ロイヤリティの受取人や料率は変更できる可能性があります。すべてのERC-721移転で、強制力のあるクリエイターへの支払いが行われるとは限りません。ERC-721とERC-20の違い
ERC-20は代替可能トークン残高向けに設計され、ERC-721は個別に識別されるNFT向けに設計されています。ERC-20アカウントは、1種類のトークンを分割可能な数量で保有できます。ERC-721アカウントは、個別のトークンIDを所有します。ERC-721の
ERC-721とERC-1155の違い
ERC-721は、1つのNFTコレクションコントラクトを通じて、個別に所有されるトークンIDを表します。ERC-1155マルチトークン規格では、1つのコントラクトで複数のトークンIDと、それぞれの数量残高を管理できます。
ERC-1155のトークンIDは、代替可能、準代替可能、または固有の資産を表すことができます。1つのアドレスが、同じERC-1155トークンIDを複数保有することもできます。標準的なモデルでは、有効なERC-721トークンIDには1人の所有者がいます。ERC-1155は標準化された一括移転にも対応しますが、ERC-721の移転は通常、NFTを1つずつ処理します。適切な規格は、プロジェクトの所有権と在庫管理の要件によって異なります。ERC-721のユースケース
デジタルアートコレクションは、個別に識別された作品の所有権を記録するためにERC-721トークンを利用できます。ブロックチェーンゲームでは、キャラクター、土地、装備などの固有アイテムにNFTを利用できます。会員システムでは、アクセス権やコミュニティでのステータスをNFTで表せます。金融アプリケーションでは、個別の債務ポジション、保険契約、流動性ポジション、請求権をトークン化できます。イベントシステムでは、移転ルールを設定した個別識別可能なチケットを発行できます。プロジェクトはNFTを実物商品に紐付けることもできますが、スマートコントラクトだけで実物の所持や法的所有権を独立して確認することはできません。ERC-721トークンは資格証明にも利用できますが、機微な個人情報を公開型ブロックチェーンに保存すべきではありません。NFTの所有権と著作権
ERC-721トークンを所有するとは、ブロックチェーンコントラクトが該当トークンIDの所有者としてアドレスを認識していることを意味します。関連するアートワークやメディアの著作権が自動的に移転するわけではありません。著作権や商用利用権は、クリエイターのライセンス、販売契約、適用法によって決まります。プロジェクトによって、幅広い商用利用権、限定的な個人利用権、または追加の知的財産権を付与しない場合があります。メタデータが、トークン発行者に使用許可のないコンテンツを参照している可能性もあります。購入者は、トークン所有によってあらゆる権利が得られると想定せず、プロジェクトの法的条件を確認する必要があります。ERC-721の承認に伴うリスク
悪意のある承認リクエストは、NFT保有者にとって重大なセキュリティリスクです。フィッシングアプリケーションは、
セーフトランスファーと再入可能性のリスク
安全なNFT移転では、受取人がスマートコントラクトの場合に外部コードが呼び出されます。最初の処理が完全に終了する前に、受取人が元のアプリケーションを再度呼び出す可能性があります。この挙動により、ミント、販売、レンディング、ステーキング、エスクロー、出金のコントラクトで再入可能性の脆弱性が生じる場合があります。公式のSolidityセキュリティガイダンスでは、意図したロジックで可能な場合、外部とのやり取りの前に検証と重要な状態変更を完了することが推奨されています。
悪意のあるレシーバーが公開された別の関数を呼び出す可能性があるため、開発者は複数関数にまたがる再入可能性も考慮する必要があります。レシーバーコールバックは単純な通知として扱わず、悪意のあるコントラクトを使ってテストしてください。メタデータのセキュリティリスク
NFTの表示コンテンツは、ブロックチェーン外のデータに依存している場合があります。外部サーバーが利用できなくなったり、応答を変更したり、ファイルを削除したりする可能性があります。購入後に変更可能なURIが別のコンテンツを指す場合もあります。メタデータには、誤解を招く説明、複製されたアートワーク、隠された外部リンク、安全でないファイル形式が含まれる可能性があります。分散型ストレージは永続性を高める可能性がありますが、コンテンツは継続的な可用性と正確な識別子に依存します。完全なオンチェーンメタデータは外部ホスティングへの依存を減らしますが、デプロイや更新のコストが増える可能性があります。コントラクトの真正性に関するリスク
誰でも、見慣れた名前、シンボル、画像、トークンIDを持つERC-721コントラクトをデプロイできます。インターフェースに互換性があることは、コレクションの真正性を証明しません。信頼できるプロジェクトの情報源を通じて、ブロックチェーンネットワークと完全なコントラクトアドレスを確認してください。検証済みのソースコードが公開されていても、誠実な事業運営や安全な経済設計が保証されるわけではありません。トークンの履歴、作成者の説明、管理者権限、メタデータの管理方法も確認してください。アップグレード可能なERC-721コントラクト
ERC-721コントラクトは、デプロイ後にロジックを変更できるプロキシを使用している場合があります。アップグレードによってバグを修正したり、機能を追加したりできます。一方で、ミント、移転、承認、メタデータ、ロイヤリティ、一時停止、バーンの挙動が変わる可能性もあります。アップグレード権限が侵害されると、NFTの所有権に影響する悪意のあるロジックが導入される場合があります。アップグレードを誰が管理しているか、必要な署名数はいくつか、タイムロックがあるかを確認してください。分散型と説明されているコレクションにも、強力な管理者権限が含まれている場合があります。開発者によるERC-721の実装方法
独自設計が必要でない限り、開発者はレビュー済みで、継続的に保守されている実装を使用する必要があります。最新のERC-721開発ガイドでは、メタデータ、列挙、バーン、一時停止、ロイヤリティ、投票などの用途に対応するコア実装と任意の拡張が説明されています。
ミント権限は、コレクションで公表されている供給ルールに沿って設定してください。移転と承認では、権限のない呼び出し元や無効なアドレスを拒否する必要があります。スマートコントラクトに直接トークンを発行できる場合は、セーフミントを使用してください。開発者は、悪意のあるレシーバー、再入可能性、無効なトークンID、承認解除、オペレーター権限、バーン、インターフェース検出をテストする必要があります。管理機能には明確なアクセス制御を設け、適切なイベントを発行してください。ERC-721 NFTの評価方法
最初に、ネットワーク、コントラクトアドレス、トークンIDを確認します。次に、コントラクトがERC-721コアインターフェースに対応していることを確認します。3つ目に、現在の所有者と移転履歴を確認します。4つ目に、トークン単位およびコレクション全体の承認を確認します。5つ目に、メタデータとリンクされたメディアの保存方法を確認します。6つ目に、ミント、バーン、一時停止、凍結、アップグレードの権限者を特定します。7つ目に、供給量や希少性に関する主張がオンチェーンで検証できるかを確認します。8つ目に、監査やソースコードを確認します。ただし、それらを保証として扱わないでください。9つ目に、NFTにどのような法的権利や商用利用権が付随するかを確認します。10個目に、価値のある資産を危険にさらす前に、見慣れないコントラクトで少額のトランザクションを試してください。ERC-721の移転例
AliceがERC-721コレクションのトークンID 101を所有しているとします。コントラクトの
Aliceのウォレットは、Aliceのアドレス、受取先のコントラクト、トークンID 101を指定して
コントラクトは所有権記録を更新し、受取先の
正しいセレクターが返されると移転が完了し、NFTコントラクトは
ERC-721でよくある間違い
よくある間違いの1つは、コレクション名だけでNFTを一意に識別できると思い込むことです。もう1つは、オペレーターのアドレスを確認せず、コレクション全体へのアクセス権を付与することです。3つ目は、ウォレットを切断すればオンチェーン承認が解除されると思い込むことです。4つ目は、知らないコントラクトへNFTを送る際に
よくある質問
ERC-721とは何ですか?
ERC-721は、非代替性トークンの所有権、移転、承認、インターフェースのルールを定めるEthereum規格です。ERC-721はNFTと同じですか?
ERC-721は技術的なNFT規格です。一方、NFTはより広い用語であり、ほかの規格で作成されたトークンも含む場合があります。ERC-721は代替可能ですか?
いいえ。有効なERC-721トークンIDはそれぞれ個別に追跡され、特性や価値が異なる場合があります。ERC-721のインターフェースIDは何ですか?
ERC-721コアインターフェースIDは
ERC-721 NFTは何で識別されますか?
NFTは、ブロックチェーンネットワーク、スマートコントラクトアドレス、トークンIDの組み合わせで識別されます。balanceOfは何を返しますか?
1つのERC-721コントラクト内で、アドレスが所有するNFTの数を返します。ownerOfは何を返しますか?
有効なトークンIDについて、現在の所有者アドレスを返します。transferFromとsafeTransferFromの違いは何ですか?
ERC-721 NFTをスマートコントラクトに送れますか?
送れます。ただし、受取先がNFTを受け取れることを確認する必要があるため、通常は安全な移転を使うべきです。approveは何をしますか?
1つのアドレスに、特定のNFTを移転する権限を付与します。setApprovalForAllは何をしますか?
ERC-721コントラクト内で所有者が保有するすべてのNFTを、オペレーターが管理できるようにします。オペレーター承認は自動的に期限切れになりますか?
いいえ。標準のオペレーター承認は、所有者が取り消すか、カスタムコントラクトロジックによって効力が変更されるまで有効です。NFTの移転時にトークン単位の承認は解除されますか?
はい。NFTが移転されると、トークン単位の承認は解除されます。ERC-721ではメタデータが必須ですか?
いいえ。メタデータインターフェースは任意ですが、ほとんどのNFTコレクションが実装しています。ERC-721のメタデータは変更できますか?
はい。コントラクトとストレージシステムが検証可能な不変性を保証しない限り、メタデータは変更される可能性があります。すべてのERC-721コントラクトにtotalSupplyがありますか?
いいえ。
ERC-721はミントを定義していますか?
この規格は所有権イベントを通じてミントを認識しますが、特定の公開ミント関数や供給ポリシーは必須としていません。ERC-721はバーンを定義していますか?
いいえ。バーン関数は任意であり、個別の実装によって異なります。ERC-721はロイヤリティを強制しますか?
いいえ。ロイヤリティには別のロジックや規格が必要であり、ロイヤリティ情報だけで支払いが自動的に強制されるわけではありません。ERC-721トークンを所有すると著作権も得られますか?
いいえ。知的財産権は、適用されるライセンスと法的契約によって決まります。ERC-721コントラクトはアップグレードできますか?
プロキシシステムを通じてアップグレードできるものもあれば、デプロイ後に変更できないものもあります。ERC-721 NFTを分割できますか?
コアERC-721トークンは完全な1単位として所有されるため、分割所有には別のコントラクトまたはトークンの仕組みが必要です。ERC-721の承認を利用してNFTを盗めますか?
はい。悪意のある承認先は、付与された権限の対象となるNFTを移転できます。ERC-721への準拠は真正性を証明しますか?
いいえ。誰でも互換性のあるコントラクトをデプロイできるため、コレクションのアドレスと発行者を別途確認する必要があります。ERC-721の主な利点は何ですか?
主な利点は、所有権と移転の挙動を標準化し、多くの暗号資産アプリケーションが固有のトークン化資産と連携できることです。まとめ
ERC-721は、個別に識別される非代替性トークンを表すためのEthereumの主要規格です。所有権の照会、移転、承認、オペレーター権限、イベント、インターフェース検出の共通ルールを定めています。各NFTは、ブロックチェーンネットワーク、コントラクトアドレス、トークンIDによって一意に識別されます。コアインターフェースIDは
関連コンテンツ
WhatsMiner M30S++
Web3ドメイン
Web3プロジェクト
ホット
現在、市場で大きな注目を集めているトレンドの暗号資産
トップ取引高
取引高が最も多い暗号資産

