EIP‑2535とは、Ethereum上でスマートコントラクトをモジュール化し拡張性とアップグレード性を高めるための仕様である。
概要

EIP‑2535は「Diamond Standard」と呼ばれ、従来の単一契約に代わり複数の小規模な「facet(ファセット)」から構成される「diamond(ダイヤモンド)」というアーキテクチャを定義した。
Ethereum Virtual Machine(EVM)のガス制限やサイズ上限が、単一契約で多機能化する際の障壁となっていたことが背景にある。ファセットは独立してデプロイ・アップグレードできるため、既存のロジックを破壊せずに新機能を追加可能だ。
この仕様は、スマートコントラクト開発者コミュニティ内で広く議論され、実装例が増えることで標準化へと進展した。
役割と機能

- モジュール化:契約の機能を複数ファセットに分離し、必要な部分だけを呼び出す。
- アップグレード性:diamond cut(ダイヤモンドカット)操作でファセットを追加・置換・削除できる。
- ガス効率:共通のストレージ構造を利用し、重複コードを排除。
- 互換性維持:既存のインターフェースは変更せずに機能拡張が可能。
これらにより、DeFiプロトコルやNFTプラットフォームなどで多機能化と継続的な改善を同時に実現できる。
特徴

- ファセットパターン:各ファセットは独立したスマートコントラクトとしてデプロイされ、diamond contract はそれらのアドレスと関数シグネチャを管理する。
- ダイヤモンドカット操作:
addFacet,replaceFacet,removeFacetの3タイプにより、動的に機能追加・置換・削除が実行できる。 - 共通ストレージ:全ファセットは同一のストレージレイアウトを共有し、データ整合性を保つ。
- fallback関数利用:未定義関数呼び出し時にダイヤモンドが適切なファセットへルーティングする仕組み。
従来のプロキシパターン(例:OpenZeppelin Proxy)と比べ、Diamond Standardは複数機能を同一アドレスで統合できる点が大きい。また、アップグレード時にロジック変更のみで済むため、ガスコストの削減にも寄与する。
現在の位置づけ

EIP‑2535はDeFiエコシステムで急速に採用されている。Uniswap v3やAave v3など主要プロトコルがダイヤモンド構造を利用し、機能追加やセキュリティパッチの適用を迅速化している。
レイヤー2ソリューション(Optimism, Arbitrum)でも同仕様がサポートされ、拡張性と低ガスコストを両立させる手段として評価されている。
規制面では、アップグレード可能なスマートコントラクトに対する監査の重要性が増し、透明性確保や変更履歴管理が求められるようになっている。
EIP‑2535は、Ethereum上で複雑かつ長期運用を要するプロトコルに不可欠な設計パターンとして位置付けられ、今後も標準化の深化と実装拡大が期待される。
続きを読むには確認が必要です

