
この記事の出典: Chain Catcher、著者: Vitalik Buterin、コンパイラ: Alyson、許可を得て転送
ブロックチェーンのスケーラビリティをどこまで推し進めることができるでしょうか?マスク氏の期待通り、極端な集中化を引き起こしたりユーザーに損害を与えたりすることなく、「ブロック確認時間を10倍に短縮し、ブロックサイズを10倍に拡大し、取引手数料を100倍削減する」ことを本当に実現できるのだろうか? ブロックチェーンの基本特性?そうでない場合、どこまで行くことができますか?コンセンサスアルゴリズムを変更したらどうなるでしょうか?さらに重要なのは、テクノロジーを変更して ZK-SNARK やシャーディングなどの機能を導入するとどうなるでしょうか?
最初のレベルのタイトル
01 ノードは十分に分散する必要がある
午前 2 時 35 分、マイニング プール (場合によってはステーキング プール) の管理を手伝っている地球の反対側のパートナーから緊急の電話が入ります。約 14 分前から、あなたのパートナーは、あなたのマイニング プールとその他のいくつかのプールが、依然としてネットワークの 79% をホストしているブロックチェーンから分岐したとあなたに告げました。あなたのノードによると、多数派チェーンのブロックは無効です。ここで残高エラーが発生します。キー ブロックが誤って 450 万枚の追加コインを未知のアドレスに割り当てたようです。
1 時間後、あなたは他の 2 つの小さなマイニング プールと Telegram チャットを行っています。投稿されたメッセージを含むツイートに誰かがリンクを貼り付けるのを目にすることになります。ツイートは「新しいオンチェーン持続可能なプロトコル開発基金の発表」で始まりました。
朝までに、Twitterやコミュニティフォーラムのいたるところで議論が巻き起こった。しかしその時までに、これらの450万トークンの大部分はオンチェーン上で他の資産に変換され、数十億ドルのDeFi取引が行われていました。コンセンサス ノードの 79% と、すべての主要なブロックチェーン エクスプローラーおよびライト ウォレット ノードがこの新しいチェーンに従います。おそらく、新しい開発者ファンドが一部の開発に資金を提供するか、あるいはそのすべてが大手取引所に飲み込まれるかもしれません。しかし、結果がどうであれ、このファンドはどう見ても既成事実であり、一般ユーザーには反撃する力はない。
これはあなたのブロックチェーンでも起こり得るでしょうか?マイニング プール、ブロック エクスプローラー、カストディアン ノードなど、ブロックチェーン コミュニティのエリートはおそらくよく調整されています。おそらく、彼らはすべて同じ Telegram チャネルと WeChat グループに属していると思われます。彼らが自分たちの利益をさらに高めるためにプロトコルのルールを突然変更したいと本当に望んでいるなら、おそらくそうするでしょう。この組織的な社会的攻撃を無効化する唯一の確実な方法は受動的な防御を介することであり、そのグループであるユーザーは効果的に分散されます。
ユーザーがブロックチェーンを検証し、プロトコル ルールに違反するブロックを自動的に拒否するノードを実行している場合、ストーリーがどのように展開するかを想像してみてください (たとえマイナーやステークホルダーの 90% 以上がそれをサポートしていたとしても)。すべてのユーザーが検証ノードを実行すると、攻撃はすぐに失敗します。一部のマイニング プールと取引所はプロセスでフォークしますが、これはかなり愚かに思えます。
画像の説明
パラダイムリサーチパートナーの蓮さんのツイート
最初のレベルのタイトル
02 ノード作業の制限はどこにありますか?
ノードを実行できるユーザーの数を最大化するために、私たちは通常の消費者向けハードウェアに焦点を当てています。大量のトランザクションを処理するフル ノードの機能には、次の 3 つの重要な制限があります。
帯域幅: 現在のインターネット接続の現実を考慮すると、ブロックには何バイトまで含めることができますか?
帯域幅: 現在のインターネット接続の現実を考慮すると、ブロックには何バイトまで含めることができますか?
ストレージ: ユーザーに保存するディスクの量は何 GB ですか?また、どのくらいの速度で読み取られる必要がありますか? (つまり、HDD は使用できますか、それとも SSD が必要ですか?)
副題
1) 計算能力
間違った答え: CPU パワーの 100% がブロックの検証に費やされる可能性があります。
正解: CPU 能力の約 5 ~ 10% をブロック検証に使用できます。
制限比率が非常に低い主な理由は 4 つあります。
DoS 攻撃の可能性をカバーする安全マージンが必要です (コードの弱点を悪用するために攻撃者によって行われるトランザクションは、通常のトランザクションよりも処理に時間がかかります)。
ノードは、オフラインになった後にブロックチェーンを同期できる必要があります。ネットワークから 1 分間切断しても、数秒で追いつくことができるはずです。
ノードの実行によってバッテリーが急速に消耗して、他のすべてのアプリケーションの速度が低下することはあってはならない。
ノードは、主に p2p ネットワーク上で受信するトランザクションとリクエストの検証と応答を中心とした、ブロックを生成しない他のタスクも実行する必要があります。
最近まで、「なぜ 5 ~ 10% だけなのか?」のほとんどの説明は別の問題に焦点を当てていたことに注意してください。PoW ブロックはランダムに表示されるため、ブロックの検証にかかる時間が長くなり、複数のブロックが作成されるリスクが増加します。
この問題には多くの解決策があります (例: ビットコイン NG または単にプルーフ オブ ステークを使用する)。しかし、これらの修正は他の 4 つを修正するものではないため、当初多くの人が期待していたような大幅なスケーラビリティの向上は実現されません。
副題
2) 帯域幅
間違った答え: 2 ~ 3 秒ごとに 10 MB のチャンクがある場合、ほとんどのユーザーのネットワーク速度は 10 MB/秒を超えるため、もちろん処理できます。
正解: 難しいかもしれませんが、12 秒ごとに 1 ~ 5 MB のチャンクを処理できるかもしれません。
最近、インターネット接続が提供できる帯域幅に関する広告統計をよく耳にします。100 Mbps または 1 Gbps という数字もよく聞かれます。ただし、次のような理由により、公表されている帯域幅の数値と実際の帯域幅の間には大きな差異があります。
「Mbps」は「1 秒あたり数百万ビット」を意味し、1 ビットは 1/8 バイトなので、アドバタイズされたバイト数を取得するには、アドバタイズされたビット数を 8 で割る必要があります。
すべての企業と同様に、インターネットプロバイダーはしばしば嘘をつきます。
同じインターネット接続を使用するアプリケーションは常に複数あるため、ノードが帯域幅全体を占有することはできません。
p2p ネットワークは必然的に独自のオーバーヘッドをもたらします。ノードは多くの場合、同じブロックを複数回ダウンロードして再アップロードします (ブロックに含まれる前にメモリプールを介してブロードキャストされるトランザクションは言うまでもありません)。
Starkware が 2019 年に実験したとき、トランザクション ガス コストの削減で初めてこれが可能になったため、500 kb ブロックを初めてリリースしましたが、実際にはいくつかのノードがそのサイズのブロックを処理できませんでした。
副題
3) 保管
不正解: 10TB。
正解:512G。
おそらくご想像のとおり、ここでの主な議論は他の箇所と同じであり、理論と実践の区別です。理論的には、8 TB SSD を Amazon で購入できます。このブログ記事を書くために使用したラップトップには実際には 512 GB があり、人々に自分のハードウェアを購入させた場合、多くの人は怠け者になるでしょう (または、800 ドルの 8TB SSD を買う余裕がありません)。代わりに集中プロバイダーを使用してください。
また、たとえブロックノードを起動して一部のストレージ ディスク上で実行できたとしても、高レベルのアクティビティによってディスクがすぐに消耗してしまい、新しいディスクを購入し続ける必要が生じる可能性があります。
最初のレベルのタイトル
03 断片化されたブロックチェーンのリスク
現在、イーサリアム ブロックチェーン上でノードを実行することは、多くのユーザーにとって課題となっています。そこでボトルネックにぶつかりました。コア開発者の最大の懸念はストレージ サイズです。そのため、現時点では、計算やデータのボトルネックに対処する取り組みや、コンセンサスアルゴリズムの変更によっても、ガス制限が大幅に増加する可能性は低いと考えられます。イーサリアムの最大の顕著な DoS 脆弱性を解決したとしても、ガス制限は 20% 増加するだけです。
ストレージ サイズの問題に対する唯一の解決策は、ステートレス性と状態の有効期限です。ステートレス性により、ノードのクラスは永続的なストレージを維持せずにブロックチェーンを検証できます。ステータスの有効期限が切れると、最近アクセスされていないステータスがクリアされ、ユーザーは手動で更新の証明を提供する必要があります。
どちらのパスも長い間使用されており、ステートレス性の概念実証の実装はすでに始まっています。これら 2 つの改善を組み合わせることで、これらの懸念が大幅に軽減され、ガス制限を大幅に引き上げる余地が生まれます。ただし、ステートレス状態と状態の有効期限を実装した後でも、他の制限が優勢になり始めるまで、ガス制限を安全に増加できるのは約 3 倍だけです。
シャーディングは、ブロックチェーンに含まれるデータを、個々のノードが処理および保存する必要があるデータから切り離すため、前述の制限を基本的に回避します。ノード自体がブロックをダウンロードして実行することでブロックを検証するのではなく、高度な数学的および暗号化技術を使用して間接的にブロックを検証します。
したがって、シャード化されたブロックチェーンは、非シャード化されたブロックチェーンでは実現できないレベルのトランザクション スループットを安全に得ることができます。無効なブロックを首尾よく拒否する効率的かつシンプルな完全な検証を作成するには、暗号に関する多くの創意工夫が必要ですが、それは可能です。理論は十分に確立されており、草案仕様に基づいた概念実証がすでに進行中です。
イーサリアムは二次シャーディングの使用を計画しているため、ノードは個々のシャードとビーコン チェーンを処理できなければならない (シャードごとに一定量の管理作業を実行する必要がある) ため、全体的なスケーラビリティは制限されています。シャードが大きすぎる場合、ノードは単一のシャードを処理できなくなり、シャードが多すぎる場合、ノードはビーコン チェーンを処理できなくなります。これら 2 つの制約の積が上限を形成します。
キュービック シャーディングや指数関数的シャーディングを実行することで、さらに前進することも考えられます。このような設計では、データの可用性のサンプリングは確かにはるかに複雑になりますが、実行することは可能です。ただし、イーサリアムは二次曲線を超えることはありません。その理由は、他のステークが非常に高くならない限り、トランザクション シャーディングでは実際には追加のスケーラビリティの向上を実現できないためです。
では、これらのリスクとは何でしょうか?
1) 最小ユーザー数
参加する意思のあるユーザーが 1 人いる限り、非シャード ブロックチェーンは機能できると考えられます。これは、シャーディングされたブロックチェーンの場合には当てはまりません。単一のノードが単独でブロックチェーン全体を処理できるわけではないため、ブロックチェーン全体を一緒に処理するには十分なノードが必要です。各ノードが 50 TPS を処理でき、ブロックチェーンが 10,000 TPS を処理する必要がある場合、実行するにはチェーン上に少なくとも 200 のノードが必要です。
ブロックチェーンのノードが常に 200 未満である場合、ノードがブロックチェーンに追いつけない、ノードが無効なブロックを検出できない、またはノードのソフトウェアのインストール方法に応じて、その他のさまざまな問題が発生する可能性があります。
シャード化されたブロックチェーンの容量が 10 倍に増加すると、最小ノード数も 10 倍に増加します。そこで、少しの容量から始めて、ユーザーが大量に流入した場合には容量を増やし、ユーザー数が減少した場合には容量を削減すればよいのではないかと疑問に思われるかもしれません。したがって、実際に必要な部品を入手できます。
以下にいくつかの質問があります。
ブロックチェーン自体は、一意のノードがいくつあるかを正確に検出できないため、シャードの数を検出して設定するには、ある種のガバナンスが必要になります。容量制限を超えると、断片化や競合が発生しやすくなります。
多くのユーザーが突然、予期せずログアウトしたらどうなるでしょうか?
フォークの起動に必要なノードの最小数を増やすと、敵対的買収に対する防御が難しくなります。
ノードの最小数は、ほぼ確実に 1000 を超えません。したがって、数百を超えるシャードを持つブロックチェーンを正当化するのは難しいと思われます。
2) 履歴の検索可能性
ユーザーが本当に重視するブロックチェーンの重要な特性は永続性です。企業が倒産したり、エコシステムを維持できなくなったりすると、サーバーに保存されていたデジタル資産は10年後に消去されます。一方、イーサリアム上のNFTは永続的です。
はい、人々は 2371 年になってもあなたの CryptoKitties をダウンロードして取得するでしょう。
しかし、ブロックチェーンの容量が大きくなりすぎると、このすべてのデータを保存することがより困難になります。ある時点で大きなリスクに遭遇した場合、誰も保存しない履歴の部分が存在します。
このリスクを定量化するのは簡単です。ブロックチェーンのデータ容量 (MB/秒) を単位として、30 を掛けると、年間に保存されるデータ量 (TB) が得られます。現在のシャーディング プランのデータ容量は約 1.3 MB/秒、つまり約 40 TB/年です。これを 10 倍に増やすと、400 TB/年になります。
データにアクセスできるだけでなく、そこに簡単に存在できるようにしたい場合は、メタデータ (ロールアップの解凍など) も必要となるため、1 年あたり 4 PB、10 年後には 40 PB になります。これは、ほとんどのシャード化ブロックチェーンが安全に達成できる妥当な上限です。
最初のレベルのタイトル
04 まとめ
ブロックチェーンの拡張を試みるには、基本的な技術的な改善と単純なパラメーターの追加という 2 つのアプローチがあります。まず、パラメータを増やすのは魅力的に思えます。ナプキンで計算してみると、ZK-SNARK、ロールアップ、またはシャーディングを必要とせずに、自宅のラップトップで 1 秒あたり数千のトランザクションを処理できることが簡単に納得できます。残念ながら、このアプローチには、多くの微妙な理由から、根本的に欠陥があります。
ブロックチェーン ノードを実行しているコンピュータは、ブロックチェーンの検証に CPU 能力の 100% を使い切ることはできません。偶発的な DoS 攻撃に対する大きな安全マージンが必要であり、メモリプールでの処理などのトランザクションを実行するための予備の能力も必要です。また、ユーザーは、コンピュータ上でノードを実行して、そのコンピュータを他のアプリケーションに同時に使用できないようにすることを望んでいません。
帯域幅にもオーバーヘッドがあります。10 MB/秒の接続は、1 秒あたり 10 MB のチャンクを使用できるという意味ではなく、ストレージの場合と同様、12 秒ごとに最大 1 ~ 5 MB のチャンクを使用できる可能性があります。ノードを実行するためのハードウェア構成を増やしたり、ノードの操作を特定のアクターに制限したりすることは解決策ではありません。分散型ブロックチェーンの場合、一般のユーザーがノードを実行できること、およびノードを実行するためのアクティビティに関する共通の文化が存在することが重要です。
根本的な技術的改善が確実に進んでいます。現在、イーサリアムの主なボトルネックはストレージ容量ですが、ステートレス性と状態の有効期限によってこの問題が解決され、ノードを現在よりも実行したいため、最大約 3 倍 (ただし 300 倍を超えない) まで増やすことができます。より簡単に。シャード化ブロックチェーンには、単一ノードで処理する必要があるトランザクションがないため、さらに拡張できます。
しかしそれでも、容量には限界があります。容量が増加すると、最小ノード数も増加し、アーカイブ チェーンのコストも増加します (アーカイブ チェーンの管理に誰も手間をかけないと、データ損失のリスクが増加します)。 。
しかし、あまり心配する必要はありません。これらの制限は、ブロックチェーンが完全に安全な状態で 1 秒あたり 100 万件を超えるトランザクションを処理できるほど十分に高いものです。しかし、ブロックチェーンの分散化を犠牲にすることなくこれを実現するには努力が必要です。