こんにちは、yoshihiroです。
いきなりですが皆さん、スケーラビリティ問題について真面目に考えたことはありますか?
スケーラビリティはブロックチェーンの発展を考える上でとても重要な課題であるだけに、様々な解決策が発案されるなどとっても奥が深く考えるのが楽しいトピックになっています。
その奥深さを皆さんと共有するために、今回からスケーラビリティ問題を真面目に考える連載記事を書いていきたいと思います!!
スケーラビリティ問題ってなんだよ!という方は、こちらの記事で簡単に紹介しているので読んでみてくださいね。
初回の今回は、そもそもなんでスケーラビリティ問題が起きるのかについて、まとめて行きたいと思います。
ちなみに僕は趣味でブロックチェーンの勉強をしている身ですので、新しい情報や間違いの指摘など、じゃんじゃん教えてくださいね!
僕は基本から入るタイプなので、初めはビットコインで使われるブロックチェーンのみに絞って書いていきます。
ブロックチェーンでは、約10分ごとに1つのブロックが生成されていきます。そのブロック一つひとつには容量の限界があり、記載される取引情報(トランザクション)にも容量があります。そのため、1つのブロックに記載できるトランザクション数には上限があり、1秒あたりに行える取引の数に制限が生まれます。
想定よりも多くの取引が行われると、ブロックにトランザクションを記載するのが遅れてしまい、取引がスムーズに行えなくなってしまうというのがスケーラビリティ問題が起きる構造です。
では、なぜこんなことになってしまったのでしょう?
原因は明確ですね。
ブロックのサイズが小さすぎるからです!ブロックの容量を大きくすれば、もっと多くのトランザクションを記載できて、スケーラビリティ問題も解決しそうですよね。
でも、そんな単純な問題ではないのが面白いところです。
現在、ビットコインの1つのブロックサイズは、最大1MBと決まっています。しかし、ビットコインが発表された当初のブロックサイズは、32MBと今より大きいものでした。それが、2010年に1MBへと小さく変更されたのです。
これにはいくつかの理由があるのですが、最も重要なのは、ビットコインが非中央集権を目指したことにあります。
ビットコインでは、誰でもマイニングに参加できます。しかしブロックサイズが大きくなると、マイニングが公正に行われなくなり寡占化されてしまう恐れがあります。
例えば、あるノードがマイニングに成功したとします。すると、その成功したブロックを他の参加者に送信し、確認して承認してもらう必要があります。この時に、ブロックサイズが大きいと通信と確認作業にかかる時間が長くなってしまいます。
そして他のノードが通信と確認作業をしている間に、マイニングに成功したノードは次のマイニング作業を先に始めることができます。その結果、次のマイニングの成功確率が上昇します。
これが続くことにより、大きなコンピュータリソースをもっているノードのマイニング成功確率が、単純なコンピュータリソースの割合よりも高くなってしまうのです。そして、マイニングの独占が進み、集権化が起きるのです。
これはビットコインが目指した非中央集権なシステムとは異なるものであると考えられ、ブロックサイズが小さく設計されたのです。
今回はここまでにしたいと思います。スケーラビリティ問題が奥が深そうだということを感じてもらえたでしょうか?
次回から、スケーラビリティ問題の解決方法についてまとめていきたいと思います。まずは、実際にビットコインに導入されたSegwitという方法について紹介します。
↓この記事を書いた人↓
ご意見・ご質問・面白い情報・いいね・投げ銭お待ちしてます!!