著者:Chakra; 翻訳者:0xjs@GoldenFinance
ビットコインは世界で最も早く、最も安全で、最も分散化されたブロックチェーンであり、時価総額も最も大きい。しかし、1秒あたりのトランザクション(TPS)が低く、プログラミング能力が限られているため、大規模なアプリケーションをサポートするのに苦労していると批判されることが多く、ビットコインのエコシステムの成長を大きく妨げています。ビットコインエコシステムの構築者として、この記事ではビットコインのスケーリングソリューションの過去、現在、未来について説明します。
この記事は、ビットコインのスケーラビリティに関する一連の記事の最初のもので、歴史的にビットコインのメインネットで実装されてきたネイティブなスケーリングソリューションに焦点を当てています。次回は、より高いスケーラビリティを持つオフチェーンのスケーリングソリューションについて説明します。ご期待ください。
ブロックサイズ制限の増加
2010年、サトシ・ナカモトはビットコインコアに1MBのブロックサイズ制限を導入しました。この明確な制限は10年以上変わっていません。
興味深いことに、サトシ・ナカモトはブロックサイズの上限を提案した理由を公には説明せず、詳細な説明なしにコード統合のPRの中に「隠されて」いました。サトシ・ナカモトが去った数年後、コミュニティはブロックサイズの上限をめぐって深く分裂し、より大きなブロックの必要性が広く議論されるようになりました。
ブロックが大きければ大きいほど、そのブロックが保持できるトランザクション数は多くなる。
ブロックが大きければ大きいほど、コンセンサス時間が一定であると仮定した場合のTPSは高くなります。
なぜTPSがそれほど重要なのでしょうか?なぜなら、ブロックサイズが1MBの場合、1秒間に完了できるトランザクション数は3~7トランザクションに制限され、ビットコインのビジョンである「ピアツーピアの電子キャッシュシステム」を実現するための大規模なアプリケーションには十分ではないからです。
しかし、より大きなブロックには、別の問題が伴います。
第一に、より大きなブロックは、ストレージ、コンピュート、帯域幅という形でより多くのハードウェアを必要とし、その結果、すべてのノードの運用コストが高くなります。ビットコインの過去の取引データは急速にスケールするため、新しい完全なノードはネットワークとの同期に多くの時間を費やす必要があります。これらの要件は、フルノードを運用するユーザーの意欲を低下させ、分散化を抑制します。
第二に、ブロックが大きければ大きいほど、ノード間の同期に時間がかかり、孤児ブロックが発生する可能性が高くなるため、ブロックの再編成が頻繁に行われ、フォークのリスクが高まり、セキュリティが大幅に低下します。
この問題は、後にヴィタリック氏によってブロックチェーンの不可能な三角形と呼ばれるようになりました。つまり、ブロックチェーンは分散化、スケーラビリティ、セキュリティを同時に達成できないということです。ブロックが大きければ大きいほどスケーラビリティは高まるが、その代償として分散性とセキュリティは弱くなる。
<
最も重要なのは、ブロックサイズの上限を変更するにはハードフォークが必要だということです。ハードフォークでは、ネットワーク全体のすべてのノードを同時にアップグレードする必要があり、さもなければネットワークが分裂してしまいます。分散型コンセンサスに依存するビットコインにとって、これは良い選択肢ではない。サトシ・ナカモトの影響で、ハードフォークを避けることがビットコインの事実上の原則になったようだ。
残念ながら、分裂は起こる。2016年、ビットコインクラシックはBIP 109を採用してブロックサイズの上限を2MBにフォークし、2016年にはビットコインXTクライアントがBIP 101を採用してブロックサイズを8MBに増やした。しかし、大多数のマイナーとユーザーは、現在知られているように、メインのビットコインネットワークにとどまっています。
ハードフォークによってブロックサイズを明示的に増やそうとする努力は失敗に終わりました。
分離された証人
ハードフォークが容認できないのであれば、ソフトフォークが解決策になり得ます。
ウィットネスはUTXOのロックを解除するクレデンシャルであり、トランザクションを完了するために長い間UTXOの入力スクリプトフィールドに置かれてきました。しかし、このアプローチには、循環依存性、サードパーティトランザクションの拡張性、およびセカンドパーティトランザクションの拡張性に関する潜在的な問題があります。
2011年当時、開発者たちはこの問題に気づき、他の取引データから証人を分離するSegregated Witness(SegWit)という解決策を提案しました。しかし、当時のハードフォーク提案は支持を得られず、最終的に合併が実現したのは2015年にSegWitソフトフォークが提案されてからでした。
SegWitはどのようにしてソフトフォークによって後方互換性を実現したのでしょうか?
新バージョンのノードは、旧バージョンのノードによって生成されたブロックとトランザクションを認識し、受け入れます。
古いバージョンのノードは、新しいバージョンによって導入された新しいルールや機能を認識できませんが、新しいバージョンによって生成されたブロックを有効なものとして扱います。
SegWitソフトフォークにより、新しいトランザクションは空の入力スクリプトを使用できるようになり、証人を格納するためにブロック構造に証人フィールドを追加できるようになりました。アップグレード前のBitcoin Coreは空の入力スクリプトをサポートしているため、古いバージョンのノードは新しいバージョンで生成されたブロックを拒否しません。さらに、バージョンフィールドを使用することで、古いトランザクションタイプも引き続き利用でき、ノードはバージョンに応じて異なる処理を行います。
SegWitの拡張は重みの形で実装されており、証人バイトは1の重みを持ち、他のデータバイトは4の重みを持つため、ブロックあたりの最大重みは400万に制限されます。なぜデータの種類によって異なる重みを割り当てるのか?常識的な考えとしては、ウィットネス・データは使用するときだけ検証の役割を果たし、長期間保存する必要がないため、比較的安価でウェイトが低いということです。
これは実際には、ブロックサイズの上限を増やすという偽装であり、理論的な上限は4MBに引き上げられ(完全に目撃データのおかげです)、1ブロックの平均は約2MBになります。古いブロック構造を見ると、これはまだ1ブロックあたり1MBというサトシ・ナカモトのオリジナルの制限を守っている。
タップルート
OP_IFのようなビットコインのオペコードを使用することで、ビットコインの消費スクリプトにタイムロックやマルチ署名などの複雑な条件を設定することが可能です。しかし、複雑な使用条件は、検証のために複数の入力と署名を必要とすることが多く、ブロックの負荷が増加し、トランザクションが遅くなる一方で、すべての支払い条件が公開され、プライバシー侵害につながります。
TaprootはMASTを使用してビットコインを増強し、ユーザーはMerkle Trieを使用して支出条件を表します。各リーフノードは支出スクリプトを表し、支出プロセス中、他の条件を明らかにすることなく、実際に実行されたスクリプトと対応するMerkle Pathのみを提供する必要があります。これにより、ブロックスペースの消費を減らし、プライバシーを向上させることができます。
また、Taprootのアップグレードでは、加法的同相であり、署名の集約とバッチ検証を可能にするシュナー署名が導入され、全体的なトランザクション/秒(TPS)が向上しました。シュナー署名の集約された署名の利点により、複数署名のトランザクションを検証するロジックが大幅に簡素化されます。以前はECDSA署名がスクリプトに一致させるために複数の署名をチェーン上に送信する必要があったのに対し、シュナー署名ではチェーン上に送信する必要があるのはオフチェーンに集約された1つの署名だけであるため、マルチシグネチャ決済のためのオンチェーンスペースの使用を減らすことができます。
シュナー署名をMASTと組み合わせ、Pay to Contract(P2C)のコンセプトを使用することで、複雑な契約コードはMASTルート経由で提出され、単一のシュナー署名支払いをサポートする標準ビットコイン公開鍵を適応して生成します。
興味深いことに、シュナー署名の単一署名と複数署名はチェーン上で同じように見えるため、複雑なスクリプト、複数署名、単一署名のロジックはチェーン上で区別できず、プライバシーがさらに強化されます。
結論
ビットコインのスケーラビリティソリューションは、分散化を維持しながらパフォーマンスを向上させるという進化するアプローチを反映しています。とセキュリティを維持しながら、パフォーマンスを向上させるという進化するアプローチを反映しています。
当初、ブロックサイズを大きくすることは、低い取引レートの問題に対する直接的な解決策として検討されましたが、コミュニティのコンセンサスに挑戦するノードコストやネットワークフォークに関する問題が生じました。
SegWitの導入は、ソフトフォークによってブロック容量を最適化し、後方互換性を確保し、分裂的なハードフォークを回避するという、重要な進歩をもたらしました。
その後、TaprootはMASTとSchnorr署名によってスケーラビリティとプライバシーをさらに向上させ、トランザクションスペースを削減し、検証効率を改善しました。さらに、Taprootはビットコイン上で複雑なスクリプトプログラミングを可能にし、将来的なスケーリングの試みに道を開きます。
これらの開発は、よりスケーラブルで堅牢なネットワークに向けたビットコインの慎重かつ革新的な動きを強調しています。
しかし、これらのスケーリングプログラムの影響は、「ピアツーピアの電子キャッシュシステム」というビジョンを実現するには十分ではありませんでした。