EIP‑2535

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

目次

概要

概要(EIP‑2535)の図解

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

役割と機能

役割と機能(EIP‑2535)の図解

  • モジュール化:契約の機能を複数ファセットに分離し、必要な部分だけを呼び出す。
  • アップグレード性:diamond cut(ダイヤモンドカット)操作でファセットを追加・置換・削除できる。
  • ガス効率:共通のストレージ構造を利用し、重複コードを排除。
  • 互換性維持:既存のインターフェースは変更せずに機能拡張が可能。

これらにより、DeFiプロトコルやNFTプラットフォームなどで多機能化と継続的な改善を同時に実現できる。

特徴

特徴(EIP‑2535)の図解

  • ファセットパターン:各ファセットは独立したスマートコントラクトとしてデプロイされ、diamond contract はそれらのアドレスと関数シグネチャを管理する。
  • ダイヤモンドカット操作addFacet, replaceFacet, removeFacet の3タイプにより、動的に機能追加・置換・削除が実行できる。
  • 共通ストレージ:全ファセットは同一のストレージレイアウトを共有し、データ整合性を保つ。
  • fallback関数利用:未定義関数呼び出し時にダイヤモンドが適切なファセットへルーティングする仕組み。

従来のプロキシパターン(例:OpenZeppelin Proxy)と比べ、Diamond Standardは複数機能を同一アドレスで統合できる点が大きい。また、アップグレード時にロジック変更のみで済むため、ガスコストの削減にも寄与する。

現在の位置づけ

現在の位置づけ(EIP‑2535)の図解

EIP‑2535はDeFiエコシステムで急速に採用されている。Uniswap v3やAave v3など主要プロトコルがダイヤモンド構造を利用し、機能追加やセキュリティパッチの適用を迅速化している。
レイヤー2ソリューション(Optimism, Arbitrum)でも同仕様がサポートされ、拡張性と低ガスコストを両立させる手段として評価されている。
規制面では、アップグレード可能なスマートコントラクトに対する監査の重要性が増し、透明性確保や変更履歴管理が求められるようになっている。

EIP‑2535は、Ethereum上で複雑かつ長期運用を要するプロトコルに不可欠な設計パターンとして位置付けられ、今後も標準化の深化と実装拡大が期待される。

×

続きを読むには確認が必要です

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次