スケーラビリティ問題とは
ブロックチェーンを形成する各ブロックには、無数のトランザクションデータが格納されています。
ブロックには、ブロックサイズと呼ばれる格納可能なデータ容量が定められているのが一般的です。
例えばビットコインの場合、2017年時点では1ブロックあたり1MBまで格納することができていました。
データ量は、当然ながら仮想通貨の取引が増加するにつれて大きくなるため、稀にブロックに格納できないトランザクションが発生することがあります。
漏れたトランザクションはメモリプールと呼ばれる場所に一時的に保管されますが、この時点では取引が完了したことにはなりません。
つまり、仮想通貨取引の需要が高まっている時ほど送金が完了するまでに時間がかかってしまうのです。
これをスケーラビリティ問題といい、ブロックチェーンの抱える最大の問題として長年解決策が議論されています。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
取引手数料の高騰
スケーラビリティ問題によって浮上した新たな問題として、取引手数料の高騰があげられます。
仮想通貨を取引する際には、少額の手数料を支払う必要があります。
これはノードにマイニングをしてもらうための報酬として必要であり、悪質なbotなどからネットワークを守る役割も果たしています。
手数料は送金者が自ら設定することができます。
そして、ノードはどの取引をブロックに格納するか選択することができるようになっているのです。
この2つの仕組み上、ノードには手数料が高く設定された取引から優先的に処理していこうという考えが浮かびます。
送金者も、どうしてもすぐに取引を行いたい場合には手数料を高く設定するでしょう。
その結果、スケーラビリティ問題によって取引がなかなか処理されない際に、手数料が高騰し続けるという現象が発生するようになってしまいました。
例えばビットコインの場合、2017年に取引あたりの手数料が55ドルを超えてしまう事態に陥っています。
これでは次世代の決済システムとして機能することはできないでしょう。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
なぜブロックサイズが存在するの?
誤った認識として、ブロックサイズが存在することで不特定多数のノードがマイニングを行えるようにする、といった理由があげられます。
これは、ブロックサイズが存在しない場合に性能の低いノードを使う個人がマイニングを行うことができず、性能の高いノードを用意できる大規模なマイニングプールなどがネットワークを独占してしまう可能性がある、といった主張です。
しかしこれは誤っています。
ノードは、ブロックチェーンに記録されている全てのデータを保有する必要はなく、実際にビットコインキャッシュではラズベリーパイ(非常に小さなマシン)をノードとして動かすことが可能です。
それではなぜ、ブロックサイズは存在するのでしょうか。
本当の理由は、コンピュータシステムには外部からの攻撃(ハッキング)が付き物だからです。
仮にブロックサイズが存在しなかった場合、ブロックチェーンを構成する各ブロックの中身を外部からの攻撃による不正なトランザクションで牛耳ることができてしまいます。
ブロックサイズが存在すれば、不正なトランザクションで埋め尽くされてしまったブロックは不正なものとして無視することができ、マイナーは正しいトランザクションが格納された別のブロックをマイニング対象とすることが可能です。
コンピュータシステムには、意図した攻撃ではないにせよ何かしらの不具合が付き物です。
そのため、システムには必ず制限を設けるのが慣わしであり、ブロックチェーンもこれに従っています。
なお、ブロックサイズは小さすぎても良くありません。
なぜなら、小さすぎるブロックがたくさん生成されても、外部の攻撃者は容易に全てのブロックを不正なトランザクションで埋めることができてしまうからです。
また、ブロックサイズが小さすぎる場合、先述のスケーラビリティ問題を解消することができません。
これについてはレッスン3で詳しく学習します。
ブロックサイズは、トランザクションの量が増加するにつれて拡大するよう設計されています。
実需を伴うトランザクションが増加することで価格も高騰し、それに伴い更にトランザクションが増加する好循環を作り出すことが可能です。
結果的に、時間が経過するにつれてブロックサイズも拡大していく仕組みになっています。
これは、ビットコインの発明者であるサトシ・ナカモトが当時から決めていた設計です。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.