HOME > 研究者 > 首藤一幸先生 > 社会基盤たり得る分散台帳の研究(第1回)

それでは、ブロックチェーンの仕組みについて、詳しく教えて下さい。

ビットコインをはじめとする暗号通貨の取引は、ウォレットアプリや取引所によって実行されます。そのトランザクション(取引情報)はノード(P2Pネットワークに参加しているコンピュータ)に配布されます。ノードにはブロックの候補となるデータがあり、そこにトランザクションがどんどん詰め込まれていく、とイメージしてください。

そのデータに対して、ノードは、ある条件に合致するハッシュ値を出力するための計算競争を行います。これをマイニングといいます。

マイニングは暗号学的ハッシュ関数を活用した仕掛けです。「同じ数を入力すれば必ず同じ結果になるが、入力値が少しでも異なれば全く違う結果が出力される」関数であり、出力結果から入力値を求めることは不可能であるとされています。

その入力値は、どうやって見つけるのですか。

与えられた条件に合致するハッシュ値を出力する方法は「あらゆる数を入力して実際に計算し、結果を確認する」しかありません。他のノードよりも高い計算能力を持ち、試行回数を増やせば有利になりますが、何回の計算でその値が見つかるのかは“運”です。

条件に合致する入力値を最も早く見つけることができれば、そのノードのブロックが最新ブロックとなり、配布されます。各ノードは受け取った最新ブロックのハッシュ値を確認し、直前のブロックに接続させます。この一連の流れが、およそ10分間に1回起きています。つまり、ビットコインの取引は10分毎に承認され、時系列順にデータが更新されていくということです。

マイニングはこの現象を起こすためのものであり、勝者には報酬としてビットコインが与えられます。現在はビットコインが高騰しているため、1回の成功でかなりの収入を得ることができます。

2週間ごとに全ノードのおおよその計算能力を割り出し、常に「マイニングの勝者が10分間に1人生まれて、新規ブロックが生成される」状態になるよう、マイニングには難易度調整アルゴリズムが組み込まれている

約1万台のノードが一斉に競争をすると、引き分けが起こりそうですが……

偶然、複数のノードがブロック生成に成功することはあります。たとえばアメリカのノードAがブロック生成に成功しても、そのブロックがアメリカから遠い国のノードBに届くまでには、タイムラグが生じます。その間にノードBがブロック生成に成功すれば、Bは自分が勝者だと信じてブロックを配布してしまいます。すると、どちらのブロックも直前のブロックと接続可能ですから、チェーンは分岐してしまいます。これを「フォーク」といいます。

フォークが発生すると、各ノードは分岐した複数のチェーンのどれかを選択し、次のマイニング競争を始めます。一時的に複数のチェーンが並行して伸びていく状態になりますが、その中で最も伸びたものが正規のチェーンとして認められる仕組みになっています。

チェーンが分岐したままだと、どのような影響があるのですか。

ブロックチェーンは承認されたデータの変更が困難であり、それが高いセキュリティの根拠になっています。

新しいブロックを生成するハッシュ値の計算には、「1つ前のブロックのハッシュ値」と、そのブロック内の「トランザクションデータ」が含まれています。そのため、悪意ある人物が任意ブロックのトランザクションを改ざんする(たとえば、支払いに用いたビットコインを再使用するために、取引情報を消去する)と、そのブロックのハッシュ値が変化し、次のブロックとの接続が切れてしまいます。それを正規のブロックにするためには、改ざんしたブロックから最新のブロックまで、すべてのマイニングをやり直さなければなりません。その計算をしている間にも新しいブロックは10分毎に増えていきますから、事実上、攻撃者が「全ノードの計算能力の51%以上」を保有していなければ、ブロックチェーンの情報の改ざんは不可能ということになります。

しかしフォークが起これば、正規チェーンが決定するまでの間、ノードの計算能力は分散してしまいます。すると「ブロックの改ざんに必要な計算能力の値」が低下し、攻撃者にとって有利な状況を招いてしまうのです。

ブロックチェーンは、全ノードの計算能力の51%を手に入れれば攻撃が成功する(51%攻撃)。メインチェーン以外でのブロック生成が増えると、計算能力が分散し、51%攻撃が容易になってしまう
Copyright(C) SECOM Science and Technology Foundation