オフチェーンコンピュートはすべて必要です

中級1/4/2024, 5:43:45 PM
この記事では、共同プロセッサとロールアップの概念、および将来のブロックチェーン計算と検証のモジュラー分離について紹介しています。

はじめに

ブロックチェーンは、グローバルな状態についてコンセンサスを得る、グローバルに分散された台帳です。一部のブロックチェーンには、このグローバル状態に加えてプログラマビリティを可能にするチューリング完全実行環境が装備されています。ブロックチェーンの実行環境をターゲットとするプログラムはスマートコントラクトと呼ばれ、基盤となるブロックチェーンはスマートコントラクトプラットフォームと呼ばれます。イーサリアム、ソラナ、アバランチは、最も広く知られているスマートコントラクトプラットフォームの一部です。スマートコントラクトプラットフォームは、実行環境(または仮想マシン)がCPUのように機能し、状態がストレージの役割を果たす分散型コンピューターと考えることができます。

ブロックチェーンをコンピュータとしてフレーミングすることは重要です。特に、コプロセッサ/オフチェーンコンピュートがブロックチェーンの文脈において不可欠である理由を説明するために。従来のコンピューティングでは、コプロセッサはパフォーマンスを向上させるためにマイクロアーキテクチャで生まれました。同様に、Ethereum上のコプロセッサは、ベースレイヤープロトコルの機能とデザイン空間を拡張するために、歴史データへのアクセスや高性能なオフチェーンコンピュートを約束しています。詳細は、このコプロセッサに関する紹介記事をご覧ください。

この記事は、ファーストプリンシプルからコプロセッサを探求し、その重要性とメタプロパティを明確にすることを目指しています。次に、これら二つの概念が異なるものであるが密接に関連していることを示すために、ロールアップと比較します。また、ロールアップとコプロセッサが一緒に使用される場合の例を提供します。例えば、すべてのパワフルなロールアップやL1であっても、重いタスクを処理するためにはコプロセッサが必要になることがあります。

この記事は、ブロックチェーンが計算は中央集権化される一方で、検証は分散化された未来に向かって進んでいることを指摘して締めくくります。 ロールアップ、コプロセッサ、およびその他の検証可能なオフチェーン計算形式は、この未来の異なる具現化にすぎません。

ここに至るまでの経緯:

Vitalikは、「ブロックチェーンの拡張性の限界」で、ブロックチェーンの分散化について、一般ユーザーがノードを実行できることが重要であると述べています。

前述の通り、Ethereumは多くの面で分散型のグローバルコンピュータとして概念化できます。 スマートコントラクトを実行するための計算リソースを提供するソフトウェアを実行しているノードのネットワークです。 Ethereumブロックチェーンは、コンピュータのストレージとメモリに類似した状態情報とコードを格納しています。 そして、Ethereum Virtual Machine(EVM)は、CPUのようにトランザクションを処理しコードを実行するため、すべてのノードで実行されます。 ただし、Ethereumは許可なく分散化されており、信頼できないノード間で合意を形成しています。 いくつかのノードがオフラインになっても、ネットワークは引き続き稼働します。 EVMの操作の正確性を確保するために、EthereumのようなProof-of-Stake(PoS)ネットワークの検証者は、それらを検証するためにすべての状態遷移を実行する必要があります。 これにより、PoSネットワークの速度は最も遅いノードに制限され、アプリ開発者が利用できる計算量が制限されます。

通常のコンピューターとは異なり、Ethereumはネットワークの乱用を防ぐために計算とストレージを制限しています。各操作に料金が請求され、無限ループは財務的に実用的ではありません。このアプローチにより、参入障壁が低く保たれ、Raspberry Piのような日常的なハードウェアでもネットワークノードを実行できます。これらの制約により、誰もが分散型のEthereumネットワークの運用に貢献できる包括的なシステムが実現されています。

これらのEthereumノードの計算制限のため、機械学習モデル、ゲーム、または科学計算アプリケーションなどの複雑なアプリケーションは、現在、直接Ethereum上で実行することが実質的に不可能です。

それは、基本的なアプリケーションの基盤としてEthereumを広く利用可能、安全、持続可能にするためのトレードオフです。しかし、計算上制限のないコンピュータと比較すると、必然的にいくつかの制限が存在します。それは、古いプロセッサであるPentium 5とさえ比較すると制限があります。

複雑な浮動小数点演算はありません- EVMは基本的な数学演算と論理演算のみをサポートしています。ニューラルネットワークなどの高度な数値計算は実現不可能です。(興味深いことに、浮動小数点数を扱うことができないということは、最近の歴史の中でアンプルフォースなどのリベースアセットの交換をより困難にし、時には一部のDEXと互換性がないことさえあります)。

1ブロックあたりの制限された計算 - ガス料金は計算をメーターにかけるため、ゲームなどの複雑なソフトウェアは非常に高価になります。1ブロックあたりのガス制限は30Mガスです。

制限されたメモリー - スマート契約には小さな永続的なストレージ制限があり、大規模なプログラムを作成することが難しくなります。

永続的なファイルストレージはありません - グラフィックス、音声、ビデオなどのファイルをブロックチェーン上に保存する方法はありません。

イーサリアム上のトランザクションスピードは現在約15 TPSであり、CPUよりはるかに遅いです。

最終的に、制限されたストレージと計算能力は、アプリケーションで利用可能な自由度を制限します(これらの制限はブロックチェーンごとに異なりますが、常に存在します)。人々はブロックチェーンを1970年代から1980年代の計算能力に制約された環境になぞらえていますが、これら2つの間にはいくつかの大きな違いがあると考えています:

1970年代から1980年代のコンピューティングの成長は急速でした(その期間にマイクロプロセッサのトランジスタ数が約1,000から約1,000,000に増加しました)。しかし、この成長は、人々がコンピュータをよく購入または更新したことを意味するわけではありませんでした。スマートコントラクトプラットフォームは最も遅いノードによって制限されているため、コンピュータの最前線でのスピードアップがブロックチェーンの計算速度の比例的な増加をもたらすとは限りません。スピードアップは、ブロックチェーン上のノードの基準要件が更新された場合にのみ発生します。

ノードの最小ハードウェア要件を常に更新することと分散化の間には明らかなトレードオフもあります。 ソロステーカーは数年ごとにハードウェアをアップグレードしたくないかもしれません(そして彼らは確かに毎日のパフォーマンスを監視したくありません)、結果として、専門家だけがブロックチェーンインフラストラクチャを運用したいと考えることになります。

つまり、何年にもわたってCPUが改善され、すべてのデバイスにより多くのCPUコアが搭載され、徐々に複雑なタスクを実行できるようになりました。ブロックチェーンコンピューターが従来のコンピューティングほど速くないと思われる場合(ベースラインノードの要件により)、代替のコンピューティングソースを見つけようとするのは理にかなっています。ここで興味深い例えを挙げると、従来のコンピューティングの CPU はグラフィック処理タスクに適していなかったため、ほぼすべてのコンピューターで GPU が台頭しました。同様に、ブロックチェーンは、シンプルなコンピュートバッテリーを有効にした安全な状態ストアであることに重点を置いているため、オフチェーンコンピュートがアプリケーション設計空間を拡大する明確な機会があります。現在、ブロックチェーンは、オープンアクセス、自己主権、検閲耐性、コンポーザビリティなどの特性を必要とする低コンピューティングアプリケーションにのみ意味があります。より多様なアプリケーションをオンチェーン化するには、アプリ開発者に課せられる制約を取り除く必要があります。これは、これらの制約が実験の恩恵にもなっていることを理解した上で言えます。例えば、CLOBは計算上の制約からイーサリアム上で効果的に実行できなかったため、AMMが採用され、それ以来、1兆ドルのボリュームを記録しました。

ブロックチェーンアプリケーションにより多くの計算リソースを利用可能にするための一般的なアプローチは2つあります。

比較的頻繁にベースラインノードの要件を引き上げます。これは、SolanaやSuiなどの高性能ブロックチェーンが取るほぼパスです。ノードの高いベースラインは、非常に高速なブロックチェーンを構築することを可能にし、アプリケーション設計からいくつかの設計制約を解除します。Solana上のLimit Order Book DEXであるPhoenixは、今日のEthereum(またはL2)では構築できませんでした。ベースライン要件を増やすことの裏返しは、それらが常に成長する場合、ノードを実行することが専門のインフラプロバイダーにとってのみ実行可能になる可能性があるということです。歴史的なRAM要件は、ソラナ上でハードウェア要件が一貫して成長してきたことをかなりよく示しています。

Web Archive(注:2020年の中央値RAM要件を使用)

サードパーティーにコンピューティングをオフチェーンに移動します。これがイーサリアムエコシステムが採用している戦略です。これらのサードパーティー自体は、ブロックチェーン(ロールアップの場合)、オフチェーン検証可能なコンピュートデバイス(すなわちコプロセッサ)、または信頼できるサードパーティー(dydxのオーダーブックのようなアプリケーション固有のオフチェーンコンピューティングの場合)である可能性があります。

オフチェーンコンピュートの統合に向けて

最近、コプロセッサーに関する話題が増えており、オフチェーンで検証可能な計算を提供します。コプロセッサーは、ゼロ知識証明や信頼できる実行環境(TEE)など、さまざまな方法で実装することができます。いくつかの例は、

ZKコプロセッサ:Axiom、Risc Zero’s Bonsai。

TEEs:マーリンのオイスター、

同時に、コンピュートのオフロードに関しては、イーサリアムのロールアップ中心のロードマップは、イーサリアム上で決済するさまざまなロールアップにコンピュートをオフロードします。過去数年間、コンビニエンスが良く、より安価で高速な取引、およびロールアップによって提供されるインセンティブの組み合わせにより、着実な開発者やユーザーがロールアップに移行してきました。理想的な世界では、ロールアップにより、信頼の前提条件を追加することなく、オフチェーン実行を通じてイーサリアムの全体的なコンピューテーション能力を拡大することができます。より多くのコンピュートは、単により多くのトランザクションを実行することを指すだけでなく、トランザクションあたりのより表現力豊かな計算を行うことも含まれます。新しいトランザクションタイプは、アプリケーションに利用可能な設計スペースを拡大し、より高いスループットは、これらの表現豊かなトランザクションを実行するコストを削減し、より高度なアプリケーションへの手頃なアクセスを保証します。

さらに進む前に、混乱を防ぐために、ロールアップとコプロセッサを簡単に定義しましょう。

Rollups(ロールアップ):ロールアップは、基本/ホストチェーンとは異なる永続的なパーティション状態を維持しますが、それでも基本のセキュリティ特性を継承し、データ/証明を基本に投稿することでそれを実現します。ホストチェーンから状態を移動することで、ロールアップは追加の計算を使用して状態遷移を行い、その後これらの状態遷移の整合性の証明をホストに投稿することができます。ロールアップは、イーサリアムの高い手数料を支払いたくないが、イーサリアムのセキュリティ特性にアクセスしたいユーザーにとって非常に有用です。

コプロセッサに飛び込む前に、今日のイーサリアムでのスマートコントラクト開発がいかに制約されているかについて、もう少し背景を説明しましょう。イーサリアムには、口座残高、契約データなど、グローバルな状態で永続的な状態ストレージがあります。このデータはブロックチェーン上に無期限に保持されます。ただし、制限があります。

コントラクトデータの最大サイズは制限されています(例:現在の契約あたり24KB、EIP 170で設定されました)。大きなファイルを保存すると、これを超えます。 (*コプロセッサーでも解決されません)

契約ストレージの読み書きは、ファイルシステムやデータベースよりも遅くなります。1KBのデータにアクセスすると、数百万のガスがかかることがあります。

グローバルな状態が続く間、個々のノードは「剪定」モードで最近の状態のみをローカルに保持します。完全な状態履歴にはアーカイブノードが必要です。

画像、音声、およびドキュメントなどのファイルを処理するためのネイティブファイルシステムプリミティブは存在しません。スマートコントラクトは、ストレージに基本データ型の読み書きしかできません。

これに関するソリューションは:

大きなファイルは、契約の保存制限に収まるように、小さな部分に分割することができます。

ファイル参照は、IPFSなどのオフチェーンのシステムに保存されたファイルをチェーン上に保存することができます。

Coprocessors:Coprocessorsは自らの状態を維持しません。彼らはAWSのλ関数のように振る舞い、アプリケーションが計算タスクを送信し、計算の証拠とともに結果を返します。 Coprocessorsは基本的に与えられたトランザクションに利用可能な計算量を増やしますが、Coprocessors上での証明もトランザクションごとに行われるため、それらを使用することはロールアップよりも高価になります。コストを考慮すると、Coprocessorsは、検証可能な方法で複雑な一度きりのタスクを実行したいプロトコルやユーザーにとって有用である可能性があります。 Coprocessorsのもう一つの利点は、オフチェーン計算を使用するアプリケーションが、アプリケーション自体に信頼の前提を追加することなく、Ethereumの完全な履歴状態にもアクセスできることです。これは通常のスマートコントラクトでは不可能です。

ロールアップとコプロセッサの違いを理解するために、これらのプリミティブのZKフレーバーを参照しましょう。ZKロールアップは、ゼロ知識証明の検証性と圧縮性の両方にアクセスし、それによりエコシステムのスループットを根本的に増加させることができます。一方、コプロセッサはzkプルーフの検証性のみにアクセスし、システム全体のスループットは変わりません。さらに、ZKロールアップには、そのロールアップ向けの仮想マシンをターゲットとするプログラムを証明できる回路が必要です(例えば、Ethereum上のロールアップでは、EVMをターゲットとするコントラクト用にzkEVMを構築しています)。一方、ZKコプロセッサは、実行するタスクのために回路を構築する必要があります。

だから、ロールアップとコプロセッサの最大の違いは、おそらく次の2つです。

ロールアップは分割された永続状態を維持し、コプロセッサはそうではありません(彼らはホストチェーンの状態を使用します)。

ロールアップ(その名前が示すように)は、複数のトランザクションを一括処理し、コプロセッサは一般的に、単一のトランザクションの一部として複雑なタスクに使用されます(少なくとも現在のパラダイムでは)。

最近では、ホストチェーン上で直接実行されているかのようにトランザクションを実行し、ホストの完全な状態にアクセスするブースターロールアップが提案されています。ただし、Booster Rollup には独自のストレージもあり、ホストとロールアップの両方で計算とストレージを拡張できます。Booster Rollupの提案は、オフチェーンコンピューティング設計のスペクトルにはスペクトルがあり、従来のロールアップとコプロセッサがこのスペクトルの両端に位置していることを指摘しています。ロールアップ、ブースター ロールアップ、およびコプロセッサはすべて、より多くのコンピューティングへのアクセスを提供し、基本 L1 からパーティション分割された状態を保持する量のみが異なります。

2023年のModular Summitでのトーク「Shielded Transactions Are Rollups」で、Henry De Valenceはこの具体的なコンセプトについて語り、ロールアップを定義するための非常にシンプルなイメージを提示しました。

この講演では、ベースチェーンによってサードパーティにオフロードされた実行はロールアップであると仮定しています。彼の定義では、コプロセッサもロールアップになります。これは、オフチェーンの検証可能なコンピューティングの旗印の下でロールアップとコプロセッサを統合するという私たちの見解とは少し異なりますが、全体的な感情は同じままです。

エンドゲームのビジョンで、Vitalikは、ブロック生成が中央集権化され、ブロック検証が信頼でき、非常に分散化された未来について議論しています。私たちは、これが現在起こっていることを考える正しいモデルであると信じています。zk-rollupでは、ブロック生成と状態遷移計算が中央集権化されています。しかし、証明により検証が安価かつ分散化されるようになります。同様に、zk-コプロセッサはブロック生成を行わず、過去のデータにアクセスし、このデータ上で状態遷移を計算します。zk-コプロセッサ上での計算はおそらく常に中央集権化されたマシンで行われるでしょうが、結果とともに返される有効性の証明により、使用する前に誰もが結果を検証できます。おそらく、Vitalikのビジョンを「計算が中央集権化されているが、中央集権化された計算の検証が信頼でき、非常に分散化された未来」と再定義することが正しいかもしれません。

同じようにして、異なっています

ロールアップとコプロセッサは、全体的な類似性にもかかわらず、今日ではまったく異なる市場にサービスを提供しています。「ETH L1 でコプロセッサを使用してその流動性にアクセスできるのに、なぜロールアップが必要なのか」と疑問に思う人もいるかもしれません。 これはもっともな質問ですが、ロールアップが依然として理にかなっている(そして現在のコプロセッサよりもはるかに大きな市場機会をもたらす)理由はいくつかあると考えています。

以前にも述べたように、コプロセッサを使用すると、L1よりも同じトランザクションでより多くの計算にアクセスできます。しかし、これによってコプロセッサを呼び出しているブロックチェーンが実行できるトランザクションの数を増やすことはできません(バッチ処理を考えているなら、それはロールアップに到達したことを意味します)。パーティション化された永続的な状態を維持することで、ロールアップは、イーサリアムのセキュリティ特性を持つブロックスペースにアクセスしたい人々に利用可能なトランザクション数を増やすことができます。これは、ロールアップが定期的にイーサリアムに投稿し、すべてのイーサリアムのバリデータが状態の遷移を検証する必要がないためです。関係者は単に証明書を信頼するだけで済みます。

コプロセッサを使用しても、L1上の他のトランザクションと同じオーダーの手数料を支払う必要があります。一方、バッチ処理を介したロールアップは、コストを桁違いに削減することができます。

さらに、ロールアップは別の状態でトランザクションを実行できるため、それらは依然としてブロックチェーンのように振る舞います(より速く、より分散化されていないブロックチェーンですが、それでもブロックチェーンです)。そのため、ロールアップ自体からどれだけの計算がアクセスできるかには明確な制限があります。このシナリオでは、ユーザーが任意に複雑なトランザクションを行いたい場合には、コプロセッサがロールアップに有用になります(そして今、ロールアップで検証可能なトランザクションを行っているため、ロールアップの物理法則にのみ従う必要があります)。

ここで注目すべきもう1つの重要な点は、現在、ほとんどの流動性がETH L1に存在しているということです。そのため、製品を改善するために流動性に依存する多くのプロトコルにとっては、まだEthereumメインネットでの起動が賢明かもしれません。Ethereumメインネット上のアプリケーションは、コプロセッサ上でトランザクションを断続的に行うことで、より多くの計算にアクセスできます。たとえば、AmbientやUniswap v4のようなDEXは、マーケットデータに基づいて手数料の変更方法や流動性曲線の形状を変更する複雑なロジックを行うために、フックとコプロセッサを組み合わせて利用することができます。

興味深いアナロジーの1つは、ロールアップとコプロセッサの相互作用を、命令型プログラミングと関数型プログラミングになぞらえています。命令型プログラミングは、可変状態と副作用に焦点を当て、ステップバイステップでタスクの実行方法を指定します。関数型プログラミングは、不変のデータと純粋な関数を重視し、状態の変更と副作用を避けます。同様に、ロールアップは保持する状態を変更する命令型プログラムのようであり、一方、コプロセッサは状態を変異させず、計算の証明と共に結果を生成する関数型プログラムのようです。さらに、命令型プログラミングと関数型プログラミングのように、ロールアップとコプロセッサはそれぞれの役割があり、適切に使用すべきです。

証明ベースの未来

もし計算が中央集権化されている世界でありながら、中央集権化された計算の検証が信頼でき、かつ非常に分散化されている状況になった場合、それはEthereumをどこに置くのでしょうか?世界コンピューターは単なるデータベースになってしまうのでしょうか?これは悪いことなのでしょうか?

最終的に、Ethereumの目標は、ユーザーに信頼できる計算とストレージへのアクセスを提供することです。過去、Ethereumで信頼できる計算にアクセスする唯一の方法は、すべてのノードによって計算が実行および検証されることでした。証明技術の進歩(特にゼロ知識証明)により、バリデータノードで行われていた多くの計算をオフチェーン計算に移動し、バリデータだけがチェーン上で結果を検証することができます。これにより、実質的にEthereumは世界の不変の掲示板になります。計算の証明により、トランザクションが正しく行われたことを検証でき、それらをEthereumに投稿することで、これらの証明のタイムスタンプと不変の履歴的ストアを取得できます。ゼロ知識証明が任意の計算に対してより効率的になるにつれて、ZKで計算を行うコストがいつかブロックチェーン上でそれを行うコストよりもかなり少なくなる可能性があります(おそらく100バリデータCometBFTチェーン)。そのような世界では、ZK証明が信頼できる計算にアクセスする主要な手段とならないとは想像しにくいです。最近、David Wongも同様の考えを述べています。

任意の計算が証明される未来では、ユーザーデマンドのある信頼性のあるアプリケーションのインフラを構築することが可能になり、Ethereumの基盤をそのようなアプリケーションのホームにしようとするのではなく、適切なインフラがよりシームレスなユーザーエクスペリエンスを作り出し、それをベースに構築されたアプリケーションとともにスケーリングすることができる。これにより、Web3アプリケーションがWeb2の対抗馬と競合し、常に夢見てきた信頼性のある、証明に基づく未来をもたらすことを期待しています。

全体的に、私たちは次のパラダイムに向かって進んでいると信じています。

————————————————————信用するのではなく、検証する————————————————————-

免責事項:

  1. この記事は[から転載されたものですミラー]. All copyrights belong to the original author [ジェイコブ・コー]. If there are objections to this reprint, please contact the Gate Learnチームが迅速に対応します。
  2. 免責事項:本記事に表現されている見解や意見は著者個人のものであり、投資アドバイスを構成するものではありません。
  3. 他の言語への記事の翻訳はGate Learnチームによって行われます。特に記載がない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。

オフチェーンコンピュートはすべて必要です

中級1/4/2024, 5:43:45 PM
この記事では、共同プロセッサとロールアップの概念、および将来のブロックチェーン計算と検証のモジュラー分離について紹介しています。

はじめに

ブロックチェーンは、グローバルな状態についてコンセンサスを得る、グローバルに分散された台帳です。一部のブロックチェーンには、このグローバル状態に加えてプログラマビリティを可能にするチューリング完全実行環境が装備されています。ブロックチェーンの実行環境をターゲットとするプログラムはスマートコントラクトと呼ばれ、基盤となるブロックチェーンはスマートコントラクトプラットフォームと呼ばれます。イーサリアム、ソラナ、アバランチは、最も広く知られているスマートコントラクトプラットフォームの一部です。スマートコントラクトプラットフォームは、実行環境(または仮想マシン)がCPUのように機能し、状態がストレージの役割を果たす分散型コンピューターと考えることができます。

ブロックチェーンをコンピュータとしてフレーミングすることは重要です。特に、コプロセッサ/オフチェーンコンピュートがブロックチェーンの文脈において不可欠である理由を説明するために。従来のコンピューティングでは、コプロセッサはパフォーマンスを向上させるためにマイクロアーキテクチャで生まれました。同様に、Ethereum上のコプロセッサは、ベースレイヤープロトコルの機能とデザイン空間を拡張するために、歴史データへのアクセスや高性能なオフチェーンコンピュートを約束しています。詳細は、このコプロセッサに関する紹介記事をご覧ください。

この記事は、ファーストプリンシプルからコプロセッサを探求し、その重要性とメタプロパティを明確にすることを目指しています。次に、これら二つの概念が異なるものであるが密接に関連していることを示すために、ロールアップと比較します。また、ロールアップとコプロセッサが一緒に使用される場合の例を提供します。例えば、すべてのパワフルなロールアップやL1であっても、重いタスクを処理するためにはコプロセッサが必要になることがあります。

この記事は、ブロックチェーンが計算は中央集権化される一方で、検証は分散化された未来に向かって進んでいることを指摘して締めくくります。 ロールアップ、コプロセッサ、およびその他の検証可能なオフチェーン計算形式は、この未来の異なる具現化にすぎません。

ここに至るまでの経緯:

Vitalikは、「ブロックチェーンの拡張性の限界」で、ブロックチェーンの分散化について、一般ユーザーがノードを実行できることが重要であると述べています。

前述の通り、Ethereumは多くの面で分散型のグローバルコンピュータとして概念化できます。 スマートコントラクトを実行するための計算リソースを提供するソフトウェアを実行しているノードのネットワークです。 Ethereumブロックチェーンは、コンピュータのストレージとメモリに類似した状態情報とコードを格納しています。 そして、Ethereum Virtual Machine(EVM)は、CPUのようにトランザクションを処理しコードを実行するため、すべてのノードで実行されます。 ただし、Ethereumは許可なく分散化されており、信頼できないノード間で合意を形成しています。 いくつかのノードがオフラインになっても、ネットワークは引き続き稼働します。 EVMの操作の正確性を確保するために、EthereumのようなProof-of-Stake(PoS)ネットワークの検証者は、それらを検証するためにすべての状態遷移を実行する必要があります。 これにより、PoSネットワークの速度は最も遅いノードに制限され、アプリ開発者が利用できる計算量が制限されます。

通常のコンピューターとは異なり、Ethereumはネットワークの乱用を防ぐために計算とストレージを制限しています。各操作に料金が請求され、無限ループは財務的に実用的ではありません。このアプローチにより、参入障壁が低く保たれ、Raspberry Piのような日常的なハードウェアでもネットワークノードを実行できます。これらの制約により、誰もが分散型のEthereumネットワークの運用に貢献できる包括的なシステムが実現されています。

これらのEthereumノードの計算制限のため、機械学習モデル、ゲーム、または科学計算アプリケーションなどの複雑なアプリケーションは、現在、直接Ethereum上で実行することが実質的に不可能です。

それは、基本的なアプリケーションの基盤としてEthereumを広く利用可能、安全、持続可能にするためのトレードオフです。しかし、計算上制限のないコンピュータと比較すると、必然的にいくつかの制限が存在します。それは、古いプロセッサであるPentium 5とさえ比較すると制限があります。

複雑な浮動小数点演算はありません- EVMは基本的な数学演算と論理演算のみをサポートしています。ニューラルネットワークなどの高度な数値計算は実現不可能です。(興味深いことに、浮動小数点数を扱うことができないということは、最近の歴史の中でアンプルフォースなどのリベースアセットの交換をより困難にし、時には一部のDEXと互換性がないことさえあります)。

1ブロックあたりの制限された計算 - ガス料金は計算をメーターにかけるため、ゲームなどの複雑なソフトウェアは非常に高価になります。1ブロックあたりのガス制限は30Mガスです。

制限されたメモリー - スマート契約には小さな永続的なストレージ制限があり、大規模なプログラムを作成することが難しくなります。

永続的なファイルストレージはありません - グラフィックス、音声、ビデオなどのファイルをブロックチェーン上に保存する方法はありません。

イーサリアム上のトランザクションスピードは現在約15 TPSであり、CPUよりはるかに遅いです。

最終的に、制限されたストレージと計算能力は、アプリケーションで利用可能な自由度を制限します(これらの制限はブロックチェーンごとに異なりますが、常に存在します)。人々はブロックチェーンを1970年代から1980年代の計算能力に制約された環境になぞらえていますが、これら2つの間にはいくつかの大きな違いがあると考えています:

1970年代から1980年代のコンピューティングの成長は急速でした(その期間にマイクロプロセッサのトランジスタ数が約1,000から約1,000,000に増加しました)。しかし、この成長は、人々がコンピュータをよく購入または更新したことを意味するわけではありませんでした。スマートコントラクトプラットフォームは最も遅いノードによって制限されているため、コンピュータの最前線でのスピードアップがブロックチェーンの計算速度の比例的な増加をもたらすとは限りません。スピードアップは、ブロックチェーン上のノードの基準要件が更新された場合にのみ発生します。

ノードの最小ハードウェア要件を常に更新することと分散化の間には明らかなトレードオフもあります。 ソロステーカーは数年ごとにハードウェアをアップグレードしたくないかもしれません(そして彼らは確かに毎日のパフォーマンスを監視したくありません)、結果として、専門家だけがブロックチェーンインフラストラクチャを運用したいと考えることになります。

つまり、何年にもわたってCPUが改善され、すべてのデバイスにより多くのCPUコアが搭載され、徐々に複雑なタスクを実行できるようになりました。ブロックチェーンコンピューターが従来のコンピューティングほど速くないと思われる場合(ベースラインノードの要件により)、代替のコンピューティングソースを見つけようとするのは理にかなっています。ここで興味深い例えを挙げると、従来のコンピューティングの CPU はグラフィック処理タスクに適していなかったため、ほぼすべてのコンピューターで GPU が台頭しました。同様に、ブロックチェーンは、シンプルなコンピュートバッテリーを有効にした安全な状態ストアであることに重点を置いているため、オフチェーンコンピュートがアプリケーション設計空間を拡大する明確な機会があります。現在、ブロックチェーンは、オープンアクセス、自己主権、検閲耐性、コンポーザビリティなどの特性を必要とする低コンピューティングアプリケーションにのみ意味があります。より多様なアプリケーションをオンチェーン化するには、アプリ開発者に課せられる制約を取り除く必要があります。これは、これらの制約が実験の恩恵にもなっていることを理解した上で言えます。例えば、CLOBは計算上の制約からイーサリアム上で効果的に実行できなかったため、AMMが採用され、それ以来、1兆ドルのボリュームを記録しました。

ブロックチェーンアプリケーションにより多くの計算リソースを利用可能にするための一般的なアプローチは2つあります。

比較的頻繁にベースラインノードの要件を引き上げます。これは、SolanaやSuiなどの高性能ブロックチェーンが取るほぼパスです。ノードの高いベースラインは、非常に高速なブロックチェーンを構築することを可能にし、アプリケーション設計からいくつかの設計制約を解除します。Solana上のLimit Order Book DEXであるPhoenixは、今日のEthereum(またはL2)では構築できませんでした。ベースライン要件を増やすことの裏返しは、それらが常に成長する場合、ノードを実行することが専門のインフラプロバイダーにとってのみ実行可能になる可能性があるということです。歴史的なRAM要件は、ソラナ上でハードウェア要件が一貫して成長してきたことをかなりよく示しています。

Web Archive(注:2020年の中央値RAM要件を使用)

サードパーティーにコンピューティングをオフチェーンに移動します。これがイーサリアムエコシステムが採用している戦略です。これらのサードパーティー自体は、ブロックチェーン(ロールアップの場合)、オフチェーン検証可能なコンピュートデバイス(すなわちコプロセッサ)、または信頼できるサードパーティー(dydxのオーダーブックのようなアプリケーション固有のオフチェーンコンピューティングの場合)である可能性があります。

オフチェーンコンピュートの統合に向けて

最近、コプロセッサーに関する話題が増えており、オフチェーンで検証可能な計算を提供します。コプロセッサーは、ゼロ知識証明や信頼できる実行環境(TEE)など、さまざまな方法で実装することができます。いくつかの例は、

ZKコプロセッサ:Axiom、Risc Zero’s Bonsai。

TEEs:マーリンのオイスター、

同時に、コンピュートのオフロードに関しては、イーサリアムのロールアップ中心のロードマップは、イーサリアム上で決済するさまざまなロールアップにコンピュートをオフロードします。過去数年間、コンビニエンスが良く、より安価で高速な取引、およびロールアップによって提供されるインセンティブの組み合わせにより、着実な開発者やユーザーがロールアップに移行してきました。理想的な世界では、ロールアップにより、信頼の前提条件を追加することなく、オフチェーン実行を通じてイーサリアムの全体的なコンピューテーション能力を拡大することができます。より多くのコンピュートは、単により多くのトランザクションを実行することを指すだけでなく、トランザクションあたりのより表現力豊かな計算を行うことも含まれます。新しいトランザクションタイプは、アプリケーションに利用可能な設計スペースを拡大し、より高いスループットは、これらの表現豊かなトランザクションを実行するコストを削減し、より高度なアプリケーションへの手頃なアクセスを保証します。

さらに進む前に、混乱を防ぐために、ロールアップとコプロセッサを簡単に定義しましょう。

Rollups(ロールアップ):ロールアップは、基本/ホストチェーンとは異なる永続的なパーティション状態を維持しますが、それでも基本のセキュリティ特性を継承し、データ/証明を基本に投稿することでそれを実現します。ホストチェーンから状態を移動することで、ロールアップは追加の計算を使用して状態遷移を行い、その後これらの状態遷移の整合性の証明をホストに投稿することができます。ロールアップは、イーサリアムの高い手数料を支払いたくないが、イーサリアムのセキュリティ特性にアクセスしたいユーザーにとって非常に有用です。

コプロセッサに飛び込む前に、今日のイーサリアムでのスマートコントラクト開発がいかに制約されているかについて、もう少し背景を説明しましょう。イーサリアムには、口座残高、契約データなど、グローバルな状態で永続的な状態ストレージがあります。このデータはブロックチェーン上に無期限に保持されます。ただし、制限があります。

コントラクトデータの最大サイズは制限されています(例:現在の契約あたり24KB、EIP 170で設定されました)。大きなファイルを保存すると、これを超えます。 (*コプロセッサーでも解決されません)

契約ストレージの読み書きは、ファイルシステムやデータベースよりも遅くなります。1KBのデータにアクセスすると、数百万のガスがかかることがあります。

グローバルな状態が続く間、個々のノードは「剪定」モードで最近の状態のみをローカルに保持します。完全な状態履歴にはアーカイブノードが必要です。

画像、音声、およびドキュメントなどのファイルを処理するためのネイティブファイルシステムプリミティブは存在しません。スマートコントラクトは、ストレージに基本データ型の読み書きしかできません。

これに関するソリューションは:

大きなファイルは、契約の保存制限に収まるように、小さな部分に分割することができます。

ファイル参照は、IPFSなどのオフチェーンのシステムに保存されたファイルをチェーン上に保存することができます。

Coprocessors:Coprocessorsは自らの状態を維持しません。彼らはAWSのλ関数のように振る舞い、アプリケーションが計算タスクを送信し、計算の証拠とともに結果を返します。 Coprocessorsは基本的に与えられたトランザクションに利用可能な計算量を増やしますが、Coprocessors上での証明もトランザクションごとに行われるため、それらを使用することはロールアップよりも高価になります。コストを考慮すると、Coprocessorsは、検証可能な方法で複雑な一度きりのタスクを実行したいプロトコルやユーザーにとって有用である可能性があります。 Coprocessorsのもう一つの利点は、オフチェーン計算を使用するアプリケーションが、アプリケーション自体に信頼の前提を追加することなく、Ethereumの完全な履歴状態にもアクセスできることです。これは通常のスマートコントラクトでは不可能です。

ロールアップとコプロセッサの違いを理解するために、これらのプリミティブのZKフレーバーを参照しましょう。ZKロールアップは、ゼロ知識証明の検証性と圧縮性の両方にアクセスし、それによりエコシステムのスループットを根本的に増加させることができます。一方、コプロセッサはzkプルーフの検証性のみにアクセスし、システム全体のスループットは変わりません。さらに、ZKロールアップには、そのロールアップ向けの仮想マシンをターゲットとするプログラムを証明できる回路が必要です(例えば、Ethereum上のロールアップでは、EVMをターゲットとするコントラクト用にzkEVMを構築しています)。一方、ZKコプロセッサは、実行するタスクのために回路を構築する必要があります。

だから、ロールアップとコプロセッサの最大の違いは、おそらく次の2つです。

ロールアップは分割された永続状態を維持し、コプロセッサはそうではありません(彼らはホストチェーンの状態を使用します)。

ロールアップ(その名前が示すように)は、複数のトランザクションを一括処理し、コプロセッサは一般的に、単一のトランザクションの一部として複雑なタスクに使用されます(少なくとも現在のパラダイムでは)。

最近では、ホストチェーン上で直接実行されているかのようにトランザクションを実行し、ホストの完全な状態にアクセスするブースターロールアップが提案されています。ただし、Booster Rollup には独自のストレージもあり、ホストとロールアップの両方で計算とストレージを拡張できます。Booster Rollupの提案は、オフチェーンコンピューティング設計のスペクトルにはスペクトルがあり、従来のロールアップとコプロセッサがこのスペクトルの両端に位置していることを指摘しています。ロールアップ、ブースター ロールアップ、およびコプロセッサはすべて、より多くのコンピューティングへのアクセスを提供し、基本 L1 からパーティション分割された状態を保持する量のみが異なります。

2023年のModular Summitでのトーク「Shielded Transactions Are Rollups」で、Henry De Valenceはこの具体的なコンセプトについて語り、ロールアップを定義するための非常にシンプルなイメージを提示しました。

この講演では、ベースチェーンによってサードパーティにオフロードされた実行はロールアップであると仮定しています。彼の定義では、コプロセッサもロールアップになります。これは、オフチェーンの検証可能なコンピューティングの旗印の下でロールアップとコプロセッサを統合するという私たちの見解とは少し異なりますが、全体的な感情は同じままです。

エンドゲームのビジョンで、Vitalikは、ブロック生成が中央集権化され、ブロック検証が信頼でき、非常に分散化された未来について議論しています。私たちは、これが現在起こっていることを考える正しいモデルであると信じています。zk-rollupでは、ブロック生成と状態遷移計算が中央集権化されています。しかし、証明により検証が安価かつ分散化されるようになります。同様に、zk-コプロセッサはブロック生成を行わず、過去のデータにアクセスし、このデータ上で状態遷移を計算します。zk-コプロセッサ上での計算はおそらく常に中央集権化されたマシンで行われるでしょうが、結果とともに返される有効性の証明により、使用する前に誰もが結果を検証できます。おそらく、Vitalikのビジョンを「計算が中央集権化されているが、中央集権化された計算の検証が信頼でき、非常に分散化された未来」と再定義することが正しいかもしれません。

同じようにして、異なっています

ロールアップとコプロセッサは、全体的な類似性にもかかわらず、今日ではまったく異なる市場にサービスを提供しています。「ETH L1 でコプロセッサを使用してその流動性にアクセスできるのに、なぜロールアップが必要なのか」と疑問に思う人もいるかもしれません。 これはもっともな質問ですが、ロールアップが依然として理にかなっている(そして現在のコプロセッサよりもはるかに大きな市場機会をもたらす)理由はいくつかあると考えています。

以前にも述べたように、コプロセッサを使用すると、L1よりも同じトランザクションでより多くの計算にアクセスできます。しかし、これによってコプロセッサを呼び出しているブロックチェーンが実行できるトランザクションの数を増やすことはできません(バッチ処理を考えているなら、それはロールアップに到達したことを意味します)。パーティション化された永続的な状態を維持することで、ロールアップは、イーサリアムのセキュリティ特性を持つブロックスペースにアクセスしたい人々に利用可能なトランザクション数を増やすことができます。これは、ロールアップが定期的にイーサリアムに投稿し、すべてのイーサリアムのバリデータが状態の遷移を検証する必要がないためです。関係者は単に証明書を信頼するだけで済みます。

コプロセッサを使用しても、L1上の他のトランザクションと同じオーダーの手数料を支払う必要があります。一方、バッチ処理を介したロールアップは、コストを桁違いに削減することができます。

さらに、ロールアップは別の状態でトランザクションを実行できるため、それらは依然としてブロックチェーンのように振る舞います(より速く、より分散化されていないブロックチェーンですが、それでもブロックチェーンです)。そのため、ロールアップ自体からどれだけの計算がアクセスできるかには明確な制限があります。このシナリオでは、ユーザーが任意に複雑なトランザクションを行いたい場合には、コプロセッサがロールアップに有用になります(そして今、ロールアップで検証可能なトランザクションを行っているため、ロールアップの物理法則にのみ従う必要があります)。

ここで注目すべきもう1つの重要な点は、現在、ほとんどの流動性がETH L1に存在しているということです。そのため、製品を改善するために流動性に依存する多くのプロトコルにとっては、まだEthereumメインネットでの起動が賢明かもしれません。Ethereumメインネット上のアプリケーションは、コプロセッサ上でトランザクションを断続的に行うことで、より多くの計算にアクセスできます。たとえば、AmbientやUniswap v4のようなDEXは、マーケットデータに基づいて手数料の変更方法や流動性曲線の形状を変更する複雑なロジックを行うために、フックとコプロセッサを組み合わせて利用することができます。

興味深いアナロジーの1つは、ロールアップとコプロセッサの相互作用を、命令型プログラミングと関数型プログラミングになぞらえています。命令型プログラミングは、可変状態と副作用に焦点を当て、ステップバイステップでタスクの実行方法を指定します。関数型プログラミングは、不変のデータと純粋な関数を重視し、状態の変更と副作用を避けます。同様に、ロールアップは保持する状態を変更する命令型プログラムのようであり、一方、コプロセッサは状態を変異させず、計算の証明と共に結果を生成する関数型プログラムのようです。さらに、命令型プログラミングと関数型プログラミングのように、ロールアップとコプロセッサはそれぞれの役割があり、適切に使用すべきです。

証明ベースの未来

もし計算が中央集権化されている世界でありながら、中央集権化された計算の検証が信頼でき、かつ非常に分散化されている状況になった場合、それはEthereumをどこに置くのでしょうか?世界コンピューターは単なるデータベースになってしまうのでしょうか?これは悪いことなのでしょうか?

最終的に、Ethereumの目標は、ユーザーに信頼できる計算とストレージへのアクセスを提供することです。過去、Ethereumで信頼できる計算にアクセスする唯一の方法は、すべてのノードによって計算が実行および検証されることでした。証明技術の進歩(特にゼロ知識証明)により、バリデータノードで行われていた多くの計算をオフチェーン計算に移動し、バリデータだけがチェーン上で結果を検証することができます。これにより、実質的にEthereumは世界の不変の掲示板になります。計算の証明により、トランザクションが正しく行われたことを検証でき、それらをEthereumに投稿することで、これらの証明のタイムスタンプと不変の履歴的ストアを取得できます。ゼロ知識証明が任意の計算に対してより効率的になるにつれて、ZKで計算を行うコストがいつかブロックチェーン上でそれを行うコストよりもかなり少なくなる可能性があります(おそらく100バリデータCometBFTチェーン)。そのような世界では、ZK証明が信頼できる計算にアクセスする主要な手段とならないとは想像しにくいです。最近、David Wongも同様の考えを述べています。

任意の計算が証明される未来では、ユーザーデマンドのある信頼性のあるアプリケーションのインフラを構築することが可能になり、Ethereumの基盤をそのようなアプリケーションのホームにしようとするのではなく、適切なインフラがよりシームレスなユーザーエクスペリエンスを作り出し、それをベースに構築されたアプリケーションとともにスケーリングすることができる。これにより、Web3アプリケーションがWeb2の対抗馬と競合し、常に夢見てきた信頼性のある、証明に基づく未来をもたらすことを期待しています。

全体的に、私たちは次のパラダイムに向かって進んでいると信じています。

————————————————————信用するのではなく、検証する————————————————————-

免責事項:

  1. この記事は[から転載されたものですミラー]. All copyrights belong to the original author [ジェイコブ・コー]. If there are objections to this reprint, please contact the Gate Learnチームが迅速に対応します。
  2. 免責事項:本記事に表現されている見解や意見は著者個人のものであり、投資アドバイスを構成するものではありません。
  3. 他の言語への記事の翻訳はGate Learnチームによって行われます。特に記載がない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。
ابدأ التداول الآن
اشترك وتداول لتحصل على جوائز ذهبية بقيمة
100 دولار أمريكي
و
5500 دولارًا أمريكيًا
لتجربة الإدارة المالية الذهبية!