ブロックチェーンの仕組みを徹底的に解説

structure-of-block-chain-topテクノロジー
スポンサーリンク

みなさん、こんにちは。

これまで2回に渡ってご紹介してきたブロックチェーンですが、

以前、こちらの、
仮想通貨の仕組みとは?目指す社会とブロックチェーン
という記事では、

ブロックチェーンの概要について、

また、こちらの、
ブロックチェーンの技術【2つの暗号化技術】
という記事では、

ブロックチェーンで使われる暗号化技術について、ご紹介してきました。

今回は、いよいよ、その仕組みについて、ご紹介していきます。

上記の記事を踏まえて、今回の記事をご覧頂ければ、ブロックチェーンの仕組みについて、誰でも理解することができるようになるはずです。

それでは、行きましょう。

スポンサーリンク

ブロックチェーンの仕組みを徹底的に解説

structure-of-broxy-chain-1
これまで、毎回、ご紹介していることですが、

ブロックチェーンの技術は、

1. みんなにオープンにしている
2. みんなで、管理、チェックしている
3. 不正ができない

ということで、信用をもたらすことができ、
今日、仮想通貨だけでなく、様々な用途でも使用されるようになってきています。

ところで、この、みんな、というのは、誰のことでしょうか?
実は、この、みんなというのは、分散させた多数のサーバーのことです。

これまで、ブロックチェーンには、中央に管理者がおらず、みんなで管理する、ということは、ご紹介してきました。

つまり、ユーザーのデータを、通常の処理システムのように、1箇所のサーバーで、集中的に管理をする、というのではなく、
サーバーを物理的に分散させて、この分散させた多数のサーバーで管理することにより、高信頼度化を実現させているのです。

よって、ユーザーが送信したデータは、まず、この分散化された多数のサーバーにブロードキャスト(一斉送信)され、すべてのサーバーで同時に処理されます。

下記の図をご覧ください。

ブロックチェーン処理サーバーのブロックの処理
block-processing
これは、分散化された、ブロックチェーン処理サーバーで行われている、
新しく生成されるブロックの処理、を表したものです。

この図が、ブロックチェーンの仕組みのすべてを表している、といっても過言ではありませんので、よくご覧下さい。

まず、ブロックの中身の全体像ですが、
ブロックは、ブロックのヘッダ部分と、ブロック本体部分に分かれています。

ブロックのヘッダには、様々な情報が書き込んであるのですが、
その内の一つに、①前ブロックのハッシュ値 というものがあります。

これは、直前のブロックを示すブロック番号のことです。

このように、ブロックチェーンの中に入っているブロックには、(一番最初のブロックを除いて)すべて、ひとつ前のブロックを指すブロック番号を持っています。

このため、一つのブロックを見ると、その前のブロックがどれなのかがわかるので、前のブロックを順にたどっていくことができます。

このようにブロック同士が、鎖(チェーン)のように結ばれていることから、ブロックチェーン、と呼ばれています。

ここでいう、ブロック番号とは、ブロックのヘッダの内容を要約した数値である、ブロックのハッシュ値を意味します。

ハッシュ値は、前回の、ブロックチェーンの暗号化技術、で出てきましたね。
一文字でも書き換えると、ハッシュ値も変わってしまう、というものでした。

このため、ブロックの中身を書き換えると、ハッシュ値が変化するので、
次のブロックに記載されている、前ブロックのハッシュ値、と整合性がとれなくなり、チェーンが切れてしまいます。

したがって、チェーンが繋がっている、ということは、改ざんなどがおこなわれていない、と言えるのです。

マークルルートのハッシュ値の計算方法

structure-of-broxy-chain-2それでは、順に、もう少し、詳しく見ていきましょう。

まず、ユーザーは、データを、分散化された各サーバーに、ブロードキャスト(一斉送信)しますが、その際、データを、ユーザー自身の秘密鍵を使って、送信します。

これについても、前回、電子署名として送信する、とご紹介しましたね。

ブロックチェーンの信用の理由の一つである、
1. みんなにオープンにしている
というのは、この電子署名を使うことで、データを、秘密情報ではなく、公開情報として、誰もが読める形で送信しているから、ということでした。

各サーバーは、このユーザーから送信された電子署名が、ある程度の数が溜まるのを待って、一つのブロックを作成します。

作成されるブロック本体では、図のように、
ユーザーから送られた、2個の電子署名を対にしてハッシュ値を計算し、別の2個の電子署名から計算されたハッシュ値を合わせて対にして、またハッシュ値を計算する、という作業を、ハッシュ値が1個になるまで繰り返して計算します。

これを、②マークルルートのハッシュ値と呼び、ブロックヘッダ部に記録します。

どれか一つでも、電子署名を変更すると、その上のハッシュ値が変わり、さらにその上のハッシュ値が変わり、最終的にはマークルルートのハッシュ値が変わってしまうので、ブロックヘッダに記録したハッシュ値と不一致になり、改ざんがバレてしまいます。

また、この後でご紹介しますが、④このブロックのハッシュ値の算出は、
マークルルートのハッシュ値も使用している為、
ブロックヘッダの中に記録してある、マークルルートのハッシュ値も同時に書き換えてしまうと、このブロックのハッシュ値が変わってしまいます。

すると、先にも書きましたが、次のブロックに記録してあるブロックのハッシュ値と不一致になり、ブロックチェーンが切れて、やはり改ざんがバレてしまいます。

このような仕組みで、マークルツリー構造を用いて、ブロックの誤りや改ざんを検出しているのです。

ブロックのハッシュ値の計算方法

structure-of-broxy-chain-3
次に、新しくできる、④ブロックのハッシュ値の算出の仕方について、見ていきましょう。

ブロックのハッシュ値は、

  1. 前ブロックのハッシュ値
  2. マークルルートのハッシュ値
  3. ナンス

の3つの値を、ハッシュ関数に2回かけることで、算出します。
2回というのは、1回かけたハッシュ値を、さらにもう1回かける、というもので、
暗号化の精度をより高めるために行います。

それでは、それぞれの値について、見ていきましょう。

①前ブロックのハッシュ値、というのは、前のブロックのハッシュ値のことでしたね。
これは、これからご紹介する、このブロックのハッシュ値の算出の仕方を見れば、どのように決められたのか分かりますので、おいておきます。

次に、②マークルルートのハッシュ値、ですが、これは、先にご紹介した通り、
このブロック内の電子署名を対にして、1個になるまで計算したハッシュ値でした。

次に、③ナンス、についてご紹介していきましょう。

紹介といっても、ナンス自体は、適当な値を、自由に選んでよいのです。

というのも、ブロックのハッシュ値は、
先の2つのハッシュ値と、ナンスを組み合わせてできた新たなハッシュ値が、
予め決められた値より、小さい値になることで決められます。

ご紹介した通り、前ブロックのハッシュ値と、マークルルートのハッシュ値は、すでに決まっています。
そこで、唯一変えられる、ナンスの値を変えて、
ブロックのハッシュ値が、予め決められた値より、小さい値になるようなナンスを見つけることになるのです。

因みに、予め決められた値より小さい値、というのは、
ハッシュ値の上位3ケタが、000という条件です。
このような制限をかけ、これを満たさないハッシュ値は、ブロックに繋げられないようにしています。

この条件を満たすようなナンスを見つけるには、総当たりに、様々な値(ナンス)を入れてみる、といった方法しかなく、膨大な計算量が必要になります。

因みに、ビットコインでは、約10分という、長時間を要する計算方法を、規定しています。

最初にナンスを見つけたサーバーがでたら、他のサーバーは、それが正しいかを検算します。

このようにして、最後まで、2. みんなで、管理、チェックしている という訳です。

このような、ナンスをみつけるサーバーのことを、その作業が途方もないことから、金塊などを採掘することに例えて、マイナーといい、ブロックをつなげる作業のことを、マイニングと呼ばれています。

ご紹介したように、ブロックチェーンで、不正をしようとした場合、
一部の書き換えでは、チェーンが切れてしまうため、
これまで繋がってきた、すべてのブロックのデータを書き換える、ということになります。

しかしながら、ブロックを書き換えれば、このナンスを新たに見つけるのに、多大な時間がかかります。
その間に、新たなブロックが繋がれてしまうため、悪意のある書き換えが間に合わないようになっているのです。

この、ブロックチェーンを守る、改ざん防止のための長時間計算の仕掛けのことを、プルーフオブワーク(POW)といいます。

これで、3. 不正ができない ということは、おわかりいただけたことでしょう。

ところで、ここで、疑問に思う人もいるのではないでしょうか。
なんで、ナンスを見つけるという、時間も労力もかかる作業をやる人がいるのだろうかと。

じつは、このナンスを一番最初に見つけた人には、その報酬として、仮想通貨がもらえるのです。

例えば、ビットコインでは、2009年頃の報酬額は、50 BTC でしたが、
2016年頃からは、12.5 BTC となっています。

マイニングは、10分間に1回実行されるので、仮に、1 BTC が100万円とすると、10分間に一度、1250万円を稼ぎ出すチャンスがあります。

1日に144回のチャンスがあるので、そのうち10回でも勝てば、一日で、1億2500万円の収入が得られます。

これはかなり大きな金額ですから、世界中でこぞって、マイニングを競っているのです。

余談ですが、マイニングには、高性能のコンピュータを、体育館のような広い場所で、大量に並べて行う必要があるため、
広くて、電気代が安く、コンピューターの放熱を抑えられるような寒いところが最適な場所だ、といわれています。

このためか、中国でのマイニングが、世界の70%を占めているそうです。

なんだか、羨ましい話ですが、
仮想通貨は、本来、みんなに平等で、みんなで価値を決められる通貨であるはずなのに、すでに一部の人に大量に所有されているって、それって、本当に平等と言えるでしょうか?

仮想通貨は、投機目的の人が多く、本来の価値を全く活かせていない、と、以前の記事で書きましたが、マイニングのような市場独占の問題もあり、まだまだ、安定した価値をもった通貨とは言えないですね。

まとめ

ブロックチェーンの仕組みを徹底的に解説

  • データは、すべてのブロックチェーン処理サーバーに送信される。
  • 受け付けたブロックチェーン処理サーバーは、いくつかのデータをまとめて1ブロックにして、過去に生成されたブロックの次に追加する。
  • すべてのブロックは、前のブロック番号を覚えており、これをつなげてチェーンにしている。

マークルルートのハッシュ値の計算方法

  • ブロック内の電子署名を対にして、1個になるまで計算したハッシュ値。

ブロックのハッシュ値の計算方法

  1. 前ブロックのハッシュ値
  2. マークルルートのハッシュ値
  3. ナンス

の3つをハッシュ関数にかけ、決められた値より小さい値を見つけだすことで、ブロックに繋ぐことができる。
また、最初にナンスを見つけた人は、報酬をもらえる。

以上です。

第4次産業革命の、本命の一つで、これからの社会を大きく変えることができる、ブロックチェーンについて、3回に渡って、ご紹介してきました。

また、今回ご紹介はできませんでしたが、ブロックチェーンを使用したサービスは、今後も、どんどん増えてくることと思います。

私たちも、仕事や、身近な環境の中で、ブロックチェーンを利用できないか、考えてみるのも面白いのではないでしょうか。

ご覧になられたみなさんに、ブロックチェーンについて、少しでも理解を深めていただけたら幸いです。

最後までお読み下さり、有り難うございました。

それでは、また。

テクノロジー
スポンサーリンク
スポンサーリンク
スポンサーリンク
まことあり

コメント