ブロックチェーンという技術は、仮想通貨に使われている技術と認識している方が多いと思いますが、ブロックチェーンの仕組みと構造まで理解している方は少ないかと思います。この記事では「ブロックチェーンの仕組み」について技術的な構造の部分までわかりやすく解説していきます。
この記事を読んでいただければ、ブロックチェーンの仕組みと構造を理解ができ、どのようなサービスに導入できるのか、将来どのようなことに使われるか、ブロックチェーンの将来性をイメージしやすくなるかと思います。
ブロックチェーンの仕組みと構造をわかりやすく解説いたします!
暗号資産(仮想通貨)の取引を行っている方は一度は耳にしたことがあると思われる「ブロックチェーン」という技術の仕組みを理解している方は少ないと思います。
ブロックチェーンを自社サービスとして導入したい!
など今後様々なサービスで需要が間違いなく高まっていく技術です。
ブロックチェーンの仕組みと構造を理解することにより、どうのようなサービスに導入できるかがイメージしやすいかと思います。
最後まで読んでいただけますと幸いです。
まず、ブロックチェーンの仕組みの前にブロックチェーンの概要も簡単にご紹介させていただきます。
そもそもブロックチェーンって何?
ブロックチェーンとは、「取引履歴を暗号技術によって過去の取引情報を箱に格納し1本の鎖でつなげ、正確な取引履歴を維持しようとする技術」とされています。
全てのノードでデータは共有されている為、破壊・改ざんが極めて難しいです。
障害によってひとつのノードがダウンしたとしても、データは参加者全てで管理しているため、データは壊れないですし、システムもダウンすることもないです。
自律分散型のセキュアなシステム基盤は銀行業務・情報システム・医療・オンラインゲームなど日本でもフィンテックのみならず、あらゆるビジネスへの応用が期待されており、さまざま分野のサービスに使われ始めています。
セキュリティ堅牢性、システム運用コストの安さ、非中央集権的な性質の特長があり、「第二のインターネット」とも呼ばれています。
ブロックチェーンの仕組みとは
ブロックチェーンの仕組みは、ネットワーク上で複数の端末、機器を接続して情報の処理を記録していくブロックと呼ばれるデータの箱を生成し、時系列に沿って1本のチェーンで繋いでいくことによりデータベースとなります。各ブロックは、連結されたブロックの一つ前のハッシュ値(ハッシュ関数により計算された値)を持っており、それをさかのぼることで、繋がりを辿ることができる。
パブリックブロックチェーンの特徴
説明する「ハッシュ」や「電子署名」という暗号技術を用いることで、データの改ざんを容易に検出できる仕組みを持っている。 また、ブロックチェーンでは不特定多数の参加者が取引を行うが、多数の参加者(全参加者とは限らない)が全員の取引履歴のコピーを記録しているため、一部のコンピュータがダウンしても、残りの多数の参加者が記録を保持し続けるため、ブロックチェーンシステム全体がダウンすることはないです。
- 合意された過去の取引データをまとめた箱がチェーン上に記録されている
- 取引データが暗号化されている
- データの改ざんが難しい
- ネットワーク上の複数のコンピュータが取引データを確認・合意するために情報を共有できるよう送受信が行われる
- 中央管理者がおらず、分散的に運用ができる
- 中央集権型の1箇所ではなく、複数の端末で動かしているためシステムダウンが起こりにくい
暗号通貨(仮想通貨)のビットコインは、パブリック・ブロックチェーンを基盤技術として運用されています。
このビットコインを例としてパブリック・ブロックチェーンを使ったシステムがどのように構築されているかをさらに深掘りしていきます。
ブロックとチェーンという形状
一般社団法人日本ブロックチェーン協会によれば、ブロックチェーンとは「電子署名とハッシュポインタを使用し改ざん検出が容易なデータ構造を持ち、且つ、当該データをネットワーク上に分散する多数のノードに保持させる」ことで、高可用性及びデータ同一性等を実現する技術」と定義されている。(一般社団法人日本ブロックチェーン協会HP:https://jba-web.jp/news/642)
ブロックチェーンはその名の通り、「ブロックと呼ばれる取引データを入れる箱と、それをチェーンで繋いでいく形状」を持っている。
例えば、AがBにビットコインを送金する場合、取引のデータは暗号化されて一つのブロックに記録され、ビットコインではこのブロックが約10分間毎にひとつ新しく生成され、次々に時系列に繋がっていく仕組みを持っている。
ブロックチェーンのデータ構造
ネットワーク内で発生した取引の記録を「ブロック」と呼ばれる記録の箱に格納します。
個々のブロックには取引の記録に加えて、1つ前に生成されたブロックの内容を示すハッシュ値と呼ばれる情報などを格納します※。
生成されたブロックが、時系列に沿ってつながっていくデータ構造が、まさにブロックチェーンと呼ばれる理由です。
ブロックに入れる3種類のデータ
では次に、ビットコインのブロックに入れられている取引データについて詳細を見ていきたい。ブロックには以下3つのデータが入れられている。
- 「取引データ」いつ、誰が、どのくらいの量の取引をしたかを記録した最新のデータ
- 「ナンス値」マイニングに使われる数値
- 「ハッシュ値」過去のすべての取引を暗号化したデータ
ここでその情報の詰められたブロックの中身について解説させていただきます。
一つのブロックの中には下記の情報が格納されています。
- 一定期間ごとの取引データ
- 前ブロックのハッシュ値
- ナンス値と呼ばれる任意の数値が含まれている。
過去に生成したブロック内の情報を改ざんしようと試みた場合、変更したブロックから算出されるハッシュ値は以前と異なることから、後続するすべてのブロックのハッシュ値も変更しなければならず、そうした変更は事実上困難です。このように、ブロックチェーンは改ざん耐性に優れたデータ構造を有しているのが大きな特徴です。
取引データ
取引データとは、文字通り、ある特定の取引に関する情報の固まりのことである。ビットコイン・ブロックチェーンの場合、取引データには、送金額などの取引情報が含まれる。ブロックは10分間に1回の頻度で生成され、この間の取引データがブロックに格納される。
ハッシュ値
ハッシュ関数とは、元となるデータから一定の文字数の不規則な文字列(ハッシュ値)を生成する関数です。同一のデータであれば同じハッシュ値が生成されますが、少しでも異なれば全く異なるハッシュ値が生成されます。また、生成された文字列から、元のデータを読み取ることができない「不可逆性」を持っているのが特徴です。
ブロックデータには、ハッシュ関数によって暗号化されたトランザクションと直前のブロックデータのハッシュ値が含まれています。直前のハッシュ値と、「ナンス値」という特別な数字を見つけ出すことにより整合性が取ることができ、ブロックがブロックチェーンへ新たに追加される流れを「承認」といいます。
ビットコインのブロックチェーンでは、ハッシュ関数として、「SHA-256」および「RIPEMD-160」が採用されています。
※HA-256:任意の長さの原文から固定長の特徴的な値を算出するハッシュ関数(要約関数)の一つ。SHA-256を活用することで、どんな長さの原文からも256ビットのハッシュ値を算出することができる。
※RIPEMD-160:RIPEMDとは「RACE Integrity Primitives Evaluation Message Digest」の略であり、1996年にルーヴェン・カトリック大学のHans Dobbertinらによって開発された暗号学的ハッシュ関数である。RIPEMD-160を活用することで、SHA-256と比べ、より短いハッシュ値を出力することが出来る。
ナンス値
ナンス値とは、「number used once」の略称であり、使い捨ての数字のことを意味する。ナンス値自体には特段の意味はないものの、ブロックチェーンの場合、ナンス値に応じて、後続するブロックで使用するハッシュ値が変化する点が重要である。ブロック全体のデータ構造は、「取引データ」+「前ブロックのハッシュ値」+「ナンス値」から構成されるが、このうち、「取引データ」+「前ブロックのハッシュ値」の部分はすでに決定しているため、後続するブロックに使用するハッシュ値を決定するために変化させることができる要素は、ナンス値のみとなる。
ビットコインの場合、新規のブロックを追加できる条件として、「ブロックのハッシュ値が一定の条件(※ハッシュ値の最初に一定以上のゼロが続くこと)を満たすものになることが必要」というルールが定められており、新規のブロックを追加するためには、この条件を満たすハッシュ値を生成するようなナンス値を見つけ出す必要がある。
仮に、過去に生成したブロック内の情報を改ざんしようとした場合、変更したブロックから算出される「ハッシュ値」は以前のそれとまったく異なることから、後続するすべてのブロックの「ハッシュ値」も変更する必要があり、そのような変更は極めて困難になる。このようにして、ブロックチェーンは改ざん耐性に優れたデータ構造を実現している。
ブロックチェーンは様々な技術の集合体
ブロックチェーンはデータ構造に加えて、データの管理方法にも改ざんを防ぐ仕組みを備えています。「分散型の台帳」と言われますが、ブロックチェーンはネットワーク内で発生した全ての取引を記録する「台帳」としての役割を持ち、ネットワークに参加している全てのユーザーが同一の「台帳」を共有することで、情報の信ぴょう性を確保しています。
そのほか、ブロックチェーンは「P2Pネットワーク」、「コンセンサスアルゴリズム」、「スマートコントラクト」、「偽造防止・暗号化技術」といった複数の技術の組み合わせで実現されます。
契約の自動化を実現する「スマートコントラクト」
契約行動をプログラム化し、自動的に実行しようとする仕組みが「スマートコントラクト」です。スマートコントラクトはブロックチェーン上で動くエージェント・プログラムで、特定の条件を満たした場合に契約を行うなど、さまざまな業務処理を記述することが可能です(実現性の程度はブロックチェーン基盤によります)。
偽造防止・暗号化技術
出典:Udemyメディア
ブロックチェーンでは、公開鍵暗号技術により電子署名を用いて相手との安全な取引を実現したり、台帳情報の共有による取引の透明性とプライバシー保護を両立したりしています。
全体の合意形成で正当性を確認する「コンセンサスアルゴリズム」
中央集権的な管理者を持たないブロックチェーンでは、台帳情報をネットワーク上の全員で共有するため、全体の合意形成を行います。そうした合意を行う方法が「コンセンサスアルゴリズム」です。コンセンサスアルゴリズムには、ビットコイン等に用いられるProof of Work(PoW)やHyperledger Fabric等に用いられるEndorse+Ordering Serviceなど複数の方法があります。
分散型の台帳管理を支えるP2P(Peer to Peer)通信
ブロックチェーンを簡単に表現すると、「みんなで管理する台帳」です。ブロックチェーンは「分散」しており、ユーザー同士が管理しています。この形式を「P2P(ピアツーピア)方式」といい、「分散型取引台帳」とも呼ばれています。金融機関を介さず、ユーザー同士でシステムを管理する構造です。
ブロックチェーンのデータ管理の役割を担うのが、P2Pネットワークです。P2Pネットワークはクライアント=サーバー型とは異なり、「特定のサーバーやクライアントを持たずにノードと呼ばれる各端末が対等に直接通信する」ことで、ユーザー同士の情報共有や決済のやりとりを可能にします。
既存の決済システムのようにサーバー側で情報を集約して管理する場合には、そこが障害時の弱点(単一障害点)となりますが、ブロックチェーンの場合にはユーザー全員が同じ情報を持っているため、複数のノードに障害が発生してもシステムを維持できます。
(出典:「平和テクノシステム」画像より筆者作成)
ブロックチェーンは、複数のコンピューターで分散して管理されているため、ビットコインの取引ごとのリアルタイム更新には対応できない為、10分単位でまとめて承認作業が行われるという特徴があります。
取引履歴(ブロック)が暗号技術によって過去から1本の鎖のようにつなげるかたちで記録され、一つのブロックは、合意された取引記録の集合体と、各ブロックを接続させるための情報(前のブロックの情報など)で構成されます。ブロックチェーンとは、このブロックが複数連結されたものを指します。ある取引について改ざんを行うためには、それより新しい取引についてすべて改ざんしていく必要がある仕組みとなっているため、途方のない作業にもなります。そのためデータの破壊・改ざんが極めて難しくなっています。
ブロックチェーンはすべての取引履歴が公開されている
ビットコインの売買など、ブロックチェーンに記録されているすべての取引履歴は、だれでも「Blockchain.info」から確認できるのが特徴です。上記で説明した、10分単位で承認されたブロック内に含まれる「取引件数」「取引されたビットコインの量」「ハッシュ値」「前ブロックのハッシュ値」を時系列に確認できます。
ここでは、ハッシュ値によって暗号化されているため、取引の「履歴」として記録されても、「内容」の詳細は確認できないので安心できます。むしろ、時系列がオープンになっていることは、不正を防ぐための役割の1つと言えるでしょう。
まとめ
ここまで「ブロックチェーンの仕組みと構造」をご説明させていただきましたが、意外と仕組みと構造だけ理解するだけでもサービスに対して、どのようにブロックチェーンを導入すれば良いかなどイメージしやすいかと思います。
また、ブロックチェーン化された取引記録は、特定の管理主体が存在する通常の集中管理型システムと異なり、複数のシステムがそれぞれ情報を保有し、常に同期が取られる「分散型台帳」という仕組みで管理されているため、一部のシステムが停止・故障しても、システム全体の運行・稼働に与える影響を抑制することが可能となっています。
この素晴らしい技術を使って日本でも様々なサービスに応用して、素晴らしいユーザー体験を提供できれば良いと思います。