今回の記事はブロックチェーンの仕組みを初心者向けにわかりやすくご紹介する記事です。ブロックチェーン初心者でもすぐに理解できるように多数の図を用いて分かりやすく解説していきます。ブロックチェーンに興味を持っている方や仕組みを知りたい方は、是非参考にしてください。
今回参考にした文献は「講談社:ブロックチェーン技術概論」という書籍です。
記事の構成は以下です。
- 仮想通貨・ブロックチェーンの歴史(仕組みと歴史は密接な関係にあるため)
- ブロックチェーンの仕組み
- ブロックチェーンの信頼担保策
- ブロックチェーンの合意(コンセンサス)
では記事に進みます。
ブロックチェーンの歴史
仮想通貨・ブロックチェーンの歴史は実は古めです。

2008年に「サトシ・ナカモト」という謎の人物がネット上に1つの論文を投稿し、その論文の中に仮想通貨とそのシステムの中核を担うブロックチェーン技術について記述があったというのが原点です。

つまり仮想通貨・ブロックチェーンは2008年生まれということです。最近巷でブームのAIの誕生は1960年代のため、2008年生まれというのがかなり新しい(むしろ新しすぎる技術)ということがわかると思います。
この新しすぎるという点で仮想通貨の使い道はまだ少ないと言えます。日本で仮想通貨を利用して飲み食いができる飲食店や、物を購入できる施設はかなり少ないです。(ビックカメラは使えるとか笑。)
しかし、技術の将来性は認められ、将来性という点で価値がつき、価格が上昇しているのが現状です。
では話を戻します。
この2008年に発表された論文をもとに興味をもったエンジニアが開発を進め、論文発表から1年後の2009年に仮想通貨第1号のビットコインが誕生するのです。

ビットコインの誕生後、イーサリアムやリップルなど数々の仮想通貨が開発され現在しのぎを削っています。
「仮想通貨 = ブロックチェーン」は間違いです。
- 仮想通貨は資産
- ブロックチェーンは仮想通貨を運用する上で必要な技術
この2点をよく区別して押さえておきましょう。
簡単にまとめると歴史はこんなものです。まだまだ歴史は浅いということです。次に仕組みに移っていきます。
ブロックチェーンの仕組み
今回の記事のメイン部分です。ブロックチェーンの仕組みを解説します。仮想通貨を交えた説明の方がわかりやすいので今回はビットコインで使用されるブロックチェーンを解説します。
ブロックチェーンの仕組み解説の流れは下記です。
- 仮想通貨管理の仕組み
- 仮想通貨で送金を行う仕組み
- トランザクションの内部的な処理について
ではまずは仮想通貨を運用する上で最も大事な管理方法の概念を解説します。
仮想通貨管理の仕組み
ネット上の通貨なのに2重で使用されたりしないのかと不安に思う方もいると思いますが、仮想通貨の管理方法は鉄壁です。
現金の銀行振込などの管理と仮想通貨の管理方法を比較してみましょう。

- 銀行の場合:絶対的な信頼のある銀行という第3者が取引記録を管理することで信頼を担保
- 仮想通貨の場合:全員で取引履歴を管理することで信頼を担保
ここで押さえておくことは、仮想通貨の管理は銀行の場合と比較して、第3者という信頼に足るものはなく、全員で管理を行うという点が大きく違うことです。
なぜ全員で管理で信頼が担保されるのか?
よくあるネットの記事ではこの説明がなされていないため雰囲気だけの理解になってしまいます。本記事ではこういった部分も余すことなく解説します。

仮想通貨の管理は共有台帳という過去の取引を全て記録した台帳が担っています。台帳はイメージがつきやすいと思います。

家庭内では家計簿、企業ではエクセルやソフトで帳簿などといった形での共有管理は割と一般的に行われているのです。
家計簿や帳簿と仮想通貨の共有台帳の違いは共有台帳を仮想通貨を扱う全員が保有し中身を見ることができる点が違います。
例えば2人で共有台帳を管理する場合を考えてみます。

この場合、どちらが正しい記録かわからないためBさんの不正はバレません。では3人の場合はどうでしょうか?

3人で管理する場合、差異が生じている取引はAさんCさん・Bさんの間で差が発生しています。多数決の原理ではありませんが、Bさんの共有台帳がおかしいことがわかります。
先ほど説明した全員で共有台帳を管理とは、この犯人探しの原理をさらに拡大し、ビットコインを保有する全ての人(全員)と不正を働いた(今回はBさんの)共有台帳の差異が不正の証拠となり、信頼担保につながるっているということです。
つまりこれらの説明をまとめると「全員で取引履歴を管理することで信頼を担保」ということになるわけです。
紹介した共有台帳。これが「ブロックチェーン」です。
ブロックチェーンについて
ブロックチェーンをもう少し詳細に解説していきます。ブロックチェーンとは「ブロックが繋がったもの(チェーン)」したものという意味です。
ブロックという単位について踏み込んでいきましょう。下記のような取引があるとします。

共有台帳に蓄積する時間はビットコインで約10分が1周期と決まっています。全世界で起きたビットコイン取引はこの周期ごとに記録され、これが1つの「ブロック」というわけです。この「ブロック」に過去のブロックチェーンと連結させていくことでチェーンが伸びていきます。
「ブロックチェーン = ブロック(10分間の取引履歴)が連結したもの」
次に、仮想通貨での送金を行う仕組みからブロックチェーンの技術を見てみましょう。
仮想通貨で送金を行う仕組み
仮想通貨で送金を行うことを「トランザクション」と言います。

この送金処理には問題点があります。
- 2重使用問題(詳しくは「ブロックチェーンの合意(コンセンサス)」の章にて)
- 金額の不正
「貨幣的価値の総量保存則」というものがあります。何らかの処理があっても入金に対して出金の価値は等価。簡単にいうと、100円の入金に対して出金は100円で等価になるということです。
このことから上図のAさんが入金した「入金4」に対してBさんが受け取る出金4は等価であります。これは正しいのでこのトランザクションは承認となります。
一方、入金と出金が合わない場合、監査に引っかかりトランザクションは承認されません。
ブロックの全てのトランザクションが承認された時過去のブロックチェーンと連結されるというわけです。
実はこれにはまだ隠された問題があるのですが、そこは本記事の「ブロックチェーンの同意(コンセンサス)」章にて解説します。
送金(トランザクション)の仕組みがわかったことで次は、この送金(トランザクション)の内部的な処理を解説していきます。ここからがブロックチェーンの真髄です。
トランザクションの内部的な処理について
ここから難しいです。
先ほどの送金の仕組みはわかりやすいように「入金」「出金」というふうに概念的なイメージで記載しました。しかし、仮想通貨はあくまでもビット(データ)です。
どの入金データが出金データに紐づくかを判断するために「秘密鍵」「公開鍵」による「デジタル署名」管理を行なっています。
秘密鍵に対応する公開鍵は唯一。秘密鍵は自身で管理するもので公開鍵はその名の通り公開している

では送金を行う際の内部的な処理を解説していきます。
送金者はまず「トランザクション」というデータを作成します。

- 入力:送金者の資金
- 出力:送金先・金額など
このトランザクションを仮想通貨ネットワーク(今回はビットコインネットワーク)のノードと呼ばれるPtoP通信のネットワークで伝播されていきます。

上図のような取引で送金者のAさんは入力に対する資金をもっていることが前提になります。この資金はもちろん仮想通貨の取引ですので、仮想通貨データになります。これを「UTXO」と言います。
UTXOについて理解するのには下記のようにAさんが過去にCさんから送金をしてもらったという設定を加えて図にしてみます。

- 送金をされると出力には送金先のユーザの「秘密鍵」に対応する「公開鍵」が付与される
- 送金をされる側のAさんは「公開鍵」でロックされた仮想通貨資金の「UTXO」を持つ
- この資金をBさんに送金する際の資金とするため秘密鍵で鍵を開ける
- Bさんに送金する入力にデジタル署名(秘密鍵)
これでUTXOについてよく理解できたと思います。最終的に下記図のようにBさんのUTXOが増え、AさんのUTXOは減るということです。

私はこの部分が前後関係を記載している記述が少なく難しさを感じていました。
トランザクションがノードによるビットコインネットワークを伝播する際の処理に関しても詳しくみていきましょう。
トランザクションの伝播
トランザクションの伝播の流れは下記です。
- トランザクションが行われた初めのノードでトランザクションが正しいかを検証する
- 正しかった場合:伝播、正しくない場合:トランザクションは無かったことに
トランザクションが正しいかどうかをまず初めのノードで検証され、このノードで承認された場合のみトランザクションは全てのノードに伝播します。
この検証方法はトランザクションのデジタル署名の秘密鍵が参照するUTXO(上図でいうとCさんから送金されたUTXO)の公開鍵を開けることができるかによって検証可能です。
しかし、トランザクション内に以前の取引情報はありません。ではどうやって検証を行うのか?
答えはノード内に保存されているブロックチェーンです。
ブロックチェーンには全ての過去の取引が記録されているため参照することができるのです。
では次は仮想通貨の管理で説明した不正防止法をもう少し深掘り解説していきます。
ブロックチェーンの信頼担保策
ブロックチェーンの管理のところでも概念的な信頼担保の方法を述べましたが、この章ではさらに詳しくその施策を解説していきます。それは下記3点です。
- ハッシュチェーン
- タイムスタンプサービス
- プルーフ・オブ・ワーク
順番に説明していきます。
ハッシュチェーン
ブロックチェーンのブロックには「取引履歴」と「前のブロックのハッシュ値」が保存されています。

このハッシュ値は暗号学的ハッシュ関数により出力される値です。このハッシュ関数はデータに対してハッシュ値という暗号を出力する関数です。このハッシュ関数は入力が同じ場合は出力が同じになるが、少しでも値が違えば全く予想されない暗号を返します。

このため取引履歴を少しでも触るとブロックチェーン全体の整合性合わないようになるということです。
タイムスタンプサービス
先ほどのハッシュチェーンだけでは実は信頼性は担保されません。なぜなら、一部の取引履歴をいじるとそのブロックの整合性が合わなくなりますが、全ブロックのハッシュ値を再計算してしまえば整合性を合わせることは可能だからです。

これを防ぐためにある時点(上図で例えるとブロック2)で刊行物として現実世界に数値を公表する方法です。これでハッシュ値の全入れ替えは不可能になります。
プルーフ・オブ・ワーク
新しいブロックを生成するためには下記図のように一つ前のハッシュ値を見つける必要があります。

ハッシュチェーンで説明しましたが、ハッシュ値の計算には膨大な時間(プルーフ・オブ・ワーク)が必要になります。この膨大な時間は先ほどの再計算はブロックの数だけ行う必要があります。
現在マイニングを行なっている人も増えているため1回のプルーフ・オブ・ワークに勝つことでさえかなり限られています。そのため全ブロックで再計算を行い勝つことは不可能と言えるでしょう。
この3つの施作によってブロックチェーン管理は信頼担保をしていると言えるのです。
では、ブロックチェーンの合意(コンセンサス)についてです。
ブロックチェーンの合意(コンセンサス)
ブロックチェーンは先ほどの説明で完全に信頼に足るものであると述べております。しかし、最後にブロックチェーンに矛盾が発生する際に必要な合意(コンセンサス)について理解しておきましょう。
例えば2つのノードから同時に同じUTXOを資金として別の送金先に送金を行うなどです。

この場合図のように異なる履歴をもつトランザクション1と2のどちらが正しいかを判断する術がありません。
この場合ブロックは下記のようになります。

この判断する(同意する)アルゴリズムを「コンセンサス・プロトコル」または、「コンセンサス・アルゴリズム」と呼びます。
アルゴリズムの中身は大きく2つです。
No1. 最も長いブロックを正とする

これはブロックチェーンの長いほうを採用するというもの。ブロックチェーンの長さが同じ場合はNo.2の方法を使用します。
No2. 枝分かれしていない部分までを正とし、その先を切り取る

もう一つが枝分かれしていないビットコインネットワークに承認されている(全てのノードで承認されている)部分から先を切り取る方法です。
こういった方法でチェーンの枝分かれは回避されているのです。
長くなりましたが以上がブロックチェーン技術の仕組みに関してです。今後も継続して、記事を記載していくので是非興味がある方はブックマークなどに入れておいてください。
私自身、初学者のためもし間違い等あればご指摘いただけると幸いです。
コメント