注意: このページは非常に古く、ほとんどメンテナンスされていません。 ビットコインは、ブロック チェーンの小さな部分のみを処理する軽量クライアントをサポートするように設計されています(これに関する詳細については、以下の単純化された支払い検証を参照してください)。

このページは、ネットワークのセキュリティと分散化に関して、ビットコインのフル ノードとブロック チェーンの取引の拡張性に関する計算を行うために存在することに注意してください。 代替プロトコルのスケーラビリティを議論したり、哲学的な議論を要約したりすることは意図していません。 9830>

読者への注意事項

技術者がビットコインの仕組みについて聞くとき、彼らはしばしば「フラッディング」という単語で立ち止まり、「なんてこった!そんなのスケールできない!」と言っています。 この記事の目的は、極端な例としてVisaのピーク時の取引レートを取り上げ、疑わしい理由やコア設計の変更、存在しないオーバーレイなどの種類なしに、ビットコインが技術的にその種のレートに到達できることを示すことにあります。 このように、これは単なる極端な例であり、ビットコインがどのように成長して幅広いニーズに対応するかについての計画ではありません(分散型システムとして、ビットコインの成長を決定するのはビットコインを使用する一般の人々です)。

Dan はここで提示された分析を正しく批判し、この規模で運用すると、ビットコインの分散型性質が著しく低下すると指摘します。「完全検証」ノードを実行するために何テラバイトものディスク容量が必要であれば、それを実行する人は少なくなり、実行しない人は皆、その人が正直であると信じなければならなくなるでしょう。 Danは(スライドを見る限り)この議論をやりすぎているように見える。 彼の分析は、2 つの理由で失敗しています (そして 2 つ目は、このページが少し誤解を招いたせいです)。

第一に、ここで提示した天文学的なスケールでさえ、必要な容量は (裕福な) 個人の領域内に十分にあり、その種の容量が必要となる将来のある時点で確実にそうなっています。 私人、あるいは少なくとも私人の小集団を中央銀行と同等の立場に置くシステムは、中央集権的とは言いがたいが、今日あるビットコインよりは分散化されているだろう。 また、システムは、ビットコイン ユーザーが最大ブロック サイズを大きくすることに集団で同意しなければ、このような規模になることはできません。

2 番目、そして最も重要なことは、ここで説明した想定スケーリングは、ビットコインがビザに取って代わることを扱っているということです。 スケーリングとはまったく関係のない理由で、ビットコインだけではビザの完全な代替とはならないため、これは比較対象として不適切です。 例えば、ビットコインは即時取引、信用、様々な不正防止機構(すべての人が望んでいるわけではないにせよ、一部の人は望んでいます)を提供しません。 ビットコインは、小切手、電信送金、為替、金貨、CD、普通預金口座などのより完全な代替品であり、広く採用されれば、おそらく、オンラインでよりよく機能すればこれらの他のものによってよりよく提供されるであろうクレジットカードの用途を代替します。

人々はそれを欠陥と呼ぶのに早すぎるため、ビットコインのユーザーは時々この事実を見過ごしていますが、これは不当なことです。 すべての使用法において理想的なシステムはなく、ビットコインはほとんどの貨幣手段よりも広い範囲の特質を備えています。 もしビットコインコミュニティが、他のシステムでやった方が良いことがあると指摘しないのであれば、藁人形論法を作るのは簡単になってしまいます。 ビットコインが床ワックスや砂漠のトッピングとして使用できることを認めると、誰かが常に、それは最高の床ワックスや最高の砂漠のトッピングではないと指摘するでしょう。

ビットコインの上に決済処理やクレジットシステムを構築することは、古典的なもの(ビザそのもの!)とライトニングなどの「分散型」の両方の点で些細です。 これらのシステムは、より低いコストでより多くの取引量を処理し、それを支えるビットコインに頻繁に決済することができます。 ビットコインとは異なるトレードオフを持つ他の技術を使用することもできますが、それでもビットコインを裏付けとし、ビットコインを建てられるため、中央管理の欠如を享受することができます。 9830>

これらのサービスは、インフレに強い安定したビットコイン通貨の恩恵を受け、ユーザーは即時取引、信用、および不正防止の恩恵を受け、ビットコイン全体としては、その分散型性質を損なうことなく、オフロードされた取引量によるスケーリングの向上を享受することができるのです。 ビットコインが広く使われている世界では、決済処理システムは生のビットコイン取引と競争する必要があるため、おそらく価格が下がるでしょう。また、ビットコイン決済(およびゼロトラストビットコインエスクロー取引)を頻繁に行うことでリスクを軽減できるため、価格を下げることも可能でしょう。 9830>

Scalability targets

VISA は平均して 1 秒あたり約 2,000 トランザクションを処理するため、1 日のピーク レートを 4,000 tps と呼びます。 ピーク時には毎秒約56,000トランザクションの処理能力がありますが、ショッピングのピーク時でも実際にはこの3分の1程度しか使用しません。

これに対してPayPalは、2014年後半に1日あたり約1000万トランザクション、平均115tpsを処理した。

4,000tpsをスタートゴールとしましょう。 明らかに、ビットコインを現金を含む世界中のすべての経済取引に拡大したい場合は、それよりもはるかに高く、おそらく数十万 tps の領域でより多くなるでしょう。 また、DoS攻撃(VISAはこれに対処する必要がない)に耐える必要があるため、標準的なピークレートをはるかに超えるスケールを求めることになります。

現在、ビットコインネットワークは、ビットコインプロトコルがブロックサイズを 1MB に制限しているため、7 tps の持続的なレートに制限されています。 ノードは他のノードに「inv」メッセージを送り、新しいトランザクションがあることを伝える。 受信ノードがそのトランザクションを持っていない場合、getdataでそれを要求します。

大きなコストは、トランザクションを検証するための暗号とブロックチェーンのルックアップです。 トランザクションの検証は、いくつかのハッシュといくつかのECDSA署名の検証を意味します。 RIPEMD-160は106メガバイト/秒(簡単のために100と呼ぶ)で実行され、SHA256もほぼ同じです。 つまり、1 メガバイトのハッシュ化には約 10 ミリ秒かかり、1 キロバイトのハッシュ化には 0.01 ミリ秒かかりますが、これは無視できるほど高速です。

Bitcoin は現在、(プロトタイプはあるがまだマージされていないいくつかの単純な最適化により)クアッドコアの Intel Core i7-2670QM 2.2Ghz プロセッサで毎秒約 8000 の署名検証を実行できています。 1トランザクションあたりの平均入力数は約2であるため、レートを半分にする必要があります。

このことからわかるように、ビットコインノードが実行するマシンの少なくとも4つのコアを最大にすることが許可されている限り、ビットコインがPayPalの100倍のトラフィックを処理しない限り、署名チェックのCPU容量がなくなることはないでしょう。 2015 年後半の時点で、ネットワークは 1.5 トランザクション/秒を処理しているため、人気が非常に高まると仮定しても、長い間このレベルには到達しないでしょう。 私たちは、別スレッドで重い作業の大部分を行い、非常に高い読み取り/書き込み負荷に対応できる LevelDB を使用しています。 全体的なBitcoinのCPU使用率は、ECDSAによって支配されています。

Network

平均レートは2000tpsで、VISAだけと仮定しましょう。 トランザクションのサイズは約0.2キロバイトから1キロバイト以上までさまざまですが、今日は平均して半分のキロバイトです。

つまり、約8メガビット/秒のトランザクションデータ(2000tps * 512バイト)/ 1024バイトのキロバイト/ 1024キロバイトのメガバイト = 0.97 メガバイト/秒 * 8 = 7.8 メガビット/秒を維持しなければならないのです。

この種の帯域幅は、今日、住宅用接続でさえすでに一般的であり、コロケーション プロバイダーが提供することを期待する下限にあることは確かです。

ブロックが解決されると、現在のプロトコルでは、たとえピアがすでにそれを放送時に見たとしても、トランザクションを再び送信します。 これを修正してブロックを単なるハッシュのリストにすれば、この問題は解決し、ブロック ブロードキャストに必要な帯域幅を無視できるようになります。 この最適化は今日完全には実装されていませんが、ここではブロック伝送帯域幅を考慮しません。

Storage

非常に高い取引レートでは、各ブロックのサイズが半分以上のギガバイトになることがあります。 Satoshiの論文では、完全に費やされたトランザクションに関する不要なデータを削除する方法である「枝刈り」について説明しています。 これにより、完全検証ノードに必要なデータ量は、現在の未使用の出力サイズと、再注文の処理に必要な追加データだけとなる。 2012年10月現在(ブロック203258)、7,979,231のトランザクションがありますが、未使用の出力セットのサイズは100MiB未満で、かなり古いコンピュータでもRAMに簡単に収まるほど小さいです。

少数のアーカイブノードだけが、生成ブロックに戻るフルチェーンを保存する必要があります。 これらのノードは、ゼロから新しい完全検証ノードをブートストラップするために使用できますが、それ以外は不要です。

ビットコインのパフォーマンスにおける主な制限要因は、未使用トランザクション出力セットがメモリに適合しなくなった後のディスクシークです。 ハード ディスクが SSD に取って代わられると、UTXO セットへのアクセスが深刻なボトルネックにならないことは十分にあり得ます。

しかしながら、いくらかの複雑さを追加する代償として、将来的にさらに大きな最適化を行う可能性があります。

CPU

楕円曲線署名に対する一括検証を加速するアルゴリズムが存在します。 2 倍のスピードアップのために、同時にそれらの署名をチェックすることが可能です。 これは、やや複雑な実装です。

Simplified payment verification

すべてを検証するのではなく、信頼できるノードに接続するか、有効性の証明の代理として高難度に信頼を置く、ビットコインの実装を構築することが可能です。

それを説明したサトシの論文のセクションにちなんで名付けられた簡易支払い検証 (SPV) モードでは、クライアントは任意の完全なノードに接続し、ブロック ヘッダーのみをダウンロードします。 チェーンヘッダが正しく接続されているか、難易度が十分高いかを検証する。 そして、リモートノードに特定のパターンに合致する取引(例えば、あなたのアドレスへの支払い)を要求すると、リモートノードはそれらの取引のコピーと、それらが出現したブロックにリンクするMerkleブランチを提供する。

さらなる最適化として、十分に深く埋められたブロック ヘッダーは、しばらくすると捨てられます (たとえば、2016 ヘッダーまでしか保存する必要がない場合)。 信頼できることが分かっているノードに接続している場合、難易度は問題ではありません。 ランダムなノードを選びたい場合、攻撃者が偽の取引を含むブロック列をマイニングするコストは、あなたを騙して得られる価値より高くなければならない。 ブロックがどれだけ深く埋まっていなければならないかを変更することにより、確認時間と攻撃のコストを交換することができます。

このアプローチを実装するプログラムは、使用しないヌルケースでは固定ストレージ/ネットワーク オーバーヘッド、受信/送信トランザクションに比例したリソース使用量を持つことができます。

Related work

Bitcoin のスケーラビリティを最適化するためのいくつかの提案があります。 これらのいくつかは、オルトチェーン/ハードフォークを必要とします。

  • Ultimate blockchain compression – the idea that the blockchain can be compressed to achieve “trust-free lite nodes”
  • The Finite Blockchain paper that described to splitting the blockchain into three data structures, each better suited for its purpose.The Finite Blockchain paperでは、ブロックチェーンを、その目的に応じた3つのデータ構造に分割することを説明しています。 3つのデータ構造とは、有限ブロックチェーン(過去にNブロック保持)、非ゼロの残高を持つすべてのアドレスの口座残高を保持する「アカウントツリー」、ブロックチェーンの(常に成長する)縮小版である「証明チェーン」です。
  • ライトニングネットワーク、ノード間でマイクロ決済チャネルを設定し、ブロックチェーン上で時々決済を行う取引決済用の代替プロトコルです。 一般ユーザーは主に、または決済チャネルのみとやり取りし、ブロックチェーンは大規模な送金やコールドストレージにのみ使用する。

admin

コメントを残す

メールアドレスが公開されることはありません。

lg