Amazonで利用すべきコスパ最高のサービス一覧

ブロックチェーンとは?仕組みやメリットをわかりやすく解説!

この記事はこんな方にオススメ!
  • ブロックチェーンとは何かを知りたい方!
  • ブロックチェーンの構造や仕組みを知りたい方!
  • ブロックチェーンの特徴やメリットを知りたい方!
  • ブロックチェーンは何に使えるのかを知りたい方!

今井

こんにちは!
今井(@ima_maru)です。

今回は、「ブロックチェーン」について解説します!

「AI」「IoT」「クラウド」などと並び、今話題の技術の一つですね!

今回は仕組みもしっかりと解説できたらと思います。

それでは気合を入れて、解説していきます。

ブロックチェーンとは?

ブロックチェーンの定義

ここでは、ブロックチェーン協会におけるブロックチェーンの定義を引用します。

定義1
ビザンチン障害を含む不特定多数のノードを用い、時間の経過とともにその時点の合意が覆る確率が0へ収束するプロトコル、またはその実装をブロックチェーンと呼ぶ。

定義2
電子署名とハッシュポインタを使用し改竄検出が容易なデータ構造を持ち、且つ、当該データをネットワーク上に分散する多数のノードに保持させることで、高可用性及びデータ同一性等を実現する技術を広義のブロックチェーンと呼ぶ。

引用元:日本ブロックチェーン協会

少し難しい言葉が使われていて、分かりにくいと感じるかもしれません。

ざっくり言えば、定義1は「悪さをする奴がいても正常に機能する仕組み」のこと。

定義2は「改ざんしたのがすぐばれるデータ構造で管理&みんなで管理する技術」のことです。

ちょっと砕きすぎた感がありますが、定義自体はこういうことです。

結局ブロックチェーンって何?

結局、ブロックチェーンとは「データの管理方法の技術」です。それも、

「信頼できる」「同じデータを」「みんなで共有し管理する」

という技術です。

もう一度言いますが、結局は「データの管理方法の技術」なのです。

ブロックチェーンの歴史

ブロックチェーンとは、仮想通貨「ビットコイン」を実現させるために生まれた技術です。

2008年に「サトシ・ナカモト」という正体不明の人物が書いた論文がきっかけとなり、生まれました。

これが、仮想通貨の誕生と、それに用いられたブロックチェーンという技術の誕生でした。

その内容は、仮想通貨ビットコインを実現するための仕組みでした。

その仕組みに使われていた技術が「ブロックチェーン」だったのです。

翌年の2009年には、ビットコインのソフトウェアが発表され、運用が開始されました。

今後、仮想通貨だけでなく、様々な分野に応用されていくことが予想されています。

中央集権型から自律分散型のシステムへ

これまでの、金融システムは「中央集権型」と呼ばれるモデルを採用していました。

これは、「特定のサーバーに取引データをすべて格納する」といった、特定の誰かがデータの管理権をもつ構造のことです。

「クライアントサーバ型のシステム」

これは、いってしまえば「管理者が何でもできちゃう」構造なので、一部では批判の声がありました、

その点で、ブロックチェーン技術は根本的に違う構造をしています。

ブロックチェーン技術に採用されているネットワークの構造は「P2P」(ピアツーピア)と呼ばれます。

「ブロックチェーン(P2P型)のシステム」

この「P2P」には、サーバーとクライアントというような役割の違いや立場の差はなく、だれもが対等な関係にあります。

これが、ブロックチェーン技術「非中央集権型」「自律分散型」だといわれる理由です。

そうすると、「だれがデータ管理するの?」って話になりますよね。

ブロックチェーンの世界でデータ管理を担うのは、「参加しているみんな」になります。

つまり、「自分たちの取引データを自分たちで管理しよう!」というのがブロックチェーン技術の根本的な考え方なのです。

ブロックの生成とブロックチェーンに連結される流れ

ブロックチェーンは発生した取引をブロック単位で承認し、それをチェーン状に繋げていく技術です。

ここでは、その流れを3STEPに分けて解説します。

ブロックの生成とブロックチェーンに連結する流れ
STEP.1
取引が発生するとトランザクションプールに入る

取引データはすぐにブロックに入れられるのではなく、トランザクションプールと呼ばれる一時保存庫に入れられます。

STEP.2
複数の取引データを使った新しいブロックが生成される

トランザクションプールにある複数の取引データを使い、新しいブロックが生成されます。

この際に、マイナーによる「マイニング」という処理が行われます。

STEP.3
新しいブロックがブロックチェーンの最後尾に付け加えられる

完成したブロックは、今あるブロックチェーンの一番後ろに繋がれます。

このようにしてブロックチェーンは伸びていき、取引が承認されていきます。

「ナンス」「マイニング」といった用語が出てきますが、詳しくは「仕組み」の部分で解説しますので、読み進めてください。

では見ていきましょう。

STEP1 取引が発生するとトランザクションプールに入る

まず初めに、「取引が発生したらどうなるのか?」について考えてみます。

発生した取引は、すぐにブロックに入るわけではありません。

一度「トランザクションプール」と呼ばれる、一時保存場所に保存されます

※BTCとはビットコインの略

取引のことを英語で「トランザクション」と呼びますので一緒に覚えておきましょう。

今井

発生した取引は、直接ブロックに入るわけじゃないんだね。

STEP2 複数の取引データを使った新しいブロックが生成される

次は、ブロックの生成です。

ブロックの生成は一定時間に一回というペースで行われます。

その時間間隔はシステムによって様々ですが、ビットコインの場合は10分に一度となります。

ブロックには、先ほどのトランザクションプールから複数の取引データが選ばれて入れられます

そして、ここで「マイニング」という作業がここで行われます。(マイニングの仕組みは下で詳しく解説します)

この「マイニング」で、魔法の値である「ナンス」を見つけたコンピュータには賞金が与えられ、ナンスはブロックに入れられ梱包されます

これで新しいブロックが生成されました。

STEP3 新しいブロックがブロックチェーンの最後尾に付け加えられる

最後に、完成したブロックは、すでにできているブロックチェーンの最後尾に付け足されます

このようにして、複数の取引がブロック単位で承認されていきます。

そして、この一連の流れを一定間隔で繰り返し行うことにより、ブロックチェーンが伸びていくのです。

ブロックチェーンの仕組みと構造

ここからは、ブロックチェーンの仕組みについて深堀りしていこうと思います。

「詳しい仕組みは興味ないよ!」って方は下までスクロールしてくださいませ。

まず、ブロックチェーンを理解するには、「実際にブロックチェーンの構造に触れてみること」が一番いいと思います。

なので、とても参考になる3つのサイトを紹介します!

  • chainFlyer ← 実際のトランザクションの発生とブロックの生成がイメージできる!

参考サイトの紹介はここまでにして、解説に入っていきましょう。

まず、ブロックの中身ですが、ここでは主に3つの要素を取り出して考えます。

その要素とは、「トランザクション情報」「前のブロックのハッシュ値」「ナンス」の3つです。

図にしてみると、こういうことです。

トランザクション情報

まず、ブロックには、「トランザクション情報」が入っています。

これは、「AさんからBさんへ1ビットコイン送金します。」といった取引データになります。

このトランザクション情報こそが「伝えたいデータ」「メインのデータ」になります。

今井

逆に、これ以外の要素は、トランザクション情報の改ざんを防止するための仕組みととらえるのも良いかもしれませんね。

前のブロックのハッシュ値

次に、「前のブロックのハッシュ値」というものの説明をします。

これは、ブロックチェーンの「チェーン」に相当する重要な要素です。

まずは、こちらの図をご覧ください。

下のほうに書いてある「ハッシュ値」というのは、そのブロックの情報を暗号化した値です。

そして、あるブロックのハッシュ値は、その次のブロックの「前のブロックのハッシュ値」になります。(ややこしい)

今井

図のつながれている部分の関係のことです。

ブロックを3つ表示するとこんな感じ。

ひとつ前のハッシュ値が次のブロックにもつながっているというイメージが持てるのではないでしょうか。

また、この「ハッシュ値」というものには、面白い特徴があります。

それは、「ブロックの情報が少しでも変わると、全く異なる値に変わる」という特徴です。

つまり、トランザクション情報=取引データをちょこっと細工しただけでも、ハッシュ値は全く違う値に変わってしまうということです。↓

この変更は次のブロックにも影響します。

その次のブロックに含まれる「前のブロックのハッシュ値」が変わってしまうのです。↓

そうすると、右のブロックの情報が変わってしまったのですから、当然、右のブロックのハッシュ値も全く異なる値に変わるのです。

このように考えると、

あるどこかのブロックの情報を少しでも変えると
それ以降のブロックの情報(特にハッシュ値)が変わってしまう

というのがわかります。

この「前のブロックのハッシュ値を持つこと」が、前のブロックとのつながりになり、チェーンの概念となっているのです。

「ハッシュ値」というもの自体がわからない方はこちらの記事を参考にしてみてください。

ハッシュ関数とハッシュ値とは?用途や性質もわかりやすく解説!

ナンス

最後に、ナンスというデータを説明します。

ナンスというのは、「マイニング」という作業によって決定される「ブロックのハッシュ値を調整する値」です。

しかし、ここまでの説明だと、

「何のためにハッシュ値を調整する必要があるの?」

こう思うはずです。

なので、ナンスの意味を理解するには、ブロックのハッシュ値についての制約を理解する必要があります

ブロックのハッシュ値についての制約

ここで、「ブロックのハッシュ値についての制約」を解説します。

その制約を説明するために、ブロックのハッシュ値の生成をしっかりとイメージする必要があります。

↓ ブロックのハッシュ値の生成イメージはこんな感じ ↓

ブロックのハッシュ値が「トランザクション情報」「前のブロックのハッシュ値」「ナンス」すべてを使って生成されているという、このイメージを忘れないでください。

そして、そのハッシュ値に関する制約とは、

ブロックから生成されるハッシュ値は、
先頭からあらかじめ決められた数の0が続いていないといけない。

ということです。

今回は、「先頭の8桁を0にしなくてはいけない」という制約として考えましょう。

そうすると、以下のようなハッシュ値を生成するブロックは、制約をクリアしているといえますね。

先頭の8桁が0であるハッシュ値の例
  • OK 000000002cd49a31c4fe80145ac36815e85205aaad77158c594ac3a023b75a3d
  • OK 000000005e6c50adbf35862e217df1be3e5e9d0c08519fd1408923db4d86378b

どちらも、ハッシュ値の先頭の8桁がすべて0なのでOKです。それ以降の桁は制約には関係ありません。

しかし、次のようなハッシュ値を生成するブロックはどうでしょう。

先頭の8桁が0でないハッシュ値の例
  • NG 7f0b761bc7ca87f26e99d577bfb33654cbbb97315542ec9a17317203b70c5af9
  • NG 000300008e67e8eb529744cb536e41f99846d2badd8b386f7b9f818389c58ba7

二個目は惜しいですが、ハッシュ値の先頭の8桁中に0でない桁が一つでも含まれているためダメです。

このように、ブロックから生成されるハッシュ値は特殊な制約をクリアしていないといけません

しかし、このようなハッシュ値を生成するブロックは偶然現れるようなものではありません

なので、意図的に作り出さなくてはいけません

その処理というのが「マイニング」になります。

ナンスを見つけ出す処理「マイニング」

先ほど、ブロックのハッシュ値には特殊な制約があることを示しました。

基本的に「トランザクション情報」「前のブロックのハッシュ値」は自由に変えられるデータではありません。

なので、残った「ナンス」を使ってハッシュ値を変化させ、制約を満たすようにしなくてはいけません。

今井

端的に言えば、「ナンスを変えて、制約を満たすハッシュ値にしろ!」ということです。

ですが、0が8つも続くハッシュ値というのはそうそう生成されません

↓実際にハッシュ値を生成できるWebサイトを使って試してみてください。(狙って0が2つでも出たらラッキー程度)

参考 ハッシュ値生成webツール

しかも、ナンスをどのような値にすれば、どんなハッシュ値が生成できるかというのはわからないのです。

つまり、

「ナンスとハッシュ値の法則性がわからない」
「ナンスをどのような値にすればハッシュ値に0が複数続くのかわからない」

というのです。

なので、例えば以下のように「総当たりの処理」を行う必要があります。

ナンスブロック全体のハッシュ値
1(違った)a43ec66ba0fg…
2(これでもない)0e93abba5a61…
3(これでもない)10aef996bc3a…
…(試行錯誤)
10302947(やっと見つけた…!)000000007269…

このように、ナンスの値を適当に設定し、そのハッシュ値を実際に計算しながら確認を行っていく必要があるのです。

今井

ハッシュ値の性質上、狙ったハッシュ値は生成することは非常に困難です。なので、実際にナンスの値を変えながら試していくしかないんですね。

そして、まさにこの処理のことを「マイニング」といいます。

マイニングは、見ての通り、膨大な計算量を要します

0の個数が増えれば増えるほど難易度が上がります。(宝くじの桁数が増えるように。)

これを行う「マイナー」と呼ばれる人たちが、高性能のコンピュータを必要としていることがわかりますね。

なぜブロックチェーンは改ざんしにくいのか?

最後になぜブロックチェーンは改ざんしにくいのかを解説します。

結論から言えば、

「改ざんしたブロックとそれ以降のすべてのブロックについてマイニングを行う必要がある」
「自分一人のデータを変えたところで多数決でつぶされる」

この2点により、非常に改ざんが困難になります。

まず、ブロックチェーンには、どこかのブロックの情報を改ざんした場合、そのブロック以降のハッシュ値が変わるという特徴がありますね。

それは、ブロックが「前のブロックのハッシュ値」を参照しているからでした。

そうすると、その改ざんしたブロックを含め、それ以降のすべてのブロックのハッシュ値は「複数の0が続く」という制約が崩れます

ハッシュ値が変化して制約を満たさなくなる
  • NG 7f0b761bc7ca87f26e99d577bfb33654cbbb97315542ec9a17317203b70c5af9

なので、それらのブロックすべてに再度「マイニング」を行わないといけません

しかも、マイニングは高性能のコンピュータが行うとても大変な作業です。

この「改ざんしたブロック以降のすべてのブロックについてマイニングを行う必要がある」というのが一つ目の理由です。

しかし、仮にすべてのブロックのマイニングを行うことができたとしたらどうでしょうか。

そうすると、すべてのブロックはハッシュ値について制約を満たすことができ、単体で見れば正常なデータなのです。(改ざん成功?)

ですが、その改ざんしたデータ・ブロックチェーンは、「みんなが持っているうちのたった一つのデータ」だということを忘れてはいけません。

ほかの人が持つブロックチェーンは元の正常なデータのままなのです。

つまり、「お前のデータだけ違うじゃん」っていう状態になってしまいます。

せっかく頑張ってすべてのブロックをマイニングしたとしても、ほかのみんなとデータが違うから「そのデータは違うだろ」と判断されるのです。

この「自分一人のデータを変えたところで多数決でつぶされる」というのが二つ目の理由です。

この二つの理由が強力なセキュリティの壁となります。

とてもわかりやすい解説動画!

今解説したすべてを説明してくれている動画を紹介して、仕組みの解説は終わりにします。

私が一番わかりやすいと思ったのは、以下の動画です。

具体的に値を入れて、ブロックチェーンがどのように形成されているのかをとてもわかりやすく解説してくれています。

今説明した情報をある程度頭に入れてこの動画を見れば、大体の仕組みが理解できると思います。

今井

ブロックチェーンの構造・仕組みをしっかり理解したいという方は、絶対に見たほうが良いと思います。

ブロックチェーンの特徴やメリット

データの改ざんが非常に困難

ブロックチェーン技術の特徴として、データの改ざんが非常に困難であるということが挙げられます。

これがいま一番注目されている特徴ではないでしょうか。

その理由は二つありました。

一つ目が、「改ざんしたブロックとそれ以降のすべてのブロックについてマイニングを行う必要があるから」です。

これは処理能力の壁が立ちふさがるでしょう。

二つ目が、「自分一人のデータを変えたところで多数決でつぶされるから」です。

これは、過半数の味方をつけるという方法しか勝ち目がないのではないでしょうか。

システムダウンが起きない

ブロックチェーンを利用したシステムは、基本的にシステムダウンを起こしません。

それは、システムが分散的だからです。

つまり、どこか一つのコンピュータが落ちたぐらいでは、かすり傷にもならないということです。

ブロックチェーン(P2P型)のシステム

対するクライアントサーバ型では、中央にあるサーバがダウンしてしまうと、システムが利用不可能な時間が発生します。

サーバクライアント型のシステム

このようにシステムが利用不可能な時間をダウンタイムと呼びます。

ブロックチェーン型のシステムは、ダウンタイムが実質0なので「ゼロダウンタイム」と呼んだりもします。

取引の記録を消すことができない

ブロックチェーンでは、基本的に一度承認された取引データは消すことができません

これは、いいことでもあり危険なことでもあります

特定の権力者によってもみ消せないというとらえ方ではよいことのように思えますが、いざとなったときに消せないというとらえ方では危険なにおいがしますね。

今井

EUの「一般データ保護規則」などにも引っかかるので、問題視されています。現在は、一斉削除ができる機能もあると聞きましたが、今後どうなっていくのでしょうか。

ブロックチェーンの問題点

合意形成に時間がかかる

ブロックチェーンは、取引データの承認を行う必要があります。

その際の合意形成のアルゴリズムを「コンセンサスアルゴリズム」と呼びます。

今井

要は、「このブロックは正しいからブロックチェーンにつなげよう」という判断が必要ということ。その判断の仕方を「コンセンサスアルゴリズム」というんです。

ビットコインPoWというコンセンサスアルゴリズムでは、一回の承認に10分といった時間がかかるため、送金が遅いという問題点があります。

その点、リップルという仮想通貨は、PoCというコンセンサスアルゴリズムを使い、3秒で送金を終えるといったことが可能になっています。

※「コンセンサスアルゴリズムとは?種類と特徴などを解説!」近日公開

取引データの巨大化

ブロックチェーンの問題点の二つ目が、「取引データの巨大化」です。

ブロックチェーンのブロックは、最大の容量が1MBや8MBといったように決まっていて、それを超えるデータは入り切りません

取引量に対して十分な容量を確保できなければ、トランザクションプールにどんどん取引データが溜まっていき、手数料の低い取引が一向に承認されないという事態が起こります。

今井

言い換えれば、取引の量が増えて容量オーバーすると、承認する速度が追い付かなくなるということ。

この問題を解決するために、「ハードフォーク」「ソフトフォーク」といったソフトウェアのアップデートを行うことがあります。

※「ソフト/ハードフォークとは?」近日公開

最後に

今回は、今話題の技術「ブロックチェーン」について解説しました。

この記事を書こうと思ったのは、第一に自分がブロックチェーンについて興味を持ったからです。

まだまだ、勉強不足の部分もあると思いますので、「この説明ってどういうこと?」「ここは違うんじゃないか?」等のご意見があれば、ぜひ私のTwitterのほうまでリプライをください

また、わかりやすかったと思ったらぜひ拡散のほうもよろしくお願いします!

以上「ブロックチェーンとは?仕組みやメリットをわかりやすく解説!」でした!

今井

最後までご覧いただきありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です