見出し画像

タイムスタンプ(後編)

前回までの流れ
前回の投稿で
・物理的なタイムスタンプ
・コンピューター上のタイムスタンプ
について簡単に書きました。

今回は
・中央集権的なタイムスタンプ
・非中央集権的なタイムスタンプ
・ハッシュチェーンタイムスタンプ
について書いていきたいとおもいます。

中央集権的なタイムスタンプ
インターネット上のサービスなど不特定多数が関わるサービスでは、中央を決めてそこの時刻が全体の基準となり、整合性を保ちます。
例えば銀行口座間で送金を行う場合、銀行のサーバの時刻を中央とし、整合性を保つといった感じです。

これらの中央集権的なタイムスタンプには問題もあります。
時刻の基準を持つ中央に負荷が集中し過ぎて、中央のサーバがダウンしたりすると、サービスが停止し利用ができなくなってしまうといったことがおこる可能性があります。
イベント開始時間に同時に大量のユーザーがアクセスし、中央のサーバにかかる負荷が処理能力を超え、システムがダウンしてしまうというようなシナリオです。
こういった問題を防ぐ為にはサーバにコストをかけるなどの必要があります。

このようにシステムのダウンによりサービスが利用できなくなる原因は中央に局地的に依存するという構造にあります。それに加え、中央集権的な構造は中央管理者が意図的にサービスを停止したり、不正を行ったりということは防げません。
ビットコインはこの中央集権的な構造による問題をP2P方式という仕組みを持って解決しました。

非中央集権的なタイムスタンプ
P2P方式のシステムには中央が存在しません。そのため、全体の基準となる中央の時刻はなく、P2P方式のシステムを用いて、送金などのタイムスタンプを必要とするデータを扱うためには、新たなタイムスタンプの仕組みが必要でした。
ビットコイン以前にもP2P方式のシステムを利用したサービスは存在していましたが、ファイル共有サービスなどタイムスタンプを必ずしも必要としないものでした。
この中央の時刻に全体が同期しない、全く新しいタイムスタンプの形が、ブロックチェーンです。
ブロックチェーンが画期的だったのは、「時間が不可逆であること」「1つの時間軸を全ての人が共有すること」を暗号学に基づくデータ構造を使って再現したことです。


ハッシュチェーンタイムスタンプ
物理的な時刻との同期が取れないシステムにおいて、全ての人が1つの時間軸を共有するための一つのアイデアとして出てきたのが、出来事の「絶対時刻」を求めるのではなく、前後関係が存在する2つの出来事に対し、「相対時刻」としてその順序を特定し、時間軸を定義するという方法です。
例えば、出来事1と出来事2が発生した際に、1と2の絶対時刻がわからなくても「1が起きた後に2が起きた」という相対的な前後関係のみ分かればいいという考え方です。

ブロックチェーンは、暗号学的ハッシュ関数を用いてあるデータAが存在する前に別のデータBが存在していたという前後関係を、論理的に否定できない形で定義しています。

暗号学的ハッシュ関数とは、任意のデータを入力して、入力データを代表するハッシュ値と呼ばれる値を返すハッシュ関数の中で、事前にそのハッシュ値の予測やハッシュ値からの元データの予測が困難である関数を指します。
ビットコインではSHA-256というハッシュ関数が用いられています。

ブロックチェーンは分散タイムスタンプ
タイムスタンプも様々な種類がありその精度も多様。
その中で、ブロックチェーンで利用されるタイムスタンプの技術は一種の「分散タイムスタンプ」の技術といえます。
それは、個々のトランザクションに埋め込まれるタイムスタンプの精度はものすごく高いということはありませんが、「ブロック」を単位として比較した時、対象となるトランザクションの数が多くなればなるほど、信用出来る精度の正しさを保証していると言えるでしょう。

いいなと思ったら応援しよう!