著者: Chainlink編集: Cointime.com QDD
Chainlink の Cross-Chain Interoperability Protocol (CCIP) は、信頼を最小限に抑えた方法でブロックチェーン ネットワーク間でデータとトークンを転送する機能をスマート コントラクト開発者に提供する新しい汎用クロスチェーン通信プロトコルです。
現在、複数のブロックチェーン上にデプロイされたアプリケーションは、資産、流動性、ユーザーの断片化に悩まされています。 CCIP を使用すると、開発者はトークン転送と任意のメッセージングを活用して、相互運用して単一の統合アプリケーションを形成する、複数の異なるブロックチェーン ネットワーク上にデプロイされた複数のスマート コントラクトで構成される分散型アプリケーションを実装できます。この Web3 設計パターンは、 クロスチェーン スマート コントラクトと呼ばれます。
ここでは、CCIP を使用してクロスチェーン アプリケーションを構築する例をいくつか示します。これには、DeFi、クロスチェーン ENS、複数のチェーンでの NFT の鋳造、クロスチェーン ゲームなどの領域が含まれます。これらのユースケース例は、従来のシングルチェーンまたはマルチチェーンアプリケーションを強力な新しいクロスチェーン dApps に変換する CCIP の可能性を示しています。
すべてのサンプルはChainlink Labs の GitHubで入手でき、今すぐデプロイして操作できます。
DeFi: クロスチェーンの構成可能性
DeFi は、クロスチェーン スマート コントラクトによる変革に適した Web3 アプリケーションのクラスです。現在の DeFi の世界では、多くのアプリケーションが単一のチェーンまたは複数のチェーンにデプロイされており、各インスタンスには独自のユーザー セットと流動性が必要です。各チェーンには、 DeFi コンポーザビリティと「通貨レゴ」の概念があり、開発者は許可なしに特定のネットワーク上に展開されたさまざまなプロトコルに接続して統合し、新しいユースケースや金融商品を作成できます。
クロスチェーンのスマートコントラクトとクロスチェーンのトークン転送を可能にすることで、CCIP は DeFi の構成概念を飛躍的に高めます。なぜなら、構成性はもはや各チェーンに限定されず、そのチェーン上の DeFi プロトコルにも限定されなくなり、すべてのチェーン上のすべての DeFi アプリケーションをさまざまな方法で組み合わせて新しい金融商品を作成できるようになったからです。アプリケーションとプロトコルは、それらが存在するチェーンに限定されなくなりました。
このクロスチェーンの構成可能性により、DeFi アプリケーションのエコシステムがより完全で相互接続され、すべてのチェーン上の流動性、ユーザー、金融商品をすべてのプロトコルで使用できるようになります。 「通貨レゴ」の例えを使用すると、CCIP を使用すると、さまざまなレゴ セットをすべて組み合わせて、単一の統一されたセットとして使用して、金融協定を構築することができます。
CCIP から大きな恩恵を受ける具体的な DeFi 金融サービスの 1 つは融資です。現在の世界では、ほとんどの DeFi 融資プロトコルでは、使用したいプロトコルを展開するチェーンに担保を預ける必要があります。しかし、多くの DeFi ユーザーは複数の異なるブロックチェーン上で複数の DeFi プロトコルを使用しており、資産はそれらすべてに分散しています。これらのユーザーは通常、最高の収益率を追求し、ポジションを調整して利回りを最大化しますが、多くの場合、別のチェーンでより良い利回りの機会があるときに、これらの資産はあるチェーンのプロトコルに固定されます。より良い利回りの機会に参加したい場合は、あるチェーン上のポジションを清算し、手動で資産を新しいチェーンにブリッジし、それらの資産を新しいチェーンのプロトコルに預け、その後、資産を元のチェーンに戻すときに同じプロセスを実行する必要があります。これは、利回りの機会を追求するために資産を新しいプロトコルに移すだけでも多くのステップが必要です。
このような状況では、CCIP が DeFi プロトコルを真のクロスチェーンにするのに役立ち、ユーザーが 1 つのチェーン上のデジタル資産を別のチェーンの DeFi プロトコルの担保としてシームレスに利用できるようになります。これらはすべて、ユーザーが手動操作を実行したり、サードパーティのブリッジングを使用するために信頼想定を追加したりすることなく、プロトコル レベルで CCIP によって処理されます。 CCIP を使用すると、DeFi プロトコルにより、借り手が資産を (ソース) チェーンに預けたり、ターゲット チェーンに直接転送したりして、それらの資産をターゲット チェーンで借入できるようにすることができます。ターゲットチェーン上の資産の使用を停止したい場合、DeFiプロトコルはCCIPを使用してポジションを撤回し、資産を元のチェーンに戻すことができます。これがCCIPによって強化されたDeFiの力です。
この例では、DeFi スマート コントラクト Sender.sol を Avalanche Fuji テストネットにデプロイしています。この契約は、トークンでのユーザーのデポジットを受け入れます。トークンは、ラップされた ETH、ステーブルコイン、または実際の価値を持つ任意のトークンである可能性があります。 Sender.sol には、CCIP を使用して、指定されたトークンとメッセージをターゲット チェーンにプログラム可能な転送を実行する sendMessage 関数があります。この例では、指定されたトークンを Ethereum Sepolia テストネットに送信し、エンド ユーザーの EOA (外部所有アカウント) メッセージを含めます。
注: この記事のすべてのコード例は説明のみを目的としており、明示的か黙示的かを問わず、いかなる種類の保証もなく「現状のまま」提供されます。これらのコード スニペットの使用には、 chain.link/termsに記載されているサービス利用規約が適用されます。
Ethereum Sepolia ネットワーク上に、Protocol.sol と呼ばれるスマート コントラクトを展開しました。このコントラクトは、CCIP プログラム可能なトークン転送メッセージを受信し、次のアクションを実行します。
l 担保に対して借用できるステーブルコインを鋳造および管理します。
l CCIP メッセージから、(ローンの担保として) ソース チェーンから送信された指定されたトークンの (ターゲット チェーン上の) コントラクト アドレスと入金金額を読み取ります。
l エンドユーザー (預金者/借り手) のウォレットアドレスも CCIP メッセージの内容から読み取られます。ステーブルコインはこのアドレスに鋳造され、このアドレスは預金と融資の追跡にも使用されます。
l この情報をスマートコントラクトに保存します。
Protocol.sol がこの CCIP プログラム可能なトークン転送メッセージを正常に受信して処理すると、ユーザーは、borrowUSDC 関数を手動で実行して資金を借りることができます。この機能により、ユーザーは転送されたトークンを担保として使用し、同額のステーブルコイン (USDC など) を借り手の EOA に借りることができます。この例では、担保比率を 70% と仮定します。これは、プロトコルが担保価値の 70% を超えて貸し出すことを意味します。
Protocol.sol がこの CCIP プログラム可能なトークン転送メッセージを正常に受信して処理すると、ユーザーは、borrowUSDC 関数を手動で実行して資金を借りることができます。この機能により、ユーザーは転送されたトークンを担保として使用し、同額のステーブルコイン (USDC など) を借り手の EOA に借りることができます。この例では、担保比率を 70% と仮定します。これは、プロトコルが担保価値の 70% を超えて貸し出すことを意味します。
ユーザーは Sepolia で担保として UDSC を正常に借り入れた後、必要に応じて Sepolia ネットワーク上の任意の DeFi プロトコルでこれらの資金を使用できます。その後、それらが完了すると、Protocol.sol に返済することができます。これにより、ステーブルコイン トークンが焼き付けられ、その後、CCIP プログラム可能なトークン転送メッセージが Fuji ネットワーク上の Sender.sol コントラクトに送り返されます。これにより、ロックされたトークンが Fuji ネットワーク上の指定されたアドレスに返されます。プロトコルが借りた金額を燃やすためには、ユーザーが借りたステーブルコインの「支出者」として Protocol.sol を最初に承認する必要があることに注意してください。返済は次のように実行されます。
この例の完全なソース コードと手順は、CCIP-DeFi Lending GitHubリポジトリにあります。
DeFi: クロスチェーン清算保護
DeFi と融資プロトコルのテーマを継続すると、多くの DeFi ユーザーが複数の異なる DeFi プロトコルと複数のブロックチェーンで複数の役職に就いています。これにより、ポートフォリオとDeFiのポジションを追跡することが困難になります。現在、複数のサードパーティのプラットフォーム、トラッカー、収益アグリゲーターが利用可能であるため、DeFi ユーザーは担保を展開するだけで、これらのサードパーティのプラットフォームに資産の展開と移転を処理させて、ユーザーの収益を最適化できます。これらのツールは、DeFi の複雑さの一部を抽象化し、ユーザーが収益を得るのを容易にするという素晴らしい仕事をしますが、信頼を最小限に抑えるものではありません。ユーザーはプロトコルに委任して利回りを獲得し、清算を避けるためにポジションが担保されたままであることを保証します。さらに、エンドユーザーが何らかの形の清算保護を希望する場合は、DeFi ポジションを持つすべてのブロックチェーンにネイティブ資産をデプロイして、各チェーンの貸し借りポジションの担保を確保する必要があります。
DeFi プロトコル、位置監視アプリ、イールド アグリゲーターは、CCIP およびクロスチェーン トークンの転送とメッセージングを通じてクロスチェーン清算保護を強化できます。これは、ユーザーが複数のブロックチェーン上でオープンポジションを持つ複数のDeFiプロトコルを持つことができ、1つ以上のローンで担保を確保するために追加の資金が必要な場合に備えて、追加の担保として単一のチェーンに資産を割り当てることができることを意味します。高レベルでの仕組みは次のとおりです。
l DeFi エンドユーザーは複数のチェーン (例: イーサリアム、アバランチ、ポリゴン) で負債ポジションを持っていますが、流動性は 1 つのチェーン (例: イーサリアムの Aave) の保管庫に安全に保管されています。
l 各チェーン上のユーザーの負債ポジションについて、ユーザーのチェーンリンク オートメーション実装はポジションの負債比率を監視します。
l Automation が借入のいずれかが清算基準値に近いことを検出した場合、Automation はユーザーの流動性チェーン (例: Ethereum) に CCIP メッセージを送信し、債務ポジションを埋めるための資金を送るよう要求します。
l 流動性チェーン上のコントラクトが CCIP メッセージを受信すると、Aave から流動性を引き出し、資金を含む新しい CCIP メッセージをリクエスト チェーンに送り返します。メッセージには、ポジションに資金を提供し清算状況を回避するのに十分な情報とトークンが含まれています。
その結果、ユーザーは単一のチェーンで流動性を維持しながら、複数のチェーンで債務ポジションを持つことができるようになります。プロセス全体は信頼を最小限に抑えており、ユーザーは依然として債務ポジションを 100% 制御でき、資金を手動で引き出したり、別のチェーンに転送したりする必要はありません。仕組みは次のとおりです。
その結果、ユーザーは単一のチェーンで流動性を維持しながら、複数のチェーンで債務ポジションを持つことができるようになります。プロセス全体は信頼を最小限に抑えており、ユーザーは依然として債務ポジションを 100% 制御でき、資金を手動で引き出したり、別のチェーンに転送したりする必要はありません。仕組みは次のとおりです。
Chainlink Automation は、ユーザーが債務ポジションを持っているすべてのチェーンを監視し、資金を送信するメッセージがあるかどうかを判断します。 PerformUpkeep 関数は、必要に応じて、流動性保持チェーン上のボールトに資金の送信を要求する CCIP メッセージを送信します。
流動性のあるチェーン上のボールトは資金のリクエストを受け取り、リクエスト元のチェーンに十分な資金が返されているかどうか、または十分な資金が確実に送信されるように DeFi プロトコル (Aave など) から流動性を引き出す必要があるかどうかを確認します。次に、リクエストされた資金と最初に受信したメッセージのメッセージ ID を含む CCIP プログラム可能なトークン転送を開始します (これにより、資金をリクエストしているブロックチェーン上のターゲット コントラクトは、その資金がどのリクエストに関するものであるかを知ることができます)。
最後に、債務ポジションを補充するための資金を要求するブロックチェーン上のスマート コントラクトは、CCIP プログラム可能なトークン転送を受け取り、リクエスト ID を元のリクエストと照合し、ローンの担保を増やして清算を回避するために、資金を引き出して債務ポジションに入金します。
この例では、DeFi プロトコルと DeFi ポジション監視アプリケーションで CCIP を使用して、ユーザーが資金と流動性を単一のブロックチェーンに保持しながら、複数のブロックチェーン上の債務ポジションに対して信頼を最小限に抑えた清算保護を提供できる方法を示します。
完全なソース コードと手順は、 CCIP Liquidation Protector GitHubリポジトリにあります。
クロスチェーンドメイン名サービス
ENS などの分散型ネーム サービスは、人間が読める名前をウォレット アドレスに変換するのに役立つため、Web3 で非常に人気があります。理想的には、ネーム サービスは 1 つのチェーンに限定されるべきではなく、各登録名がすべてのイーサリアム チェーン、サイドチェーン、第 2 層、およびアプリケーション チェーンに伝播し、共存する必要があります。これにより、ユーザーは複数のネームサービスにドメインを登録したり、信頼を最小限に抑えた相互運用性ソリューションを使用したりする必要がなく、イーサリアムエコシステム全体で統一されたアイデンティティを持つことができます。
ただし、これを実現するには、ネーム サービスが他のブロックチェーンと通信する必要があります。各チェーンのネーミング サービス インスタンスは、新しい名前が登録されたときに通知を受ける必要があり、すべてのチェーンをカバーするグローバル ネーム レジストリの「検索」を実行する方法が必要です。
この例では、ユーザーが 1 つのチェーンにドメイン名を登録し、その登録を他の複数のチェーンに伝播し、任意のチェーン上のアドレスに名前を解決できる、簡素化されたクロスチェーン ドメイン ネーム サービス アプリケーションを構築する方法を示します。
最初のステップは、CrossChainNameServiceRegister および CrossChainNameServiceLookup コントラクトを Ethereum Sepolia ネットワークにデプロイすることです。このネットワークは、すべての登録が行われ、他のチェーンに伝播される「マスター」ネットワークとして機能します。
新しい .ccns ハンドルを登録すると、CrossChainNameServiceRegister コントラクトは CCIP を使用して、登録された .ccns ハンドルに関する情報を含むメッセージを他のサポートされているブロックチェーンに送信します。
サポートされているすべての受信チェーンで、CrossChainNameServiceReceiver コントラクトをデプロイします。このコントラクトは、登録された .ccns ドメイン名を CrossChainNameServiceRegister コントラクトから受け取り、チェーン上にデプロイされた CrossChainNameServiceLookup コントラクトに保存します。
最後に、CrossChainNameServiceLookup コントラクトが、登録チェーン (この場合は Sepolia) を含むすべてのブロックチェーンとすべてのターゲット チェーンにデプロイされます。このコントラクトは、登録されているすべての .ccns ハンドルを保存するために使用され、名前をアドレスに変換するための検索を実行するインターフェイスとして機能します。
このシンプルな設計パターンを使用すると、ユーザーがドメイン名を一度登録すれば、そのドメイン名を複数のブロックチェーン上で所有して使用できる、シンプルなクロスチェーン ドメイン名サービスを作成することができます。
完全なソース コードと手順は、Cross-Chain Name Service GitHubリポジトリにあります。
クロスチェーンNFT(クロスチェーンNFT)
NFT は、Web3 の最も人気のあるユースケースの 1 つです。通常、各 NFT プロジェクトは単一のブロックチェーン上に存在するか、プロジェクト自体が複数のチェーン上にデプロイされており、ユーザーが複数のチェーン上で NFT を所有したい場合は、それを複数回ミントする必要があります。
CCIP の任意のメッセージを通じて、NFT プロジェクトは、単一のチェーン上で資産を 1 回だけ鋳造し、鋳造業者によって 1 回だけ支払われ、その後他のブロックチェーンに伝播することができます。これは、ユーザーが使用しているネットワークに関係なく、NFT を所有および共有できることを意味します。 CCIP を使用して、異なるチェーン上で NFT を「バーン アンド ミント」することもでき、ユーザーは自分の NFT をあるチェーンから別のチェーンに転送できます。最初のシナリオの例を次に示します。
以下は、単純な NFT スマート コントラクトの図です。
SourceMinter コントラクトはソース チェーンにデプロイされ、MyNFT.sol スマート コントラクトからの ABI エンコードされた mint 関数署名を使用して CCIP クロスチェーン メッセージをターゲット ブロックチェーンに送信するロジックが mint 関数に含まれています。
DestinationMinter コントラクトは、ABI でエンコードされた mint 関数署名をペイロードとして含む CCIP クロスチェーン メッセージを受信し、その署名を使用して MyNFT スマート コントラクトの mint 関数を呼び出します。次に、MyNFT スマート コントラクトは、SourceMinter スマート コントラクトの mint() 関数を通じて、新しい NFT を msg.sender アカウントにミントします。これは、ソース チェーンで NFT をミントするときに使用されるのと同じアカウント アドレスです。
最終結果として、NFT を鋳造したユーザーは複数のチェーンでその NFT を所有するようになり、鋳造と支払いを 1 回行うだけで済みます。 NFT プロジェクトがすべてのブロックチェーンで厳格な非代替性を維持したい場合、このソリューションを簡単に変更して、ターゲット ブロックチェーンで NFT を作成し、ソース チェーンでそれを破棄することもでき、すべてのブロックチェーンに 1 つのバージョンのみが存在するようにすることもできます。
完全なソース コードと手順は、 Cross-Chain NFT GitHub リポジトリにあります。
ゲーム: クロスチェーン三目並べ
ここ数年、 Web3 ゲームは非常に人気が高まっています。ただし、DeFi と同様に、ゲームも非常に分散化されており、ゲームとそのアセットは特定のチェーンでのみ利用できることがよくあります。しかし、従来のゲームと同様、究極の目標または最適なエクスペリエンスは、プレイしているハードウェアやソフトウェアに関係なく、ゲーマーが一緒にプレイできるようにすることです。 PC ゲーマーが Xbox コンソールの所有者とプレイできるのと同じように、Polygon でプレイする人が Avalanche でプレイする人とプレイできない理由はありません。これはクロスプラットフォーム プレイと呼ばれます。
これは、ターンベースの Web3 ゲームや、高速なリアルタイム インタラクションを必要としないその他のゲームに最適です。 Web3 ゲームはユーザーの断片化に悩まされており、ゲーマーは自分の選択したチェーンでプレイし、好みのデジタル アセットを使用することを好みます。 CCIP は、Web3 ゲームを真のクロスチェーンにし、オンチェーンでのアセットの転送を容易にし、複数のブロックチェーンでのゲーム状態の共有を可能にし、プレイヤーが選択したチェーンに関係なく互いに対戦したり協力したりできるようにします。できるだけ多くのゲーマーを引き付けたい場合は、ゲームを複数のチェーンにデプロイし、すべてのプレイヤーが互いに対戦または協力できるように設計するのが最善です。
このクロスチェーン ゲーム デザイン パターンの簡単なデモンストレーションは、Tic Tac Toe などのターンベースの戦略ゲームで示すことができます。この例では、ゲームのスマート コントラクトが複数のブロックチェーンにデプロイされています。ユーザーは、選択したチェーンでゲームを開始し、ゲーム セッション ID を友達と共有できます。必要に応じて、友人は別のチェーンからゲームに参加できます。ゲームを作成するとき、CCIP はゲームの詳細と初期状態を他のすべてのチェーンと共有します。
最初のプレーヤーがゲーム開始後に一歩を踏み出すと、もう一方のブロックチェーン上の 2 番目のプレーヤーは、CCIP メッセージの処理に成功した後、ゲームのスマート コントラクト上で更新されたゲームの状態を確認します。次に、プレイヤー 2 がステップを実行し、CCIP メッセージを生成してプレイヤー 1 に返し、チェーン上のゲーム状態を更新します。
最初のプレーヤーがゲーム開始後に一歩を踏み出すと、もう一方のブロックチェーン上の 2 番目のプレーヤーは、CCIP メッセージの処理に成功した後、ゲームのスマート コントラクト上で更新されたゲームの状態を確認します。次に、プレイヤー 2 がステップを実行し、CCIP メッセージを生成してプレイヤー 1 に返し、チェーン上のゲーム状態を更新します。
プレイヤー 1 は更新されたゲーム状態を確認し、再び行動を開始します。プレイヤーがアクションを実行すると、ゲームが終了して勝者が宣言されるまで、クロスチェーン CCIP メッセージがチェーン間でやり取りされます。両方のチェーンのゲーム スマート コントラクトはゲームの状態を維持し、メッセージの送受信に CCIP を使用して、両方のブロックチェーンでゲームの状態の一貫性を確保することに注意することが重要です。
この例の完全なソース コードと手順は、CCIP Tic Tac Toe GitHub リポジトリにあります。
結論は
クロスチェーン DeFi や NFT から複数のブロックチェーン上で実行されるゲームに至るまで、CCIP はクロスチェーン スマート コントラクトの実現、すべてのブロックチェーンにわたる真の DeFi 構成可能性の実現、より統合された Web3 の実現を可能にします。
全てのコメント