ヴィタリック、マスクに応答:ブロックチェーンのスケーラビリティ向上は簡単ではない
この記事の著者はVitalik Buterinで、Alysonによって編纂されました。
先日、テスラの創業者マスクがツイートし、ドージコインは理想的な状況でブロック確認時間を10倍に短縮し、ブロックサイズを10倍に増やし、手数料を100倍に削減できると述べ、そうすれば簡単に勝利すると言いました。
この発言は暗号業界の多くのKOLから批判を受け、イーサリアムの創設者Vitalikも今日この件について言及し、単純にブロックチェーンネットワークのパラメータを引き上げることはさらなる問題を引き起こすと述べ、ブロックチェーンネットワークの性能向上に伴う問題と制約について詳しく説明しました。したがって、チェーンキャッチャーはこの記事を翻訳し、原意に影響を与えないように削減しました。
ブロックチェーンのスケーラビリティをどこまで進められますか?マスクが望むように、「ブロック確認時間を10倍に短縮し、ブロックサイズを10倍に増やし、手数料を100倍に削減」することが本当に可能ですか?それが極端な中央集権を引き起こし、ブロックチェーンの基本的な特性を損なうことなく?もしそうでなければ、どこまで進められますか?コンセンサスアルゴリズムを変更した場合はどうなりますか?さらに重要なのは、ZK-SNARKやシャーディングなどの機能を導入するために技術を変更した場合、何が起こるのでしょうか?

実際、シャーディングの有無にかかわらず、ブロックチェーンのスケーラビリティを制限する重要かつ非常に微妙な技術的要因があります。多くの場合、これらの制限には解決策がありますが、解決策があっても限界があります。この記事ではこれらの問題を探ります。
1. ノードは十分に分散する必要がある
午前2時35分、あなたは世界の反対側にいるパートナーからの緊急電話を受け取ります。彼はあなたのマイニングプール(またはおそらくステーキングプール)を管理するのを手伝っています。約14分前から、あなたのパートナーは、あなたのマイニングプールと他の数人が、依然として79%のネットワークを支えているブロックチェーンから分離されたと伝えています。あなたのノードによれば、マジョリティチェーンのブロックは無効です。ここで残高エラーが発生しました:重要なブロックが450万枚の追加トークンを未知のアドレスに誤って割り当てたようです。
1時間後、あなたは他の2つの小さなマイニングプールとテレグラムでチャットしています。最終的に、誰かがツイッターにリンクを貼り付けたのを見ます。そのリンクには発表されたメッセージが含まれています。このツイートの冒頭は「新しいオンチェーン持続可能なプロトコル開発基金の発表」です。
朝になると、ツイッターやコミュニティフォーラムでの議論が至る所にあります。しかし、その時点で、450万枚のトークンの大部分はすでにチェーン上で他の資産に変換され、数十億ドルのDeFi取引が行われていました。79%のコンセンサスノード、そしてすべての主要なブロックチェーンエクスプローラーとライトウォレットのノードは、この新しいチェーンに従っています。
おそらく新しい開発者基金は、いくつかの開発に資金を提供するでしょう、あるいはすべてが主要な取引所に飲み込まれるかもしれません。しかし、結果がどうであれ、その基金はすべての意図と目的において既成事実であり、一般ユーザーは反撃する力を持ちません。
これがあなたのブロックチェーンで起こる可能性はありますか?あなたのブロックチェーンコミュニティのエリートは、マイニングプール、ブロックエクスプローラー、ホスティングノードを含めて非常によく調整されているかもしれません。彼らはおそらく同じテレグラムチャンネルやWeChatグループにいます。もし彼らが本当に自分たちの利益を促進するためにプロトコルルールを突然変更したいと思ったら、彼らはそうするかもしれません。このような協調的な社会的攻撃を無効にするための唯一の信頼できる方法は、実際に分散しているユーザーという集団を通じた受動的防御です。
ユーザーがブロックチェーンを検証するノードを運営し、プロトコルルールを破壊するブロックを自動的に拒否する場合、物語はどのように展開するでしょうか(たとえ90%以上のマイナーや利害関係者が支持していても)。もしすべてのユーザーが検証ノードを運営しているなら、攻撃はすぐに失敗します:いくつかのマイニングプールや取引所がこの過程でフォークし、かなり愚かに見えるでしょう。
しかし、いくつかのユーザーが検証ノードを運営していても、攻撃者が大勝することはありません。むしろ、それは混乱を引き起こし、異なるユーザーが異なるブロックチェーンのビューを見ることになります。少なくとも、そこから生じる市場の恐慌と持続的な分裂の可能性は、攻撃者の利益を大幅に減少させるでしょう。このような長引く対立を乗り越えるという考え自体が、大多数の攻撃を阻止するでしょう。

Paradigmの研究パートナーHasuのツイッター
もしあなたが37のノードでプログラムを実行し、80,000のパッシブリスニングプログラムを持つコミュニティを持っている場合、攻撃者は勝利します。もしあなたのコミュニティの全員がノードを運営しているなら、攻撃者は失敗します。協調攻撃に対する集団免疫の正確な閾値はわかりませんが、1つだけは絶対に明らかです:ノードが多いことは良いことであり、ノードが少ないことは悪いことであり、私たちは確実に数十または数百以上のノードが必要です。
2. ノードの作業の制限はどこにあるのか?
ノードを運営できるユーザー数を最大化するために、私たちは一般的な消費者向けハードウェアに焦点を当てます。フルノードが大量のトランザクションを処理する能力には3つの重要な制限があります:
計算能力:安全にノードを運営するために必要なCPUのパーセンテージはどのくらいですか?
帯域幅:現在のインターネット接続の現実を考慮すると、1つのブロックには何バイト含まれることができますか?
ストレージ:ユーザーにどのくらいのGBのディスクを保存するように要求できますか?さらに、それはどれくらいの速さで読み取られる必要がありますか?(つまり、ハードディスクを使用できますか、それともSSDが必要ですか?)
多くの人々は、「シンプル」な技術を使用することでブロックチェーンがどれだけスケールできるかについて過度に楽観的であるため、これらの数字を誤解しています。以下の3つの要因を1つずつ検討できます:
1)計算能力
誤った答え:100%のCPU能力をブロック検証に費やすことができます。
正しい答え:約5-10%のCPU能力がブロック検証に利用可能です。
この比率が非常に低い主な理由は4つあります:
DoS攻撃の可能性をカバーするための安全マージンが必要です(攻撃者がコードの弱点を利用するためのトランザクションは、通常のトランザクションよりも処理に時間がかかります);
ノードがオフラインになった後、ブロックチェーンを同期できる必要があります。ネットワークを1分間切断した場合、数秒で追いつけるべきです;
ノードを運営することがすぐにバッテリーを消耗し、他のすべてのアプリケーションを遅くするべきではありません;
ノードは、主にp2pネットワーク上でのトランザクションやリクエストの検証と応答に関する他の非ブロック生成タスクも実行する必要があります。
ご注意ください、最近まで、「なぜ5-10%だけなのか?」という説明は、異なる問題に焦点を当てていました:PoWブロックがランダムに出現するため、ブロックを検証するのにかかる時間が長く、同時に複数のブロックが作成されるリスクが高まります。
この問題には多くの解決策があります(たとえば、Bitcoin NGや単にプルーフ・オブ・ステークメカニズムを使用すること)。しかし、これらの修正は他の4つの問題を解決できないため、多くの人々が最初に考えていたように、スケーラビリティにおいて大きな利益をもたらすことはできません。
並列性も万能ではありません。通常、一見シングルスレッドのブロックチェーンクライアントでさえ、すでに並列化されています:署名は1つのスレッドで検証され、実行は他のスレッドで行われ、別のスレッドがバックグラウンドでトランザクションプールのロジックを処理します。そして、すべてのスレッドの使用率が100%に近づくほど、ノードを運営するために消費されるエネルギーが増え、DoSに対する安全マージンが低下します。
2)帯域幅
誤った答え:もし私たちが2-3秒ごとに10 MBのデータブロックを持っているなら、大多数のユーザーのネットワーク速度は> 10 MB /秒であるため、彼らはもちろん処理できます。
正しい答え:おそらく、私たちは12秒ごとに1-5 MBのブロックを処理できるかもしれませんが、それは難しいです。
今日、私たちはインターネット接続が提供できる帯域幅に関する広告統計をよく耳にします:通常、100 Mbpsや1 Gbpsの数字が聞かれます。しかし、以下の理由から、宣伝された帯域幅データと実際の帯域幅の間には大きな差があります:
「Mbps」は「毎秒数百万ビット」を指し、1ビットは1バイトの1/8であるため、宣伝されたビット数を8で割って宣伝されたバイト数を得る必要があります;
すべての会社と同様に、インターネットサービスプロバイダーはしばしば嘘をつきます;
常に複数のアプリケーションが同じインターネット接続を使用しているため、ノードは帯域幅全体を占有できません;
p2pネットワークは避けられないオーバーヘッドをもたらします:ノードはしばしば同じブロックを何度もダウンロードして再アップロードします(ブロックに含まれる前にmempoolを介してブロードキャストされたトランザクションは言うまでもありません)。
Starkwareが2019年に実験を行ったとき、彼らは500 kbのブロックを初めて発表しました。これは、トランザクションのガスコストの低下が初めてこの可能性を実現したためで、実際にはいくつかのノードがそのサイズのブロックを処理できませんでした。
それ以来、ブロックチェーンが大きなデータブロックを処理する能力は向上しており、今後も向上し続けるでしょう。しかし、私たちが何をしても、MB/秒単位の平均帯域幅を天真爛漫に得ることはできず、1秒の遅延を受け入れられると自分に言い聞かせ、大きなデータブロックを持つことができるとは言えません。
3)ストレージ
誤った答え:10TB。
正しい答え:512G。
あなたが推測したように、ここでの主な議論は他の場所と同様です:理論と実践の違い。理論的には、あなたはアマゾンで8 TBのSSDを購入できます。実際には、このブログ記事を書くために使用しているノートパソコンは512 GBであり、人々に自分のハードウェアを購入させると、多くの人々は怠惰になったり(または800ドルの8TB SSDを購入できなかったり)、中央集権的な供給者を使用することになります。
さらに、ブロックノードをいくつかのストレージディスクにインストールして運営できたとしても、高レベルの活動はディスクをすぐに焼き尽くし、新しいディスクを購入し続けることを強いることが容易です。
また、ストレージのサイズは、新しいノードがオンラインになり、ネットワークに参加するために必要な時間を決定します。既存のノードが保存しなければならないデータは、新しいノードがダウンロードしなければならないデータです。初期同期時間(および帯域幅)も、ユーザーがノードを運営する際の主要な障害です。このブログ記事を書くとき、新しいgethノードを同期させるのに約15時間かかりました。
3. シャーディングブロックチェーンのリスク
今日、イーサリアムブロックチェーンでノードを運営することは、多くのユーザーにとって挑戦となっています。したがって、私たちはボトルネックに直面しています。コア開発者が最も懸念しているのはストレージのサイズです。したがって、現在、計算とデータのボトルネックを解決する努力や、コンセンサスアルゴリズムの変更は、大量のガスリミットの増加をもたらす可能性は低いです。イーサリアムの最大の顕著なDoS脆弱性を解決しても、ガスリミットは20%しか増加しません。
ストレージサイズの問題を解決する唯一の方法は、無状態と状態の期限切れです。無状態性は、永続的なストレージを維持せずにブロックチェーンを検証できるノードのクラスを許可します。状態の期限切れは、最近アクセスされていない状態を明確にし、ユーザーに手動で更新の証明を提供させます。
これらの2つの経路は長い間使用されており、無状態性の概念検証の実装も始まっています。これらの2つの改善が組み合わさることで、これらの懸念を大幅に緩和し、ガスリミットを大幅に引き上げるためのスペースを開くことができます。しかし、無状態と状態の期限切れが実施された後でも、ガスリミットは約3倍までしか安全に増加できない可能性があります。他の制限が主導権を握り始めるまで。
シャーディングは、ブロックチェーン上に含まれるデータを、単一のノードが処理し保存する必要があるデータから切り離すことによって、上記の制限を根本的に回避します。これらは、高度な数学と暗号技術を使用して、ノードが自らダウンロードして実行するのではなく、間接的にブロックを検証します。
したがって、シャーディングブロックチェーンは、安全に非シャーディングブロックチェーンが達成できない取引スループットレベルを持つことができます。これは、無効なブロックを成功裏に拒否する効率的でシンプルな完全検証方法を作成するために多くの暗号学的知恵を必要としますが、これは可能です:理論は非常に成熟しており、仕様草案に基づく概念検証が進行中です。

イーサリアムは、ノードが単一のシャードと信号チェーンを処理できる必要があるため、二次元シャーディングを使用する計画を立てています(各シャードに対して一定数の管理作業を実行する必要があります)。したがって、全体のスケーラビリティは制限されます。シャードが大きすぎると、ノードはもはや単一のシャードを処理できなくなり、シャードが多すぎると、ノードはもはや信号チェーンを処理できなくなります。これら2つの制約の積が上限を形成します。
立方体シャーディングや指数シャーディングを行うことで、さらに進むことができると想像できます。このような設計では、データの可用性サンプリングが確実に非常に複雑になりますが、これは可能です。しかし、イーサリアムは二次曲線を超えることはありません。その理由は、取引シャーディングが他のリスクが非常に高くならない限り、追加のスケーラビリティの利益を実現できないからです。
では、これらのリスクは何でしょうか?
1)最小ユーザー数
非シャーディングブロックチェーンは、1人のユーザーが参加する意欲があれば運営できると想像できます。シャーディングブロックチェーンはそうではありません:どのノードも単独でブロックチェーン全体を処理できないため、十分なノードが一緒に処理する必要があります。もし各ノードが50 TPSを処理でき、ブロックチェーンが10,000 TPSを処理する必要がある場合、チェーン上には少なくとも200ノードが必要です。
もしそのブロックチェーンが、任意の時点で200ノード未満になると、ノードはブロックチェーンに追いつけなくなるか、無効なブロックを検出できなくなるか、またはノードソフトウェアのインストール方法によっては多くの他の悪い状況が発生する可能性があります。
もしシャーディングブロックチェーンの容量が10倍に増加すれば、最小ノード数も10倍に増加します。では、あなたは尋ねるかもしれません:なぜ私たちは少しの容量から始めて、大量のユーザーが流入するのを見てから容量を増やさないのか;ユーザー数が減少した場合は容量を減らすのか?したがって、私たちは実際にそれを必要とする部分を把握できます。
ここにはいくつかの問題があります:
ブロックチェーン自体は、正確にいくつのユニークノードがあるかを検出できないため、分割数を検出し設定するために何らかのガバナンスが必要です。容量制限を超えると、分裂や対立の原因となることが容易です。
多くのユーザーが突然予期せず退出した場合はどうなりますか?
フォークを開始するために必要な最小ノード数を増やすことは、悪意のある買収に対抗することをさらに困難にします。
ほぼ確実に、最小ノード数は1000を超えない方が良いでしょう。したがって、数百のシャードを持つブロックチェーンが合理的であることを証明するのは難しいようです。
2)歴史的可検証性
ユーザーが本当に重視するブロックチェーンの重要な特性は永続性です。企業が破産したり、そのエコシステムを維持する能力を失った場合、サーバーに保存されたデジタル資産は10年後に消去されます。一方、イーサリアム上のNFTは永続的に存在します。
はい、人々は2371年になってもあなたのクリプトキティをダウンロードして取得し続けるでしょう。
しかし、ブロックチェーンの容量が過剰になると、すべてのデータを保存することがますます困難になります。もしある時点で大きなリスクが発生した場合、歴史の一部は誰も保存しなくなるでしょう。
このリスクを定量化するのは簡単です。ブロックチェーンのデータ容量(MB /秒)に30を掛けると、年間のTB単位で保存されるデータ量が得られます。現在のシャーディング計画のデータ容量は約1.3 MB /秒で、年間約40 TBです。これを10倍に増やすと、400 TB /年になります。
データがアクセス可能であるだけでなく、便利に到達できるようにするには、メタデータ(たとえば、ロールアップの解凍)も必要です。したがって、年間4 PB、10年後には40 PBに達する必要があります。これは、大多数のシャーディングブロックチェーンが安全に達成できる合理的な上限です。
したがって、これらの2つの次元において、イーサリアムのシャーディング設計は実際に合理的な最大安全値に非常に近いことを目指しているようです。パラメータは少し増加できますが、あまり増やすことはできません。
4. まとめ
ブロックチェーンを拡張する方法には2つあります:基本的な技術的改善と単純なパラメータの増加。まず、パラメータを増やすことは魅力的に聞こえます:ナプキンの上で数学を行うと、家庭用ノートパソコンが毎秒数千のトランザクションを処理できると自分を納得させるのは簡単です。ZK-SNARK、ロールアップ、またはシャーディングは必要ありません。不幸なことに、このアプローチは根本的に欠陥があり、多くの微妙な理由があります。
ブロックチェーンノードを運営するコンピュータは、ブロックチェーンを検証するために100%のCPU容量を消費することはできません。彼らは、予期しないDoS攻撃に対抗するために大きな安全マージンを必要とし、メモリプールで処理されるトランザクションを実行するためのバックアップ容量が必要です。そして、ユーザーはそのコンピュータでノードを運営して、他のアプリケーションを同時に使用できないことを望んでいません。
帯域幅にも同様のオーバーヘッドがあります:10 MB / sの接続は、毎秒10 MBのブロックを持つことを意味するわけではなく、12秒ごとに最大1-5 MBのブロックがあるのと同じです。ストレージも同様です。ノードを運営するためのハードウェア構成を増やし、ノードの運営制限を特定の参加者に制限することは解決策ではありません。分散化されたブロックチェーンにとって、一般ユーザーがノードを運営でき、ノードを運営する一般的な活動文化を持つことが重要です。
基本的な技術的改善は確実に効果があります。現在、イーサリアムの主要なボトルネックはストレージ容量であり、無状態性と状態の期限切れはこの問題を解決し、約3倍まで増加させることができます(ただし300倍を超えることはできません)。私たちは、ノードを運営することが現在よりも容易になることを望んでいます。シャーディングブロックチェーンはさらに拡張可能です。なぜなら、シャーディングブロックチェーンには、単一のノードが処理する必要のある取引がないからです。
しかし、それでも容量には制限があります:容量が増加するにつれて、最小ノード数も増加し、アーカイブチェーンのコスト(誰もアーカイブチェーンを管理しない場合、データ損失のリスクが高まる)も増加します。
しかし、私たちはあまり心配する必要はありません:これらの制限は十分に高く、私たちはブロックチェーンが完全に安全な状態で毎秒100万件以上のトランザクションを処理できるでしょう。しかし、それを実現するためには、ブロックチェーンの分散化を犠牲にすることなく、努力が必要です。












