##ブロックチェーンの全体像
ブロックチェーンとは、P2P(Peer To Peerの略)ネットワーク上の非中央集権の分散型台帳管理システム、またはその台帳(データ)そのものです。
P2Pはクライアント・サーバー方式とは対立的なネットワークで、一般的なWebサーバーに値する中央管理者がいません。
また、それぞれのクライアントをPeer(ピア)=「対等者」又はノードと呼びます。
(画像引用元: P2Pとは? ビジネスに役立つ仕組みと背景を理解しておこうhttps://kigyotv.jp/news/p2p/)
ブロックチェーンでは各ノードが自己のコンピューターサーバー内で他のノードと共通のブロックチェーン(データ)を保有しています。これが分散型台帳管理システムと言われる仕組みです
例え、或るひとつのノードのブロックチェーンが失われても、他のノードがブロックチェーンを保有している為、データを維持することができます。
ブロックチェーンには2種類あります。
パブリックブロックチェーンとプライベートブロックチェーンです。
パブリックブロックチェーンは一般人が利用可能なもので、その代表例が「ビットコイン」などの仮想通貨技術です。
プライベートブロックチェーンは、銀行や企業などの限定された人のみ利用可能なものです。
この記事ではブロックチェーン=パブリックブロックチェーンとします。
##おさらい
◾️ブロックチェーンとはP2Pネットワーク上の非中央集権の分散型台帳管理システム、またはその台帳(データ)そのものを指す
◾️ブロックチェーンにはパブリックブロックチェーンとプライベートブロックチェーンがある
##ブロックチェーンの構造と仕組み
各ノードは共通のブロックチェーンを保有している、と説明しました。
そのブロックチェーンの構造を見てみます。
###--ブロックチェーンの構造
ブロックチェーンの構造は時系列で並んだブロック(データ)同士の連なりです。
その連なりの末尾のブロックが最新のデータになります。
ブロック内には主に、ハッシュ値、nonce(ナンス)、**トランザクション(取引情報)**などのデータが含まれています。
(画像引用元:ビットコインは、正確には「改竄不可能」ではなく、「改竄されるとすぐに発覚して自動修復される」https://mynavi-agent.jp/it/geekroid/2018/08/10.html)
ハッシュ値には隣接する前のブロックのデータを、ハッシュ関数で数値化した一意の値が入っています。
もし仮に前のブロック内のデータが改竄されると、ハッシュ値自体も変更されます。
これにより、隣接するブロック同士はデータの関連性と完全性を保ち、相互に作用し連鎖した
1つの繋がったデータ(つまり、ブロックチェーン)として扱われます。
トランザクションには「ビットコイン」などの仮想通貨による取引情報が複数含まれています。
nonceには前のブロックのデータをハッシュ関数に通したときに非常に小さいハッシュ値が生成されるように調整するための値が入ります。nonceを算出すのには高度な処理能力を持つコンピューターが必要で、それを行う人達、ノードのことを**マイナー(採掘者)**と呼びます。
条件に一致したnonceがマイナーによって生成されて、初めてそのブロックがブロックチェーンに繋がり、新規ブロックとして追加されます。
###--ブロックチェーンの仕組み
ではブロックが生成されてブロックチェーンとして繋がる仕組みを見てみます。
ブロックが生成される為にはnonceが算出されなければなりません。
コンピューターを用いてnonceを算出し、最新のブロックを生成して、それをブロックチェーンに追加する過程を**マイニング(採掘)**と呼びます。
ノードはこのマイニングに参加できます。
(画像引用元:ビットコイン(BTC)のマイニング方法と報酬の仕組みについてhttps://coin.z.com/jp/column/organization/)
マイニングを行うのはマイナーですが、P2Pであるブロックチェーンネットワークでは、中央管理者が存在しない為、決められた特定のマイナーがマイニングをする訳ではありません。
誰がマイニングを行うかを決める為にコンセンサス(合意)が必要です。
これを得る方法をコンセンサスアルゴリズムと呼びます。
「ビットコイン」などのパブリックブロックチェーンではコンセンサスアルゴリズムに**プルーフオブワーク(仕事の証明)**を用います。
プルーフオブワーク(仕事の証明)とはつまり、nonceの算出です。
マイニングに参加するノード同士は、nonceを算出する為に競争をしています。
誰よりも早く一番最初にnonceの算出が出来たマイナーがマイニングを行うことが出来るのです。
そして最終的にマイナーは自身が持つブロックチェーンに追加した新規ブロックを、他のマイナーが持つブロックチェーンにも追加するように依頼し、全マイナーの過半数が正しいブロックであることを承認したら、正式なブロックとして全ノードのブロックチェーンに共有され追加されます。
ちなみに、「ビットコイン」ではマイニングがおよそ10分毎に行われているそうです。
###--マイナーがマイニングをする理由
マイナー同士はなぜ競争までして、マイニングに参加するのか。
そもそもマイニングによって、新しいブロックを生成し続けるのは何故か。
まずは後者から、1つのブロックに含めることが出来るデータ量にはもちろん限りがあります。
そのデータ量をブロックサイズと言います。
その為、ブロックを生成し続けなければ、トランザクションが処理されなくなります。
「ビットコイン」での1つのブロックサイズは 1 MBで、これはおよそ10分間に約4000回分の取引のデータが書き込めることを示しています。
ちなみに、クレジットカードのVisaは10分に約3,360万回の処理を行なっているので、それと比較するとかなり少ないです。
そして前者、マイナーはボランティでマイニングを行なっている訳ではありません。
ブロックの生成に成功したマイナーには報酬として仮想通貨が支払われます。
この報酬は都度、新規発行される仮想通貨と、ノードが取引で支払う仮想通貨の手数料から成っています。
その為、マイナー同士に競争が生まれ、市場原理による副産物としてブロックは生成され続けます。
##おさらい
◾️ブロックチェーンは主にハッシュ値、nonce(ナンス)、トランザクション(取引情報)を含むブロックの繋がり
◾️一意のハッシュ値によって、隣接するブロック同士はデータの関連性と完全性を保っている
◾️高度な処理能力を持つコンピュータを用いてnonceを算出し、新規にブロックを生成し、ブロックチェーンに追加するする人をマイナー(採掘者)と呼び、その過程をマイニング(採掘)と呼ぶ。
◾️コンセンサスアルゴリズムにプルーフオブワーク(仕事の証明)を用いることによって、マイナーはマイニングを行うことが可能であり、マイニングしたマイナーには報酬が支払われる。
参考文献
森川 夢佑斗 著『ブロックチェーン入門』 KKベストセラーズ
株式会社ストーンシステム 石黒 尚久/河除 光瑠 著
『図解入門 最新ブロックチェーンがよ〜くわかる本』 株式会社 秀和システム