ブロックチェーンの仕組みを考えた人は天才だな~
ブロックチェーンとは
ブロックチェーンという言葉はよく聞くけども、何のことだかわからないのでブロックチェーンについて調べてみました。
ブロックチェーンは、「トランザクション」という取引データを格納した「ブロック」が連なるように保存された状態になることからそう呼ばれています。ブロックチェーンは、分散して管理されるのが特徴の公開台帳です。
ブロックチェーンは複数のコンピューター(ノード)で分散して管理されており、銀行のような中央機関が存在しないので、ユーザー同士が直接取引する「P2P(ピアツーピア)方式」をとっています。金融機関を介さず、ユーザー同士でシステムを管理する構造です。
取引記録はハッシュ関数で暗号化されます。取引データ(履歴)である「トランザクション」には、「何月何日にAからBへ○○BTCを送金した」という内容のデータが記録され「ブロック」になります。このデータはオープン化されているため、誰でも確認することができます。
しかし、トランザクションの「具体的な取引内容」はハッシュ関数によって「暗号化」されるいるので詳細な内容は確認できません。つまり、ブロックチェーンは透明性は確保しながらセキュリティも高いということです。
ハッシュ関数には1,計算はとても簡単で、ハッシュ値という出力値を出す2,ハッシュ値から元の値・ナンスを探すことはとても難しいという特徴があります。
これにより、個人情報ともいえる具体的な取引履歴はハッシュ関数により暗号化されてブロックに記録されます。
直前のブロックのハッシュ値と、今回のブロックに含まれる「全取引データ(トランザクション)」と「ナンス(Number used once)値」をハッシュ関数によって暗号化して新たなブロックを追加します。マイナーは、正しいナンスを求め整合性を確認し「承認」するために計算を行います。
この承認作業を「マイニング(採掘)」といい、不正が行われていないことを証明する仕組みを「proof of work(仕事の証明)」といいます。
マイニングとは、新しいブロックを繋げていく作業であり、コンピューターを使って非常に難しい計算問題を解かなくてはなりませんが、成功すると報酬がもらえます。
新しいブロックが繋がれると他の人もその記録を反映して、みんなで同じ台帳が共有されている状態を保つようになっています。
このマイニングの作業には膨大な計算力を必要とするので、世の中の半数を越える計算力を持つような人でないと取引の改ざんができないという仕組みになっています。
誰か悪意のある人が過去の取引のデータを改ざんしようとした場合を考えてみましょう。
マイニングを行うときには、ハッシュ関数にナンス値の他に前のブロックのハッシュ値、今回承認したいブロックの取引をまとめた値も代入します。
過去の取引を改ざんすると、これらの値が変わってしまうため、次のマイニングによって探すべきハッシュ値の「ある特定の値」自体が変わることになります。
その結果、一つ改ざんをするだけで、それ以降の正解のナンスの値が全て変わってしまうことになり、また全て計算し直す必要が出てくるのです。
これは、実質的にほぼ不可能です。
ブロックチェーンは以上のようなマイニングの仕組みによって成り立っているため、改ざんが不可能となっています。
ブロックチェーンは、信頼のできないノードがつながってる分散環境でどうやってデータ更新をするのかという意味で、とても興味深い技術ですが、このしくみを考えた天才的な人は誰でしょうか。
それは、Satoshi Nakamotoという謎の人物(組織)で、分散環境の世界にまったく新しい考え方が2008年に投稿されました。データ構造および分散合意のためのアルゴリズム です。
非中央集権型ネットワーク(分散環境、参加するすべてのノードが対等な立場にある)上でP2P電子キャッシュシステムを実現する方法として、時系列に従ったトランザクションをハッシュ計算を用いたProof of Work(計算による証明)なしでは変更不可能なデータを積み重ねるという手法です。
この手法が発展してビットコインで運用され、さらに他の分野でも革命をおこそうとしています。膨大なデータを運用できる世の中になると今まで考えられなかったことができるようになるひとつの事例ですね。