以下はIOGブログに掲載された記事「Optimizing Cardano」を翻訳したものです。
カルダノの最適化
ネットワーク最適化への道は、段階的なステップバイステップの調整にある
By Tim Harrison 2021年11月10日
カルダノの最適化
プルーフ・オブ・ステークのブロックチェーンであるカルダノは、高い安全性とネットワーク障害への耐性を備えています。Ouroborosコンセンサスアルゴリズム、形式手法を使用した内蔵のHaskell、査読付きの学術研究によって駆動されるカルダノは、分散化された高度にスケーラブルな方法で、グローバルに何百万ものトランザクションを処理するための磐石の環境を提供するように設計されています。
前回のブログ記事では、ネットワークパフォーマンスについて説明しました。これは、トランザクションの処理、検証、署名を行う際に、システムが全体としてどのように機能するかということです。長期的に使用できるシステムを構築するためには、初期の設計段階でこの点を正しく理解することが重要です。しかし、ネットワークの容量は貴重な資源であり、最も効率的なパフォーマンス指標を得るためには、計算、メモリ、ストレージ、ネットワークのリソースを効果的に消費することが不可欠です。
カルダノは柔軟に対応できるように作られています。スループットを最大化しつつ、需要の増加にも対応できるように設計されています。ネットワークの成長に伴い、価格変動に合わせてプロトコルのパラメータを調整し、スケーラビリティとスループットの特性を拡張しています。それでは、今後どのようにしてネットワークのパフォーマンスを最適化していくのか、詳しく見ていきましょう。
Defining congestion:混雑の定義
ネットワークから道路に至るまで、効率的なシステムは、混雑を最小限に抑えつつ、混雑が起きたときに効果的な管理ができるように構築されています。ブロックチェーンの用語では、混雑とは、ネットワークが過飽和状態になり、大量のトランザクションの処理や関連ブロックへの署名が困難になることを意味します。これは、一般的にネットワークが混雑しておらず、さらに大量のトランザクションを処理するための大きな余力があることを示しています。
カルダノは、飽和状態であっても公正で高い回復力を持つように設計されている。それでは、現在のパラメータ設定を思い出しながら、今後予定されている最適化について見ていきましょう。現在のパフォーマンス指標は、以下の指標に依存しています。
- スループット:転送されたデータの量。現在のブロックサイズは64KBに設定されています。現在、Plutusスクリプトの1つのトランザクションは16KBに制限されており、単純なトランザクションは通常約300バイトになります。これらの措置は、トランザクションの遅延を最小限に抑えつつ、ネットワークを良好に利用できるようにバランスが取られています。大幅かつ一度に増加した場合、ユーザーはブロック採用時間の遅延が大きくなります。これは、スループットと適時性が互いに緊張関係にあるためです。スループットを最大化することは、ネットワーク性能の向上を意味しますが、システムが大きく飽和した場合には、遅延の増加という代償を払うことになります。
- 適時性:すなわち、ブロック採用時間です。ブロック採用のための総「予算」は、ブロックがネットワークを伝搬するのに5秒と設定されています(賭けの95%)が、Plutusスクリプトには約50ミリ秒の予算が用意されています。これは、ブロックが独占されることなく、スクリプトと単純な取引の両方を含めることができるように設計されています。
最近、ユーザーはトランザクション処理の待ち時間の増加を記録しましたが、これはNFT(non-fungible token)の大量ドロップが原因でした。これは、一度に大量のNFTが放出されたことにより、以下のような現象が発生したことが原因です。
- 大量のNFTが同時に取引されたこと
- 複数のユーザーが同じNFTを購入しようとして、同時に取引を処理しようとしたこと
- NFTを購入できなかったユーザーへの返金処理が同時に発生する
このシナリオにより、NFTの販売にネットワーク上の希少性が生じ、サービスに対する需要が供給量の43,000%という大きなものになりました。また、「混雑」した時間は1時間にも満たなかったことも注目に値します。
これは成長中の市場であり、NFTのクリエイターたちは、このようなドロップがユーザーエクスペリエンスに与える影響を最小限に抑えるために、すでにプロセスを繰り返し始めています。まだ始まったばかりですが、私たちは皆、早く学んでいます。なお、NFTの鋳造プロセスは完全に並列化可能であり、このプロセスには制限がありません。鋳造されたNFTには、取引に必要なプログラム可能なスワップコードと資産が格納されており、市場での取引が可能になります。
しかし、少なくとも短中期的には、これは道路を拡張するのではなく、より効率的な交通システムを構築することに他なりません。すでに一部の開発者は、NFTドロップ専用にそのようなシステムを製作しており、短期的なネットワーク負荷だけでなく、コストも削減できるはずです。
分散型取引所(DEXs)
カルダノ上で構築されている初期のDAppsの多くは、DEXsまたは分散型取引所(Decentralized Exchanges)です。そして、いくつかのアプリケーションでは、ユーザーが注文をする際に競合が発生する傾向があります。DAppの設計では、全体の状態が(複数のUTXOに分散するのではなく)1つのUTXO内に保持されることが前提となっているため、将来の取引が以前の取引からの出力に依存することが発生します。これは広く「同時実行性の問題」と呼ばれています。しかし、自動車に例えれば、イギリスや日本で左側通行が問題になるのと同じように、「問題」ではありません。勉強は必要ですが、最終的にはやり方が違うだけです。もし開発者がそれをしなければ、問題が発生するでしょう。また、本質的に複雑というわけではなく、異なるアプローチが必要なだけです。
カルダノのEUTXOモデルは、アカウントベースのモデルとは異なります。カルダノ上で構築されたDAppは、シングルスレッドのステートマシンのスタイルから脱却し、抽象度を下げて直接 EUTXOにたどり着き、 EUTXOグラフのコンカレントエッジを含むソリューションを構築する必要があります。重要なのは、異なるセットのUTXOを使用することで並列性を確保し、個々のオペレーションのパフォーマンスを維持しながらシステムのスループットを向上させることです。確かに、Ethereumのアプローチに慣れている開発者にとっては、考え方の転換が必要です。しかし、UTXOベースのモデルはアカウントベースのモデルよりも安全です。なぜなら、すべての状態を1つのアカウントに保つことは、攻撃に対してより脆弱だからです。並列処理技術を正しく使えば、ユーザーはスループットとスケーラビリティの面で改善された結果を得ることができますが、UTXO台帳にはオフチェーンソリューションの方が適しています。詳細については、並行処理に関するブログ記事や、スケーラブルなPlutus DAppの構築方法をご覧ください。このモデルを最大限に活用するためのガイダンスを提供するために、この件に関するコンテンツを順次公開していきます。
最適化のロードマップ
発売当初、私たちが重視していたのは、最適化を行う前に、中核となる機能と正確性を提供することでした。これは常に私たちが掲げている目標でもあります。我々は、パフォーマンスとベンチマークの調整を継続的に監視しています。ネットワークが成長し、カルダノがより高い能力で機能するようになると、ネットワークの需要に合わせてパラメータ化を調整していきます。これらは段階的なアップグレードで、変更がネットワークの要求を満たし、さまざまな特性を損なうことがないように、今後数ヶ月にわたって段階的に実施していきます。
私たちは広範な分析を行い、データ拡散時間を正確に測定するノードメトリクスの実装を開始しました。データ拡散とは、ブロックチェーンを検証するノードにトランザクションとブロックを分配するプロセスのことです。コンセンサス・アルゴリズムが判断を下すためには、ノードに必要な情報を提供することが不可欠です。
私たちは、トランザクションの送信からトランザクションの採用までの平均的な待ち時間を実装することになりそうです。それとともに、短期的・長期的にネットワークのパフォーマンスを反復的に高めるシナリオを調査・分析しており、以下のようなものがあります。
- ブロックサイズの拡大:ブロックサイズの拡大は、1ブロック内のトランザクション数の増加を意味します。ブロックサイズを大きくすると、ブロック内のトランザクション数が増えるため、ネットワークが飽和状態になっても、ブロック内のトランザクションが採用されるまでの待ち時間が短くなるというメリットがあります。しかし、これにはトレードオフがあります。大きなブロックは、ネットワークを伝播するのに時間がかかります。これは、ノードが取引を検証するのに時間がかかることを意味します。ブロックサイズの増加は、ネットワークのパフォーマンスを向上させるための選択肢の1つですが、このような変更は慎重に行う必要があります。ブロックサイズの拡大によってブロック採用時間が損なわれないよう、パラメータを徐々に変更し、飽和状態の高い時期に結果を評価します。これはワンステップの更新ではなく、反復的なアプローチで、明確な結果を提供し、最も効率的な調整を実現するのに役立ちます。
- Mempoolのサイズ:現在、mempoolのサイズは128KBに設定されており、これは現在のブロックのサイズの2倍にあたります。mempoolはネットワークバッファとして機能するため、トランザクションをブロックに含める際に短い遅延が発生する可能性があります。ただし、mempoolのサイズを大きくしてもネットワークのスループットは向上しません。トランザクションのキューはそのままです。メムプールは、抽選アルゴリズムで選ばれた生産ノードに基づいてランダムに入力される新しいトランザクションを公平に採用することができます。
- スクリプトの圧縮:現在のトランザクションサイズが16KBに設定されていることを踏まえ、圧縮の作業を継続しています。開発者は、より洗練されたコードを16KB以下に圧縮して送信することができるようになり、他のトランザクションのためのスペースがより多く確保されます。
EUTXOのためのアーキテクチャー
前回の同時実行ブログ記事で紹介したように、カルダノのEUTXOモデルは、DeFiアプリケーションを設計する際の問題点を一挙に解決します。EUTXOはトランザクションを並列に処理するネイティブな機能を備えていることに加えて、このモデルの決定論的な性質により、開発者とユーザは無駄な「ガス」を避けることができます。
とはいえ、EUTXOモデルはアカウントベースのモデルと同じではない。アカウントベースのシステムで意図されたアプリケーションアーキテクチャをEUTXOベースのシステムに持ち込んで移行すると、最適ではないアプリケーション設計になってしまいます。CardanoのEUTXOモデルに特化して設計されたアプリケーションは、最高のユーザー体験を提供します。
開発者がどのようにして注文の送信と処理をEUTXOモデルに最適化するかについては、近日中に技術的な詳細を発表します。
イテレーションと改善
このように、私たちは進化と反復を続けながら、舞台裏で多くの作業を行っています。ネットワークのパフォーマンスを継続的に評価し、それに応じてパラメータを調整しながら進めていきます。短期的には、賭け金の分配と報酬の分配の計算をより均等に行うことで、NFTのドロップの混雑を緩和することができるでしょう。これにより、ブロックサイズを大きくし、エポック境界での一時停止や輻輳を解消し、(ブロックの伝播が遅くなる原因となる)計算上のスパイクを除去することができます。また、ブロックサイズを徐々に大きくしていくことで、ネットワークパフォーマンスのベストシナリオを評価することができ、その結果はすぐにネットワーク上で確認することができます。
また、台帳の状態をディスクストレージに移行してオンチェーンの負荷を軽減するとともに、スクリプトの圧縮やオンチェーンの共有機能の実装も予定しています。これらが実現すれば、ネットワークの調整を大きく補完することになります。
中期的には、Hydraがさらなる能力をもたらしてくれるでしょう。長期的には、当社のチーフサイエンティストとチームは、プライシングフレームワークやOuroborosプロトコルを強化してトランザクションのスループットを向上させるための他の方法やメカニズムの研究を続けています。詳細は今後のブログ記事でご紹介します。
スタートから2ヶ月
カルダノでスマートコントラクトの時代が始まってから、ちょうど2ヶ月が経ちました。「発売」に向けての期待感がどのようなものであったとしても、これは決して一発勝負のアップグレードではありませんでした。エコシステムが勢いを増すのに時間がかかるのと同じように、ネットワークへの要求が高まるにつれ、慣らし運転と調整の期間が常に存在していました。私たちは旅を続けており、コミュニティからのフィードバックを理解することが重要です。私たちは、#BuildingOnCardanoの多くのエキサイティングな新規プロジェクトと話しながら、彼らの計画や目的、そして彼らが直面している問題について理解を深め、必要に応じてサポートやサービスを提供できるようにしています。また、コミュニティでの議論にも注目しています。
まだ始まったばかりで、私たちは皆、学んでいる最中です。しかし、設計上、カルダノは、その初期の、しかしすでに活気に満ちたエコシステムとともに、柔軟に成長するように設定されています。みんなで作り続けましょう
もしあなたが開発者で、指導やサポートを求めているなら、あるいは私たちのオープンセッションに立ち寄って話を聞きたいと思っているなら、Discordで成長中の技術コミュニティに参加してください。
このブログ記事の作成にあたり、John Woods、Vitor Silva、Kevin Hammond、Duncan Coutts、Romain Pellerin、Michael Peyton Jones、Jean-Frederic Etienne、Olga Hryniukの各氏にサポートとフィードバックをいただきました。