タイムスタンプ
はじめに
暗号通貨を基盤として支え、ビジネスにも応用されようとしているブロックチェーンですが、その先駆けとなったビットコインの論文には「ブロックチェーン」という用語は登場しません。
概念としてブロックチェーンに相当する部分は論文は「タイムスタンプサーバ」で説明されています。
タイムスタンプの役割は、ある出来事の日付や時刻を記録することで、その事実の存在や前後関係を保証することです。またブロックチェーンを支える技術としてもとても重要ですので、今回はタイムスタンプについて取り上げてみようと思います!
種類
・物理的なタイムスタンプ
・コンピューター上のタイムスタンプ
・中央集権的なタイムスタンプ
・非中央集権的なタイムスタンプ
・ ハッシュチェーンタイムスタンプ
今回はこの5つのタイムスタンプについての概要をざっくりメモ的な感じで書いていきたいとおもいます!
物理的なタイムスタンプ
わたしたちが過ごすこの現実世界での物理的なタイムスタンプとは、大きくわけて2つに分けることが出来ると思いますが、
まず1つ目は「全ての人が同一の時間軸を共有していること」
2つ目は「時間が不可逆であること」の2つが前提にあります。
地理的な要因による時差(例えば日本とアメリカでは時差がありますよね)は必ず生じていますが、標準時刻や現地時刻の標準化によって全ての人が同一の時間軸を共有しています。
また、現在から過去に遡ることや未来へひとっ飛びする(タイムマシーン的な)といったことも不可能なので考慮する必要はないと言えます。
領収書や契約書などの記録がひつようになる
現実世界で現金を用いて支払いをする場合、現金を渡すという行為が発生しますが、その支払い行為が発生した時刻はただ1つです。なので、時間を遡って支払った事実をなかったことにすることも不可能です。
ですが、お金を受け取ったという事実を否認することはできちゃいます。
そのため、領収書や契約書などの記録は必要で、これらが現実世界の物理的なタイムスタンプということになります。
コンピューター上のタイムスタンプ
コンピューターの世界では、現実世界の時刻とコンピューターの時刻は必ずしも一致というわけではありません。
各コンピューターが参照する時間が同一でなければ、ある支払いを行ったという事実が、いつ起こったのかという合意が取れず、事実の記録と証明をすることは難しくなります。
また、コンピューター上のタイムスタンプは簡単に変更できてしまうという特徴があるため、不都合な事態が発生しやすくなります。
今ではそういったことはないのですが、数年前の例で言うと、オンラインショップで特定の時間になると商品が販売されることがあります。
その時に利用しているデバイス(スマホやpc)のローカル時刻を参照して判定してしま処理がそのサービスで施されていると、ユーザーがデバイスの時刻を自由に変更し、時間を早めてしまうと特定の時間前に既に利用可能となってしまい不正ができてしまいます。
そのため、デバイスがローカル時刻を変更しても不正をさせないためには、サーバ側の時刻を参照して判定する処理を施す必要があります。
・中央集権的なタイムスタンプ
・非中央集権的なタイムスタンプ
・ ハッシュチェーンタイムスタンプ
長くなるのでこの3つについては別で書きたいとおもいます。