編集者の詳細:*本記事はTushar JainとKyle Samaniが共著したものです。*
ブロックチェーンとは、固有の信頼性が最小化された特性を持つデータベースです。すべてのデータベースと同様に、読み込みと書き込みという2つの操作があります。
ブロックチェーンのスケーリングに関するこれまでの内容のほとんどは書き込み操作に該当します。これは頻繁に毎秒ごとの取引(TPS)として測定されます。例えば、Ethereumは15~30TPSをサポートし、Binance Smart Chainは160TPSをサポートし、Solanaは50,000TPSをサポートします。投資家はブロックチェーンの書き込みをスケーリングするために何十億ドルもの投資を行ってきました。
ブロックスペースの需要は指数関数的に増加し、ブロックチェーンでのデータの読み込みに関する需要はさらに速く拡大すると予想しています。インターネット上の主要なアプリケーションは基本的に何らかの形式のデータベースアプリケーションです。そして、ほとんどのデータベースアプリケーションでの読み込みと書き込みの比率は100:1と10,000:1となっています。なぜ、これほど比率が偏っているのでしょうか。Instagramで10,000人のフォロワーがいたとして、あなたが1つの写真を投稿すると、フォローワーの10%がInstagramを開き、写真を表示します。その1つの書き込み(写真をアップロード)に対する結果は1,000件の読み込みとなります。1万人がアセット取引をしており、分散型取引所で1件の取引をする場合、その10,000人がその取引を読み込み、そのアセットの価格を更新する必要があります。書き込みはレイヤー1ブロックチェーンのスケーラビリティによって制約されています。optimistic rollupやzk rollupのようなレイヤー2のソリューションがオンライン化され、Solanaのようなハイスループットなネットワークを用いることで、書き込み容量が急激に増え、上記の理由により読み込み需要が増加します。
読み込みのスケーリングはブロックチェーン業界にとって、次の大きなスケーリングの課題となっています。
ほとんどのデータベースアプリケーションには特定のデータ構造が含まれており、データベースの構造は、システムがシステムからデータをクエリされる方法に合わせて調整されています。例えば、Telegramのようなチャットアプリについて考えてみます。Telegramシステム全体が、ユーザーID、スレッドID、タイムスタンプ、メッセージコンテンツの4つのコラムヘッダーを伴う1つの巨大なテーブルであると想像できるかと思います。これは理論上機能する可能性がありますが、Telegramが所有するユーザーの数(500M+)と、毎日送信されるメッセージの数を考えると、これがどのようにパフォーマンスを低下するかがわかります。ユーザーがスレッドでクリックするたびに、すべてのクエリは同じテーブルからクエリします。これは非常に大きな問題です。すべてのクエリが同じテーブルに該当しないようにするためにも、クエリをローカリゼーションする方が適切であることが分かります。
別の構造を想像することができます。各スレッドが、ユーザーID、タイムスタンプ、メッセージコンテンツの3つのコラムヘッダーを含む別々のテーブルで保存されているとします。ユーザーがTelegram UIでスレッドをクリッ クすると、システムはそのスレッドにすべてのメッセージを保存しているテーブルが分かり、そのテーブルをクエリして新しいメッセージを要求します。この構造により、クエリをローカリゼーションすることで、パフォーマンスが劇的に向上します。
ブロックチェーンでの読み込みをスケーリングすることに関する問題は、ブロックチェーンが定義上、トランザクションフォーマットが規定されていないことです。ブロックチェーンとは、一連の取引にすぎません。誰がいつでもどんな取引でも提携でき、いかなる取引にも、任意のフォーマットが含まれ、複雑にすることが可能です。
ブロックチェーン上の取引は、すべて1つのテーブルで実行されます。上記のTelegramの例を参照することで、これがどのように大きなパフォーマンス問題を生み出すかがわかります。ブロックチェーンの場合、この問題は特定のデータ構造がある単一タイプのアプリケーションが存在しないため、さらに顕著になっています。何千ものアプリケーションが、それぞれに独自のデータ構造と、異なるユースケースを持っています。
標準的なEthereumクライアントであるGo Ethereum(GETH)には、いくつかの基本的なクエリ機能が存在します。例えば、GTHに対し、「このアドレスはどのくらいETHが含まれているか」という質問をすることができます。Ethereum merkle trieのデータ構造により、GETHがその質問に簡単に答えることができます。
次に、「これらの50のUniswapプールにTVLがどのくらい含まれているのか、それら全体でTVLがどのくらいあるのか」というより複雑な問題について考えてみましょう。この質問に回答するには 、Uniswapプールとは何か、そのプール内の資産の価格について理解することが必要です。
デフォルトでは、GETH自体がUniswapプールとは何かを知らないため、GETHはその質問に答えることができません。
要約すると、次の3つの問題があります。
- 読み込みのスケーリング
- データ構造を理解して、何をクエリする必要があるかを知ること
- 検閲に強いクエリ結果を提供すること
ブロックチェーンデータのクエリは開発者にとって課題であり、これらの問題を解決するには、強く拡張可能なソリューションが必要です。分散型インデックスプロトコルであるThe Graphは、これらの問題に取り組んでいる主要なプロジェクトであり、成功すれば、「Google of Web3」になるように準備されています。
クエリレイヤーがWeb3スタックの最も重要なレイヤーに成長する可能性があるということを踏まえMulticoin Capitalは2018にThe Graphに投資しました。この記事では、プロジェクトが歴史と業界の両方において、重要なターニングポイントとなるため、The Graphを修正します。暗号資産で最も人気のある製品に成長したThe Graphのホストサービスは、その目的を果たしてきました。現在、The Graphは分散型ネットワークに移行しており、この移行が進むにつれて、上記3つの問題は解決し始め、