Bitcoinを支える3つのメカニズム『暗号技術』『ブロックチェーン』『プルーフ・オブ・ワーク』とは!?

Blockchain , Distributed ledger technology , bitcoin concept. Electric circuit graphic and infographic of Block chain , network connect , security , binary coded icons.


『アフター・ビットコイン: 仮想通貨とブロックチェーンの次なる覇者』は、Bitcoin(ビットコイン)について大変分かりやすく書かれています。

特に前半部分はBitcoinと仮想通貨の仕組みを、ぼくのような素人でも理解できるよう丁寧に解説してあります。
「Bitcoinについて知りたい」「仮想通貨はどういうものなのか?!」と興味がある人は、読んでみることをオススメします。

Bitcoin(ビットコイン)とは!?…は書籍『アフター・ビットコイン』で学ぼう

2018.01.22

さて、Bitcoinはどのような仕組みで取引が行われるのでしょうか??
ビットコインの要となる技術である『暗号技術』『ブロックチェーン』『プルーフ・オブ・ワーク』について、書籍の引用を交えつつ紹介していきます。




仮想通貨ビットコインの取引を支える3つの技術

bitcoins

bitcoins/
PHOTO: iStock by Getty Images

仮想通貨であるBitcoin(ビットコイン)は、どのようなシステムで取引を安全に行っているのでしょうか?!

ビットコインを支えている

  1. 暗号技術
  2. ブロックチェーン
  3. プルーフ・オブ・ワーク

の3つについて、それぞれ見ていきたいと思います。

ビットコインを支える技術【1】暗号技術

ビットコインは仮想通貨なので、デジタルデータで出来ています。
しかし…デジタルデータの便利なところは、複製が非常に簡単なことです。

もし自分が通貨を運用する立場にあると仮定したら、「勝手に複製されたり」「無断で偽造されたり」すると困りますよね??
ビットコインも同様で、同じデータをが2度使用されたり(ダブル・スペンディングと言います)、偽造されたデータが支払いに利用されると通貨としての価値が無くなってしまいます。

なので、こうした不正使用を防ぐために暗号技術を使ってシステムを守っています。

ビットコインは仮想通貨であり、デジタルデータでできていますので、最も困るのが、同じデータを使って2度目の支払いを行うこと(二重使用:ダブルスペンディング)や偽のデータにより支払いが発生することです。

少し具体的に言うと、ビットコインには「デジタル署名(digital signature)」という技術が使われています。
デジタル署名は、その名の通り電子的なサインのことです。

契約書にハンコを押すのと同じようなモノです。

ビットコインには所有者の署名が付いていて、正しい署名をできる人(正式な所有者)だけが次の人へ(支払いを行う人)ビットコインを受け渡すことができる仕組みになっています。

この過程で「秘密鍵」と「公開鍵」が利用されます。

ここでは触れませんが、秘密鍵と公開鍵については『暗号解読』という本がオススメです。
ぼくはこの本で、「秘密鍵」「公開鍵」の仕組みを理解することができました。
書籍自体もすごく面白いので、気になる人はぜひ読んでみて下さい。

暗号解読 下巻 (新潮文庫 シ 37-3)

より具体的には、「デジタル署名」(digital signature)という技術が用いられています。デジタル署名は、電子的な記録(データ)に対して行われる電子的な署名のことであり、紙の書類における署名や捺印に相当するような機能を果たすものです。ビットコインのデータには、その所有者の署名が付けられており、正しい署名ができる人だけが、取引(次の人へビットコインの受渡し)を行うことがでいる仕組みとなっています。

  1. ビットコイン送信者=署名者であること(本人確認)
  2. 通信途中で金額が変更されていないこと(改ざん防止)
  3. ビットコイン送信の事実を後から否定できないこと(否認防止)

こうした暗号技術によって上記の点が保証され、ビットコインは取引されていきます。

①ビットコインを送ったのは確かに署名者であること(本人確認)、②通信の途中で金額が変更されていないこと(改ざんの防止)、③署名者はビットコインを送ったという事実をあとで否定できないこと(否定の防止)、といった点が確保されることになります。ビットコインでは、こうしたデジタル署名をチェーン状につなげていくことによって、受渡しの正当性を確保することが基本原理となっているのです。



ビットコインを支える技術【2】ブロックチェーン

ビットコインにはブロックチェーンと呼ばれる技術が使われています。

ビットコインとブロックチェーンの技術はよく混同されがちですが、別のものとして覚えておくことをオススメします。
ビットコインやその他のアルトコインは、取引所のトラブルなどによって危険視する人も多いようですが…

ビットコインが流出した=ブロックチェーンの技術は危険

のように、安易に結びつけるのは止めておきましょう。
そのことを理解するうえでも、「ブロックチェーンとはどのような仕組みなのか?!」を知っていくことが大切です。

「ブロックチェーン」とは、一定時間の取引の束(これをブロックと呼びます)を時系列でチェーンのようにつなげて記録していく仕組みのことを指します。

取引を書き込む台帳がチェーンのように連なっていくことで、このように呼ばれるようになりました。

it-word-bitcoin-encryption-technology-block-chain-proof-of-work-and-after-bitcoin-bookreview-1

出所: 『アフター・ビットコイン』31ページより

取引の束(ブロック)は、参加者が相互に正しいものであるとして承認し合うことでデータの改ざんや二重使用を出来ないようにしています。

また1つのブロックの中には

  1. 一定期間ごとの多数の取引データ
  2. 前ブロックのハッシュ値
  3. ナンス値

と呼ばれる3つのデータが入っています。

it-word-bitcoin-encryption-technology-block-chain-proof-of-work-and-after-bitcoin-bookreview-2

出所:『アフター・ビットコイン』31ページより

正当な所有者が、受取人Aと受取人Bの両方に同じコインを譲渡した場合(ダブル・スペンディングのケース)には、どちらかの譲渡のみをネットワーク上での正しい取引として決定する必要があります。これを可能にするのが、それまでの正当な取引データを使って、次の正当な取引データを承認するというブロックチェーンの仕組みなのです。

取引データ

「送金額」「送金人」などの取引情報。
ビットコインの場合、10分間に1個のペースでブロックが作成されるようになっている。
(この間の、トランザクションの履歴がブロックに格納される)

ハッシュ値(hash value)

元になるデータから一定の計算方法によって求められる、規則性の無い固定長の値のこと。
(元データからハッシュ値を求める計算方法のことは、ハッシュ関数と言う)
ハッシュ関数は同じデータからは必ず同じハッシュ値が得られるが、少しでもデータが異なると全く違うハッシュ値が得られるように作られている。

ハッシュ関数と一方向性

ハッシュ関数は、出力値(ハッシュ値)からは入力値(元データ)は復元できない仕組みになっている。
※この性質を「一方向性」と言う。
またハッシュ関数には、「圧縮関数」が含まれており膨大なデータを固定長の短いデータに圧縮して変換する。
it-word-bitcoin-encryption-technology-block-chain-proof-of-work-and-after-bitcoin-bookreview-3

出所:『アフター・ビットコイン』33ページより
元データの一部を「Bitcoin」から「Vitcoin」へ1文字変えただけで、全く違ったハッシュ値になります。

ナンス値(nonce)

「nomber used once(一度だけ使われる数字)」の略称で、一度だけ使う使い捨ての数字のこと。
ナンス値そのものには意味はないが、このナンス値によって次のブロックに使う「前のブロックのハッシュ値」が変わるということがポイント。

ブロック全体のデータは、

  1. 前のブロックのハッシュ値
  2. 取引データ
  3. ナンス値

の3つから構成されている。

「前のブロックのハッシュ値」「取引データ」は決まっているため、次のブロックに使うハッシュ値をコントロールするために変えることができるのは、ナンス値のみということになる。

ビットコインには、次の新規ブロックを追加できる条件として、「そのブロックのハッシュ値が一定の条件を満たすものになることが必要」というルールが定められています。一定の条件とは、具体的には、ハッシュ値の最初に一定以上のゼロが続くことを意味します。このため、新規ブロックを追加するためには、この条件を満たすハッシュ値を作り出すような適正なナンス値を探し当てる必要があるのです。

このようなブロックチェーンの技術を使って、ビットコインは10分毎の取引をまとめて承認する仕組みをとっています。
新たに承認されたブロックは、それまでのブロックチェーンの最後尾に追加されます。

ビットコインを支える技術【3】プルーフ・オブ・ワーク

プルーフ・オブ・ワークとは、ナンス値を求める作業↓のことを指します。

  1. 「前ブロックのハッシュ値」「取引データ」「ナンス値」から新規ブロック用のハッシュ値を求める
  2. ①のハッシュ値が「先頭に一定数以上のゼロが連続して並んでいる」ようにするナンス値を求める

プルーフ・オブ・ワークは総当り法によって計算を行う必要があるため、膨大な量の計算が必要になります。
こうして条件を満たすハッシュ値を導くナンス値が求められ、新たなブロックが作成されます。

これがビットコインにおける、取引の承認になります。
(ビットコインは、この計算に約10分を要するように設定されている)

悪意を持った攻撃者がビットコインを偽造しようとしたら!?

ビットコインの偽造には、世界中のコンピュータを合わせても足りないような、非常に高い処理能力が必要となります。

その為、悪意のある人がいた場合でも、他の善意の計算者達が正しく取引を承認し続けることで、偽造が極めて困難であるというシステムになっています。

ビットコインの偽造とは、取引データの改ざんのことですので、それに基づくハッシュ値も変わり、ナンス値を再計算しなければなりません。そして、偽造したデータを正当なものとするためには、次のプルーフ・オブ・ワークも再計算し、さらには次のブロックのナンス値も再計算して…という形で、最新のブロックまで改ざんし続ける必要となります。

まとめ

このようにプルーフ・オブ・ワークは、ビットコインのセキュリティシステムそのものと言っても過言ではありません。

少し長くなってしまいましたが、

  • 暗号技術
  • ブロックチェーン技術
  • プルーフ・オブ・ワーク

の3つがビットコインを支える重要なシステムとなっているのです。

ということで、今回はビットコインを支える3つのシステムについて紹介してみました。
「ビットコインについて、もっと詳しく知りたい」という人は、ぜひ『アフター・ビットコイン』を読んでみて下さい。

SourceNote

記事中の引用について

記事の中で使っている引用部分は、すべて書籍『アフター・ビットコイン』からの引用です。

Blockchain , Distributed ledger technology , bitcoin concept. Electric circuit graphic and infographic of Block chain , network connect , security , binary coded icons.