- ブロックチェーンの未来シリーズ
- そう、ブロックチェーンにはスケーラビリティ問題があるのだ。 スケーラブルなソリューションのための戦いは、ブロックチェーンの月面レースなのです。 ビットコインは1秒間に4.6件のトランザクションを処理します。 Visaは平均して1秒間に約1,700件の取引を行います(1日あたり1億5千万件以上の取引という公式発表から導き出された計算に基づく)。 採用の可能性はあるが、現状ではスケーラビリティがネックになっている
- Increasing Block Size or Decreasing Block Generation Time Won’t Solve the Problem: A Look at Non-SegWit TPS
- SegWitの出現
- スケーラビリティを解決するための既存および将来のアプローチ
- Batch Payments into One Transaction
ブロックチェーンの未来シリーズ
そう、ブロックチェーンにはスケーラビリティ問題があるのだ。 スケーラブルなソリューションのための戦いは、ブロックチェーンの月面レースなのです。 ビットコインは1秒間に4.6件のトランザクションを処理します。 Visaは平均して1秒間に約1,700件の取引を行います(1日あたり1億5千万件以上の取引という公式発表から導き出された計算に基づく)。 採用の可能性はあるが、現状ではスケーラビリティがネックになっている
タタ・コミュニケーションズが2018年に発表した調査では、44%の組織がブロックチェーンを採用していることが示されているが、新しい技術を展開する際に生じる普遍的な問題についても言及している。 アーキテクチャーのレベルから見ると、スケーラビリティという未解決の問題がブロックチェーンの導入と実用化のボトルネックとして浮上しています
デロイト・インサイツは、「ブロックチェーンベースのシステムは比較的遅い」と述べています。 ブロックチェーンのトランザクション速度の遅さは、高性能なレガシー・トランザクション処理システムに依存している企業にとって大きな懸念材料となる。”と述べている。 2017年と2018年に世界はスケーラビリティの問題を味わった:ビットコイン・ネットワークでの深刻な転送遅延と高い手数料、イーサリアム・ブロックチェーン・ネットワーク(何千もの分散型アプリケーションが依存するネットワーク)を混雑させた悪名高いCryptokittiesアプリ、
ブロックチェーンを拡張するには、ブロックサイズを大きくしたりハッシュ複雑さを軽減してブロック時間を短縮するだけでは十分ではありません。 どちらの方法でも、「毎日平均 1 億 5,000 万件のトランザクションを処理する」、または 1 秒あたり約 1,736 トランザクション(TPS)の Visa のようなビジネスと競争するために必要なトランザクションに達する前に、拡張能力は天井に到達してしまうのです。 現在、ブロックサイズは1MB(1,048,576バイト-ただしSegWitにより、このサイズは理論上4MBまで拡張可能)、平均取引サイズは380.04バイト(各取引は1つのウォレットから他のウォレットへのものと仮定-したがってバッチ取引は1取引としてカウントされる)である。 したがって、現在、ビットコインの1ブロックに収まるトランザクションの平均量は、次のように計算されます:
現在のビットコインのブロック生成時間は10分、すなわち, つまり、10分ごとに新しいブロックが採掘される。 10分(600秒)で、ビットコインはこれまでの仮定に基づき、平均約2,759.12回の取引を行うことができます。 言い換えれば、ビットコインのブロックチェーンは現在、1 秒あたり 4.6 トランザクションしか保証できません。
Increasing Block Size or Decreasing Block Generation Time Won’t Solve the Problem: A Look at Non-SegWit TPS
拡張性の問題は、ブロックチェーンの価値提案とセットになっているので、ブロックチェーンのパラメータを変更して拡張性を単に高めることはできないのです。 1 つの変数はブロック サイズ (B) であり、現在 1MB でハード コードされています。 理想的には、B は TPS を増加させるために増加されるべきです。 もう1つの変数はブロック生成時間(TB)で、これはハッシュパズルの複雑さを変えることで調整される。 理想的には、TBはTPSを増加させるために減少させるべきです。
シナリオ1 & 2
4.4 からVisaの1736まで成長するには、ビットコインはTPSを377.5倍にする必要があることになります。 つまり、Bを1MBから377.5MBに増やすか(表1、S1)、TBを10分から1.6秒に短縮する必要があります(表1、S2)。 第3のシナリオは、両方を調整することである。 3 つのシナリオのいずれも、3 番目の制御不能な要因である、ビットコイン ネットワーク上のすべてのノードに新しいブロックをブロードキャストするために必要な中継時間 (TR) のためにブロックチェーン上で達成不可能です。 1MB(1,048,576バイト)をピアツーピアのネットワークで送信するには、ある程度の時間がかかる。 カールスルーエ工科大学はビットコインのブロック伝搬時間を測定しており、2019年1月17日に報告された平均ブロック伝搬時間は13,989.42ミリ秒、ネットワークの99%に伝搬するのに約14秒であった。 TBがTRの99%(TR99)=14を下回ることはありえないが、もしそうなれば、ネットワーク内のほとんどのブロックで古いブロックが受信される前に新しいブロックが生成されることになるためだ。 TB が TR99 に近づくほど、フォーク、オーファン ブロック、チェーンの再編成、および(極端な場合)ダブルスペンド攻撃などのセキュリティ脆弱性などの問題が発生します。
Scenario 3
TB = TR99 = 14 で、ブロック サイズ 1MB の場合でも、ビットコイン ブロックチェーンは 188 TPS までしか速度を向上できないでしょう(表 1、S3)。 この規模ではTPSは188倍になるものの、Visaが毎日行っている1,736TPSには遠く及ばず、さらに前述のようなリスクを重ねることになる。 たとえば、B のサイズを 2 倍 (1 MB から 2 MB) にすると、ネットワーク上の各ノードが新しいブロックをダウンロードするのにかかる時間 (TR) も約 2 倍に増加します。 Bを任意の倍率で増加させ、その後TRを同じ倍率で増加させると、正味のTPSは変わらず、この場合、約188TPSとなります(表1、S4)。 TRによるBの影響を低減するための1つの解決策は、Bitcoinネットワーク内のすべてのノード間の帯域幅を増加させることです。 残念ながら、P2Pネットワークであるため、その責任はネットワーク内の各ピアの膝にかかります。
SegWitの出現
2017年に、SegWit(分離型証人)がすべてのビットコインノードに発効されました。 注 – SegWit のすべての詳細には触れませんが、その歴史と Bitcoin Cash ハードフォークの出現におけるその役割について学びたい場合は、この記事を見てください:
それは名前のように聞こえることを行います – 実際のトランザクションデータから各トランの証人部分を分離することです。 これはソフトフォークとして発生したので、既存のブロックチェーン ネットワークとコードに大きな影響を与えることなく制定されました。 証人トランザクションが重み付けされる方法により、新しい SegWit 対応ビットコイン ブロックは、ビットコイン ブロック サイズを変更することなく、理論的には最大 4MB まで増加することができます。 実際、ビットコインのブロックチェーン・エクスプローラーを確認すると、(少なくともこの記事が公開された時点で)平均ブロックサイズはまだ1MB未満であることがわかります。
しかし、ブロックが1MBを超えないというわけではありません。 2018年初頭、私たちは、約2.1MBの重さになる、生成された最大のブロックサイズの1つ(おそらく今でも最大)を目撃しました。 SegWitのソフトフォークは、コアコードに変更を加えることなくブロックサイズを改善するのに役立ちましたが、それでもスケーラブルな方法でTPSを改善することはできません。
プルーフオブワークコンセンサスの下で前の4つのシナリオを検証すると、単にブロックサイズを大きくするかマイニング複雑さを軽減するだけでここまでしかできないことがわかりました。 これを組み合わせても、トランザクションの伝搬時間のために限界があります。 古いブロックが伝搬するよりも速く新しいブロックを採掘しようとすると、かなり大きなセキュリティ問題が発生します。
TPSを向上させるために何らかのピースを動かすと、ブロックチェーンのパズルのどこかで別のピースが外れてしまうようです。それでも、ブロックチェーンの採用をスケーラブルな段階に押し上げるために必要なTPS回答を達成しようとするプロジェクトやスタートアップ企業が存在します。
スケーラビリティを解決するための既存および将来のアプローチ
スケーラビリティ問題に対する潜在的な答えを探す場合、他の複数の問題が発生します。 たとえば、その答えがある特定のブロックチェーンにしか適用できない場合、その特定のブロックチェーンが将来的にそのスケーラビリティを必要とするものであるという前提に依存しており、そうでなければ、その努力は過度または見当違いのものとなります。 もう1つの考慮点は、トレードオフが何であるかを理解することです。
Batch Payments into One Transaction
Pros: 複数のトランザクションを 1 つにまとめることにより、トランザクション レコードのサイズを縮小し、ブロックごとに全体的により多くのトランザクションを可能にし、ある程度 TPS を向上させることができます。
Cons: 複数のウォレットのトランザクションを一緒にバッチ処理できない。 取引所ではすでに行われており、ブロックチェーンエクスプローラーで取引IDを調べようとするとわかると思います。 結局のところ、1つのウォレットが複数の異なるウォレットに送信しているのを見ることになるかもしれません。
この利点は、1つの取引にまとめることで、1)取引手数料が1回で済む、2)前回説明したように、約380バイトのフルトランザクションを取引ごとに書く必要がない、ということです。 実際、380バイトのトランザクションのうち、34バイトだけがトランザクション情報である可能性があります。