暗号資産(仮想通貨)の基礎

ブロック時刻はどう決まるの?ブロックチェーンの基礎知識


17:ブロック時刻

ブロックチェーンではどのマイナーが生成したブロックを正しいブロックとするかを決めるのにPOW(Proof of Work)が必要となることを解説しました。

>ブロックチェーンのPoW(Proof of Work)とは?仕組みや必要な理由について詳しく解説

POWの役割のひとつは多数のマイナーの中で、最新のブロック生成に成功したマイナーを決定することでした。
しかし、ブロックの中にはそのブロックを生成した日付時刻が記録されています。
最新ブロックはその日付時刻で判断してはいけないのでしょうか。

ブロックに記録されている日付時刻

まずブロックの構造から思い出してみましょう。
ビットコインのブロックチェーンを構成するひとつのブロックは「ブロックヘッダ」と「ブロック本体」でできています。

ビットコインのブロックチェーンを構成するひとつのブロックは「ブロックヘッダ」と「ブロック本体」でできています

ブロック本体にはトランザクションが多数記録してあり、2個のトランザクションを合わせてハッシュ値を計算し、さらにハッシュ同士を合わせてそのハッシュを計算するというマークルツリー構造が採用されています。
マークルツリーの最上位のハッシュ値をマークルルートのハッシュ値と呼び、ブロックヘッダにはそれが記録されます。
これにより、ブロック本体がそのブロックヘッダと関連付けられたデータであることが保証されます。

ブロックヘッダにはブロックのバージョン、直前に生成されたブロックヘッダのハッシュ値、ブロックを生成した日付時刻、POWの実行に必要となる「難易度」と「ナンス」を記録する場所が設けられています。

ブロックヘッダに記録する日付時刻はそのマイナーのサーバが持っている時計の時刻により決まり、記録するタイミングはそのブロックのPOWが完了した時刻です。
したがって、すべてのマイナーが共通の時計で時刻を記録しているなら、ほぼ同時に複数の新ブロックの候補が発生したとしても、ブロックヘッダの時刻をチェックして最も早い時刻となっているブロックを正式ブロックとして採用すればよいです。

しかし、ビットコインのブロックチェーンでは時刻による判定をしていません。
それはなぜでしょうか。

 

マイナー毎に時計が異なる可能性

一般的にはマイナーのサーバはインターネットの時刻合わせプロトコルを用いてコンピュータの時計の時刻を正しく合わせます。
しかし、マイナーには誰でもなれるので、不正確な時計を持つマイナーが存在する可能性があります。

また、悪意を持ったマイナーが時計を少し遅らせておけば自分が生成したブロックの生成時刻を実際より早い時刻に設定できます。

悪意を持ったマイナーが時計を少し遅らせておけば自分が生成したブロックの生成時刻を実際より早い時刻に設定可能

このような問題があるので、時刻を基準にして最新のブロックを判定することはできません。
一般的には各マイナーの時計は正しいので、ブロックの生成頻度を分析する参考情報としては利用可能です。

マイナーが記録する際の日付時刻の制限として、自分が設定しようとしている時刻が過去11個のブロックの日付時刻の中央値よりも大きくなること、というものがありますがかなり緩い制限でありインターネットの時刻合わせプロトコル(NTP)で時計の時刻が合わせてあれば容易に適合可能です。

以上のように、ブロックヘッダに記録されている日付時刻はほとんどの場合正しくて参考になるのですが、悪意を持ったマイナーが存在する前提ではそれを基準にブロックの生成成功を判定できません
中央の管理者が存在せず、誰もが自由にブロックチェーンネットワークに加入できるという性質がこのように制御の難しさを生んでいると考えられます。

Provided by
上野 仁(Hitoshi Ueno)

1984年山梨大学大学院修士課程(計算機科学専攻)修了後、株式会社日立製作所入社。
システム開発研究所、エンタープライズサーバ事業部などで主としてコンピュータアーキテクチャおよび基本ソフトウェアの研究開発に従事。
2015年より第一工科大学東京上野キャンパス情報電子システム工学科教授に就任。
2023年より東京情報デザイン専門職大学教授。
生体信号処理に関するプログラム開発や種々の先端ソフトウェアついての調査研究に興味を持つ。
技術士(情報工学)。
博士(工学)。

>上野 仁氏監修の「ビットコイン(暗号通貨)」に関する記事一覧はこちら


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。

この記事をシェアする

ホーム » 暗号資産(仮想通貨)の基礎 » ブロック時刻はどう決まるの?ブロックチェーンの基礎知識