ERC-777とは?
ERC-777は、基本的なトークンモデルに送金フック、オペレーター権限、トランザクションデータ、より安全なコントラクト受取人チェックを追加した、代替可能な暗号資産向けのEthereumトークン規格です。ERC-20と同様に、同じトークンの各単位が互いに同じ価値と特性を持つ、交換可能な単位を表します。公式のERC-777仕様は、代替可能なトークンとウォレットやスマートコントラクトとの連携方法の改善を目的として作成された、FinalステータスのEthereum Request for Comments規格です。
主な機能は、
ERC-777は現在も有効な規格ですか?
ERC-777は、公式のEthereum Improvement ProposalリポジトリでFinalステータスの規格として引き続き掲載されています。FinalステータスはEIP標準化プロセスを完了したことを意味しますが、広範な普及、ライブラリによる継続的なサポート、あらゆる新規トークンへの適性を保証するものではありません。主要なスマートコントラクトライブラリは、バージョン4.9でERC-777の実装を非推奨とし、バージョン5.0で削除しました。最新のOpenZeppelin Contractsの変更履歴には、実装サポートの終了が記録されています。一方、関連する標準インターフェースは引き続き利用できます。
このライブラリの決定によってERC-777が取り消されたわけでも、Finalステータスが変更されたわけでもありません。ただし、現在の同ライブラリのバージョンで、保守されているERC-777トークン実装を利用できるとは限らないため、開発者は注意が必要です。既存のERC-777コントラクトはデプロイ済みのコードに従って引き続き動作しますが、新たに統合する場合は、コールバックの動作、依存関係、監査、エコシステムのサポートを慎重に評価してください。ERC-777が作られた理由
ERC-777は、基本的なERC-20送金に関する使いやすさと安全性のいくつかの課題に対処するために作られました。ERC-20では、コントラクトへの送金時に受取人のコントラクトがトークンを認識または処理する必要はありません。そのため、トークンを回収または計上する関数がないコントラクトに送金すると、トークンが取り出せなくなる場合があります。ERC-20のアプリケーションでは、ユーザーがまず使用者に承認を与え、その後、使用者が
ERC-777では
ERC-777の仕組み
ERC-777コントラクトは、トークン残高と総供給量を保存し、送金、バーン、トークン管理権限の委任に関する標準関数を提供します。トークンを送る際、コントラクトは送信者がERC-1820を通じて送信者フックを登録しているか確認します。送信者フックが登録されている場合、トークン残高を変更する前にそのフックを呼び出します。次に、トークンは送信者の残高を減らし、受取人の残高を増やします。残高の更新後、受取人が受取人フックを登録しているか確認し、必要に応じてそのフックを呼び出します。フックは移動を受け入れたり、追加の処理を実行したり、トランザクション全体をリバートさせたりできます。処理はアトミックであるため、必須のフックでリバートが発生すると、通常はトークンの移動と、そのトランザクションに関連するすべての状態変更が取り消されます。ERC-777の主な関数
ERC-777インターフェースには、トークンのメタデータ、残高、グラニュラリティ、オペレーター、送金、バーンに関する関数が含まれます。send関数
operatorSend関数
保有者が指定した
オペレーターのアドレス、保有者、受取人、数量、データは、標準化された
ERC-777のオペレーターとは?
オペレーターとは、保有者に代わってERC-777トークンを送金またはバーンする権限を与えられたアドレスです。トークン保有者は、自身の残高に対して常にオペレーターとなります。保有者は別のアカウントやスマートコントラクトに権限を与え、後から取り消すことができます。オペレーターは、自動支払い、コントラクトベースのアカウント管理、予定された処理、復旧システム、その他のトークン管理の委任に役立ちます。数値で示すERC-20の通常のアローワンスとは異なり、通常のオペレーター承認には、指定されたトークン数量の上限がありません。この広範な権限は利便性を高める一方、オペレーターが悪意を持っている、または侵害された場合の損失可能性を高めます。ウォレットは、オペレーターを承認すると保有者の残高を継続的に管理できる権限が与えられる場合があることを、明確に説明する必要があります。デフォルトオペレーター
ERC-777トークンでは、すべての保有者に対して初期状態で承認されるデフォルトオペレーターを設定できます。デフォルトオペレーターのリストはトークンコントラクトの作成時に固定され、規格上、後から追加または削除できません。各保有者は、自身のトークンに対するデフォルトオペレーターの権限を取り消せる必要があります。また、以前に権限を取り消したデフォルトオペレーターを再承認できなければなりません。デフォルトオペレーターを利用すると、すべての保有者が最初に承認トランザクションを実行しなくても、システム全体のサービスを提供できます。一方、デフォルトオペレーターはトークン保有者全体に対して広範な権限を初期状態で持つため、重要な信頼上の検討事項になります。ERC-777トークンを多額保有する前に、デフォルトオペレーターのリストを確認し、その役割を理解してください。送信者フック
ERC-777の送信者フックは
受取人フック
ERC-777の受取人フックは
ERC-1820とは?
ERC-777は、送信者フック、受取人フック、対応インターフェースの検出にERC-1820を使用します。ERC-1820仕様は、あるアドレスが対応するインターフェースと、その実装コントラクトを公開できるユニバーサルレジストリを定義します。
このレジストリでは、通常のアカウントとスマートコントラクトの両方についてインターフェースを登録できます。アカウント自身を実装者として登録することも、別のコントラクトを指定して自身に代わりインターフェースを処理させることもできます。ERC-777フックを呼び出す前に、トークンはレジストリに問い合わせ、該当する送信者または受取人の実装を確認します。このレジストリへの依存により、ERC-777の処理には外部コントラクトの検索が追加されます。標準実装を正しく動作させるには、対応ネットワーク上に想定されるERC-1820レジストリがデプロイされ、適切に連携している必要があります。ERC-777のイベント
ERC-777では、
ERC-20にも対応するトークンは、規格で必須のERC-777イベントに加えて、ERC-20の
グラニュラリティと小数表示
グラニュラリティは、ERC-777コントラクトがミント、送金、バーンに許可する最小の内部トークン数量です。この値はコントラクト作成時に設定され、規格上変更できません。すべての残高と移動数量は、トークンのグラニュラリティの倍数でなければなりません。ほとんどのトークンではグラニュラリティが1に設定され、内部単位の整数単位であれば移動できます。ERC-777では、内部単位に対する表示上の額面を小数点以下18桁と定めています。ERC-777トークンが任意のERC-20
ERC-777とERC-20の互換性
ERC-777は、トークンがERC-777インターフェースと並行してERC-20関数を実装できるよう設計されています。ERC-20規格では、
未登録の受取コントラクトへのネイティブERC-777の
ERC-777とERC-20のアローワンス
ERC-20では一般に、所有者から使用者へ、使用者が移転できるトークン数量を制限する数値のアローワンスを付与します。ERC-777では、権限が取り消されるまで、オペレーターに保有者の残高を管理する権限を与えます。オペレーターモデルは、役割を明示し、標準化された送金とバーンを可能にします。アローワンスモデルでは、ユーザーが必要以上に大きな数量を承認する場合もありますが、数量上限を設けられます。どちらの仕組みでも、悪意のある、または侵害されたコントラクトを承認すると損失が生じる可能性があります。ウォレットは、操作によって固定アローワンス、無制限アローワンス、ERC-777のオペレーター権限のどれが付与されるかを表示する必要があります。トークンが両方の規格に対応している場合、一方の権限を取り消しても、もう一方の権限が取り消されるとは限りません。ERC-777のリエントランシーリスク
ERC-777の統合に伴う最も重要なリスクは、フックに起因します。受取人フックは、トークンの送金処理中に外部コントラクトコードを実行します。その外部コードは、プロトコルの元の関数が完了する前に、プロトコルへコールバックできます。この動作をリエントランシーと呼びます。脆弱なプロトコルでは、残高を計算してERC-777トークンを送金した後、内部会計が更新される前にコールバックを受け、古い内部会計を使って操作を繰り返される可能性があります。両方に対応するERC-777トークンは、ERC-20形式の関数が呼び出された場合でも、登録済みフックを実行する場合があるため、この問題は発生し得ます。関数名が通常のERC-20送金に似ているからといって、代替可能なトークンの送金にコールバックがないと思い込んではいけません。リエントランシーリスクの軽減
設計上可能な場合、外部トークン関数を呼び出す前に、プロトコルは重要な会計情報を更新してください。機密性の高いエントリーポイントには、適切なリエントランシーガードを使用してください。1つの関数への再入を防いでも別の関数が悪用される可能性があるため、関連する関数をまとめて確認する必要があります。コールバックの動作が不明な任意の資産を受け入れるのではなく、トークンコントラクトを検証してください。テストでは、悪意のある送信者フック、悪意のある受取人フック、入れ子になったトークン移動、リバートするコールバック、複数関数への再入を確認してください。ERC-777のフックは通常の送金に限られないため、ミントとバーンの経路も確認してください。監査によってリスクを軽減できる場合はありますが、すべてのコールバック処理の安全性を保証することはできません。受取人保護とその限界
ERC-777の受取人チェックは、トークンを処理できないコントラクトでトークンが永久に取り出せなくなるのを減らす目的で設計されました。ERC-777のメリット
ERC-777では、代替可能なトークンを受け取ったときにコントラクトへ通知できます。送金と受取人による処理を1つのトランザクションにまとめられます。プログラム可能なフックを通じて、送信者と受取人がトークンの移動を拒否できます。アプリケーションが支払いや操作を解釈するために利用できるデータを付加できます。オペレーターモデルにより、委任管理と明示的な権限取り消しを標準化できます。ネイティブERC-777送金では、トークン受取に対応していないコントラクトへの誤送金を減らせます。後方互換性により、1つのトークンをERC-20インフラで利用しながら、ERC-777対応アプリケーション向けの高度な機能も提供できます。ERC-777の制約
フックにより、スマートコントラクトはトークンの移動を安全に判断することが難しくなります。ERC-1820の照会によって外部依存と統合の複雑さが加わります。オペレーター権限は、ユーザーが想定するより広範になる可能性があります。デフォルトオペレーターには、重要な信頼と権限に関する検討事項が伴います。ERC-20との互換性により、どの送金インターフェースを使うかによって動作が異なります。ERC-777イベントとERC-20イベントの両方を誤って処理すると、アプリケーションが送金を二重計上する可能性があります。現在の多くの開発ツールやアプリケーションは主にERC-20を中心としているため、ERC-777を実装する実用上のメリットは限られます。広く使われているコントラクトライブラリから保守対象のERC-777実装が削除されたことで、新たな導入を安全に構築・維持するための作業が増えます。ERC-777の普及が限定的だった理由
ERC-777が導入された時点で、ERC-20はウォレット、アプリケーション、分析ツール、スマートコントラクトシステムで広くサポートされていました。そのネットワーク効果を置き換えるには、新たなコールバックやレジストリのロジックを正当化できるだけのメリットが必要でした。多くのプロトコルは、予測可能なERC-20の送金とアローワンスの動作を前提に構築されていました。ERC-777のフックは、単純な残高更新だと統合側が想定している操作に、予期しない外部呼び出しを導入しました。ERC-2612の動機に関するセクションでは、ERC-777は機能を大幅に拡張しており、一般的なコントラクトで予期しない動作が生じる可能性があると指摘されています。
開発者は、トークン送金のライフサイクル全体を変更するのではなく、より限定的なERC-20拡張を採用して個別の使いやすさの課題に対応するようになりました。そのためERC-777は技術的に重要な規格であり続けていますが、Ethereumの新規プロジェクトにおける代替可能トークンの標準的な選択肢ではありません。開発者は新しいERC-777トークンを作るべきですか?
開発者はまず、提案するトークンにERC-777のどの機能が不可欠なのかを明確にしてください。主な目的が署名付き承認であれば、より限定的なERC-20拡張で、汎用的な送金フックを導入せずにその機能を提供できる場合があります。受取人のコールバックが必要な場合は、専用のアプリケーションコントラクトで、より安全かつ明確な動作を実現できるか検討してください。新しいERC-777実装では、仕様全体、ERC-1820の登録、フック、オペレーター、イベント、ミント、バーン、ERC-20互換性を慎重に確認する必要があります。古く保守されていない実装を、コンパイラの変更や既知のセキュリティ上の前提を確認せずに再利用するのは安全ではありません。価値のある資産を扱う前に、コントラクトの単体テスト、ファズテスト、不変条件テスト、統合テストを十分に行い、独立したセキュリティレビューを受けてください。また、利用を想定するウォレット、カストディシステム、ブリッジ、分散型アプリケーションが、トークンのコールバック動作に対応しているか確認してください。ユーザーがERC-777トークンを評価する方法
最初に、信頼できる情報源を通じてトークンのコントラクトアドレスを確認します。次に、コントラクトがERC-777のみに対応しているのか、ERC-20関数も公開しているのかを確認します。3つ目に、デフォルトオペレーターを確認し、どのような権限を持つかを判断します。4つ目に、ミント、バーン、一時停止、凍結、アップグレード、管理者権限を確認します。5つ目に、購入後にロジックを変更できるプロキシをコントラクトが使用しているか確認します。6つ目に、監査、ソースコードの検証、テスト範囲、過去のインシデントを確認します。7つ目に、オペレーターの承認を確認し、不要になった権限を取り消します。8つ目に、受取側のアプリケーションがERC-777とそのフックに明示的に対応しているか確認します。9つ目に、多額を送金する前に少額のトランザクションを試します。10個目に、トークンインターフェースへの準拠だけでは、金融価値、支払い能力、投資の安全性が証明されないことを忘れないでください。ERC-777による支払いの例
ユーザーがERC-777トークンでオンチェーンのサブスクリプションコントラクトに支払うとします。サブスクリプションコントラクトは、ERC-1820レジストリを通じて
ユーザーは、コントラクトアドレス、支払額、エンコードされたサブスクリプション参照情報を指定して
次に、支払いの詳細を添えてコントラクトの
ERC-777でよくある間違い
よくある間違いの一つは、ERC-777が単にERC-20を置き換える新しい規格だと思い込むことです。別の間違いは、トークン送金をコールバックのない処理として扱うことです。3つ目は、呼び出し元のトークンコントラクトを確認せずに
6つ目は、
よくある質問
ERC-777とは何ですか?
ERC-777は、フック、オペレーター、データフィールド、トークン送金、トークンバーンを定義する、FinalステータスのEthereum代替可能トークン規格です。ERC-777は代替可能ですか、それとも非代替性ですか?
ERC-777は代替可能トークンの規格で、同じトークンの各単位は互いに交換可能です。ERC-777は現在も有効ですか?
はい。公式提案はFinalステータスのままですが、普及は限定的で、主要なコントラクトライブラリからERC-777の実装が削除されています。ERC-777はERC-20と同じですか?
いいえ。ERC-777はフック、オペレーター、付加データ、受取人チェックを追加しています。ただし、1つのトークンが両方の規格に対応することは可能です。ERC-777の主な機能は何ですか?
よく知られている機能は、トークンの移動時に登録済みの送信者コントラクトと受取人コントラクトへ通知できることです。tokensReceivedとは何ですか?
tokensToSendとは何ですか?
ERC-777のオペレーターとは何ですか?
オペレーターとは、保有者に代わってトークンを送金またはバーンする権限を与えられたアドレスです。ERC-777のオペレーターはユーザーのトークンをすべて移動できますか?
通常のオペレーター権限は数値で指定するアローワンスではないため、保有者が取り消すまで、承認済みオペレーターが広範な管理権限を持つ場合があります。デフォルトオペレーターとは何ですか?
デフォルトオペレーターは、トークン作成時にすべての保有者に対して承認されたアドレスです。ただし、各保有者は個別にその権限を取り消せなければなりません。ERC-777がERC-1820を使用するのはなぜですか?
ERC-1820を使うと、トークンは送信者フック、受取人フック、対応するトークンインターフェースを実装しているコントラクトを検出できます。ERC-777トークンをスマートコントラクトに送れますか?
はい。ただし、受取コントラクトが必要な受取人フックを登録していない場合、ネイティブのERC-777送金はリバートされなければなりません。ERC-777トークンがコントラクトから取り出せなくなる場合はありますか?
ネイティブ送金では受取人チェックによってリスクが軽減されますが、ERC-20互換の送金や受取人ロジックの不備により、残高にアクセスできなくなる可能性は残ります。ERC-777には小数桁がありますか?
この規格は表示上の額面を小数点以下18桁とし、任意のERC-20互換
ERC-777のグラニュラリティとは何ですか?
ミント、送金、バーンが可能な最小の内部数量です。ERC-777でリエントランシーが発生する可能性があるのはなぜですか?
トークン処理中にフックが外部コントラクトコードを実行するため、受取人または送信者の実装から、元の呼び出しが終わる前に別の関数を呼び出せる可能性があります。すべてのERC-777トークンは危険ですか?
いいえ。ただし、すべての統合でコールバック、オペレーター権限、ERC-1820の照会、トークン固有のコントラクトロジックを意図的に処理する必要があります。OpenZeppelin ContractsからERC-777実装が削除されたのはなぜですか?
普及が限定的で、複雑なフックの動作を汎用コンポーネントとして安全にサポートすることが難しかったためです。既存のERC-777トークンは引き続き動作しますか?
はい。デプロイ済みのコントラクトは、それ自体のアップグレードまたは管理機能によって変更されない限り、コードに従って動作し続けます。新しいトークンにERC-777を使うべきですか?
フックとオペレーターが、追加のセキュリティ、統合、保守の複雑さに見合う不可欠なメリットをもたらすかどうかによって判断します。まとめ
ERC-777は、フック、オペレーター、トランザクションデータ、コントラクト受取人チェックを通じてトークン連携の改善を目指す、FinalステータスのEthereum代替可能トークン規格です。関連コンテンツ
WhatsMiner M30S++
Web3ドメイン
Web3プロジェクト
ホット
現在、市場で大きな注目を集めているトレンドの暗号資産
トップ取引高
取引高が最も多い暗号資産

