
Vitalik、マスク氏に反論:ブロックチェーンのスケーラビリティ向上は簡単ではない
TechFlow厳選深潮セレクト

Vitalik、マスク氏に反論:ブロックチェーンのスケーラビリティ向上は簡単ではない
容量が増加するにつれて、最低ノード数も増加し、アーカイブチェーンのコストも上昇する(誰かがアーカイブチェーンの管理を怠れば、データ損失のリスクが高まる)。
執筆:Vitalik Buterin
翻訳:Alyson
先日、テスラの創業者であるマスク氏はツイートで、ドージコインが理想的にはブロック承認時間を10倍高速化し、ブロックサイズを10倍に増やし、手数料を100倍に削減すれば、簡単に勝てるだろうと述べました。
この発言は暗号資産業界の多くのKOLから批判を受けましたが、イーサリアムの創設者であるVitalikもこれについて本稿で言及し、単純にブロックチェーンネットワークのパラメータを上げることでより多くの問題が生じると指摘。ブロックチェーンネットワークの性能向上が直面する課題と制限について詳しく説明しています。以下はTechFlowによる翻訳であり、原意を損なわない範囲での要約です。
ブロックチェーンのスケーラビリティはどこまで拡張できるのでしょうか? マスク氏が望むように、「ブロック承認時間を10倍短縮し、ブロックサイズを10倍にし、手数料を100倍に下げ」ることは可能でしょうか? そうした変更が極端な中央集権化を引き起こさず、ブロックチェーンの基本的属性を損なわない範囲で実現できるのでしょうか? もしそうでなければ、どこまでなら可能でしょうか? コンセンサスアルゴリズムを変更したらどうなるでしょうか? さらに、ZK-SNARKやシャーディングといった機能を導入するために技術を変更したらどうなるでしょうか?

実は、シャーディングを行うかどうかに関わらず、ブロックチェーンのスケーラビリティを制限する重要な、そして非常に繊細な技術的要因が存在します。多くの場合、これらの制限に対処するための解決策がありますが、解決策があるとしても限界は存在します。この記事ではこうした問題について探ります。
一、ノードは十分に分散されている必要がある
午前2時35分、世界の反対側にいるパートナーから緊急の電話がかかってきます。彼はあなたが運営するマイニングプール(あるいはステーキングプール)をサポートしている人物です。およそ14分前から、あなたのパートナーは、あなたのプールと他のいくつかのプールが、依然としてネットワークの79%を維持しているブロックチェーンから分離していると報告しています。あなたのノードによれば、多数派チェーンのブロックは無効です。残高にエラーがあり、ある重要なブロックが未知のアドレスに450万枚の追加トークンを誤って割り当てているように見えます。
1時間後、あなたは他の2つの小規模マイニングプールとTelegramでチャットしています。最終的に誰かがツイートへのリンクを貼り、そこに投稿されたメッセージを共有します。そのツイートの冒頭には「新たなオンチェーン持続可能なプロトコル開発基金の発表」と書かれています。
朝になり、Twitterやコミュニティフォーラムでは議論が尽きません。しかし、その時点で450万枚のうちの大部分はすでに他の資産に交換され、数十億ドル規模のDeFi取引が行われていました。コンセンサスノードの79%、および主要なブロックエクスプローラーやライトウォレットのノードすべてが、この新しいチェーンを採用していました。
おそらく新しい開発者基金は特定のプロジェクトを資金援助するでしょうし、あるいはすべてが主要取引所によって吸収されるかもしれません。しかし、結果がどうであれ、この基金は事実上既成事実となり、一般ユーザーには対抗手段がありません。
このようなことは、あなたのブロックチェーンでも起きるでしょうか? あなたのブロックチェーンコミュニティのエリート層——マイニングプール、ブロックエクスプローラー、ノード運営者など——はよく連携しており、おそらく同じTelegramチャンネルやWeChatグループに属しているでしょう。彼らが協調してプロトコルルールを自分たちの利益のために突然変更しようとすれば、実際にそうする可能性があります。こうした社会的攻撃を無効にする唯一信頼できる方法は、受動的な防御、つまりユーザーという分散した集団を通じて行うことです。
もしユーザー全員がブロックチェーンを検証するノードを実行し、たとえ90%以上のマイナーやステークホルダーが支持してもプロトコルルールを破るブロックを自動的に拒否するとしたら、物語はどのように展開するでしょうか? もしすべてのユーザーが検証ノードを実行していれば、攻撃はすぐに失敗します。いくつかのマイニングプールや取引所が分岐してしまうかもしれませんが、それは明らかに愚かな行動に見えるでしょう。
しかし、一部のユーザーだけが検証ノードを実行している場合でも、攻撃者は完全勝利はできません。代わりに混乱が生じ、異なるユーザーが異なるブロックチェーンビューを見ることになります。少なくとも、それに伴う市場のパニックや継続的な分裂により、攻撃者の利益は大きく減少するでしょう。長期にわたる紛争に巻き込まれるという考え自体が、ほとんどの攻撃を抑止するのです。

ParadigmリサーチパートナーHasu氏のツイート
もしコミュニティが37台のノードプログラムと8万台の受動的リスニングプログラムで署名やブロックヘッダーをチェックしているなら、攻撃者は勝ちます。もしコミュニティの全員がノードを実行していれば、攻撃者は失敗します。協調攻撃に対する集団免疫の正確な閾値はわかりませんが、一つ確かなことがあります:ノードが多いほど良く、少ないほど悪く、少なくとも数十から数百以上が必要です。
二、ノードの作業能力の制限とは?
ノードを実行できるユーザー数を最大化するため、私たちは一般的なコンシューマー向けハードウェアに焦点を当てます。フルノードが大量のトランザクションを処理できる能力には、以下の三つの主要な制限があります:
-
計算能力:安全にノードを実行するために必要なCPU使用率はどのくらいか?
-
帯域幅:現在のインターネット接続の現実を考慮すると、1ブロックに何バイトまで含められるか?
-
ストレージ:ユーザーに何ギガバイトのディスク容量を要求できるか? また、読み取り速度はどれくらい速くなければならないか?(HDDで十分か、SSDが必要か?)
多くの人々は「シンプル」な技術を使えばブロックチェーンをどこまでも拡張できると考えてしまいますが、これはこれらの数値に対して過度に楽観的であることが原因です。以下でこれら三つの要素を一つずつ見ていきましょう。
1)計算能力
誤った答え:CPU能力の100%をブロック検証に費やせる。
正しい答え:CPU能力の約5~10%しかブロック検証に使えない。
この比率がこれほど低い主な理由は四つあります:
-
DoS攻撃の可能性に対応するための安全マージンが必要(攻撃者がコードの弱点を突いて通常より長い処理時間を要する取引を行う可能性があるため);
-
ノードがオフラインになった後でもブロックチェーンを同期できる必要がある。たとえば1分間ネットワークから切断されても、数秒で追いつけなければならない;
-
ノードの実行がバッテリーを急速に消耗したり、他のアプリケーションを遅くしてはならない;
-
ノードはブロック生成以外のタスクも行う必要があり、特にP2Pネットワーク上で着信するトランザクションやリクエストの検証と応答が主となる。
なお、最近まで「なぜ5~10%なのか?」という疑問に対する説明の多くは、別の問題に注目していました。PoWのブロックはランダムに生成されるため、ブロック検証に時間がかかると複数のブロックが同時に生成されるリスクが高まるという点です。
この問題を解決する方法はいくつかあります(例:Bitcoin NG、またはステークベースのコンセンサス)。しかし、これらの修正は他の四つの問題を解決できないため、多くの人が当初期待したほどスケーラビリティの大幅な改善につながりません。
並列処理も万能ではありません。一見シングルスレッドのように見えるブロックチェーンクライアントでも、すでに並列化されています。たとえば、署名の検証は別スレッド、実行は別のスレッド、トランザクションプールの管理はバックグラウンドの別のスレッドで行われます。すべてのスレッドの使用率が100%に近づくほど、ノードの消費エネルギーは増え、DoSに対する安全マージンは低下します。
2)帯域幅
誤った答え:2~3秒ごとに10MBのデータブロックがあれば、多くのユーザーのネット速度は>10MB/秒なので、当然処理できる。
正しい答え:おそらく12秒ごとに1~5MBのブロックを処理するのが限界で、それも難しい。
今ではインターネット接続の帯域幅について頻繁に広告される数字を耳にします。100Mbpsや1Gbpsといった数字はよく聞かれます。しかし、以下の理由から、宣伝されている帯域幅と実際の帯域幅には大きな差があります:
-
「Mbps」は「毎秒百万ビット」を意味し、1ビットは1バイトの1/8なので、宣伝されているビット数を8で割って初めてバイト数になる;
-
ISP(インターネットサービスプロバイダー)はよく嘘をつく;
-
複数のアプリケーションが同じインターネット接続を共有しているため、ノードが帯域幅を独占できない;
-
P2Pネットワークには避けられないオーバーヘッドがある:ノードは同じブロックを何度もダウンロード・再アップロードすることがあり、ブロックに含まれる前のトランザクションもmempoolを通じて広く配布される。
Starkwareが2019年に実験を行った際、トランザクションのガスコストの低下により初めて500KBのブロックをリリースしましたが、実際にそのサイズのブロックを処理できないノードがいくつかありました。
それ以来、ブロックチェーンが大容量ブロックを処理する能力は向上しており、今後もさらに進化していくでしょう。しかし、どんなに努力しても、平均帯域幅(MB/秒)をそのまま受け入れ、1秒の遅延で許容できるような巨大ブロックを持つと考えるのは非現実的です。
3)ストレージ
誤った答え:10TB。
正しい答え:512GB。
おそらく想像できるように、ここでも理論と実践の違いが問題となります。理論的には、Amazonで8TBのSSDを購入できます。しかし、このブログを書いているノートパソコンは512GBしかなく、ユーザーに自らハードウェアを購入させると、多くの人は怠惰になり(あるいは800ドルの8TB SSDを買えない)、中央集権的なプロバイダーに頼ってしまいます。
さらに、いくらブロックノードを大容量ストレージに設置できたとしても、高頻度の書き込み活動によってディスクがすぐに消耗し、常に新しいディスクを買い替える羽目になります。
また、ストレージ容量は新規ノードがネットワークに参加し始めるまでの時間を決定します。既存ノードが保存しているデータはすべて、新規ノードがダウンロードしなければなりません。初期同期時間(と帯域幅)は、ユーザーがノードを運用する際の主な障壁です。このブログを書いた時点でのgethノードの同期には、約15時間かかりました。
三、シャーディングブロックチェーンのリスク
今日、イーサリアムブロックチェーンでは、多くのユーザーにとってノードの運用はすでに困難です。そのため、ボトルネックが生じています。コア開発者が最も懸念しているのはストレージ容量です。そのため、現時点では計算力やデータのボトルネックを解決する取り組み、あるいはコンセンサスアルゴリズムの変更であっても、ガスリミットの大幅な増加にはつながりにくいです。イーサリアム最大のDoS脆弱性が解消されても、ガスリミットはせいぜい20%程度しか増加しません。
ストレージ容量の問題を解決する唯一の方法は「ステートレス性」と「ステート期限切れ」です。ステートレス性により、永続ストレージを持たないノードでもブロックチェーンを検証できるようになります。ステート期限切れは、最近アクセスされていないステートを削除し、ユーザーに更新証明を手動で提出させる仕組みです。
これらの両方のアプローチは長期間研究されており、ステートレス性のプロトタイプ実装も始まっています。この二つの改良を組み合わせることで、上記の懸念は大きく緩和され、ガスリミットの大幅な増加が可能になります。しかし、ステートレス性とステート期限切れが実装された後でも、他の制限が支配的になるまで、ガスリミットは安全に約3倍までしか増加しないと考えられます。
シャーディングは、ブロックチェーンに含まれるデータと、個々のノードが処理・保存する必要のあるデータを切り離すことで、上記の制限を根本的に回避します。高度な数学と暗号技術を用いて、ノードが直接ダウンロード・実行するのではなく、間接的にブロックを検証します。
したがって、シャーディングされたブロックチェーンは、非シャーディングのものでは達成できないレベルのトランザクションスループットを安全に実現できます。これは確かに高度な暗号学的知見を必要としますが、無効なブロックを効率的かつ簡潔に拒否する完全な検証方法は構築可能です。理論はすでに成熟しており、仕様草案に基づくプロトタイプも進行中です。

イーサリアムは二次シャーディングを計画しています。ノードは単一のシャードとビーコンチェーン(各シャードに対して一定量の管理作業が必要)を処理できなければならないため、総合的なスケーラビリティには限界があります。シャードが大きすぎるとノードは単一シャードを処理できず、シャードが多すぎるとビーコンチェーンを処理できなくなります。この二つの制約の積が上限となります。
三次元シャーディングや指数関数的シャーディングも理論的には可能ですが、データ可用性サンプリングははるかに複雑になります。しかし、イーサリアムは二次曲線を超えては進めません。理由は、取引のシャーディングは、リスクが非常に高くなるまで、追加のスケーラビリティ向上をもたらさないためです。
では、そのリスクとは何でしょうか?
1)最小ノード数
非シャーディングブロックチェーンであれば、たった一人のユーザーが参加すれば動作可能です。しかし、シャーディングブロックチェーンでは違います。1つのノードがブロックチェーン全体を処理できないため、十分な数のノードが必要です。1ノードが50TPSを処理でき、ブロックチェーン全体が10,000TPSを処理する必要がある場合、少なくとも200ノードが必要です。
もし任意の時点で200未満のノードしか存在しなければ、ノードはチェーンに追いつけなくなるか、無効ブロックを検出できなくなるか、あるいはノードソフトウェアの設定次第で他の重大な問題が発生します。
シャーディングブロックチェーンの容量を10倍にすれば、最低ノード数も10倍になります。では、なぜ最初は小さな容量で始め、ユーザーが増えたら容量を増やし、減ったら減らすという動的調整をしないのでしょうか? そうすれば、必要な部分だけを維持できます。
しかし、以下のような問題があります:
-
ブロックチェーン自体はノードの正確な数を把握できないため、シャード数の決定には何らかのガバナンスが必要。容量超過は分裂や衝突の原因になりやすい。
-
多くのユーザーが突然離脱したらどうなるか?
-
フォーク起動に必要な最小ノード数を増やすと、悪意ある買収を防ぐのが難しくなる。
ほぼ確実に、最小ノード数は1000以下に抑えるべきです。したがって、数百を超えるシャードを持つブロックチェーンを正当化するのは極めて困難です。
2)履歴の検索可能性
ユーザーが真に重視するブロックチェーンの重要な性質は「永続性」です。企業が倒産したりエコシステムの保守ができなくなったりすれば、サーバー上のデジタル資産は10年後に消去されます。一方、イーサリアム上のNFTは永久に存在します。
はい、2371年になっても、あなたのクリプトキティはまだダウンロード・参照可能です。
しかし、ブロックチェーンの容量が高すぎると、すべてのデータを保存することが困難になります。ある時点で大きなリスクが生じ、履歴の一部が誰にも保存されなくなる可能性があります。
このリスクを定量化するのは簡単です。ブロックチェーンのデータ容量(MB/秒)に30を掛け、1年あたりのTB単位のデータ量を算出します。現在のシャーディング計画の容量は約1.3MB/秒なので、年間約40TBです。これを10倍にすれば、400TB/年になります。
データだけでなく、便利にアクセスできるようにするためのメタデータ(例:Rollupの展開情報)も必要です。したがって、年間4PB、10年で40PBが必要になります。これが大多数のシャーディングブロックチェーンが安全に到達できる合理的上限です。
したがって、この二つの観点から見ると、イーサリアムのシャーディング設計は、かなり妥当な最大安全値にすでに近づいていると言えます。パラメータは少し増やせますが、大きくはできません。
四、まとめ
ブロックチェーンを拡張する方法には二通りあります:基本的な技術的改善と、単純なパラメータ増加です。 後者は魅力的に思えます。紙の上で計算すれば、家庭用ノートPCが毎秒数千件の取引を処理できるように思え、ZK-SNARKやRollup、シャーディングなどは不要に思えるでしょう。しかし、残念ながらこのアプローチは根本的に欠陥があり、その理由はいくつもあります。
ブロックチェーンノードを実行するコンピューターは、検証にCPUの100%を使用することはできません。予期しないDoS攻撃に対抗するための大きな安全マージンが必要であり、トランザクションプールの処理などのために余力も必要です。また、ユーザーはノードを実行中に他のアプリケーションが使えなくなるような環境を望んでいません。
帯域幅も同様にオーバーヘッドがあります。10MB/sの接続だからといって、毎秒10MBのブロックを持つわけにはいきません。12秒ごとに1~5MBが限界で、ストレージも同様です。ノードのハードウェア要件を上げ、特定の参加者に運用を限定するのも解決策ではありません。分散型ブロックチェーンにとって、一般ユーザーがノードを実行でき、それを日常的に行う文化を持つことは極めて重要です。
基本的な技術的改善は確かに効果があります。現在、イーサリアムの主なボトルネックはストレージ容量ですが、ステートレス性とステート期限切れによってこれを解決でき、ガスリミットを最大約3倍まで増加させることが可能です(300倍などではない)。我々の目標は、ノードの運用が今よりも容易になることです。シャーディングブロックチェーンはさらに拡張可能で、個々のノードがすべての取引を処理する必要がないからです。
しかし、それでも容量には限界があります:容量が増えるほど、最低ノード数が増え、アーカイブチェーンのコストも上昇します(誰も管理しなければ、データ消失のリスクが高まります)。
ただし、あまり心配する必要はありません。これらの制限は十分高く、ブロックチェーンを完全に安全に保ちつつ、毎秒百万件以上の取引を処理できる可能性があります。しかし、それには分散性を犠牲にせず、相当な努力が必要です。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














