For the complete documentation index, see llms.txt. This page is also available as Markdown.

Chiliz Chain から Base へ bridge する

LayerZero v2 を使用して Chiliz Chain に OFT Adapter を、Base に Native OFT をデプロイし、Chiliz Chain のトークンを Base 上で omnichain 化します。

既存のトークンを Chiliz Chain から Base へブリッジするには、2 つの個別の smart contract を作成して deploy する必要があります。トークンがすでに存在するチェーン(Chiliz Chain)上の OFT Adapter と、宛先チェーン(Base)上の Native OFT です。

LayerZero は OFT contract 用の独自の QuickStart のほか、Chiliz Chain から別の EVM チェーンへ mint する方法 を学べるチュートリアルを提供しています(Base などへの mint)。そのチュートリアルでは Optimism をターゲットチェーンとして使用していますが、Base の詳細 に置き換えることができます。

前提条件

このガイドには以下が必要です。

dev 環境としては Hardhat と Node/npx を使用します。

ステップ 1: Contract の開発

Chiliz Chain 上の OFTAdapter の準備

OFTAdapter contract は、既存のトークンのロックボックスとして機能します。ユーザーがトークンを Chiliz Chain からブリッジで送り出す際、この contract は元の ERC20 トークンをロックします。

contracts フォルダーに ChilizTokenAdapter.sol という名前の新しいファイルを作成します。

ご覧のとおり、この contract は LayerZero OFT Adapter contract を継承しており、管理キーを付与するための標準的な Ownable.sol contract も継承しています。チェーン同士を安全に接続(wire)できるのがあなた、そしてあなただけになるように、両方が必要です。

これを Chiliz Chain Mainnet に deploy する際は、既存トークンの contract アドレスを _token として、Chiliz Endpoint V2 アドレス(0x6F475642a6e85809B1c36Fa62763669b1b48DD5B)を _lzEndpoint として渡す必要があります。

Chiliz Chain で利用可能なすべての endpoint はこちらを参照してください。

Base 上の OFT の準備

トークンはまだ Base 上にネイティブには存在しないため、標準的な OFT contract を deploy する必要があります。この contract は、Chiliz にデプロイされた OFT Adapter から有効なメッセージを受け取ったときに新しいトークンを mint し、ユーザーが戻すブリッジを行ったときにそれらを burn する権限を持ちます。

contracts フォルダーに BaseTokenOFT.sol という名前の新しいファイルを作成します。

ご覧のとおり、この contract は LayerZero OFT contract を継承しており、上記と同じ理由で標準的な Ownable.sol contract も継承しています。

これを Base に deploy する際は、ユーザーの混乱を避けるため、_name_symbol が Chiliz Chain 上の元のトークンと一致するようにしてください。Base Endpoint V2 アドレス(0x1a44076050125825900e736c501f859c50fE728c)を _lzEndpoint として渡します。

Base で利用可能なすべての endpoint はこちらを参照してください。

ステップ 2: LayerZero の設定

contract の準備ができたら、それらがどのように接続されるかを LayerZero のツールに伝える必要があります。これは Hardhat プロジェクトのルートに配置する layerzero.config.ts ファイルを使用して行います。

この設定ファイルは、クロスチェーンアーキテクチャの設計図として機能します。デプロイした smart contract を、それぞれの LayerZero Endpoint ID(EID)にマッピングし、それらの間の経路(接続)を定義します。

Simple Config Generator は、双方向の wiring を自動化し、推奨されるセキュリティ設定を内部で適用するため、wiring 設定を生成する推奨方法です。

Hardhat プロジェクトのルートに layerzero.config.ts ファイルを作成または更新します。

ステップ 3: デプロイのワークフロー

contract を作成し、layerzero.config.ts を準備したら、いよいよ contract をそれぞれのネットワークに deploy します。LayerZero V2 ツールボックスは、デプロイを効率的に管理するために hardhat-deploy プラグインに依存しています。

プロジェクトの deploy/ ディレクトリに 2 つのデプロイスクリプトを作成する必要があります。1 つは Chiliz Chain Mainnet 用、もう 1 つは Base Mainnet 用です。

Chiliz Adapter のデプロイスクリプト

deploy/ フォルダーに 01_deploy_chiliz_adapter.ts という名前のファイルを作成します。このスクリプトは、既存のトークンアドレスと Chiliz Endpoint V2 アドレスを constructor に渡します。

Base OFT のデプロイスクリプト

deploy/ フォルダーに 02_deploy_base_oft.ts という名前の 2 つ目のファイルを作成します。このスクリプトは、Base 上に新しい Native OFT を初期化します。

デプロイの実行

hardhat.config.ts に、Chiliz Chain と Base の両方の RPC URL と秘密鍵が適切に設定されていることを確認してください。

rpc-setsuzoku.md

ターミナルで以下のコマンドを実行して contract を deploy します。

デプロイが完了すると、Hardhat は contract アドレスを deployments/ フォルダーに保存します。次のステップで wiring コマンドを実行する際、LayerZero のツールがこれらのアドレスを自動的に読み込みます。

ステップ 4: Wiring と Peering

この段階では、ChilizTokenAdapterBaseTokenOFT の contract は各チェーンにデプロイされていますが、完全に分離されています。 Base の contract がトークンを mint するよう指示するメッセージを受け取った場合、そのメッセージが悪意のある第三者ではなく、Chiliz 上の_あなたの_Adapter から確かに発信されたものであることを知る必要があります。

contract を peer として暗号学的に「wire(接続)」することで、この信頼関係を確立しなければなりません。

これは wire コマンドを実行することで行われ、Chiliz と Base の両方でトランザクションを生成して実行します。

内部では何が起きているのか?

完全な LayerZero V2 経路設定には、実際には各チェーンで 6 つのトランザクションが必要です。

  • setSendLibrary: メッセージの送信を担当する LayerZero MessageLib を割り当てます(例: V2 Send Library を使用するよう設定)。

  • setReceiveLibrary: メッセージの受信を担当する MessageLib を割り当てます。(通常 0 に設定される gracePeriod を含みます)。

  • setConfig(Send Library): 送信メッセージ用の特定の Decentralized Verifier Networks(DVN)と Executor を設定します。

  • setConfig(Receive Library): 受信メッセージの検証に必要な特定の DVN を設定します。

  • setEnforcedOptions: 必要な実行 gas limit を設定します。ユーザーが Chiliz Chain からメッセージを送信する際、宛先の gas を前払いします。enforced options を設定することで、LayerZero Executor が Chiliz Chain 上でトランザクションを正常に処理するのに十分な gas を支払うことが保証されます。

  • setPeer: 宛先の Endpoint ID(EID)を信頼できる contract アドレスにリンクします。Chiliz Chain の contract に Base の contract を信頼するよう、Base の contract に Chiliz Chain の contract を信頼するよう伝える必要があります。

Wire タスクの実行

ターミナルで以下のコマンドを実行します。

ツールチェーンは必要なパラメーターを自動的に計算し、実行しようとしているトランザクションの表を提示し、deployer ウォレットを使用してそれらを Chiliz と Base に送信します。

両方のネットワークでトランザクションが確認されると、トークンブリッジは正式に稼働し、完全に設定されます! これで Chiliz Adapter は Base に mint コマンドを送信する権限を持ち、Base は Chiliz に unlock コマンドを送り返す権限を持つようになります。

ステップ 5: 運用とテスト

contract がデプロイされ、安全に wire で接続されたことで、トークンは omnichain になりました。最後のステップは、Chiliz Chain Mainnet から Base Mainnet へのクロスチェーン転送を実行することです。

1) クロスチェーン転送の実行

LayerZero V2 ツールボックスは、ターミナルから直接 OFT 転送をテストできる組み込みの Hardhat タスクを提供しています。このコマンドは、クロスチェーンの gas 手数料を見積もり、$CHZ(ソースチェーンのネイティブ gas トークン)でウォレットに課金し、転送を開始します。

ChilizTokenAdapter は既存の Fan Tokens をロックするための権限を必要とするため、ERC-20 の approve() トランザクションが必要です。

LayerZero CLI はこれを検出し、メッセージを送信する前に approval を自動的に処理します。

以下のコマンドを実行します。

このコマンドが行うこと:

  1. 設定内で Chiliz Mainnet(30409)と Base Mainnet(30184)を検索します。

  2. LayerZero Executor が必要とするクロスチェーン手数料を見積もります。

  3. Chiliz Adapter の send() 関数を呼び出します。

  4. Adapter は 10 トークンをロックし、パケットを LayerZero Endpoint に送出します。

2) LayerZero Scan でのパケットの追跡

クロスチェーントランザクションは非同期です。Chiliz のトランザクションは数秒で確認されますが、メッセージはまだ Base 上で検証および実行される必要があります。

この過程をリアルタイムで追跡するには、CLI 出力に表示される LayerZero Scan のリンクをクリックします。

このツールについて詳しくはこちらをご覧ください。

Gas Limit の設定

gas limit を設定することは非常に重要です。設定を怠ると、クロスチェーンメッセージが宛先ネットワークで失敗する可能性があります。

ユーザーがトークンを Chiliz Chain から Base へブリッジする際、_両方の_チェーンの gas 手数料を、Chiliz 上の単一のトランザクションで($CHZ を使用して)前払いします。LayerZero はその手数料の一部を使用して、Base 上で mint トランザクションを実行するために実際に必要な ETH の gas を支払います。

LayerZero が宛先チェーンで lzReceive 関数を正常に処理するのに十分な gas を確保するには、Enforced Options を設定する必要があります。これらが設定されていない場合、宛先チェーンで「Out of Gas」エラーによりトランザクションが revert する可能性があります。

Options の設定

このオプションは layerzero.config.ts ファイルで設定します。各経路の enforcedOptions ブロックを含めるように connections 配列を更新します。

パラメーターの説明:

  • msgType: 1: 標準的なトークン転送を表します。msgType: 2 は「composed」呼び出し(例: トークンをブリッジし、ワンクリックで即座に staking する)に使用されます。

  • optionType: 1: Executor に対して単に lzReceive 関数を実行するよう指示します。

  • gas: 200000: 標準的な OFT の mint と unlock に対する安全な基準 gas limit です。デプロイした contract の具体的な gas 消費量に基づいて調整できます。

すでにチェーンを wire した後にこのオプションを設定した場合は、同じコマンドを使用して、オプションが反映された状態で再度 wire できます。

ツールは変更を自動的に検出し、Chiliz と Base の両方の contract に setEnforcedOptions() トランザクションを送信します。これにより、ユーザーがブリッジをトリガーするたびに、contract は宛先チェーンで少なくとも 200,000 gas ユニットを支払うことをユーザーに義務付け、信頼性の高い配信を保証します。

最終更新

役に立ちましたか?