本日は9月2日、昨日の夜の独り言ニュースレターで新しい「ERC」についていくつか触れたので、今日はEIPとERCについて基礎的な部分を詳しくなりましょう。
毎日朝と夜の2本投稿体制になった独り言ニュースレターですが、まだ半分以上の方がメールアドレスの登録を行ってないのでこれを機にぜひ登録お願いします!
Ethereumについて調べていたり、ニュースでもアップデートが起こったときによく耳にする「EIP」や「ERC」について皆さんは説明できますか?
まずいちばん外側の概念のEIPから順番に解説します。
EIP = Ethereum Improvement Proposals
EIPとは正式名称の文字の通り、Ethereumに関する改善策の提案を意味します。その中にもいくつか区分があって、提案によって変更される箇所や内容によってここからさらに細分化されていきます。わかりやすいように図にしてみましした。
このようにEIPの中に3つの項目があり、その「Standard Track」の中にも更に4つの項目があって分けられているということ。皆さんがよく「ERC」を目にするというのも正しく、実際にEIPの半分以上はERCに分類されています。
それぞれの分類を順番に解説していきます。
Standard Track: ネットワーク、ブロック、トランザクションの有効性などのルール変更、アプリケーションの規格、Ethereumの相互運用性に影響を与える変更や追加などまで、ほとんどのEthereumの実装に関わる変更など。
Core: コンセンサスフォークが必要な改善案(EIP-5、EIP-221など)や、コンセンサスが重要ではないがコア開発の議論に関連する可能性のある改善案(例えばEIP-225に記載されているtestnetのPoAなど)
Network: EIP-8(devp2p)、Light Ethereum Subprotocol、whisper、swarmのネットワークプロトコルの仕様に関する改善案
Interface: クライアントAPIやRPCの仕様、SUICIDE opcode(EIP-6)やコントラクトABIのような特定の言語レベルの改善案
ERC: Token Standard(ERC-20)、ENS(EIP-137)、URL Format(EIP-681)、Ethereum Smart Contract Packaging Standard(ERC-190)、Account Abstractionなどのcontract standardを含むアプリケーションレベルの規格提案
Meta: Ethereumのコードには影響を及ぼさない部分での議論、提案など。実装を提案することもあるが概ねガイドラインなどの策定に使用。次に説明するInformational EIPsの推奨レベルより上の強制力を持っている意思決定プロセスの変更や、開発ツールの環境変更など。
Informational: Ethereumの設計上の問題を記述したり、コミュニティのガイドライン的役割を果たす提案。新機能を提案するものではなく、Meta EIPsよりも強制力の低いアドバイス的なもの。
さらにこれらの区分けを提案をフェーズによってラベリングすることができます。
Idea: EIPレポジトリに掲載されないDraftより前のIdea段階
Draft: 適切なフォーマットでプルリクするとレポジトリにマージされる
Review: EIP作成者がこのラベリングをするとレビューが行われる
Last Call: Finalに移行する前の最終審査、通常14日後に「last-call-deadline(レビュー終了日)」を設定し変更がなければ次に進む
Final: ここまで来たEIPは最終的に規格になったことを表す
Stagnant: DraftかReviewのまま6ヶ月以上たったらここに入るが、Draftに再度戻すことで復活させることはできる
Withdrawn: EIP作成者がなんらかを理由にEIPを撤退したことを表す、この状態になるともう一度同一の番号で復活はできず新規EIPの作成扱いになる
Living: 継続的に更新され続けFinalに進まないようになっている特殊なEIP、例えばEIP-1がここに含まれる
EIPの中でもこういう区分で別れて、段階ごとにラベリングされています。提案にEIPって付いてるのとERCって付いてるのはなんで?って思っていたかもしれませんが、その謎は解けたと思います。これからEthereumがたくさんの人達に使われだすとより細かい改善が増えてくると思うのでぜひ意識して見てみてください。
今日は思いの外2,000字をオーバーしてしまったので、3分で読める量に収まってないかもしれませんがお許しを、、
毎朝7~8時と夜にニュースレターを更新しているのでぜひメールアドレスの登録をよろしくお願いします!