【完全保存版】Gelatoネットワークのコントラクトについて
1 Gelatoネットワークのコントラクトについて
1 GelatoのDiamond Proxyパターンの使用について
Gelato Networkは、L1、L2、サイドチェーンの多様なデザインにより、急速に進化するマルチチェーンに対応できるように設計されています。
コンセンサスメカニズム、ブロックタイム、ブロック再編成の可能性、取引手数料モデルなどの側面で大きな違いが見られます。
各ブロックチェーン設計が伴うニュアンスを扱うために、GelatoV2スマートコントラクトはモジュール式アップグレーダブルの標準に従っています。
2 Diamondプロキシパターン
Diamondには以下が含まれます。
すべての状態変数を保持するプロキシコントラクト
任意の機能を実装し、いつでも交換可能なスマートコントラクトであるファセット
すべてのファセット間で状態変数とユーティリティ関数を共有するために使用できるライブラリ。
(Diamond プロキシパターンについては、こちらもご参照ください)
3 Diamond Proxyパターンの利点
すべての状態を保持する単一のスマート・コントラクトを持つ一方で、バイトコード・サイズを超える問題に遭遇しない。
複数のFacets間でステート変数と関数を共有できる。
プロトコルのどのコンポーネントをアップグレードするか、きめ細かく制御できる。
(これは、プロトコルのアップグレードがガス効率的であることを意味します)Facetsをアップグレードする権利を取り消すだけで、いつでもGelatoV2をアップグレード可能から不変に変更できるオプション性
GelatoV2をDiamondとして実装することは、ユーザーや開発者との統合摩擦を排除することで新しいユースケースに容易に対応できます。
また、チェーンがレガシー取引手数料モデルからEIP-1559に変更するような低レベルの変更に適応できます。
(EIP-1559については、こちらをご参照ください)
アプリケーションインターフェースレベルで強い意見を強制することなく必要に応じて機能を追加または削除するだけでよいことを意味します。
イーサリアムメインネット上のGelatoV2はこちらでご覧いただけます。
https://louper.dev/diamond/0x3CACa7b48D0573D793d3b0279b5F0029180E83b6
2 GelatoV2のファセットについて
イーサリアムメインネット上のGelatoV2を構成するファセットの簡単なガイドです。
1 DiamondCutFacet
新しいFacetsの削除や追加など、Diamondのアップグレードに使用し、場合によってはデプロイ時に状態変数を初期化する。
2 DiamondLoupeFacet
いつでもダイヤモンドのすべてのファセットを検査できるようにするヘルパースマートコントラクト。
3 OwnershipFacet
GelatoV2の所有権を管理し、その所有者は現在Gelato Multisigスマートコントラクトです。
4 AddressFacet
ガス価格オラクルやオラクル・アグリゲーターなど、Gelatoの固有のユーティリティ・スマートコントラクトを管理する。
5 GelatoV1Facet
GelatoV1との後方互換性
6 ConcurrentCanExecFacet
複数のGelatoエクゼキュータ間の調整アルゴリズム。
7 ExecAccessFacet
ジェラートのエクゼキュータを管理する。
8 ExecAccessFlashbotsFacet
タスクをFlashbotsバンドルとして送信するGelatoエクゼキュータを管理します。
9 ExecAccountingFacet
取引手数料の会計を管理し、間もなくGelatoエクゼキュータへの給与支払いも行う。
10 ExecFacet
メインファセット。
Gelatoに提出されたタスクはすべてexecメソッドを経由する。
11 PrepaidExecFacet
いくつかのユースケース固有の呼び出しがルーティングされるファセット。現在は非推奨。
12 UniswapV2SwapFacet
ExecFacet に似ていますが、支払い時にトークンのスワップを自動的に処理します。現在は非推奨。
13 TransferFacet
Gelato・マルチシグが運営するGelatoV2からの手数料引き出し
他のチェーンでのGelatoV2の実装はLouperでも見ることができます。