ビットコインに学ぶブロックチェーンの真髄#9 コンセンサス・アルゴリズム編2
昨今話題のブロックチェーン技術について、その概要と詳細な仕組みを10 回くらいの連載を通じて詳しめに解説していくシリーズの第9回目になります。
第8回目はこちら
シリーズ全体はこちら
マイニングのインセンティブ
ブロックをチェーン状につなげることで、分散ネットワーク上のノード全員が同じ帳簿を共有することができるようになりました。
しかしここで以下のような疑問が生まれます。
「ルールを定めたのはいいけど、それを実行してくれる人はいるのか?」
これまでの説明によると、マイナーたちは自分のブロックを新しいブロックとしてブロックチェーンに追加するために、必死にコンピュータに計算させなければなりません。しかし、なんのメリットがあってマイナーはそのような面倒な作業をするのでしょうか?
ビットコインではマイナーにインセンティブを持たせるためにブロックを作った人が報酬を得られるような仕組みを組み込んでいます。
厳密に言うと「ブロックを追加させることができれば、『自分のアドレスに報酬としてのビットコインが追加されている状態』を正しい歴史として他のノードが承認する」という仕組みになっています。
そのからくりはとてもシンプルで、ブロック内のトランザクションのフィールドの先頭部分に「インプットなし/アウトプット自分に○○BTC」というトランザクション(コインベース・トランザクション)を追加するだけです。これにより、もし運よく正しいナンスが見つかって自分のブロックが新たなブロックとして採用された場合、自分のアドレスには報酬としてのビットコインが追加されている状態になります。
マイニングに伴う2種類の報酬
報酬の額は自分で好きに決められるわけではありません。マイニングによる報酬は「新規採掘」と「手数料」の2種類の報酬からなっています。
新規採掘
新規採掘については量が決まっており、現在は1つのブロックにつき6.25BTCです。つまりブロックが追加されるごとに6.25BTCが無から生み出されます。(2021年10月時点で1BTC=700万円くらいなので、1ブロック採掘に成功すると4,300万円分以上のビットコインを獲得できます。)
しかし、この新規採掘の量は永久に固定されるわけではありません。具体的には210,000ブロック(=4年)ごとに半減させると決められています。ビットコインが稼働し始めた当初の新規採掘量は50BTCでした。そして2012年11月28日に最初の半減期を迎えて25BTCとなり、2016年7月9日に二度目、2020年5月12日に三度目の半減期を迎え、現在に至ります。予定では2140年に新規採掘量がゼロになると見込まれています。
新規採掘量に上限が設けられているということは、ビットコインの総供給量が決まっているということです。現時点では2100万枚で打ち止めになる予定です。総量が決まっているという点は、貨幣よりも金(ゴールド)と似た性質であり、ビットコインがデジタルゴールドと呼ばれる所以でもあります。
手数料
2つ目の報酬が「手数料」です。これは無から生み出されるわけではなく、トランザクションの送信者が手数料としてマイナーに納めます。トランザクションはインプットとアウトプットで構成されていますが、(インプットの額)=(アウトプットの額)ではありません。必ず(インプットの額)>(アウトプット額)となっています。そしてこのインプットとアウトプットの差がマイナーへの手数料となるのです。
たとえば「インプット:10BTC/アウトプット:Aさんに5BTC・自分に4BTC」というトランザクションの場合、10-(5+4)=1となり、1BTCがマイナーへの手数料となります。この手数料は一律ではなく、トランザクションの送信者が任意に設定できるようになっています。
2021年10月時点の平均的なトランザクション手数料は1トランザクションあたり500円くらいとなっています。手数料の合計よりも新規採掘量のほうが圧倒的に多いため、マイナーのメイン報酬は新規採掘と言ってもよいでしょう。
手数料の相場はトランザクションサイズに比例して大きくなります。つまり、10個のインプットと10個のアウトプットを含むトランザクションの手数料は、1個のインプットと1個のアウトプットを含むトランザクションの手数料よりも高くなるということです。
これは「トランザクションのサイズが大きいと手数料も高くしなければならない」と決められているわけではありません。ブロックのサイズが決まっており、それによってブロックに入れられるトランザクションの総サイズも決まってしまうため、マイナー側としてはサイズの大きいトランザクションからは高めの手数料を得ないと割に合わないということです。
同様の理由で、手数料を高く支払えば、トランザクションサイズに関わらずすぐにブロックに取り込まれます。
このようにマイナーは「新規採掘量」と「手数料」が報酬として得られるため、新規ブロックを作成し、性能の良いコンピュータを用意してひたすら計算をさせます。そして正しいナンスを見つけると即座にブロックをビットコインネットワーク、つまり他のマイナーやノードに知らせます。
ブロックを受け取ったノードはそれを検証し、問題が無ければ新しいブロックとして自分のブロックチェーンに追加します。マイナーも同様に検証を行い、問題がなければ自分のブロックチェーンに追加し、次のブロックのためのマイニングを始めます。
チェーンの分岐
前回少し説明しましたが、ビットコインでは「一番長いチェーンが正当なチェーンと認められる」という大前提のルールがあります。このようなルールが存在するということは、同一ネットワーク上であっても複数の異なるチェーンが存在する可能性があるということです。ではどういう場合に複数の異なるチェーンができてしまうのか見ていきましょう。
チェーンが複数に分岐することをフォークといいます。フォークには偶然起きてしまう場合と計画的に起こされる場合の2種類があります。
自然発生するフォーク
前者の場合は、主にマイニングが複数の場所で同時に成功すると起こります。AさんとBさんが同じタイミングでマイニングに成功し、ブロックをネットワークに伝播したとします。
するとネットワークの半分のノードはAさんのブロックを有効とみなし、もう半分のノードはBさんのブロックを有効なものとみなします。その結果、ネットワーク上にAさんのブロックが採用されたチェーンとBさんのブロックが採用されたチェーンが存在することになります。これがフォークです。この場合、実際に両方とも正しいブロックなのでフォークが起こってしまうのは仕方のないことです。
この段階では2つのチェーンの長さは同じなので、両方とも正しいチェーン(メインチェーン)として認められています。Aさんのブロックを有効としたマイナー、Bさんのブロックを有効としたマイナーともにその次のブロックのマイニングを始めます。
そして約10分後、次のブロックが採掘されます。マイニングのタイミングが一度重なることはあるかもしれませんが、二度続けて重なることは極めて稀です。
ここではAさんのブロックを採用したCさんが次のブロックをマイニングしたとしましょう。するとCさんのブロックはネットワークに流れ、Aチェーンを採用した人にもBチェーンを採用した人のもとにも伝播します。
Aチェーンを採用した人はそのままCさんのブロックを繋げることが可能ですが、Bチェーンを採用した人はそれを繋げることができません。なぜなら、CさんのブロックのブロックヘッダのPrevious Block HashにはAさんのブロックの情報が書き込まれているからです。つまりAさんのブロックとCさんのブロックのつながりは証明されていますが、BさんのブロックとCさんのブロックのつながりは証明されていないのです。
こうなると、Aチェーンのほうが1ブロック分長くなるため、Aチェーンがメインチェーンとして認められます。するとBチェーンを採用していたマイナーは、自分が承認していたチェーンがメインチェーンではなくなったことを知り、Aチェーンに乗り換えてマイニングを再開します。
こうして、自然に発生したフォークは自然に選択が行われて解消されます。
故意に発生させるフォーク
故意のフォークに関してはイーサリアムでよく行われます。イーサリアムは2015年から稼働し始めたブロックチェーンですが、初期の時点から、数年ごとにアップデートを行うと計画されていました。アップデートではブロックチェーンの仕様が大きく変わるため、ハードフォーク(それ以前のチェーンとは互換性のないフォーク)を伴う必要があります。
このフォークは以前から計画されていたものなので、マイナーもスムーズに新しいチェーンへ移行します。「みんなスムーズに移行して、これまでと同じように振舞うだろうな」と誰もが思うので、みんなスムーズに移行し、マイニングをはじめるのです。このハードフォークによってイーサリアムの価値が変わることはあまりありません。
故意のフォークの中には計画的に行われないものもあります。そのような場合はマイナーが元のチェーンとフォーク後のチェーンに分散してしまう可能性があり、それによってチェーンの価値や安全性が低下する可能性があります。
おわりに
今回はマイニングに伴うインセンティブと、チェーンのフォークについて解説しました。次回はビットコインで採用されているコンセンサス・アルゴリズムであるプルーフ・オブ・ワーク(PoW)の本質について解説していきます。
このシリーズは『あたらしい経済』で私が執筆した「ブロックチェーンは今までのシステムと違って何がすごいのか〜ノンプログラマーでも解るブロックチェーン入門」シリーズを大幅に加筆修正したものになっています。
この記事が気に入ったらサポートをしてみませんか?