Doppler Protocol:コントラクトのデプロイとテストガイド
Doppler Protocolのコアコントラクトについて、セットアップ、テスト、デプロイ方法を詳しく解説します。コントラクトの信頼性と効率性を確保するための手順をステップごとに説明します。
Doppler Protocol:コントラクトのデプロイとテストガイド
Doppler Protocolのコアコントラクトについて、セットアップ、テスト、デプロイ方法を詳しく解説します。コントラクトの信頼性と効率性を確保するための手順をステップごとに説明します。
1. Doppler Protocolとは?
Doppler Protocolは、分散型金融(DeFi)のための基盤となるコントラクト群です。
- Airlockコントラクト: コントラクト間の相互作用を管理します。
- 各種モジュール: Swap、レンディングなど、特定の機能を提供します。
2. 開発環境のセットアップ
コントラクトのテストとデプロイには、まず開発環境を整える必要があります。
- Foundryのインストール: コントラクトのコンパイルとテストに必要なツールです。まだインストールしていない場合は、Foundryの公式ドキュメントを参照してください。
- リポジトリのクローン: Doppler Protocolのリポジトリをローカルにクローンします。
$ git clone [email protected]:whetstoneresearch/doppler.git
- 依存関係のインストール: 必要なライブラリをインストールします。
$ forge install
3. コントラクトのテスト実行
テストを実行することで、コントラクトが正しく動作することを確認します。
- .envファイルの作成: 環境変数を設定するための
.env
ファイルを作成します。Mainnetのエンドポイントも忘れずに設定してください。
$ cp .env.example .env
- テストの実行: 以下のコマンドでテストを実行します。
$ forge test
.env
ファイルを編集することで、テストシナリオを調整できます。例えば、IS_TOKEN_0=FALSE
や USING_ETH=FALSE
、FEE=30
などを変更して、様々なケースを試すことができます。
4. デプロイメント戦略
Doppler Protocolのデプロイは、目的によって3つの主要なシナリオがあります。
- プロトコル全体のデプロイ: テストネットや新しい本番チェーンにプロトコル全体をデプロイする場合。
- 周辺コントラクトのデプロイ: 新しいBundlerなどの周辺コントラクトを追加する場合。
- モジュールのデプロイ: UniswapV4Initializerなどの新しいモジュールをデプロイする場合。
5. プロトコル全体のデプロイ手順
Deploy.s.sol
スクリプトを使用します。
- .envファイルの設定:
PRIVATE_KEY
を設定します。
$ cp .env.example .env
- デプロイスクリプトの実行: 以下のコマンドを実行します。
--rpc-url
にはデプロイ先のチェーンのRPC URLを指定します。--private-key
にはデプロイヤーのウォレットの秘密鍵を指定します。
forge script ./script/V1DeploymentScript.s.sol --rpc-url https://... --private-key 0x... --broadcast
6. 周辺コントラクトのデプロイ
周辺コントラクトのスクリプトを実行することで簡単にデプロイできます。具体的な手順は各コントラクトのドキュメントを参照してください。
7. モジュールのデプロイと登録
モジュールのデプロイは、周辺コントラクトのデプロイと似ていますが、追加の手順が必要です。
-
モジュールのデプロイ: 通常のコントラクトと同様にデプロイします。
-
Airlockへの登録: Airlockコントラクトの
setModuleState
関数を呼び出し、新しいモジュールのアドレスとそのタイプ(例:TokenFactory
、PoolInitializer
)を登録します。プロトコルのマルチシグがAirlockの管理者である場合、トランザクションはSafeインターフェースを使用して実行する必要があります。
8. ネットワークごとのデプロイコマンド
以下のコマンドを使用して、様々なネットワークにコントラクトをデプロイできます。
- Ink Mainnet
forge script ./script/DeployMainnet.s.sol --private-key $PRIVATE_KEY --rpc-url $INK_MAINNET_RPC_URL --verify --verifier blockscout --verifier-url $INK_MAINNET_VERIFIER_URL --broadcast --slow
- Base Mainnet
forge script ./script/DeployMainnet.s.sol --private-key $PRIVATE_KEY --rpc-url $BASE_MAINNET_RPC_URL --verify --verifier blockscout --verifier-url $BASE_MAINNET_VERIFIER_URL --broadcast --slow
- Unichain Sepolia
forge script ./script/DeployTestnet.s.sol --private-key $PRIVATE_KEY --rpc-url $UNICHAIN_SEPOLIA_RPC_URL --verify --verifier blockscout --verifier-url $UNICHAIN_SEPOLIA_VERIFIER_URL --broadcast --slow
- Base Sepolia
forge script ./script/DeployTestnet.s.sol --private-key $PRIVATE_KEY --rpc-url $BASE_SEPOLIA_RPC_URL --verify --verifier blockscout --verifier-url $BASE_SEPOLIA_VERIFIER_URL --broadcast --slow
- World Sepolia
forge script ./script/DeployTestnet.s.sol --private-key $PRIVATE_KEY --rpc-url $WORLD_SEPOLIA_RPC_URL --verify --verifier blockscout --verifier-url $WORLD_SEPOLIA_VERIFIER_URL --broadcast --slow
- Ink Sepolia
forge script ./script/DeployTestnet.s.sol --private-key $PRIVATE_KEY --rpc-url $INK_SEPOLIA_RPC_URL --verify --verifier blockscout --verifier-url $INK_SEPOLIA_VERIFIER_URL --broadcast --slow
- Arbitrum Sepolia
forge script ./script/DeployTestnet.s.sol --private-key $PRIVATE_KEY --rpc-url $ARBITRUM_SEPOLIA_RPC_URL --verify --verifier blockscout --verifier-url $ARBITRUM_SEPOLIA_VERIFIER_URL --broadcast --slow
- Monad Testnet
forge script ./script/DeployTestnet.s.sol --private-key $PRIVATE_KEY --rpc-url $MONAD_TESTNET_RPC_URL --verify --verifier sourcify --verifier-url $MONAD_TESTNET_VERIFIER_URL --broadcast --slow
まとめ:安全なDeFiの実現
Doppler Protocolのコントラクトは、DeFiの未来を支える重要な要素です。このガイドを参考に、安全かつ効率的なコントラクトのデプロイとテストを実現し、より信頼性の高いDeFi環境を構築していきましょう。