オン ザ・ブロックチェーン

ビットコインのスケーラビリティ問題とその解決策について

calendar

 ビットコインのスケーラビリティ問題と、その解決策として行われたsegwitの実装とそれに反対する形で生まれたビットコインキャッシュなどについてのお話です。

スポンサーリンク

スケーラビリティ問題とは

 ビットコインの送金は、トランザクション(送金情報)をマイナーの元に送ることで行われます。

 トランザクションを送っただけではまだ送金は認証されません。そのトランザクションがブロックに取り込まれることで送金は完了(着金)します。トランザクションをブロックに取り込む作業のことをマイニングと呼びます。

参考ビットコインのマイニングって実際何をするの?

 各マイナーの元には次々と世界中から大量のトランザクションが送られてきます。

 マイナーは自分の元に届いたトランザクションを、とりあえず未承認のまま保存しておきます。その保存場所のことをMempoolと呼びます。

 マイナーはMempoolの中にある未承認のトランザクションを取り出して、次々とブロックチェーンに取り込んでいきます。それぞれの送金に問題がないかチェックして台帳に書き込んでいくわけです。それがマイニングです。

 マイナーはフル回転でマイニングを行いますが、もちろんトランザクションを捌ける量には限度があります。

 もし捌ける限度を超える量のトランザクションが送られてくると、Mempoolにトランザクションがどんどん貯まっていくことになります。

 マイナーはその溢れかえったトランザクションを古いものから順番に処理していくわけではありません。

 各トランザクションには手数料が設定されており、マイナーは手数料の高いトランザクションを優先的に選んでブロックチェーンに書き込んでいきます。
※手数料はマイニングに成功したマイナーのものになります。

 つまり、未承認のトランザクションが溢れかえっている間は、安い手数料で送金したトランザクションはMempoolに取り残されたままになり、いつまで経っても送金が完了しないことになります。送ったはずのビットコインが相手になかなか届かないといった状態です。

 確実に支払いを完了させるには他のトランザクションよりも手数料を上げるしかありません。結果的に手数料はどんどん高騰してしまうことになります。

 現に、ここ数ヶ月は送金手数料がどんどん高騰してきています。

 このままでは、利用者が増えるとビットコインはまともに使えなくなります。

 現状ではビットコインのトランザクション処理スピードは平均すると秒速3〜4件程度です。

 visaカードの取り引き処理スピードは秒速2000件ぐらいあるらしいので、比較すると桁違いの遅さです。もしビットコインが現在のvisaカード並に世界中で使用されると全く処理が追いつかないことになります。

 これは現状、ビットコインが抱える大きな問題の一つで、スケーラビリティ問題と呼ばれています。

トランザクション処理のボトルネック

 なぜビットコインはそんなに処理が遅いのか?そのボトルネックと言えるポイントが2つあります。

生成されるブロックは10分に1つ

 トランザクションは1つのブロックにまとめあげられて、ブロックチェーンにつながることで承認されるわけですが、その1つのブロックを完成させるのに最低でも約10分ほどかかるようになっています。

 なぜブロックを作るのにそんなに時間がかかるかと言うと、Proof of Work(ブロックハッシュの先頭に0がいくつか並ぶようなnonce値を見つける)という作業が必要だからです。Proof of Workは約10分程度かかるように難易度がその都度調整されるようになっています。

参考ビットコインのマイニングって実際何をするの?

 Proof of Workは、誰もが参加できる(悪者がいるかも知れない)P2Pネットワークにおいて、ブロックチェーンに誤った情報が書き入れられないようにする為の重要な仕組みです。

 Proof of Workにかかる時間を長くすればする程、ブロックチェーンデータは改ざんに強くなります。逆に短くすれば改ざんに弱くなります。つまり、処理スピードと改ざん耐性がトレードオフの関係になっているということです。

 いくら処理が早くても、書き込まれた情報が間違っているようではそもそも無価値です。

 P2Pネットワークにおいてデータの正しさを保証するにはProof of Workは10分程度が現実的な落とし所だろうってことで、プロトコルとして組み込まれたんでしょう。

 結果的に、トランザクションが承認されるには10分に一度作られるブロックの中にそのトランザクションが取り込まれる必要があります。

 もしMempoolに大量のトランザクションが溢れかえっていたら、なかなか処理が進まないのが想像できると思います。

1つのブロックに取り込まれるトランザクションの量

 10分に1つブロックが作られるわけですが、そのブロックサイズ(容量)は1Mbyteが上限と決められており、マイナーは1Mbyteに収まる範囲内でトランザクションをブロックに取り込んでいきます。

 トランザクション1つ当りの容量は、少なくともだいたい250byteぐらいから大きいものは1Kbyteを遥かに超えるものもあり、1つのブロック(1Mbyte)に収まるトランザクション数は多くてもだいたい2500個ほどです。

 結果的に、平均すると秒速3〜4個程度の処理スピードが限界ということになり、それ以上のペースでトランザクションが送られてくるとMempoolに未承認のトランザクションがどんどん積まれていくことになります。

スケーラビリティ問題の対策案segwit

 このトランザクション処理のボトルネックを広げてやろうということで、1つのブロックにもっと沢山のトランザクションを書き込めるようにするアップデートが数年前からコア開発者の間で画策されていました。

 それがsegwitと呼ばれる新しいトランザクション方式です。

 segwitはトランザクションのフォーマットを変更することで1つ当たりのトランザクションサイズを小さくできるようにする改善策です。結果的にブロック内に収まるトランザクション量は増えることになります。
※実際はsegwitにはトランザクションの圧縮効果だけでなく様々な新機能が盛り込まれています。

 segwitはこれまでのブロックチェーンと互換性のあるアップデートなので比較的安全に移行することが可能です。

 ところが、segwitに反対する勢力(Bitcoin Unlimited)っていうのがいて、「segwitなんて実装しなくても単にブロックサイズを大きくしたらもっとたくさんのトランザクションを捌けるんだからそれでいいじゃないか!」と主張した為、話はなかなかまとまらず妥協点を探して二転三転しました。

 最終的に折衷案として決まったのが、3ヶ月後にブロックサイズの上限を2Mbyteに引き上げることを前提としてsegwitを実装するというものでした。

 segwitの実装を巡っては様々な破壊的な憶測も広がり、ビットコイン価格が一時大きく値崩れするなどの混乱もあったのですが、なんとか無事segwitの実装にこぎつけることが出来ました。

ビットコインの分裂

 これで一件落着と思ったら、Bitcoin Unlimited(segwitに反対する勢力)がなんと「やっぱりsegwitには反対!ブロックサイズを8Mbyteにした新しいビットコインを作る!」と言い出し、半ば強引にブロックチェーンのハードフォークを実施し、ビットコインが2つに分かれてしまいました。

 これが2017年8月1日に起こったビットコインの分裂劇です。

 普通はブロックチェーンが二手に分かれた場合は長い方が正当だと見なされるので2つのチェーンが両方生き残ることはありえないのですが、ハードフォークというのは、お互いに相手側のチェーンを無視した状態でそれぞれが一番長いチェーンとして生きていく特殊な分かれ方です。コイン自体が2つに分かれてしまうということです。

 かくして、ビットコイン(BTC)から枝分かれする形で、ビットコインキャッシュ(BCH)が生まれました。

 segwitを採用した方が現在のビットコイン(BTC)、ブロックサイズの上限を8Mbyteに変更してしまったのが現在のビットコインキャッシュ(BCH)です。

 面白いことに、この時のハードフォークによって皆が持っているビットコインも2つに分かれました。例えばハードフォーク前に3BTC持っていた人はハードフォーク後には3BTCと3BCHを持っていることになったんです。

 ポケットの中のコインがいつの間にか増えたようなもんです。

 もちろん、BTCとBCHは全く別のコインなので、日本円に換算して倍額になったわけではないですが、BCHも取引所に上場することになり、1BCHが数万円という価格がつきました(分裂直後は乱高下し、BTCの10%程度の価格に落ち着きました)。

 ちなみに分裂時点で1BTCは30万円ぐらいだったのですが、この分裂の後、とりあえず反対勢力とは袂を分かちそれぞれが落ち着いたことを好感してか一気に40万円ぐらいまで値を上げました。

もう一つのスケーラビリティ問題

 スケーラビリティ問題は、トランザクションが増えすぎて捌ききれないという問題だけではありません。

 もう一つの大きなスケーラビリティ問題と言えるのが、Proof of Workに費やすエネルギー問題です。

 Proof of Workの仕組みは、非常によく考えられたもので、その仕組によってトラストレスで非中央集権的なブロックチェーンを成り立っています。

 しかしながら、Proof of Workは何か価値のあるものを生み出すわけでもなく、単に10分かけて仕事をしたことを証明する為だけにする作業です。

 単に10分間フル回転したことを証明するだけの為に、莫大な電気代や機械代といったリソースが注ぎ込まれています。

 そのフル回転の計算の結果、何か崇高な問題の答えが見つかるわけでもなく、ただ偶然、ハッシュ値が0000000・・という値になるnonce値が見つけるだけの為に。
参考ビットコインのマイニングって実際何をするの?

 マイナー目線で言えば、それなりの利益が出さえすれば有意義と言えるかも知れませんが、客観的に見ればエネルギーの無駄遣いとしか思えません。

 もし今後、どんどんマイナーが増えてきたら全世界規模で見るととてつもない電気代がマイニングによって消費されることになります。単純に勿体無い気がするし、有限であるエネルギーをどこまでマイニングに注ぎ込めるものなのか心配にもなります。

 しかしながら、この問題は大した問題ではないと個人的には思っています。

 まず、今後ビットコインの取り引きが増えたからと言って、同じようにマイナーも増える必要はありません。というのも、マイニングはどれだけ大勢でやろうとも10分に1つしかブロックを生成することはできないので、マイナーの少なさは決してボトルネックにはなりません(マイナーが足らないから承認作業が進まないということはありません)。

 なのでそもそもマイナーはスケールする必要はないと言えます。

 それに、ビットコインの価値を支えているのはその電気代等のリソースなのだと言う意見もあります。ビットコインの価値は無から生まれたものなのではなく、その電気代が転化したものだと。そう思えば、電気代も無駄にはなっていないと言えます。時価総額10兆円(執筆時点)の価値を生み出したわけですから。

 それにもう一つ重要な視点があります。

 そもそも通貨の信用を支えるリソースなんてのは、電気代や機械代なんていうケチなものじゃありません。通貨の信用を担保するものは国家そのものだと言えます。国家が国家である為に使われるリソースは電気代など比じゃないのは明らかです。マイニング用のマシンがいくら高価な物になろうとも戦闘機1基にも満たないでしょう。

 現在、国家を安定的に維持するために一体どれだけのリースが注ぎ込まれているかを想像すれば、むしろこんなに安上がりな通貨はかつて無かったとさえ言えます。

 なので、このエネルギー問題に関しては、勿体無い気はするが必要経費だと割り切ろうと思えば割り切れるんじゃないかと個人的には思います。

 というわけでちょっと脱線気味でしたが、ビットコインのスケーラビリティ問題について個人的見解も交えて説明させてもらいました。

この記事をシェアする

コメント

コメントはありません。

down コメントを残す




管理人

Nobuo

Nobuo

仮想通貨に興味があるただの人です。モナコインが好きなのでMonazon.jpを作りました。よろしくです。