TL;DR ZetaChainの革新的なトランザクションモデルでは、UTXOのシンプルさとセキュリティーを、アカウントベースの表現力と組み合わせています。このハイブリッドデザインにより、クロスチェーンのメッセージパッシングと、外部チェーンの状態と直接対話できるネイティブなOmnichainスマートコントラクトの両方が実現します。
私たちが手掛けた広範な内容の [analysis of the blockchain interoperability market(ブロックチェーンの相互運用性市場の分析)] では、汎用的なプログラマビリティーの実現を目指すいくつかのブロックチェーンプロジェクトおよび提案について言及しています。問題は、これらのプロジェクトが程度の差こそあれ中央集権的であることや、疑わしいトラストモデルを利用していることです。そのため、暗号通貨エコシステムでは、Omnichainの相互運用性を実現するためのパブリック型、パーミッションレス型、非中央集権型のアプローチに大きな隔たりが生じています。ZetaChainは、初のインセンティブ付きパブリックブロックチェーンおよび汎用クロスチェーンスマートコントラクトプラットフォームを実現するパイオニアです。このような壮大な主張は、クロスチェーンのdAppをサポートするブロックチェーンの「簿記」メカニズムの限界と、非同期の課題について、大きな疑問を多く招くものです。本稿では、Zeta Virtual Machine(ZVM)を備えたZetaChainのハイブリッドトランザクションモデル設計の裏側を見ることを通じて、これらの2つのトピックを取り上げることにします。
汎用的なOmnichainスマートコントラクトに対応するには、いくつかの重要な課題を克服する必要があります。1つ目は、異種チェーン間の通信は本質的に非同期であるということです。イーサリアム仮想マシン(EVM)のような単一チェーン上のスマートコントラクトとは異なり、別のチェーンの状態への問い合わせや変更は、外部チェーンからのメッセージ(観測)をトリガーとして行います。この種のクロスチェーンスマートコントラクトのトランザクションモデルは、有限ステートマシンと考えるのが最も適切でしょう。
2つ目の課題は、ブロックチェーンのプログラミングモデルで、これはスマートコントラクトがメッセージ、データ、価値をどのように転送するかに影響します。歴史的に、ブロックチェーン上で状態を記録・変更するための主な「簿記」モデルは2つあります。ビットコイン、エルゴ、カルダノなどで使用されているUTXO(未使用トランザクション出力)と、EVMで使用されているアカウントベースがそれに当たります。それぞれの概要を簡単に説明します。
Figure 1: UTXO vs. Account-based models: network state visualization
これらのモデルの重要な違いは、その表現力にあります。アカウントベースのモデルは計算機的な性質があるため、その表現力は、計算機というよりは検証モデルとして考えることができるUTXOベースのスクリプトの表現力よりも高くなります。しかし、UTXOベースのスマートコントラクトは一般的に、よりシンプルで堅牢、かつストレージと計算の効率が高く、UTXOの制限により攻撃対象領域が小さくなっています。実例として、ビットコインのスクリプトに意図しないセキュリティーバグが存在することは非常に稀ですが、イーサリアムのスマートコントラクトでは数百万ドルのエクスプロイトが知られています。また、ビットコインの場合、UTXOの鍵の不変性を暗黙に強制することにより、トランザクションの入力総額=出力総額となり、二重使用の問題が解消されます。つまり、アカウントベースのプログラミングの表現力は、複雑なdApp(AMM、ICOなど)を容易に作成することを可能にしますが、その代償としてセキュリティーが低下してしまうのです。
非中央集権型の汎用クロスチェーンスマートコントラクトプラットフォームを提案するのであれば、取り組まなければならない課題があります。UTXOモデルを拡張して、UniswapスタイルのAMM DEXなどの人気のdAppをサポートできる程度にまで表現力を高めつつ、シンプルさと安全性を保つにはどうすればいいのでしょうか?
このジレンマを解決するために、いくつかの先進的なプロジェクトが試みられています。エルゴは拡張UTXO(eUTXO)モデルの先駆けとなり、カルダノもこれに続きました。これらのeUTXOプラットフォームでは、AMMペアの状態をUTXOに保持することで、ある程度までAMM DEXを実装することができますが、深刻な問題がないわけではありません。1つのブロックでは1つのトランザクションしかUTXOを使用して新しいトランザクションを作成できないため、ブロックを継承できるのは1つのトランザクションのみとなります。その結果、完了済みトランザクションが共通のUTXOを使用しようとすると失敗するため、1ブロック待って新しいUTXOを使用しなければならず、UTXOの輻輳が発生します。これではあまり最適とは言えません。
ZetaChainは、UTXOとアカウントベースのハイブリッドアプローチを採用することで、それぞれの長所を組み合わせています。基本的には、UTXOを使用して外部ブロックチェーンのトランザクションを表現・追跡し(合成UTXOとして扱われます)、アカウントベースのスマートコントラクトをロジックと共有グローバルステートを管理するために使用しています。UTXOには、ZETAコインの金額(焼却済み)、他のコインの金額(例えば、ZETAコインの発行が不可能なビットコインネットワーク上のBTC)、スクリプトmsg(イーサリアム上のメッセージまたは関数呼び出しにほぼ相当)が含まれています。合成UTXOモデルは、UTXOの主な制約であるスクリプトの表現力、および特定の重要なアプリケーションにおける扱いにくさ(AMMにおける、ブロックごとに1つのトランザクションという制限)を回避しながら、説明責任、シンプルさ、そして拡張性の利点を、ZetaChainで実現することができます。
ZetaChainのハイブリッドなUTXO-アカウントフロー(図2)を見てみましょう: