皆さん、こんにちは レノボ・エンタープライズ・ソリューションズ 小宮です。本日はBitCoinなどで利用されているテクノロジーのブロックチェーンをお話したいと思います。内容については、複数回でお話したいと思います。
まず、ブロックチェーンをWikipediaなどで調べると、分散型台帳技術、または、分散型ネットワークと呼ばれ、ビットコインの中核技術を原型とするデータベースである。ブロックと呼ばれる順序付けられたレコードの連続的に増加するリストを持つ。各ブロックには、タイムスタンプと前のブロックへのリンクが含まれている。理論上、一度記録すると、ブロック内のデータを遡及的に変更することはできない。ブロックチェーンデータベースは、Peer to Peerネットワークと分散型タイムスタンプサーバーの使用により、自律的に管理される。と記載があります。
WikiPediaのURL(Blockchain)
では、そのブロックチェーンにどのようなコンポーネントが存在するのかお話したいと思います。
1.ブロックチェーンについてして理解してみよう
ブロックチェーンは3つの主要コンポーネントでなりなっています。
3つの主要コンポーネント
- Distributed Ledger Database【分散台帳データベース】
- Consensus Network mechanism【コンセンサス(合意型)ネットワークアルゴリズム】
- Smart Contract execution environment【スマートコントラクトな実行環境】
Peer to Peerで動作していることから、それぞれのクライアントがデータベースを持ち、お互いのトランザクションを合意しながら処理を行うようにします。そのため、過去に発生したログなどは基本的に削除することはできません。
このように、過去の履歴をもとに処理を行うことから、サプライチェーンなどやオークションサイトなどにも利用されることがあります。
2.Distributed Ledger Database【分散台帳データベース】
分散台帳データベースとありますが、フルマネージド型のデータベースとも言えます。人によってはデータベースではないという方もいらっしゃいますが、一般的なデータベースと比較するものではないと考えます。
データの変更不可能性
ブロックチェーンはブロックと呼ばれる単位のデータの固まりを繋げたものになります。
ビットコインのブロックチェーンのブロックはgenesis blockと言う最初のブロックから始まり、ブロック内にはそのブロックのメタデータであるヘッダー部がある。
ヘッダーにはそのブロックが何個目(ブロック高)かや前のブロックのハッシュ値(previous block hash)が含まれる
前のブロックの内容が変更されるとブロックに含まれるprevious block hashも変更されるので、このブロック自体のhashも変更される。
ブロックの内容を変更するにはその後の世代のすべてのhash値を再計算しなければならず、これは非常に困難なためこのことがブロックチェーンの変更不可能性の肝となっている。
ブロックの構造ですが、5種類のフィールドで定義され、ブロックヘッダーについては、さらに6種類のフィールドで定義されます。
詳しい説明は長くなるので割愛させて頂きますが、過去に処理したトランザクションを参照しながらブロックが構成されることから、ネットワーク全体で巨大なジャーナルを所有することになるため、非常に大きなデータ量や処理能力を求められるシステムになります。
3.Consensus Network mechanism 【コンセンサス(合意型)ネットワークアルゴリズム】
Proof of Workとは、参加者全員が、同じブロックをブロックチェーンに追加するための仕組みです。
ビットコインでは、同じブロック(取引データ)を含むブロックチェーンが、参加者によって管理されています。
仮に、参加者が自分の好きなブロックを、ブロックチェーンに追加できるとしたら、同じデータを持つブロックチェーンを、みんなで管理することはできません。
Proof of Workとは全体で適切な意思決定を行うために、必要な仕組みと、まえがきで解説しましたが、 『全体の意思決定』=『参加者が同じブロックチェーンを管理する』ということです。
https://moblock.jp/articles/17193 から引用
Proof of Elapsed Timeとは、Proof of Workにおけるマイニングによる作業証明の代わりに、その名が示すところの通り消費した時間の証明になっております。
ビザンティン・フォールトトレラントとは、分散コンピューティングにおいて、アルゴリズムを実行中に発生する故障・障害であり、不作為障害 (omission failures) と作為障害 (commission failures) が含まれる。不作為障害とは、クラッシュ、要求を受信しそこなうこと、応答を返しそこなうことなどを指す。一方、作為障害とは、要求を不正に処理すること、局所状態が壊れること、要求に対して不正または一貫しない応答を返すことなどを指す。ビザンティン・フォールトトレラントが発生すると、ビザンティン・フォールトトレラント性を備えていないシステムは、予期しない動作をすることがある。
Proof of Authorityとは、参加者が意見が一致せず、正しい意思決定できない場合、中央で管理している管理者に意思決定を委ねるものです。二重支払いなどを防ぐために必要になる機能となります。
4.Smart Contract execution environment 【スマートコントラクトな実行環境】
スマートコントラクトは、その名前の通り、コントラクト(契約)をスマートに行えるプロトコルのことです。つまりスマートコントラクトとは契約の自動化であり、契約の条件確認や履行までを自動的に実行させることができます。
取引プロセスを自動化できるため、決済期間の短縮や不正防止、仲介者を介さないことによるコスト削減にも寄与すると期待されており、各国で取り組みが行われています。また、ブロックチェーン上でスマートコントラクトを利用すると、ユーザー同士が直接取引を行う非中央集権型のサービスを実現でき、社会に大きな変化をもたらす可能性があると言われています。
5.パブリックブロックチェーンと許可されたブロックチェーン
ブロックチェーンには2種類あります。
パブリックブロックチェーン(パブリックチェーン):
- 誰でもネットワークに参加でき、トランザクションを読み書きできます
- ネットワーク内の悪意のあるアクターの可能性を高める、不明な参加者のID
許可されたブロックチェーン(プライベートチェーン):
- セキュリティリスクの軽減、取引を希望するパートナーのみが取引の一部です
- 関係者のみに見える取引
- 機能:データプライバシー、情報共有、不変性
こちらの種類にはそれぞれメリット・デメリットがあります。内容についてはイメージを参照して頂ければと思います。
実際にブロックチェーンを利用する場合には、正しい適合を見つけていく必要があります。
正しい適合性を見つけるためには、データベースの中で参加者の意思決定や過去のトランザクションに基づいて処理を行う必要があります。実際には利用シーンによってはブロックチェーンが必要にならないようなケースもあります。イメージは参考情報としてみて頂ければと思います。
参考として、サプライチェーンにおけるブロックチェーンの説明のイメージを載せておきます。
次回のブログは、オープンソースで実現するブロックチェーンHyperledgerやソリューションのアーキテクチャについてお話したいと思います。
よろしくお願い致します。