公链や Layer2 チェーンの数が増えるにつれて、資産や Dapp のクロスチェーンの需要も増加し、クロスチェーンブリッジは一般的な解決策の一つとなっていますが、Zetachain を代表とする Omnichain は全く異なる道を歩んでいます。本記事では Zetachain を例に、Omnichain がどのようにクロスチェーンルールをスマートコントラクトに書き込むことで、クロスチェーン相互運用性を実現しているのかを説明します。
いくつかのクロスチェーン技術ソリューション#
クロスチェーン(Cross-Chain)技術の核心的な目標は、異なるブロックチェーン間の相互運用性(Interoperability)を実現することです。相互運用性とは、異なるブロックチェーンシステムが互いに理解し、他方の資産(トークン、暗号通貨など)やデータを使用できること、または異なるブロックチェーンプラットフォーム上で動作するアプリケーションが互いに相互作用し、協力できることを指します。この目標の実現は、ブロックチェーンエコシステムの柔軟性と拡張性を大幅に向上させ、異なるブロックチェーンプラットフォーム間の孤立効果を打破し、より広範なアプリケーションと発展を促進します。
クロスチェーンメッセージの処理方法や対応する資産の署名承認方法の違いに基づいて、以下のいくつかの技術ソリューションに分類できます。
- クロスチェーンブリッジ(Cross-Chain Bridges):
クロスチェーンブリッジは、資産を一つのブロックチェーンから別のブロックチェーンに移転する技術です。これは、ソースチェーン上の資産をロックし、ターゲットチェーン上で対応する代表的な資産(または同等の資産)を発行することで実現されます。この方法は資産のクロスチェーン移転と使用をサポートしますが、資産のロックと解放のプロセスが安全で信頼できることを保証する必要があります。二つの独立したチェーンがブリッジ方式で相互運用性を持つ場合、一方のチェーンは他方のメインチェーンのサイドチェーンと見なされます。
2. 公証(Notary):
公証ソリューションは、一群の信頼できるノード(または機関)に依存してクロスチェーン取引の有効性を検証します。これらの公証ノードは、一つのチェーン上で発生するイベントを監視し、別のチェーン上で対応するトランザクションを作成してこれらのイベントを検証し記録します。この方法はクロスチェーン相互運用性を実現できますが、その安全性と分散化の程度は公証ノードの信頼性に大きく依存します。
3. ハッシュタイムロック契約(Hash Timelock Contracts, HTLCs):
HTLC は、時間ロックに基づくスマートコントラクト技術で、二つの参加者が第三者なしで安全にクロスチェーン交換を行うことを可能にします。これは、正しいパスワードを必要とする契約を作成することで実現されます。参加者の両方が契約の要求を履行した場合にのみ、資金が解放され、相手に渡されます。この方法は分散型の資産交換をサポートしますが、参加者の協力に一定の要件があります。
4. BoB(Blockchain on Blockchain、例えば Cosmos の IBC):
この技術ソリューションは、既存のブロックチェーン上に新しいブロックチェーン(またはレイヤー)を作成することでクロスチェーン相互運用性を実現します。例えば、Cosmos ネットワークの IBC(Inter-Blockchain Communication)プロトコルです。IBC は、異なるブロックチェーンが独立したガバナンス構造を維持しながら、資産とデータの安全な伝送を実現します。この方法は、各チェーンが自由に情報と価値を交換できる分散型のブロックチェーンインターネットを構築することを目指しています。
これらの技術ソリューションにはそれぞれ利点と欠点があり、異なるシナリオやニーズに適しています。クロスチェーン技術の選択と実装は、ターゲットブロックチェーンの特性、安全性の要件、分散化の程度、実現の複雑性などの要因を考慮する必要があります。
クロスチェーンメッセージ伝達#
クロスチェーンメッセージ伝達(Cross-Chain Message Passing, CCMP)は、クロスチェーン相互運用性を実現するための核心技術であり、クロスチェーン相互作用のプロセスが安全かつ効果的に行われることを保証します。その基本的な目的は、異なるブロックチェーン間でメッセージを伝達し、検証することで、資産とデータのクロスチェーン相互作用を実現することです。その作業原理は主に以下のいくつかの重要な段階を含みます。
1. メッセージの生成と送信:
- メッセージには通常、資産移転に関するすべての必要な情報が含まれます。例えば、資産の数量、ソースアドレス、目的アドレスなどです。
- メッセージが生成された後、ソースチェーンのスマートコントラクトを介して送信され、この契約は取引の詳細を記録し、資産のロックをトリガーします。
2. メッセージの伝達:
- 伝達方法には通常二つの種類があります:直接伝達と中継伝達です。
- 直接伝達は、ソースチェーンとターゲットチェーンの間に直接の通信経路があることを意味しますが、これは実際には非常に稀です。なぜなら、ほとんどのブロックチェーンは独立して運用されているからです。
- 中継伝達は、中継者(中央集権的なサービスプロバイダーまたは分散型のノードネットワーク)を含み、これらはソースチェーン上の特定のイベントを監視し、関連情報をキャッチし、これらの情報をターゲットチェーンに伝達します。
3. メッセージの検証:
- ターゲットチェーン上で受信したメッセージは、その合法性と完全性を確認するために検証される必要があります。
- 検証プロセスには通常、ソースチェーンのデータ証明(Merkle 証明など)が必要で、これらの証明はメッセージが実際にソースチェーンから来たことを証明し、改ざんされていないことを確認します。
- 検証が通過すると、ターゲットチェーン上のスマートコントラクトはメッセージの内容に基づいて対応する操作を実行します。例えば、トークンを鋳造したり、状態を更新したりします。
4. 処理と応答:
- 検証が完了すると、ターゲットチェーンは資産の解放や新しいトークンインスタンスの作成など、必要な操作処理を行います。
- このステップが完了すると、クロスチェーン相互作用は基本的に完了し、ユーザーはターゲットチェーン上で資産を使用または管理できます。
したがって、本質的には、前述のいくつかのクロスチェーン技術ソリューションは、異なるメッセージ伝達方法を採用しているために生じています。
1. クロスチェーンブリッジ
クロスチェーンブリッジは、異なるブロックチェーン間で資産と情報の移転を促進するために中介層を作成します。この中介層は次のようになります:
- 中央集権的なサーバーで、信頼できる実体が制御し、一つのチェーン上のイベントを監視し、別のチェーン上でこれらのイベントを複製する責任を負います。
- 分散型ネットワークで、複数の独立して運営されるノードで構成され、これらのノードは合意メカニズムを通じてメッセージを検証し、転送します。
クロスチェーンブリッジでは、通常、ソースチェーンでの資産のロックとターゲットチェーンでの同等資産の鋳造が関与します。このプロセスでは、メッセージが検証および実行される前に改ざんされないことを保証する必要があります。
2. 公証人
公証ソリューションは通常、事前に選定された公証人(個人、組織、または自動化されたノード)に依存し、これらの公証人は一つのチェーン上のイベントを監視し、別のチェーン上でこれらのイベントを検証および確認します。公証人は、中央集権的または半中央集権的な検証メカニズムを提供し、このメカニズムの安全性と信頼度は公証人の信頼性に大きく依存します。
3. ハッシュタイムロック契約(HTLC)
HTLC は、二つのチェーン間の条件付き資産交換に使用される暗号技術に依存した契約です。これは、暗号ハッシュ関数と時間ロックを使用して資産の解放条件を制御します:
- 暗号ハッシュ:受取人が正しいプレイミス(ハッシュの元データに対応)を提供した場合にのみ、資産が契約から解放されます。
- 時間ロック:指定された時間内に正しいプレイミスが提供されない場合、資産は元の保有者に戻されます。
この方法は中央集権的な検証に依存せず、契約自体が資産の安全な交換を保証します。
4. BoB
この技術は、クロスチェーン通信プロトコルに基づいて新しいチェーンまたはサブチェーンを作成することによって実現されます。例えば、Cosmos は IBC プロトコルを通じて異なるブロックチェーン間の直接通信を実現し、各チェーンはその自治性を維持しながら、安全にメッセージと資産を交換できます。IBC と XCMP の本質は実際にはクロスチェーン通信プロトコルです。
同時に CCMP 技術は、いくつかの主要な課題にも直面しています:
** 安全性:** 中継ノードまたはネットワークは信頼できる必要があり、そうでなければメッセージが改ざんされるリスクがあります。さらに、ソースチェーンとターゲットチェーンのスマートコントラクトも十分に安全に設計される必要があります。
** 効率と遅延:** クロスチェーン操作は通常、複数のブロック確認を含むため、顕著な時間遅延を引き起こす可能性があります。
** 分散化と信頼の問題:** 中継ノードや第三者サービスに依存することは、ブロックチェーンの分散化の精神に反する可能性があるため、分散化かつ安全な CCMP メカニズムの設計は技術的な課題です。
これらの技術的および安全上の課題により、CCMP の実現と最適化はクロスチェーン技術の研究と発展の活発な分野となっています。さまざまな解決策は、分散化、安全性、効率の間で最適なバランスを見つけようとしています。
クロスチェーン資産の署名と承認#
クロスチェーン技術とクロスチェーン相互運用性は、クロスチェーンメッセージ伝達(CCMP)に依存するだけでなく、ソースチェーンとターゲットチェーン上で効果的な署名と承認を行う方法にも関与しています。これにより、資産の安全な処理と取引の合法性が確保されます。異なるクロスチェーン技術ソリューションは、異なる署名と承認メカニズムを採用しており、これらのメカニズムの核心は、取引の合法性を検証し、実行する方法、そして資産の安全な移転を確保することにあります。以下は、いくつかの一般的なクロスチェーン技術ソリューションにおける署名承認の実装についてです。
1. クロスチェーンブリッジ
クロスチェーンブリッジは、多署名(Multisignature)または代理署名(Proxy Signature)を使用して署名と承認を処理することがあります。このソリューションでは、資産を移転する操作には、一定数の検証ノードまたは特定の代理サービスの承認が必要です。これらのノードやサービスは、取引要求の検証を担当し、取引に署名します。この方法は安全性を高めることができますが、信頼の問題も引き起こします。なぜなら、これは中央集権的または半中央集権的な実体に依存するからです。
2. 公証人
公証人システムでは、公証人または公証ノードの集合が通常、クロスチェーン取引要求を監視し、検証し、ターゲットチェーン上で対応する操作を実行します。公証人は、ターゲットチェーン上で操作に署名承認を行い、ソースチェーン上の取引が許可されていることを証明します。この方法は公証人の信頼性と安全性に依存します。
3. ハッシュタイムロック契約(HTLC)
HTLC では、署名承認は外部の検証者や中介に依存しません。むしろ、取引の合法性と実行は契約の論理と参加者間の直接的な相互作用に依存します。参加者は、契約を解除する方法として正しいプレイミス(つまり鍵)を提供します。これ自体が一種の承認です。さらに、契約自体には時間ロックメカニズムが備わっており、特定の時間ウィンドウ内に正しいプレイミスが提供されなければ取引は完了しません。
4. BoB
例えば、Cosmos の IBC プロトコルでは、署名承認プロセスはチェーン間プロトコルとローカル契約の実行を通じて行われます。各チェーンは独自に安全性と承認メカニズムを管理し、プロトコルを通じてクロスチェーンメッセージの安全性と有効性を確保します。このソリューションは分散化と自治を強調し、単一の実体への依存を減少させます。
要するに、署名承認メカニズムは異なるクロスチェーン技術ソリューションにおいて、その構造と安全要件に応じて異なります。これらのメカニズムの選択と設計は、安全性、信頼、分散化、効率のバランスを取ることにかかっています。クロスチェーン技術を実装する際には、すべての参加チェーンの合法性と安全性を確保することが不可欠です。
Zetachain のアーキテクチャ#
もし DeFi が金融ルールをスマートコントラクトに書き込むことであり、オンチェーンゲームがゲームルールをスマートコントラクトに書き込むことであるなら、Omnichain は実際にはクロスチェーンルールをスマートコントラクトに書き込むことです。これにはクロスチェーンメッセージ伝送ルールと資産の署名承認ルールが含まれます。Zetachain がどのようにこれを実現しているのか、詳細を見ていきましょう。
ZetaChain は、Cosmos SDK と Tendermint PBFT コンセンサスエンジンに基づいて構築された PoS ブロックチェーンです。Tendermint PBFT コンセンサスエンジンを使用することで、ZetaChain は約 5 秒の迅速なブロック生成時間と即時の最終確定性(ブロック確認なし、再編成を許可しない)を実現できます。理想的なネットワーク条件下では、取引スループットは毎秒 4000 以上の取引に達する可能性がありますが、クロスチェーン取引のスループットは外部チェーンの遅延やその他の要因(外部ノード RPC の速度など)によってこのレベルに達しない可能性があります。
ZetaChain のアーキテクチャは、ノードで構成された分散型ネットワークを含んでおり、これらのノードは通常、バリデーター(validators)と呼ばれます。ZetaChain の各バリデーターは内部に ZetaCore と ZetaClient を含んでいます。ZetaCore はブロックチェーンを生成し、複製された状態機械を維持する役割を果たし、ZetaClient は外部チェーン上のイベントを監視し、外部取引に署名します。ZetaCore と ZetaClient は一緒にパッケージ化され、ノードオペレーターによって運営されます。誰でも十分な ZETA トークンをステーキングすればノードオペレーターになり、検証作業に参加できます。
したがって、ZetaChain のバリデーターが ZetaCore コンポーネントのみを実行する場合、それはシーケンサー(sequencer)になります。ZetaClient コンポーネントのみを実行し、外部チェーン上のイベントを監視するだけの場合、それはオブザーバー(observers)になります。ZetaClient コンポーネントのみを実行し、外部取引に署名する場合、それはサイナー(signers)になります。
ZetaChain はまた、外部チェーンとの認証インタラクションに使用される標準の ECDSA/EdDSA キーを集団で保持しています。これらのキーは複数のサイナー(signers)に分散されており、スーパーメジャーサイナーのみが ZetaChain を代表して外部に署名できます。ZetaChain は、バインドされたステーキングと正 / 負のインセンティブメカニズムを使用して経済的安全性を確保しています。
Zetachain の二つのクロスチェーン相互運用メカニズム#
Zetachain は二つのクロスチェーン相互運用メカニズムをサポートしています。一つは従来のクロスチェーンブリッジメカニズムで、もう一つは Omnichain スマートコントラクトメカニズムです。
クロスチェーンブリッジメカニズム#
まず、クロスチェーンブリッジメカニズムの作業フローを見てみましょう。全体のプロセスは主に以下のいくつかのステップを含みます:
**1. ユーザーと契約の相互作用:** ユーザーはチェーン A の契約 C1 上で操作を行い、ユーザーが指定した [chainID, contractAddress, message] を含むイベントまたは取引メモを残します。このメッセージはバイナリ形式でエンコードされたアプリケーションデータです。
**2. オブザーバーがイベントをキャッチ:**ZetaChain のオブザーバー(zetaclient 内)はこのイベントまたはメモをキャッチし、zetacore に報告します。zetacore は入ってくる取引を検証する責任を負います。
**3. アウトバウンド取引の構築:**zetacore は CCTX(クロスチェーン取引)状態変数と OutboundTxParams を修正し、TSS サイナー(zetaclient 内)に指示して外部取引を構築、署名、ブロードキャストします。
**4. 署名とブロードキャスト:**zetaclient の TSS サイナーは CCTX 内の OutboundTxParams に基づいてアウトバウンド取引を構築し、TSS キー署名儀式を行い、署名された取引を外部ブロックチェーンにブロードキャストします。
**5. 状態の更新と追跡:**CCTX 構造はクロスチェーン取引の各段階 / 状態を追跡します。
**6. 取引確認:** 一旦ブロードキャストされた取引があるブロックチェーンに含まれると(つまり「マイニング」または「確認」されると)、zetaclient はこの確認状況を zetacore に報告し、その後 CCTX 状態を更新します。
7. 成功と失敗の処理:
- 外部取引が成功した場合、CCTX 状態は OutboundMined に変わり、CCTX 処理は完了し、最終状態に入ります。
- 外部取引が失敗した場合(例えば、イーサリアムチェーン上で取り消された場合)、CCTX 状態は PendingRevert(可能な場合)または Aborted(取り消しが不可能な場合)に更新されます。Aborted 状態に入ると、CCTX 処理は完了します。
8. 取り消しの処理:
- 新しい状態が「PendingRevert」の場合、CCTX にはすでに第二の OutboundTxParams が含まれている必要があり、zetaclients は入ってくるチェーンと契約に戻る「Revert」アウトバウンド取引を作成するよう指示します。これにより、入ってくる契約はアプリケーションレベルの取り消し機能を実現し、契約状態をクリーンアップできます。
- zetaclients は取り消し取引を構築し、TSS キー署名儀式を行い、取引を入ってくるブロックチェーン(この例ではチェーン A)にブロードキャストします。
9. 取り消し確認:
- 取り消し取引がチェーン A で「確認」されると、zetaclients は取引状態を zetacore に報告します。
- 取り消し取引が成功した場合、CCTX 状態は Reverted に変わり、処理が完了します。
- 取り消し取引が失敗した場合、CCTX 状態は Aborted に変わり、処理が完了します。
上記のステップから、クロスチェーンメッセージの伝達は主に ZetaCore と ZetaClient の内部通信を通じて完了し、中心化された方法で行われており、Zetachain 自体のスマートコントラクトは使用されていません。ターゲットチェーンのスマートコントラクトのみが使用されています。この場合、ターゲットチェーンがイーサリアムのようなスマートコントラクトプラットフォームである必要があり、各チェーンはクロスチェーン相互運用性を達成するために少なくとも一つの契約をデプロイする必要があります。ビットコインのような非スマートコントラクトプラットフォームでは使用できません。もう一つ、アプリケーションの状態とロジックは、これらのアプリケーション契約全体に分散して存在します。異なるチェーン間での状態の同期と通信は高価で遅く、ロールバック処理が複雑になります。これらの問題を解決するために、Zetachain は Omnichain スマートコントラクトメカニズムを導入しました。
Omnichain スマートコントラクトメカニズム#
Omnichain スマートコントラクトは、ZetaChain が提案するクロスチェーン相互運用性処理を簡素化する方法です。これは主に以下のステップを通じてクロスチェーンメッセージを処理し、クロスチェーン相互運用性を実現します:
**1. 資産の受信:** ユーザーはローカル資産(ERC20 トークンなど)をチェーン A の TSS アドレスに送信し、同時に [zEVMContractAddress, message] を指定するメッセージを添付します。ここでの TSS アドレスは、ERC20 トークンをホスティングするために特別に設計された契約である可能性があります。
**2. 監視と報告:**ZetaChain のオブザーバー(zetaclients)は、このクロスチェーン呼び出しが行われることを監視し、zetacore に報告します。
**3. 呼び出しと実行:**zetacore は SystemContract のdepositAndCall()
関数を呼び出し、この関数は指定された zEVMContractAddress のonCrossChainCall()
関数を呼び出します。この呼び出しの過程で:
- zrc20
パラメータは、ユーザーが第一ステップで送信した外来トークンの ZRC20 契約アドレスで埋められます。
- amount
パラメータは、ユーザーが送信したトークンの数量で埋められます。
- message
パラメータは、ユーザーが取引メモで送信したメッセージになります。
**4. 契約ロジックの実行:**omnichain スマートコントラクトは、zContract(zEVMContractAddress).onCrossChainCall(zrc20, amount, message)
の方法で呼び出されます。アプリケーション契約はonCrossChainCall()
関数内でそのビジネスロジックを実装する必要があります。
5. 契約実行結果の処理:
- 契約実行が成功し、外部資産の出力がない場合、この omnichain スマートコントラクトの相互作用は完了します。
- zEVM 契約の実行が失敗した場合(ロールバックが発生した場合)、CCTX が作成され、入ってくる取引を取り消し、同じ数量の外来トークンがユーザーに返却されます(可能な手数料を差し引いて)。
- onCrossChainCall()
に出力がある場合(例えば、いくつかの ZRC20 の引き出し操作をトリガーした場合)、外来資産を外部チェーン上のユーザー指定のアドレスに転送するための別の CCTX が作成されます。これらの引き出しは通常、単純なトークン転送です。
Omnichain スマートコントラクトの顕著な特徴は:
-
それは zEVM 上にのみデプロイされ、すべてのロジックと状態が一箇所に集中しているため、アプリケーションの開発と保守が簡素化されます。
-
外部チェーン上にアプリケーションスマートコントラクトをデプロイする必要がないため、ビットコインのような非スマートコントラクトチェーンをサポートできます。
-
すべての取り消し操作が ZetaChain プロトコルによって処理されるため、アプリケーション契約は取り消しロジックを処理する必要がありません。
一言で言えば、ZetaCore と ZetaClient 間の内部通信で必要な情報を除いて、他のクロスチェーン情報の処理ルールは Zetachain 自体のスマートコントラクトに書き込まれています。ユーザーがターゲットチェーンの指定アドレスに追加メッセージを添えた送金を行うことで、Zetachain 自体のスマートコントラクト内のクロスチェーン操作がトリガーされます。
より複雑な dApp は、ロジックと状態が一箇所に集中しているため、Omnichain スマートコントラクトを好むかもしれません。一方、従来のメッセージ伝達では、異なるチェーン上でメッセージと状態の同期をブロードキャストする必要があり、これが攻撃面を増やし、より多くの Gas 費用を引き起こす可能性があります(各メッセージには追加の Gas が必要で、完全な状態同期を維持するために送信するメッセージの数が増加します)。言い換えれば、開発者にとって、Omnichain スマートコントラクトの動作は、すべての資産が一つのチェーン上にあるかのように見えます(下図参照)。
Zetachain の署名承認メカニズム#
ZetaChain の署名承認メカニズムは、先進的なマルチパーティ閾値署名スキーム(Threshold Signature Scheme, TSS)に依存しており、このスキームは単一障害点の問題を効果的に解決し、システム全体の安全性を強化します。
**1. 閾値署名スキーム:**ZetaChain は、マルチパーティ計算(Multi-Party Computation, MPC)に基づく TSS を使用しており、このスキームは複数のバリデーター(validators)が単一の ECDSA/EdDSA 秘密鍵を共同管理できるようにしますが、いかなる単一の実体や少数のバリデーターも秘密鍵を完全に把握することはありません。この方法は、ホットウォレットの利便性とコールドウォレットレベルの安全性を提供します。
**2. 鍵生成と配布:**ZetaChain では、秘密鍵は信頼できる中介なしで生成され、すべてのバリデーター間で配布されます。これは、単一のバリデーターや外部の行為者がいつでも完全な秘密鍵にアクセスできないことを意味し、システムの安全性を確保します。
**3. 署名プロセス:**ZetaChain が採用する TSS はリーダーレスであり、分散方式で鍵生成と署名を行います。これにより、鍵生成や署名プロセス中に秘密情報が漏洩しないことが保証されます。効率を高めるために、ZetaChain はバッチ署名と並列署名技術を採用し、署名者のスループットを向上させています。
**4. スマートコントラクトと資産管理:**TSS 鍵とアドレスを持つことで、ZetaChain は接続されたチェーン上でローカルの金庫 / 資金プールを管理でき、ビットコインなどの非スマートコントラクトチェーンも含まれます。これは実際にビットコインネットワークなどにスマートコントラクト機能を追加し、ユーザーが資産を集約し、スマートコントラクトが事前に設定されたルールに基づいてこれらの資産を管理できるようにします。例えば、自動化市場作成者(AMM)プールや貸出プールなどです。
**5. 非スマートコントラクトチェーンのサポート:**TSS により、ZetaChain はビットコインやドージコインのような非スマートコントラクトチェーンをサポートし、マルチ署名のコストが高いスマートコントラクトプラットフォームを検証することができます。
この署名承認メカニズムを通じて、ZetaChain は強力なクロスチェーン機能を提供するだけでなく、取引の安全性と検証の分散化を確保し、広範なデジタル資産管理と操作をサポートする強力なプラットフォームとなっています。