サムネイル画像

Jan 23, 2018

仮想通貨の基幹技術、ブロックチェーンとは?|はじめての仮想通貨管理

サムネイル画像
GincoMagazine編集部
アイキャッチ画像

この記事のポイント

  • 取引記録の詰まった「ブロック」が時系列順に鎖のように連結していることから「ブロックチェーン」と呼ばれている
  • みんなで取引の正しさを確認しあう「コンセンサスアルゴリズム」によって、不正な取引記録が排除される
  • 取引記録の信頼性が高く、かつ記録の改ざんが不可能という性質を活かして、「ビットコイン」が生まれた

ブロックチェーンとは?

ブロックチェーンは、「ビットコイン」を始めとする大多数の仮想通貨を支えている基盤技術のことで「分散型台帳技術」とも呼ばれています。

取引記録などの情報が詰まった「ブロック」が、時系列順に鎖のようにつながっているため「ブロックチェーン」という名がつきました。

ブロックチェーンの仕組み・アイデアは、2008年にビットコインの原型となる論文を発表した「サトシ・ナカモト」という謎の人物によって考えられました。

ブロックチェーンが成立するためには、大きく分けて4つの要素があります。

・ノード
・コンセンサスアルゴリズム
・ブロック
・マイナー

今回は、上記4つについてイメージを掴んでもらおうと思います。

ノード

ブロックチェーンはP2Pで、いかにして正しく一貫した記録を残すか、という試みから生まれました。

ノードとは、ネットワークにおける「結び目、結節点」という意味で使われる用語です。

イメージとしては図のようにネットワークの構成員として別の端末と関係性を持つものはすべてノードと言えるでしょう。

ブロックチェーンに関しても、パソコンを使って取引記録を更新することで、自由にノードになることができます。

ノードとは

ノードを信用することができるか?

さて、ここでノードたちがどのように通信しあっているかについてみていきましょう。

ブロックチェーン上の取引は、ノードによって「非同期通信」で処理されます。

非同期通信とは、ネットワーク上で、Aさんの送金とBさんの受信のタイミングを合わせない方式のことです。

ブロックチェーンでは、各々のノードが記録した取引履歴が自己申告的に共有されます。

もしここで、あるノードが嘘の取引履歴を自己申告してしまった場合、どうしたら良いでしょうか?

嘘をついているノードと本当のことを言っているノードを、見分けることは可能なのでしょうか?

ビザンチン将軍問題と二重支払い問題

このように「複数の通信をしあっているノードの中に、嘘を伝えるノードがいる可能性があるとき、ネットワーク全体で正しい合意形成はできるのか」を問う問題を、ビザンチン将軍問題といいます。

このビザンチン将軍問題の典型例として、「二重支払い問題」が挙げられます。

例えば、ここにXという1枚のコインがあると想像してみてください。

悪意あるAさんが手持ちのXを、BさんとCさんそれぞれに送ったという2つの記録を異なるノードに送り、それが同時に処理されてしまった場合、1枚のコインが突如2倍に増えてしまうという問題が発生します。

しかし通常のネットワークでは、どちらのノードが本当のことを言っているのか判別する仕組みがないため、嘘を信じて記録してしまう可能性があります。

二重支払い問題とは

この二重支払い問題と呼ばれる問題を解決しない限り、通貨の取引を記録するシステムとして、私たちは信頼して使うことができませんよね。

ビザンチン将軍問題を解決する「コンセンサスアルゴリズム」

正しい記録を残すためには、どのノードが本当のことを言っているのか判別するための仕組みが必要です。

そこで、この問題を解決するために「コンセンサスアルゴリズム」が開発されました。

コンセンサスアルゴリズムとは、一定時間ごと(=ブロック生成時間)にノード全員で取引履歴を確認しあい、正しい取引履歴をひとつに定める仕組みのことです。

全員がお互いの取引記録を参照しあって正しい記録を探り合うため、嘘つきが紛れ込んでいても、一瞬でバレてしまいます。

このようにしてブロックチェーンはネットワーク全体が信頼できる「正しい取引記録」をただ一つに定めることができるようになりました。

コンセンサスアルゴリズムにはいくつか種類があります。

ビットコインのブロックチェーンでは「Proof of Work(プルーフ・オブ・ワーク)」と呼ばれるコンセンサスアルゴリズムが採用されています。

プルーフ・オブ・ワークは、その名の示す通り「作業の証明」という意味です。

以下ではプルーフ・オブ・ワークにおいて「何に対して」「どんな作業を」「誰がやるのか」について、みていきたいと思います。

ノードはなにをするのか?

ビットコインのプルーフ・オブ・ワークにおいて、ノードは取引を行う端末を指します。

AさんのスマホからBさんのPCにビットコインを送ろうとした場合、AさんのスマホとBさんのPCそれぞれがノードです。

AさんからBさんにビットコインを1BTC送る場合、「AさんはBさんに1BTCを送ります」という情報がインターネット上で全世界に向けて公開(放送)されます。

これをブロードキャストといい、ブロードキャストされた取引記録は一時的にメモリプールに蓄えられます。

ブロックとはなんなのか?

ブロックチェーンでは、すべての取引記録を「ブロック」という単位に分割して管理しています。

これは私たちが普段使う、ノートのページに当たります。

一定時間ごとにメモリプールに蓄えられた取引記録が1つにまとめられブロック化し、それまでのブロックチェーンに加えます。

ノートで言えば、一定時間ごとにページを取引記録で埋め尽くし、めくっていくような仕組みになっています。

このブロックを連結していくことで、堅牢なセキュリティを実現しています。

それを理解するために、ここでビットコインブロックチェーンの例をみていきましょう。

ブロックの内容

ビットコインのブロックは以下の3つが揃ってはじめて生成することができます。

・一定時間内の全取引記録
・過去のブロックから作られたハッシュ値
・ナンス

一定時間内の全取引記録

ビットコインのブロックチェーンでは約10分に1つ新しいブロックが過去のブロックに付け加えられます。

1つのブロックには、過去10分間に行われた全取引情報が記録されます。

過去のブロックから作られたハッシュ値

ハッシュ値とは「ハッシュ関数」という、「生成するのは簡単だが、どういう数字が生み出されるか予測がつかず、解読するのは更に難しい」という性質の暗号化計算を施した値です。

ビットコインのブロックチェーンでは、前ブロックの情報をもとに次ブロックのハッシュ値が生成されるようになっています。

ハッシュ関数には「少しの改ざんで結果がまるきり変わる」という特性があるため、過去の記録が少しでも変更されるような場合、それ以降のハッシュ値が全て異なるものになります。

ナンス値

ブロックチェーン内のハッシュ値は「先頭に0が一定数並ばなければならない」という決まりがあります。

取引記録、過去ブロック、ハッシュの3つを収めたブロックから、この決まりを守って次のハッシュを生成しなければいけないので、使い捨ての「調整値」が必要になります。

この使い捨ての調整値を「ナンス値」といいます。

条件に当てはまるナンス値には法則性がないため、総当りに数字を試し膨大な計算を行って探し当てる必要があります。

このナンス値を探しあてるための総当たりの計算作業を「プルーフ・オブ・ワーク」というのです。

プルーフ・オブ・ワークにおける取引記録の正しさ

ビットコインでは、各ブロックに過去の取引情報が入っており、その情報を元にナンス値が生成されます。

したがって取引を改ざんしようとするとそのブロック以降のハッシュ値がすべて変更されてしまうのです。

とすると、そのブロック以降すべてのナンス値を見つけて書き換える必要があります。

ビットコインの場合、約10分でブロックが更新されるので、この10分以内に改ざんとナンス値を探し当て、全世界のノードの記録を書き換える必要があります。

1つのナンス値を見つけるのにも膨大な計算を必要とするため、これは現実には不可能に等しいです。

これが「ブロックチェーンは耐改ざん性が極めて高い」と言われる理由です。

マイナー

マイナーとは、ノードの中でも特に、新しいブロックを生成するための作業を行っている人たちのことです。

ビットコインのPoWの場合はナンス値を探して、メモリプールの取引記録をブロック化する行為がこれにあたります。

新しくブロックを生成(マイニング)すると報酬を得られること、手当たり次第にナンス値を掘り起こす作業を行うことから、ゴールドラッシュの金鉱石採掘者になぞらえて、マイナーという名がつきました。

マイナーは、先ほどのコンセンサスアルゴリズムに則ったプロセスにそって、新たなブロックを生成していきます。

そしてナンス値が発見され、マイナーによって新たに生成されたブロックは、1つ前に生成されたブロックと連結されます。

このブロックの連鎖はブロックチェーンの始まりまで遡ることができ、過去から現在までの取引の記録を辿ることができます。

まとめ

ブロックチェーン最大の特徴は「コンセンサスアルゴリズム」を使用して、中央管理者なしで正しい取引記録をみんなで共有できることです。

PoWを例にブロックチェーンの流れをおさらいしてみましょう。

①ノード同士がP2Pで送金のやり取りを行うことをインターネット上で公開(ブロードキャスト)する
②一定時間内にブロードキャストされた取引記録が、メモリプールに貯まる
③マイナーがメモリプールの取引記録を1つにまとめ、ナンスを探し当てるための総当り計算を行う
④ナンスを探し当てたマイナーが新たなブロック生成し、これまでのチェーンに加える
⑤ナンスを探し当てられなかったマイナーが、新しいチェーンの内容が正しいかを確認する

これにより、分散型システム最大のリスクである「ビザンチン将軍問題」を見事に回避しました。

また、ブロックチェーンは改ざんが不可能という性質ゆえに、お金の管理のように「取引の信頼性」が求められる分野で活用されるようになりました。

このような背景から、ブロックチェーンを活用して中央管理者不在の通貨である「仮想通貨」が誕生したのです。

サムネイル画像
この記事を書いたライター GincoMagazine編集部
ライター紹介
PAGE TOP