ブロックチェーンは技術の組み合わせ?〜P2P・Hash・公開鍵暗号〜

「組み合わせのイノベーション」とも呼ばれるブロックチェーンには、新旧様々な技術が用いられています。それらの技術は、ブロックチェーンの仕組みにどのような貢献をしているのでしょうか?ビジネスパーソン向けに、わかりやすく解説します!

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

ブロックチェーンとビットコイン

ブロックチェーンは、ここ数年ニュースを騒がせている「ビットコイン」を支える中核技術の一つです。

ビットコインとは、仮想通貨あるいはその背景にあるネットワークおよびソフトウェアの総称のことで、下記のような、暗号技術を中心とする新旧さまざまなテクノロジーを駆使し、うまく組み合わせることで実現されたイノベーションであると言われています。

  • 分散化されたP2P(Peer-to-Peer)ネットワーク(=Bitcoinプロトコル)
  • 数学的かつ決定論的な通貨発行(=分散マイニング)
  • 分散取引検証システム(トランザクションscript)
(出典:pixabay

その中でも、近年、特に注目を集めているのが、日本語では「分散型台帳」などと表現される新技術、「ブロックチェーン」です。
ブロックチェーンは、従来のデータベースが抱えていた諸課題を解決しうる期待の新技術として、金融、物流、医療、不動産、セキュリティなど、ありとあらゆる産業への応用が期待されており、経済産業省のブロックチェーン関連市場規模予測では全体で67兆円とも言われています。

ブロックチェーンの定義

ブロックチェーンには様々な定義が存在しますが、本記事では、出来るだけ分かり易くするために、ビットコイン環境下を前提にしつつ、次のように簡略化した定義で解説していきたいと思います。

ブロックチェーンの定義:「取引データを適切に記録するための形式やルール。また、保存されたデータの集積(≒データベース)」

一般に、取引データを集積・保管し、必要に応じて取り出せるようなシステムのことを一般に「データベース」と言います。
ブロックチェーンは、このデータベースの一種であり、その中でも特に、データ管理手法に関する新しい形式やルールをもった技術なのです。

ブロックチェーンの特徴:「分散型台帳」って?

ブロックチェーンは、「分散型台帳」とも表現される通り、ビジネスに限らず、あらゆる取引記録を保管するデータベースとしての機能をもっています。
後に説明するように、この「分散型」という特徴が、ブロックチェーンを際立たせています。

では、具体的に、ブロックチェーンは従来のデータベースと何が違うのでしょうか?

従来のデータベースの特徴

① 各主体がバラバラな構造のDBを持つ
② それぞれのDBは独立して存在する
③ 相互のデータを参照するには新規開発が必要

ブロックチェーンの特徴

①’ 各主体が共通の構造のデータを参照する
②’ それぞれのストレージは物理的に独立だが、Peer to Peerネットワークを介して同期されている
③’ 共通のデータを持つので、相互のデータを参照するのに新規開発は不要

従来のデータベースは基本的に独立しており、データ共有にあたっては主従関係が発生します。
その点、ブロックチェーンは常に同期されており中央を介在せずデータが共有できるので参加者の立場がフラット(=非中央集権、分散型)という特徴をもちます。

こうしたブロックチェーンの「非中央集権性」の恩恵としては、

  • 中央を介さないので中間手数料がない、または安い
  • フラットな関係でデータの共有が行えるので競合他社同士でもデータを融通できる
  • 改竄や喪失に対して耐性がある

ということが挙げられます。
まさにこの「非中央集権、分散型」という特徴こそ、ブロックチェーンが様々な領域で注目・活用されている理由だと言えるでしょう。

こうした、ブロックチェーンのメリットやデメリットをまとめると、以下の通りです。

これらのデメリットについてはBitcoin以降のブロックチェーンで次々に改善されるものが登場してきており、将来的には解消されていくものと予想されています。

なお、「ブロックチェーンとは何か?」をより詳しく、全体的にお知りになりたい方は、下記の記事も併せてご覧ください。
【初心者必見】ブロックチェーンとは?ビジネスの新常識を分かり易く!

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


〈!注意〉
本記事の解説では、仕組みにおける重要概念の紹介だけにとどめます。
より詳しくブロックチェーンの仕組みをお知りになりたい方は、下記の記事も併せてご覧ください。
【ビジネスパーソン向け】ブロックチェーンの仕組みを20分で理解しよう!


ブロックチェーンをシンプルに図解すると、次のような構造をしています。

上図からもわかるように、ブロックチェーンは、その名の通り「ブロック」を「チェーン」のように順番に繋いだ形をしています。
では、「ブロック」や「チェーン」とは、どういう意味でしょうか?

ブロックチェーンの仕組み①:「ブロック」

ブロックチェーンでは、一定量に取りまとめられた取引データを「Tx(Transaction、トランザクション)」と呼んでいます。
「ブロック」とは、このトランザクションを1MB分だけ集めてきて、日付などのメタ情報を付与して、ひとまとまりにしたものです。

身近なものに例えるなら、ブロックは、引き出しがいくつか付いているタンスのようなものだと言えます。
一つのタンスの中には複数の同じ大きさの引き出しがあり、その中にはさらに、例えば紙の契約書だとか現金が入っている、というようなイメージです(下図)。

(出典:「かわいいフリー素材集いらすとや」画像より筆者作成)

ブロックチェーンの仕組み②:「チェーン」

タンスの中に契約書や現金をしまいこんだら、次に考えるべきことは、「どこに何があるかを正しく把握」して「泥棒に盗まれないようにしっかりと鍵をかけておく」ことでしょう。

これらの機能を果たしているのが、「チェーン」と例えられる、ブロックチェーンの記録・保管形式です。

具体的にいうと、各ブロックには、日付(タイムスタンプ)に加えて、「Hash(ハッシュ、ハッシュ値)」「nonce(ナンス)」「ターゲット」と呼ばれるメタ情報が付与されており、これらの情報をもとにして、ある一定のルールのもとで前のブロックと後ろのブロックがまるで鎖のように連結されています(これらの用語やルールに関しては、後ほど解説します)。

これらをタンスの例で言えば、1番目のタンスの鍵を2番目のタンスの中に入れて、2番目のタンスの鍵を3番目のタンスの中に入れて・・・としているイメージです。
さらに、より細かく見れば、引き出しごと(つまりトランザクションごと)にも個別に鍵がかけられているので、ブロックチェーンのセキュリティは非常に堅牢だと言えるでしょう。

(出典:「かわいいフリー素材集いらすとや」画像より筆者作成)

なお、こうしたブロックチェーンの基礎構造は、Bitcoin以降のブロックチェーンのほぼ全てに採用されています。

稀にチェーン型でないブロックチェーンというものもありますが、それらは分散型台帳であるもののブロックチェーン構造ではないので、厳密には区別されます(例えばIOTAで有名な「タングル」構造など)。

ブロックチェーンの仕組み③:データの共有方法(コンセンサスアルゴリズム)

ブロックチェーンでのデータ共有において重要な役割を持っているのが「ノード」と呼ばれる個々のネットワーク参加者です。

すでに述べた通り、ブロックチェーンは、従来のデータベースとは異なり中央管理者が不在のため、データの管理や共有はすべて参加者だけで行う必要があります。
この参加者のことを「ノード」と呼び、世界中に散らばるノードが競争した結果、競争に勝利した一つのノードによって、絶えず新しいブロックが生成されていきます(ビットコインでは平均10分に1つのペースで新しいブロックが生成されるように設計されています)。

また、各ノードは、P2Pネットワーク内の他のノードの一部と繋げられており、あるノードでつくられた新しいブロックの情報は、そのノードと繋がっている他のノードにすぐさま伝播します。
そして、この「ブロックの伝播」を繰り返していくことで、ブロックおよびブロックに含まれる取引データが、瞬く間に世界中の参加者へと共有される(=データが同期される)のです。
これによって、多数のノードがデータを持ち合うことで、ブロックチェーンでは、データの改竄や捏造が難しくなりました。

しかし、この方法は、あくまで「ブロック化された元のデータ内容が正しいこと」を前提としています。
ブロックチェーンの世界には第三者としての中央管理者がいません。
従って、もし、ブロックをつくった人間に悪意があった場合、その人間を管理できる存在がいないため、世界中の人が間違ったデータを同時に持ってしまうことになります。
つまり、P2Pネットワーク参加者のみで行うデータ共有の仕組みでは、「管理者不在の中、どうやってデータの真正性を担保するか?」という問題を解決する必要があるのです。

そこで、考え出されたのが、「コンセンサスアルゴリズム」と呼ばれる、ネットワーク内での合意形成の方法です。
ブロックチェーンでは、個々のネットワークごとに、「複数それっぽいブロックが出てきた時にどれを選ぶか?」という論点に対する合意方法が、コンセンサスアルゴリズムという形で事前に決められているのです

(出典:pixabay

例えば、代表的なところでは、ビットコインのPoW(Proof of Work、プルーフオブワーク)、イーサリアムのPoS(Proof of Stake、プルーフオブステーク)、ネムの PoI(Proof of Importance、プルーフオブインポータンス)、リップルのPoC(Proof of Consensus、プルーフオブコンセンサス)あたりが有名です。
れる謎の人物であることを思い出してください)

なお、ブロックチェーンの種類について詳しく知りたい方は、下記の記事も併せてご確認ください。
ブロックチェーンの種類は?〜パブリック・コンソーシアム・プライベート〜

ブロックチェーンに利用されている技術

ここまで、ブロックチェーンそのものの仕組みを簡単に説明してきました。
しかし、実際には、ブロックチェーンを従来のデータベースと差別化している要因は、それだけではありません。

冒頭でも述べたように、ブロックチェーンは「組み合わせによるイノベーション」と言われるほど、新旧様々な技術を組み合わせることで、その特異性を発揮していると言えます。
そこで、本章では、ブロックチェーンに利用されている既存技術のうち、代表的な3つの技術を詳しくご紹介します。

P2P(Peer to Peer)通信

ブロックチェーンに利用されている最も代表的な技術が「P2P(Peer to Peer、ピアツーピア)」です。

P2Pとは、パーソナルコンピューターなどの情報媒体間で直接データの送受信をする通信方式のことで、ブロックチェーンの最大の特徴でもある「非中央集権性」をもたらしているのが、この技術です。

P2Pは、わかりやすいイメージで言えば、第三者を介さない個人間送金などで活用されています。
また、無料インターネット電話サービスの先駆けともいえるSkypeにも、このP2P技術が用いられています。

これに対して、従来のデータベースでは、「クライアントーサーバ型」と呼ばれる通信方式が採用されています。
クライアントーサーバ型とは、情報媒体間でデータの送受信を行う際に、データ共有を行う媒体間で直接通信せず、第三者媒体をサーバとして経由する方式のことです。
そのため、従来のデータベースを使ってデータを共有しようと思うと、どうしても中央管理者が必要となってしまいます。
これは、Google ChromeやAWS(Amazon Web Service)などを想像するとわかりやすいでしょう。

なお、厳密には、P2Pとブロックチェーンは全くの別技術で、全てのブロックチェーンがP2P方式というわけではありませんが、基本的には「ブロックチェーン=P2P」という理解で問題ありません。

Hash(ハッシュ値、ハッシュ関数)

次に、Hashについてです。

ビットコインのコンセンサスアルゴリズム(PoW)では、ブロックの生成過程で、「マイニング」と呼ばれる、ブロックのメタ情報(ハッシュ、ナンス、ターゲット)を用いた計算作業をノードに課しています。
この計算作業とは、具体的に、「ブロックのバイトにnonceを加えたものをHash化した値が、特定のターゲット値以下になるようなnonceを見つける作業」のことです。

どういうことか、順に、詳しくみていきましょう。

マイニングで用いられるメタ情報①:Hash

改めて、マイニングに用いられるメタ情報は、次の3つです。

  • Hash(ハッシュ、ハッシュ値)
  • nonce(ナンス)
  • Target(ターゲット)

Hashとは「一連の取引データが、ハッシュ関数と呼ばれる暗号化技術によって、文字列化された値」であり、このHashをつくる作業をハッシュ化と呼びます。

ブロックチェーンの仕組みでは、あるブロック(A)内に格納された諸データ(トランザクション+メタ情報)がハッシュ化され、そこでつくられたHashが次のブロック(B)のメタ情報の一つとして格納されます。

そして、そのブロック(B)内に格納された諸データがハッシュ化され、そのHashがまた次のブロック(C)に格納され、・・・といったことを繰り返していきます。
こうして、前後のブロックがHashによってチェーン状に繋げられているために、その仕組み全体をブロックチェーンと呼ぶのでした(こうしたHashによる繋がりを「ハッシュチェーン」と呼ぶこともあります)。

マイニングで用いられるメタ情報②:nonce・Targetとハッシュ化

さて、ビットコインにおけるマイニングでは、このHashと、ブロックごとに予め定められている「Target」という特定の値をもとに、「nonce」と呼ばれる未知数を求める計算を行います。
具体的には、「あるブロックをまとめた情報(バイト)にnonce(未知数)を加えたものをハッシュ化した値(Hash)が、特定のTarget(値)以下になるようなnonceを見つける作業」がProof of Workです。

実際には、例えば、次のような形の式を解くことになります。

「NotNonce」をブロックの情報そのものとすると、それにnonceの値を付加してHash関数を通します。

ここでは、nonceが5の時に条件を満たしたのでnonce=5としてブロックが生成されます(Hash値の先頭にある文字列が00であり、これは01から始まるTargetよりも小さな値であると言えます)。

nonceは一つの値とは限らないため、他の値で条件を満たすものがあった場合も、問題ありません。
そのため、条件を満たしてさえいれば良いので、運良くたままた早く見つかることもあれば全く見つからないこともあります。
したがって、ブロックの生成スピードは、マイナーによって異なります。

このように、ビットコインのPoWでは、マイナーはHash、nonce、Targetを用いた計算(マイニング)を行うことで、ブロックを生成することができます。

マイニングにおいて重要な役割を果たしていたHashも、実は、ブロックチェーン特有の技術ではなく、ブロックチェーン以前から存在していた暗号技術を転用したものです。

ブロックチェーンでは一つ前のブロックをHash化したHash値を次のブロックに渡し、それを織り込んでブロックを作成します。
Hashは少しでも入力値が変わると全く異なる出力となるという特徴があります。

また、その他に出力値の長さが入力に関わらず一定であること、出力から入力を類推できないという特徴があります。

まとまると次のような特徴があり、ブロックチェーンのメリットにつながります。

Hashはブロックチェーン以前にも、暗号技術として使われていた?

今見たように、Hashという技術は、ブロックチェーンの構造およびセキュリティを堅牢なものにする上で、非常に重要な役割を果たしています。
しかし、実は、このHash(およびハッシュ関数)は、ブロックチェーンで初めて実用化された技術ではありません。

Hashは、ブロックチェーン以前から、暗号技術の一つとして、広く使われていました。
ブロックチェーンは、「分散型台帳」としての非中央集権的な特徴とメリットを存分に発揮しつつ、セキュリティ等の実運用上のリスクを緩和する目的で、うまく既存技術を転用することに成功したのです。

公開鍵暗号方式

最後は、公開鍵暗号方式についてです。

公開鍵暗号方式とは、「暗号化と復号(暗号から元のデータに戻すこと)に別個の鍵(手順)を用い、暗号化の鍵を公開できるようにした暗号方式」のことで、次のような「鍵の配送問題」に対する解決策の一つとして、企業のセキュリティなどで用いられているものです。

  • 暗号は通信の秘匿性を高めるための手段だが、それに必須の鍵もまた情報なので、鍵を受け渡す過程で盗聴されてしまうというリスクが存在する
  • 共通鍵を秘匿して受け渡すには(特使が運搬するというような)コストもかかり、一般人が暗号を用いるための障害が存在する

具体的な仕組みについては、『Udemyメディア』の「公開鍵暗号方式とは?初心者でもわかる公開鍵暗号方式の基礎」という記事が非常にわかりやすく解説していたため、下記、そちらを引用します。

「公開鍵暗号方式では2つの鍵を利用してデータのやり取りを行います。

2つの鍵とは受信者が作成する「公開鍵」と「秘密鍵」です。
公開鍵は誰でも簡単に入手できる公開された鍵ですが、秘密鍵は1つしかない大切な鍵です。

それでは2つの鍵を使ったデータの送信を見てみましょう。

公開鍵暗号方式の仕組み

1. 受信者が秘密鍵を使って公開鍵を作成する
2. 送信者は受信者の公開鍵を取得する
3. 平文(暗号化したい文)を送信者が公開鍵を使い暗号化し送付する
4. 受信者が暗号文を受け取る。
5. 受信者は暗号文を秘密鍵で平文に復号化する

このように、受信者(秘密鍵を持っている人)のみが暗号を解くことができる仕組みになっています。
秘密鍵は受信者が大切に保管し、公開鍵は誰でも取得できる場所に公開されています。」

ブロックチェーンでは、取引データをトランザクション化する際に、この公開鍵暗号方式が利用されています。
具体的には、自分のもつ秘密鍵でトランザクションに署名をすることで、データの安全性を高めています。