IOGブログ, ニュース, ...

コンカレンシー(並行処理)とその他諸々 カルダノのスマートコントラクトとeUTXOモデル

以下はIOGうブログに掲載された記事「Concurrency and all that: Cardano smart contracts and the eUTXO model」を翻訳したものです。

コンカレンシー(並行処理)とその他諸々 カルダノのスマートコントラクトとeUTXOモデル

カルダノのeUTXOモデルは、システム障害を起こさずに複数のオペレーションを処理できる安全で汎用性の高い環境を提供します。

2021年9月10日 Olga Hryniuk 7 mins read

カルダノはUTXOベースのブロックチェーンであり、イーサリアム(Ethereum)のような他のアカウントベースのブロックチェーンとは異なる分散型アプリケーション(DApps)のプログラミングパラダイムを利用しています。eUTXOは、スマートコントラクトの実行コストの予測可能性(不愉快な驚きがないこと)を可能にするより高いセキュリティを提供し、その結果、並列化に対する異なるアプローチを提供します。

eUTXOはUTXO(ビットコイン)モデルのブランチごとの設計を継承しており、1つのブランチは定義上、一連の検証を必要とする一連のトランザクションです。ロジックを異なるブランチに分割し、より多くの並列性を確保するためには、複数のUTXOを使用してDAppsやその他のソリューションを構築することが不可欠です。これは、ビットコインサービスを開発する際に、1つのウォレットをサブウォレットに分割することが前提となっているように、スケーリングの面でメリットがあります。

カルダノで作られたDAppsは、1ブロックあたりのトランザクション数が1つに制限されません。実際、ブロックバジェット(ブロックが保持できるトランザクションの最大数)により、数百の単純なトランザクションや複数の複雑なスクリプトの実行が可能です。しかし、eUTXOモデルでは、1つのトランザクション出力を1回だけ使うことができます。ユーザーが同じUTXOにアクセスしようとすると競合の問題に直面する可能性があることを考慮すると、多くの異なるUTXOを使用することが重要です。これは、このような設計がクライアントの厳格な順序付けから恩恵を受ける場合を除いて重要であることに注意してください。UTXOのセットは、*セマフォ(semaphores)を含むデザイン パターンの実装に使用できます。さらに、異なるユーザーは、同時実行の失敗なしに1つのスマートコントラクトと対話できます。これは、スマートコントラクトが、現在の状態を構成する多数の異なるUTXOと、それらのUTXOを解釈できるオフチェーンのメタデータを扱うことができるためです。

*セマフォ(semaphores):セマフォとは、コンピュータで並列処理を行う際、同時に実行されているプログラム間で資源(リソース)の排他制御や同期を行う仕組みの一つ。 当該資源のうち現在利用可能な数を表す値のこと。By Google

並行して物事を進める

ブロックチェーンは、トランザクション処理の不変性と透明性を異なる方法で実現します。どのブロックチェーンシステムも、安全でありながら迅速な操作処理という、増え続けるニーズに応えるために、以下のような特性を備えている必要があります。

  • スループット – システムが一定の時間内に実行できる操作の数。例えば、1秒間に処理されるトランザクションやスマートコントラクトの数などがこれに該当します。
  • パフォーマンス – システムがどれだけ速く動作するか。パフォーマンスは、トランザクションまたはスマートコントラクトの実行時間を測定します。
  • スケーラビリティ(Scalability) – ネットワークに負荷をかけたり、パフォーマンスの特性に影響を与えたりすることなく、システムが複数の処理を実行する能力のこと。

並列性を高めることで、最終的には個々の処理の性能を維持したままシステムのスループットを向上させることができますが、このようなスケーラビリティは常にコンテンションの度合いによって制限されます。

スケーラビリティを考える際には、システムの特性として、同時性、並列性、競合性を区別します。並行性とは、複数のアクターがお互いに干渉することなく、あるタスクを進行させるために必要なものです。並列性とは、複数のアクターが互いに干渉することなく、同時にタスクを進行させることです。競合は、それらの複数のアクターが同時または並行して作業している間に、お互いに干渉する場合に発生します。

並行処理の理解

並行処理は、システムのパフォーマンス、スループット、または応答性を向上させる場合もあれば、そうでない場合もあります。並行処理の量は、実行可能な同時処理の最大数を制限します。

UTXOベースのブロックチェーンで実際のパフォーマンスを向上させるには、プロセッサや他のアクターが複数のアクションを同時に実行できる必要があります。並行性のレベルが高いほど、可能な最大の並列性が高くなります。このようなアプローチは、パフォーマンスの向上とスループットにつながります。また、(Ethereumのような)アカウントベースのシステムに比べて大きな利点があります。

UTXO台帳上でのDAppsの展開は異なる

DAppsの展開に対するカルダノのアプローチは異なるため、学習曲線と異なるアプローチが必要になります。これは、異なるプログラミング言語で作業するようなものです。ソリューションをデプロイするという1つの目標がありますが、この目的のために使用するプログラミング言語は非常に多くあります。

開発者は、状態の共有や偶発的な依存関係を避けるなどして、競合の機会を厳しく制限するようにコードを記述する必要があり、並行性を最大限に高めることは、習得すべき技術です。そして、システムはこの同時性を並列性に変換しなければなりません。すでに多くの開発者がこのアプローチ方法を確立していますが、他の開発者もまだソリューションを開発中です。あるブロックチェーンで学んだことをそのまま移植するだけではうまくいきません。学習曲線は多少急になりますが、結果を見れば価値があります。

いずれにしても、スケーラブルなDAppをカルダノ上で展開するためには、開発者はイーサリアムのコントラクトを適応したものを使うだけではダメだということを理解することが重要です。カルダノはUTXOモデルに基づいており、アカウントベースではありません。そしてこれは、単一のオンチェーンの状態では、カルダノ上での同時実行性の特性を満たさないことを意味します。代わりに、DAppsは多くのUTXOに渡って彼らのオンチェーン状態を分割する必要があります。これにより、アプリケーションの並行性が高まり、より高いスループットが可能になります。

私たちの教育チームは以前、Plutus PioneerコースでシンプルなAMMスタイルのDEXの実装を紹介しました。これは教育目的には有効ですが、このアーキテクチャは、オーダーブックアプローチや追加の同時実行性が必要な商用DEXを直接サポートするものではありません。カルダノのメインネットに展開しようとする開発者は、それに応じてアーキテクチャのスケーラビリティを改善する必要があります。

私たちは、最近のDjedステーブルコインの論文の中で解決策を提案しました。カルダノ上のDjed実装では、オーダーブックモデリングパターンが好まれています。オーダーメーカーは、ステーブルコインやリザーブコインの買い手または売り手となる各人に課される追加のインセンティブ料金を用いて、ステーブルコインのスマートコントラクトへの鋳造または燃焼オーダーを転送する責任があります。また、取引の一意性、提出された注文の正確性を保証し、フロントランニング攻撃を防ぐために、NFT(non-fungible token)を多用したいくつかのセキュリティメカニズムが使用されています。また、NFTトークンは、ミントやバーニングの注文が成功したか失敗したかを報告するためにも使用されています。これについては、近日中に詳細な記事を公開する予定です。

スケーラビリティについて詳しく知りたい方は、スケーラブルなPlutusアプリケーションを設計する方法を読み、オーダーブックパターンを使ってカルダノ上のDAppsを組織する方法を見つけてください。開発者はまた、eUTXOスマートコントラクトアーキテクチャに対する並行的かつ決定論的なアプローチを発表しており、これはHydra論文で紹介された並列ステートマシンのステップを一般化してマルチステップステートマシンを実現したものとみなされるかもしれない。他にも多くの開発者やコミュニティメンバーが、それぞれのアプローチをまとめた論文ビデオ、記事、Twitterの有用なスレッドなどを発表している。これは、プラットフォームの成熟度に応じてアプローチが標準化されていく中で、コミュニティが独自の革新的なソリューションを開発し続けていることを示す見事な教訓です。

今後の展開

アロンゾ(Alonzo)のハードフォークイベントでは、Plutus 1.0のコアビルディングブロックが紹介されます。これは、エコシステムの成長の始まりです。まだ初期段階ではありますが、アロンゾ(Alonzo)のテストネットにより、開発者はシステムの特性を評価し、スケーラブルなDAppsを事前に構築し、メインネットの立ち上げに備えることができます。すでに数十のプロジェクトがPlutus環境のローカルインスタンスで作業を行っています。メインのパブリックテストネットではスマートコントラクトが間もなくサポートされるため、今後数週間、数ヶ月の間に活動が大幅に活発化することが予想されます。今月末に開催されるカルダノサミット(9月25-26日)では、これらのプロジェクトの多くが紹介されるほか、スマートコントラクトのロードマップやテクノロジースタックの継続的な進化に関する重要なアップデートが行われます。開発者向けイベント、ハッカソン、そしてもちろんProject Catalystの成果は、この急成長する開発者エコシステムに新しいツールや抽象化をもたらし続けるでしょう。

あなたが開発者であれば、Discordコミュニティに参加し、プロジェクトの資金調達を検討しているのであれば、Project Catalystに参加するようにしてください。

Lars BrünjesJann MüllerManuel Chakravartyの各氏には、ブログ記事作成時に技術的なご意見やご支援をいただきました。

お問い合わせ

Contact Us
SIPOのステーキングサービス、Cardano ADA、ADAの購入方法から保管方法についてご興味、ご質問がある方はこちらのフォームからお問い合わせください。24時間以内にメールにてご返信いたします。