(本記事は『ブロックチェーン白書2019』=N.Avenue株式会社発行=から、許諾を得た上で抜粋・編集、加筆したものです)
ブロックチェーンの定義
ブロックチェーンとは、仮想通貨「ビットコイン(Bitcoin)」を構成する中核技術の一つであり、インターネットでつながったP2P(Peer to Peer:ピア・トゥー・ピア)ネットワークの参加者同士が取引履歴を共有し、相互に監視することで、信頼性を担保し、データの改ざんを防ぐ技術のことを指す。
サトシ・ナカモト(Satoshi Nakamoto)と名乗る人物が2008年に発表した論文「Bitcoin:A Peer-to-Peer Electronic Cash System」が誕生の発端として知られている。従来型の情報管理システムと比べると、「記録が公開されていること」、「中央集権的な管理者が不在であること」、「運営コストが低く、システムがダウンしないこと」などが特徴として挙げられる。
日本ブロックチェーン協会(Japan Blockchain Association:JBA)が提示したブロックチェーンの定義については、以下の通りである。
1)「ビザンチン障害を含む不特定多数のノードを用い、時間の経過とともにその時点の合意が覆る確率が 0 へ収束するプロトコル、またはその実装をブロックチェーンと呼ぶ。」
A blockchain is defined as a protocol, or implementation of a protocol, used by an unspecified number of nodes containing Byzantine faults, and converges the probability of consensus reversion with the passage of time to zero.
2)「電子署名とハッシュポインタを使用し改竄検出が容易なデータ構造を持ち、且つ、当該データをネットワーク上に分散する多数のノードに保持させることで、高可用性及びデータ同一性等を実現する技術を広義のブロックチェーンと呼ぶ。」
In a broader sense, a blockchain is a technology with a data structure which can easily detect manipulation using digital signatures and hash pointers, and where the data has high availability and integrity due to distribution across multiple nodes on a network.
ブロックチェーンのデータ構造
ブロックチェーンでは、ネットワーク内で発生した取引の記録を「ブロック」と呼ばれる記録の塊に格納する。生成されたブロックが、時系列の順番で連結されていくデータ構造が、ブロックチェーンと呼ばれる理由である。一つのブロックの中には、(1)一定期間ごとの取引データ(2)前ブロックのハッシュ値(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」の略称であり、使い捨ての数字のことを意味する。ナンス値自体には特段の意味はないものの、ブロックチェーンの場合、ナンス値に応じて、後続するブロックで使用するハッシュ値が変化する点が重要である。ブロック全体のデータ構造は、「取引データ」+「前ブロックのハッシュ値」+「ナンス値」から構成されるが、このうち、「取引データ」+「前ブロックのハッシュ値」の部分はすでに決定しているため、後続するブロックに使用するハッシュ値を決定するために変化させることができる要素は、ナンス値のみとなる。
ビットコインの場合、新規のブロックを追加できる条件として、「ブロックのハッシュ値が一定の条件(※ハッシュ値の最初に一定以上のゼロが続くこと)を満たすものになることが必要」というルールが定められており、新規のブロックを追加するためには、この条件を満たすハッシュ値を生成するようなナンス値を見つけ出す必要がある。
仮に、過去に生成したブロック内の情報を改ざんしようとした場合、変更したブロックから算出される「ハッシュ値」は以前のそれとまったく異なることから、後続するすべてのブロックの「ハッシュ値」も変更する必要があり、そのような変更は極めて困難になる。このようにして、ブロックチェーンは改ざん耐性に優れたデータ構造を実現している。
【関連記事】
・ブロックチェーンの体系的な知識を短期間でつかむ──『ブロックチェーン白書2019』のポイント
文・編集:CoinDesk Japan編集部
写真:a-image / Shutterstock.com, N.Avenue