前回の記事「ブロックチェーンって何」では、ビットコインの取引データはビットコインが作られれてから今現在までのデータが数珠つなぎに保存されるということを説明しました。
数珠つなぎになった、新しい取引情報を格納したブロックが、過去の取引情報すべてを格納したブロックチェーンに継ぎ足されることになります。新しいブロックが継ぎ足されると、インターネット上の全てのビットコインの取引データを保存する多数のコンピューターに最新データが伝えられます。
それぞれのコンピューターが保存しているブロックチェーンに新しいブロックが継ぎ足され、取引情報が更新されます。
しかし、悪意を持ったハッカーが、自分に都合の良い取引情報を、新しい取引情報として勝手に過去のブロックに継ぎ足せたら、どうなるでしょうか?
例えば、ハッカーが、「ビットコインを保存しているウォレット(財布)Aから、ビットコインをウォレットBに送金した直後に、(ウォレットBへの送金が確定する前に)、同じビットコインを別のウォレットCにもビットコインを送金する」という取引情報を格納したブロックに勝手に継ぎ足してしまう場合です。
お札やコインのような現金の場合とは異なり、デジタル通貨の場合には、デジタルデータが簡単にコピーできてしまうので、同じ通貨のデータをコピーして二度使ってしまうことが容易にできてしまいます。こういうことをする詐欺行為を、専門用語で「ダブル・スペンディング(重複支払い)」といいます。
このような悪意のある、不正なブロックの継ぎ足しをどうやって防ぐのでしょうか?
そもそも、新たに継ぎ足されたブロックが犯罪者が生成したものではない、と誰がどうやって判断するのでしょうか?
まず、特定の取引が犯罪者が生成したものではなく、「正しい」取引であるかどうかの確認は、さほど難しくありません。「ビットコインをウォレットAからウォレットBに送金する」という取引が開始されると、その情報は世界中のビットコインの取引データを保存するコンピューターに送信されます。その世界中に散らばった、ビットコインの取引データを保存しているコンピューターを確認すれば、その取引自体の存在はすぐに確認できます。
でも、もし犯罪者が、ビットコインの取引データを保存しているコンピューターをたくさん用意して、そこに「ビットコインをウォレットAからウォレットBに送金する」という正しい取引が確定する前に、「ビットコインをウォレットAからウォレットCにも送金する」という不正な取引データを送信したら、どうなってしまうでしょうか?
このように犯罪者がビットコインの取引を保存するコンピューターを大量に用意すると、世の中にあるビットコインの取引を保存しているコンピューターには、
「ビットコインをウォレットAからウォレットBに送金する」
という「正しい」取引データを保存するコンピューターと、
「ビットコインをウォレットAからウォレットCに送金する」
という不正な取引データを保存するコンピューター(ハッカーが用意したコンピューター)の二つが存在することになってしまいます。
このような状況になったとしても、「ビットコインをウォレットAからウォレットCに送金する」という不正な取引データを「不正」であるとして弾き、「ビットコインをウォレットAからウォレットBに送金する」という「正しい」取引を承認するための仕組みが、ブロックチェーンには備えられています。その仕組みをこれから説明します。
この仕組みは以下の二つのルールによって成り立っています。
①ビットコインの取引が「正しい」と認めるためには複雑な計算問題を解く必要がある。
ビットコインでは、取引が「正しい取引である」ということを確認するためのルールとして、「複雑な計算問題を解くこと」を決めています。複雑な計算問題を解いて初めてその取引が正しいということが認められます。
先ほどの例で「ビットコインをウォレットAからウォレットBに送金する」という正しい取引データが「正しい」取引であるということ承認するためには、コンピューターで複雑な計算問題を解く必要があります。この複雑な計算問題を、速く解くには、高速に計算ができるコンピューターが必要です。このコンピューターが、マイニングの採掘マシンになります。
同じく、ハッカーも「ビットコインをウォレットAからウォレットCに送金する」という不正な取引データを「正しい」取引であると認めてもらうためには、同じくコンピューター(マイニングの採掘マシン)を用意して、複雑な計算問題を解く必要があります。
このような状況でも、ハッカーが持つ採掘マシン以外の、世の中の大半のマイニングの採掘マシンは、「ビットコインをウォレットAからウォレットCに送金する」という不正な取引データの承認に投入されることはなく、「ビットコインをウォレットAからウォレットBに送金する」という正しい取引データを「正しい」ものするための計算作業に投入されます。それは何故でしょうか?
それは、ハッカーが持つ採掘マシン以外の、世の中の大半のマイニングの採掘マシンにとっては、ハッカーの不正取引データを承認するインセンティブ(動機)がありません。ここには、大量の電気を使う採掘マシンを動かす代わりにもらえる報酬が関係しています。
②ビットコインの取引が正しい取引であるということを認めるための計算作業に参加し、最初に計算問題を解いたコンピューター(採掘マシン)には、報酬としてビットコインが配られる。
ビットコインの取引が正しい取引であるということを承認するための、複雑な計算問題を最初に解いたコンピューターに、ビットコインが報酬として配られるという決まりになっています。世の中の採掘マシンは、このビットコインの報酬をもらうために動かしています。
(この報酬としてのビットコインは、①新たに発行されるビットコイン(2024年10月現在は1ブロックごとに3.125ビットコインが発行されます。)と、②ビットコインを送金するときに送金手数料のようなものとして送金されるビットコインから差し引かれるビットコインの二種類があります。)
この二つの仕組み
①ビットコインの取引が「正しい」と認めるためには複雑な計算問題を解く必要がある。
②ビットコインの取引が正しい取引であるということを認めるための計算作業に参加し、最初に計算問題を解いたコンピューター(採掘マシン)には、報酬としてビットコインが配られる。
がある結果、ハッカーが持つ採掘マシン以外の、世の中の採掘マシンは、犯罪者の不正な取引データを「正しい」とするインセンティブ(動機)は全くなくなってしまいます。
なぜならば、ハッカー以外の人が自分の採掘マシンで、ハッカーの不正な取引データを認めてしまうと、報酬としてもらえるビットコインの価値が失われてしまうので、不正取引の承認のための計算作業に投入されることは一切なく、「正しい」取引データの方の計算作業に投入する強烈なインセンティブ(動機)があるのです。
逆に、ハッカーは、自分の作り出した不正な取引データを「正しい」と認めさせるには、採掘マシンを大量に投入して、大きな計算能力を用意する必要があります。ハッカーですらも大量の採掘マシンを用意して、電気を大量に消費して、大量の計算な能力を投入して、不正な取引も「正しい」として認めさせることができます。
ところが、それをするインセンティブはまったく出てきません。その不正取引を実行して、ビットコインを不正にもらえたとしても、ビットコインの価値は「不正取引が発生した」ということで、暴落してしまうことは必至です。さらに、報酬としてもらえるビットコインの価値も価格が暴落して価値が無くなってしまいます。
結果として、世の中の大半の採掘マシンは、「正しい」取引のみを承認する強いインセンティブが働き、犯罪者の取引が「正しい」と認められる可能性を極限まで小さくしているのです。
繰り返しになりますが、ビットコインの新しい取引を「正しい取引」として認めるために、コンピューターで複雑な計算問題を解いて、どのコンピューターよりも最初に問題を解いたら、ビットコインが報酬としてもらえます。これがビットコインの「マイニング(採掘)」です。採掘マシンが、ビットコインの不正取引を排除するからこそビットコインの価値が保たれ、採掘マシンを動かす人も価値の保たれているビットコインが報酬として報酬がもらえるのです。
もし悪意のある犯罪者が、不正な取引データを「正しい取引」であると認めさせるためには、大量の採掘マシンを用意する必要があります。そしてその採掘マシンを動かすには多額の電気代が必要ですが、そこまでして仮に不正な取引を「正しい取引」であると認めさせたとしても、ビットコインの価格は崩壊、、、、誰もそんな無駄な投資をしようとはしないでしょう。
ビットコインのマイニングに参加する採掘マシン(コンピューター)の計算能力は、今では天文学的数字になっています。大量の電気を使い、ビットコインの採掘マシンを動かすことこそ、犯罪者がビットコインの不正な取引をすることを防ぎ、ビットコインのセキュリティを高めているのです。
ビットコインのマイニングで報酬としてビットコインをもらうことは、「ビットコインというブロックチェーンを守る」ということでもあるのです。