Tech

Bitcoin のスケーラビリティ問題について

  • このエントリーをはてなブックマークに追加

問題としてよく指摘される「ビットコインはスケールしない」
ビットコインをVISA並の3,000tpsにスケーリングしたいという話。
(執筆途中)

スケール

  • 7トランザクション/秒を増やすため、1MB/1ブロックを変更する話
  • Gavin的には、年30%増やすというのを提案
  • 1MBは、大きすぎても少なぎてもダメなので。

基礎知識

  • memory pool (valid だが、unconfirmed なトランザクションが入っている)
  • 新しいブロックが見つかると、memory poolからtransactionを削除
  • Visaは、平均2,500 tpsを処理(2.12億/日)。ピークで40,000tps (2014/8)

現在のブロック

  • 1MB / 1 block (ハードコードされている)
  • 約7 transaction per second

Block Propagation の説明

用語

  • reconciliation: 2セットのデータの違いを見つけること
  • set B: 新しいブロックのトランザクションのセット
  • set P: ノードが知っているトランザクションのセット
  • IBLTs(Invertible Bloom Lookup Tables): データ構造
  • 全トランザクションデータを固定サイズのデータ構造にする(ハッシュとXORで)
  • IBLTs は、key-value ペア
  • IBLTに必要なキーアイディア
  • Canonical ordering of transactions in blocks
  • similar (but not identical!) policy for selecting which mempool transactions go into blocks
  • Peer sends us an IBLT(newblock) large enough that we are very likely to be able to recover transaction data that is not yet in our mempool.

IBLTsの技術詳細は、長いのでまた別の記事で説明しようかと。

説明

  • 全マイナーのmemory poolがsyncしているなら、新しいブロックを固定80-byte のブロックヘッダーとコインベース・トランザクションとしてアナウンスすればいい。けど、現実はそうなってない
  • txid48を安全に計算するために: ブルートフォース攻撃を防ぐため、128 bitsのトランザクションIDが必要(IBLT keyにする)。

  • なぜヘッダーだけrelayするのが良くないのか?

  • Only DoS-ban on blocks that contain invalid proof-of-work · Issue #3195

歴史

2010年にSatoshiが、最大ブロックサイズを32GBから1MBに変更。

Tree-chains by Peter Todd

Re: [Bitcoin-development] Tree-chains preliminary summary

解決方法の提案

参考

検索用語

  • scalability, スケーラビリティ
  • scale, スケール
  • このエントリーをはてなブックマークに追加