①にて、ブロックチェーンとはなんぞやというのをまとめてみた。
②では、ブロックチェーンを支える技術についてまとめてみる。次回は①+②で、ブロックチェーンを支える技術は、実際どこでどうやって使われてるの?をまとめたい。
ブロックチェーンを実現する為に、必要な"ブロックチェーン技術"
取引に関わる全員が同じ台帳を共有し、取引の正当性を全員で相互に保証するために、複数のノード間でのデータ複製を確実に行う必要があり、また、故障や悪意のある台帳の改ざん、不正利用が困難で安全にデータを記録できる必要がある。
そのための技術が大きく分けて"暗号化技術"と"コンセンサス・アルゴリズム"になる。
暗号化技術
ハッシュ関数
ハッシュ関数とは、同じデータからは必ず同じ文字列が生成される関数で、それにより生成された値をハッシュ値と呼ぶ。また、ハッシュ値から元のデータを復元することはできない。
公開鍵暗号
公開鍵暗号とは、一対の公開鍵と暗号鍵を作り公開鍵は暗号化専用、秘密鍵は復号化専用として使う暗号方式のこと。
- 受信側は、公開鍵と秘密鍵を作成し、公開鍵を公開する。
- 送信側は、公開鍵を取得して、送信したい情報を暗号化する。
- 送信側は、暗号化した情報を受信側に送信する。
- 受信側は、秘密鍵を使って情報を復号化する。
ポイントなのは、公開鍵で暗号化した情報は公開鍵で復号化できず、情報を復号化できるのは秘密鍵のみ、ということになる。”送信側が、受信側が公開している公開鍵で暗号化をする”のが、公開鍵暗号方式になる。
※見れば分かるかもしれないが、公開鍵を公開しても悪用する方法がない。
電子署名
電子署名とは、電子文書(情報)に対して行われる電磁的記録。その電子文書の作成者が誰かを示し、電子文書が改ざんされていないことを示す事ができる。
- 送信側は、送信したい情報のハッシュ値を作成する。
- 送信側は、1.のハッシュ値を秘密鍵で暗号化する。(これを電子署名という。)
- 送信側は、受信側に対して送信したい情報、電子署名、電子証明書を送信する。
- 受信側は、電子証明書から公開鍵を取得し、電子署名を復号化する。
- 受信側は、受信した情報のハッシュ値を作成する。
- 受信側は、電子署名を復号化したハッシュ値と、受信した情報のハッシュ値を比較し、同じであるかどうかを確認する。
上記は、改ざんされていないことを検証するフローになる。"その電子文書の作成者が誰か"は、電子証明書が証明する。
電子証明書は、公開鍵と、その電子証明書が正しいことを示す電子署名が含まれており、”公開鍵の持ち主を検証・管理"している第三者機関の電子認証局(CA:Certification Authority)が発行する証明書である。
電子認証局は電子署名を自身のものだと証明したい人から公開鍵を預かり、本人確認の検証と管理を行う。公開鍵が本人のものであると確認できると、電子証明書を発行する。
※公開鍵暗号方式で"公開鍵で暗号化した情報は公開鍵で復号化できず、情報を復号化できるのは秘密鍵のみ"と理解したが、ここでは”送信側が発信する情報が、受信側に自分のものである”ことを証明することが目的で、情報を暗号化したいものではない。と理解した。
コンセンサス・アルゴリズム
コンセンサス・アルゴリズムにより、ブロックを追加する権利が与えられ、ノードの過半数の参加者によって「そのブロックが最初に生成された」と承認されれば、正当なブロックとして全ノードにブロックが追加される。
生成されたブロックを参加者の多数決によって承認しながら、正当なブロックが同期されるような合意形成(コンセンサス)をすることで、台帳への記録が行われる。
Proof of Work
ハッシュ計算において、最も早かった人にブロックを作る権利が与えられる。
Proof of Stake
コインの所有量の割合によって、ブロックを作る権利が与えられる。
Proof of Importance
コインの量、送信回数などで決まる重要度スコアが高い人ほどブロックを作る権利が与えられる可能性が高くなる。
P2P通信
サーバーや、クライアントの関係なく各ノードが対等に直接通信を行う通信方式。
スマート・コントラクト
契約の条件確認、履行までを自動実行する仕組み。
スマート・コントラクトはプログラムとして記述しておき、条件が満たされた時に自動的に処理が行われる。
自動販売機を例にすると
- 契約の条件
- 必要なお金を投入する
- 欲しい飲み物のボタンを押す
- 履行
- ほしい飲み物を提供する契約が履行される
※スマート・コントラクトは一般的に更新できない。