ITエンジニアのための勉強会・イベントレポート情報メディア

10分で理解するブロックチェーンビットコインの取引記録はレゴブロックのように管理されている
skill

10分で理解するブロックチェーン
ビットコインの取引記録はレゴブロックのように管理されている

2018.08.28

 
  • このエントリーをはてなブックマークに追加

仮想通貨ビットコインなどで有名になったブロックチェーン技術。ブロックチェーン技術は、仮想通貨だけではなく、今後さまざまな記録業務に使われていくことになります。ブロックチェーンの基本コンセプトは、どの分野で仕事をするのであっても理解しておく必要があるでしょう。

牧野武文

ビットコインは、
正確には「改竄不可能」ではなく、
「改竄されるとすぐに発覚して自動修復される」

仮想通貨ビットコインなどで有名になったブロックチェーン技術。よく「改竄不可能な分散型台帳」と言われ、仮想通貨だけでなく、不動産取引や食品生産などへの応用も考えられ始めています。

ただし、細かいことを言うと「改竄不可能」は間違いで、正確には「改竄されるとすぐに発覚して自動修復される」です。どうして、そんなことが可能なのでしょうか。

ブロックチェーン技術のポイントは3つあります。

1)台帳が複数あり、分散管理されているので、改竄された台帳はすぐに上書きされる。

2)取引データはブロックで管理し、ブロック同士をハッシュ関数を使って接続する

3)条件に合うハッシュ値を計算するために、ナンス値という仕掛けを使う。

初めての人は、聞き慣れない用語が並んで困惑するかと思いますが、難しいことはやっていません。ポイントは「改竄されたらすぐにわかる数学的な仕掛けを使っている」ことにつきます。

「改竄されたらすぐにわかる
数学的な仕掛けを使っている」

「分散型台帳」というのがブロックチェーン技術の第1のポイントです。複数の台帳のコピーが世界中のコンピュータで管理され、ひとつの台帳が改竄されても、他の改竄されていない台帳で上書きされる仕組みになっています。

(ブロックチェーンは複数のコンピューターで管理する分散型台帳。どれかひとつの台帳が改竄されても、すぐに他の台帳を上書きすることで、改竄を無効にすることができる。)

では、ある台帳が改竄されたことをどうやって知るのでしょうか。これがブロックチェーン技術の第2のポイントです。

第2のポイントを説明する前に、ひとつだけ技術用語を理解してください。それは「ハッシュ関数」です。ハッシュとはごちゃ混ぜにするという意味です。茹でたポテトを潰して、形を整えて焼いた料理はハッシュドポテトです。

同じようにある数値を入力すると、ごちゃ混ぜにしたような数値を出力する関数がハッシュ関数です。例えば「geekroid」という文字列を有名なハッシュ関数「SHA-1」に入力すると、「0ad0769e3bbf536e54087b27864802227d5b366c」という値が出力されます。重要なのは「geekroid」という値を入力すると必ずこのハッシュ値が出力されるということです。また、別の文字列を入力すると、別のハッシュ値が出力されます。ハッシュ値から元の値を推測することは不可能であるため、一方向関数などとも呼ばれます。暗号化とは少し違っているのですが、暗号化の親戚のような関数です。

ブロックチェーンでは、複数の取引データをレゴブロックのような器の中に格納して管理をします。このようなブロックを繋げて管理をしていきますが、レゴブロックには凸と凹のジョイント部があり、これがあるためブロックをつなげることができます。ブロックチェーンでは、このジョイント部を作るのに、ハッシュ関数が使われるのです。

しかし、ジョイントとして利用できるハッシュ値にはひとつだけ条件があります。この条件をつけるというところが、ブロックチェーン技術の非常に賢い工夫のひとつになっています。それは、例えば、先頭の3桁が「000…」とならなければならないというような条件です。このような条件をつけることで、改竄をした場合は、ハッシュ値が「000…」にならないという異常値になり、すぐに改竄が検出できるわけです。

(ブロックチェーンの管理の仕組み。取引データなどから計算されるブロック全体のハッシュ値に「上位3桁は0である」というような制限をかけることで、改竄をすぐに検出をする。)

ブロックを作るには、まず取引データをハッシュ関数に入力してしまいます。すると、ハッシュ値が出力されます。ところが、これが「000…」という条件をクリアするかどうかはわかりません。

そこで取引データにナンス値という数値を追加します。ナンスというのはNumber Used Once、つまり一度だけ使われる数のことです。どのようなナンス値を使えばいいのかはわかりません。むしろ、ブロック全体のハッシュ値が「000…」という条件に合うようなナンス値を見つけなければなりません。

この適切なナンス値を見つけるのがとても難しい仕事なのです。基本的なやり方は、片っぱしからいろいろな値を試して、ブロック全体のハッシュ値が「000…」の条件に適合するようなナンス値を見つけるしかありません。

適切なナンス値を見つけた人に、
ご褒美が与えられる仕組み

この計算にものすごく時間がかかるため、多くの人の協力を仰ぐことになります。適切なナンス値を見つけた人には、ご褒美として、ビットコインのブロックチェーンであれば、一定のビットコインが与えられる仕組みになっています。これがマイニング(発掘)と呼ばれ、報酬を狙って、多くのマイニング業者が競って適切なナンス値を見つけようとしているのです。

2つ目以降のブロックでは、ブロックの中に「取引データ」「1つ前のブロックのハッシュ値」「新たに見つけたナンス値」の3つをハッシュ関数に入力して、ブロック全体のハッシュ値を計算します。このハッシュ値はもちろん「000…」という条件に合っていなければなりません。そうなるようなナンス値を見つける必要があります。

もし、誰かが取引データを改竄したらどうなるでしょうか。取引データが違ったものになってしまうのですから、当然ブロック全体のハッシュ値も変わってしまいます。そして、かなりの確率で「000…」という条件に見合わないものになってしまいます。ここで改竄されたということがわかり、次のブロックは接続できなくなります。

(3つ目のブロックの取引データが改竄されると、そのままではブロック全体のハッシュ値が「000…」という条件を満たさない異常値となり、以降のブロックと繋がることができなくなる。ブロックが短くなることで改竄があったことがわかり、他の原本の中から、ブロックが最も長いもので上書きされる。)

「改竄したらブロックが繋がらなくなる」

ブロックチェーンでは、「複数ある原本のうち、ブロックの長さがいちばん長いものが正本」というルールがあります。改竄をされたブロックチェーンは接続ができず、途中で千切れてしまうので短くなってしまいます。すぐにいちばん長いブロックチェーンに上書きされてしまい、改竄データは消えてしまうことになるのです。

一見、複雑なことをやっているかのように思えるかもしれませんが、ポイントは「ブロックをつなげてデータを管理する」ということで、改竄をしたらブロックが繋がらなくなる仕組みをハッシュ関数だとかナンス値だという数学的なテクニックを使って巧妙に実現しているだけなのです。

ものすごく大雑把に理解するのであれば、「改竄したらブロックが繋がらなくなる」ということだけ覚えるのでもじゅうぶんです。

ブロックチェーン技術は、仮想通貨だけではなく、今後さまざまな記録業務に使われていくことになります。ブロックチェーンの基本コンセプトは、どの分野で仕事をするのであっても理解しておく必要があるでしょう。

原稿:牧野武文(まきの・たけふみ)

テクノロジーと生活の関係を考えるITジャーナリスト。著書に「Macの知恵の実」「ゼロからわかるインドの数学」「Googleの正体」「論語なう」「街角スローガンから見た中国人民の常識」「レトロハッカーズ」「横井軍平伝」など。

10分で理解するブロックチェーンビットコインの取引記録はレゴブロックのように管理されている

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW