ナカモトサトシ白書解説(4)
以下は2016年12月28日に私が以下のホームページに掲載した記事です。
https://officemoorea.wordpress.com/
最近、web3という文脈でブロックチェーンが注目されていることや、上記ホームページの更新ができていないことから、古い記事ですが、noteに転載します。
■ナカモトサトシ白書解説 ネットワーク
ネットワーク実行の手順は以下の通りである
新しい取引が全ノードに送信される。
各ノードが新しい取引をブロックに取り入れる。
各ノードがそのブロックへのプルーフ・オブ・ワークを算出する。
プルーフ・オブ・ワークを見つけ次第、各ノードはそれを全ノードに告知する。
ノードは、ブロックに含まれる全ての取引が有効であり、以前に使われていない場合のみ、それを承認する。
ノードは、承認されたブロックのハッシュを直前のハッシュとして用いて、チェーンの次のブロックの作成を開始することで、ブロック承認を表明する。
ノードは常に最長のチェーンを正しいものと判断し、それをさらに延長しようとする。もし二つのノードが同時に異なる二パターンのブロックを次のブロックとして告知した場合、ノードによって受信の順番が入れ替わる可能性がある。その場合、ノードは最初に受信した方のブロックを処理するが、もう一つのブロックも保存し、そちらのチェーンが長くなった場合に備えておく。次のプルーフ・オブ・ワークが発見され、どちらかのチェーンが伸びたとき、そちらが正しいチェーンと認識され、もう一つのチェーンに取り組んでいたノードはより長いチェーンに切り替える。
新しい取引の告知は必ずしも全ノードに届かなくともよい。告知が多数のノードに受信されている限り、やがてブロックに組み込まれる。ブロック告知もまたメッセージの欠落に耐えうる。ノードがブロックを受信しなかった場合、次のブロックを受信するときにそれを要求し、一つ受信していなかったことを認識する。
解説
ノードというのは採掘者のことである。誰かが誰かにビットコインを譲渡した場合、その取引は全ノードに送られる。各ノードは複数の取引をブロックにまとめ、ハッシュ値がある値以下になるnonceを求める(これがプルーフ・オブ・ワークを算出するということ)。
一番最初にnonceを見つけたノードはこれを全ノードに送信する。
これを受けた他のノードは、そのブロックが正しいかどうかを確認し、正しいと認めれば現在のプルーフ・オブ・ワーク算出作業をやめ、そのブロックに続く次のプルーフ・オブ・ワーク算出作業、すなわちまだ処理されていない取引に対する作業に移る。
そして新たなブロックが、前のブロックのハッシュを含むことにより、前のブロックに連結されることになる。次のブロックがつながることが「承認」を意味する。
同時に二つの正しいブロックが連結されることもある。この場合、各ノードは先に見つけたブロックに次のブロックを連結しようとする。そして先に次のブロックが連結された方のチェーンが長くので、それ以降はそちらが正しいチェーンとして伸びることになる。伸びなかったほうのチェーンはそれ以降無視される。
■ナカモトサトシ白書解説 インセンティブ
慣例により、ブロック内の最初の取引は新しいコインを始める特別な取引とされ、そのコインはブロック作成者のものとなる。これはノード(採掘者)へのインセンティブとなると同時に、コインを発行する中央機関不在の中、最初にコインを配布する方法としても機能する。
新しいコインを一定量安定して追加していくことは、金鉱労働者が働いて採金し、金の流通量を増やすことと似ている。我々の場合は、働いてるのはCPU時間と電力である。インセンティブは、取引手数料によっても得ることができる。もしある取引でアウトプットされた価値がインプットされた価値よりも少ない場合、その差は取引手数料としてその取引を含むブロックのインセンティブに加算される。
ひとたびコインの流通量が既定の数値に達するとインセンティブを取引手数料として使うことが可能になり、またコインは既定以上流通されないのでインフレからは完全に解放される。
インセンティブはノードが良心的であり続ける動機となりうるだろう。もし欲深い攻撃者が良心的なノードの合計を上回るCPUパワーを作り出すことができたとして、攻撃者はそのパワーを使って、他の良心的なノードから自分の支払った金額を盗んで取り戻すか、新しいコインを作り出すかの選択を迫られることになり、おのずと自分の資産価値とそれを支えるシステムを損なうよりも、ルールに従って行動し、他の全ノードを合わせたよりも多くの新しいコインを作りだすほうが、自分の利益になると考えるだろう。
解説
取引をまとめてブロックを構成するが、その最初に特別な取引として「新しいコイン」を追加することができる。その新しいコインの送付先はそのブロックを登録するノード(採掘者)である。その値は決められており、最初の21万ブロックまでは50BTC、次の21万ブロックまでは25BTC、それ以降21万ブロック毎に半減する。
これによってビットコインの発行量には上限が存在することになる。21万ブロック毎に採掘されるBTCは半減するので、採掘できるBTCは2100万BTCを超えることができない。
210,000*50(1+1/2+1/4+1/8+・・・)=21,000,000
2016年12月26日現在、発行量は1600万BTCである。
ブロックチェーンの維持管理は採掘者によってなされている。採掘者のモーティベーションはそれによって採掘できるビットコインである。それなら採掘できなくなったら誰がデータベースの面倒を見るのか?
取引には手数料を含めることができ、この手数料も採掘者の収入となる。手数料はチップのようなもので、取引する人が決められる。採掘者は自分の利益を大きくするために手数料の多い取引を選んでブロックにまとめる。取引する人は取引手数料をゼロとすることもできるが、それでは採掘者へのインセンティブが働かないので、その取引は後回しにされ、最悪永久に登録されない可能性もある。
現在は採掘の金額のほうが多いが、これが少なくなり、手数料が採掘者の収入になると、採掘者は手数料の多い取引から優先的に承認しようとする。手数料の少ない取引はなかなか承認してもらえなくなるので、早く承認してもらえるよう手数料を上げることになる。
この結果、取引手数料は市場によって自動的に調整され、採掘は継続される。
またデータ改ざんには全体の半分に相当するCPUパワーが必要となるが、それだけのCPUパワーがあるなら、改ざんするよりも正当な採掘をするほうが利益になる。これによっても改ざんを防止することが可能になる。
この記事が気に入ったらサポートをしてみませんか?