ブロックチェーンとタイムスタンプの関係

A
TeamGeekHash
Published in
3 min readJan 10, 2019

ブロックチェーン技術の理解において、必要不可欠な要素の1つとしてタイムスタンプが挙げられます。

タイムスタンプとは、事実証明のためにその出来事が発生したタイミングを記録する仕組みのことを指します。例えば、現実世界では事実証明のために領収書などに記載されている日時もタイムスタンプの役割を果たしています。

というのも「時間」という概念が不可逆的であり、世界中の人間が1つの時間軸を共有してることによって、ある出来事の発生した瞬間をただ1つの瞬間に定めることができるという特性を有しているからです。

今回はブロックチェーンにおいて、タイムスタンプがどのように利用されているのかについて書こうと思います。

上記で紹介したのは「物理的」なタイムスタンプです。

コンピューター上のタイムスタンプ

ブロックチェーンにタイムスタンプを実装するにあたり、「コンピューター上の」タイムスタンプを設定した場合、設定時間は各々のノードに設定されている時間になります。

これは、個人がコンピューターの設定時間を変えることで強固な事実証明が行われる可能性を大幅に下げる結果になってしまうという大きな弱点があります。

中央集権的タイムスタンプ

中央のサーバーが1つの時間軸を設定することで、基準となる時刻を中央以外は改ざん不可能にし、上記のような個人による改ざんを防ごうという考えです。しかし、これではブロックチェーンが構造上中央の権力を分散させることができずに、ブロックチェーンの理念から乖離した本末転倒な結果に終わります。

また、中央のサーバーダウンにも弱く、結果的にユーザーは中央を信用してサービスを受け入れることになります。

ブロックチェーン(主にビットコイン)のタイムスタンプ

分散化されたブロックチェーンでは、相対的な前後関係を証明さえできれば良いという考えです。

どのように前後関係を証明するかを簡単に説明すると、現在のブロックからハッシュ値を生成する際に、前のブロックで生成されたハッシュ値を同時に組み込みます。このことで、現在のブロックnによって生成されたハッシュ値をh(n)とすると、nの生成には必ずh(n-1)のハッシュ値が組み込まれているはずということになります。

これによってn-1<nという前後関係は覆すことのできない強固な事実証明を論理的に行うことが可能になります。

しかし、全ノードが最新のタイムスタンプを同期できなければ全く意味がありません。

この問題に関しては

(1)PoWにおいてnance発見による各ブロック生成間隔を約10分にすること

(2)ハッシュ関数の入力値に各ノードのUNIXタイムスタンプを導入すること(各ノードが虚偽報告可能なので、報告可能時間の幅に制約を設ける)

(3)全ノードのUNIX時間のタイムスタンプの中央値を同期させること

により、緩やかなリアルの世界との時間の同期を行いつつ、全ノードでのタイムスタンプの共有が実現しています。

--

--