NFTやWeb3などにおけるネットワークはブロックチェーンで動いていることはご存知だと思います。
そのブロックチェーンを支える技術としてとても重要な「タイムスタンプ」があります。
今回は、タイムスタンプがブロックチェーンにおいてどのような役割を担っているのか解説していきます。
この記事の構成
タイムスタンプとは
そもそもタイムスタンプとは、インターネットにおける電子データの全てにおいて活用されている技術です。
しかし、一般的なネットワーク(クライアント・サーバー方式)で使用されるタイムスタンプと、ブロックチェーンにおけるタイムスタンプとは概念が異なります。
ブロックチェーンにおけるタイムスタンプの概念を説明する前に、一般的に使用されるタイムスタンプについて知る必要がありますので、その特徴や歴史などを紹介していきます。
タイムスタンプの役割と特徴
タイムスタンプとは「日付や時刻を表した文字列のことで、あるイベントが発生した時刻が記録され、その時点に電子データが存在していて、その後に改ざんされていないことを証明する技術」のことです。
役割として以下の2つがあります。
- 存在証明:「タイムスタンプが付与された時刻に電子データが存在していたこと」の証明
- 非改ざん証明:「タイムスタンプが付与された以降に電子データが改ざんされていないこと」の証明
日常生活に置き換えると、スーパーなどで買い物した時に発行されるレシートに時間が刻印されている他、インターネットショッピングなどでも必ず時間が記録されています。
これらと同じような意味合いで、日常生活にもすでに根付いている技術なのです。
タイムスタンプの発行は「タイムスタンプ局」と呼ばれる時刻認証事業者により提供されるサービスです。
なぜタイムスタンプ局が必要かと言うと、コンピュータには見た目の「時計」は存在していますが、全ての時計が正確であるという保証はありません。
そのため、このような事業者に発行してもらう必要があり、日本でも複数の事業者が存在しています。
タイムスタンプの歴史
タイムスタンプは電子データにおける情報の改ざんを防ぐ方法として、電子署名の技術と同じように古くから研究されています。
1990年に開催された暗号技術のカンファレンスである「CRYPTO」にて、「Stuart Haber(アメリカの暗号科学者)とW.Scott Stometta(アメリカの物理学者)により、提案として発表されたドキュメントがタイムスタンプの始まりとされています。
この論文は「How to time-stamp a digital document」と題されて、1991年1月に一般に公開されました。
タイムスタンプが活用され始めると、当時のタイムスタンプ局は自らのタイムスタンプが正しい処理を実施している証明として、定期的にタイムスタンプのリンクを新聞紙上に掲載していたのです。
(引用元:https://en.wikipedia.org/wiki/Linked_timestamping)
タイムスタンプの国際標準化
タイムスタンプは「ISO/IEC 18014及びIETF(Internet Engineering Task Force)」で国際標準化されています。
さらに、タイムスタンプの方式により標準化が分かれており、例えばデジタル署名と併用する方法の場合は「IETFのRFC3161及びISO/IEC18014-2」など、複数の規格で標準化されています。
日本におけるタイムスタンプの法整備について
日本でもタイムスタンプの活用が検討されはじめると、まずはルール作りが必要になり、2004年にe-文章法(電子文章法)が制定されました。
この法律により、紙媒体だけではなく電子化された文書ファイルの保存が認められるようになり、タイムスタンプが利用できるようにガイドラインが定められました。
タイムスタンプの種類
タイムスタンプには発行方法の違いによる種類があり、大きく分けると以下の2つになります。
- タイムスタンプのみで発行
- 電子署名とタイムスタンプを発行
そして、ブロックチェーンと一般的なネットワークでの比較をすると下記の2つに分けることができます。
- 中央集権型タイムスタンプ
- 非中央集権型タイムスタンプ
今まで説明してきた一般的なタイムスタンプは、先述したように「タイムスタンプ局」に発行を依頼します。
このタイムスタンプ局は「中央管理者」であることから「中央集権型タイムスタンプ」と言えます。
一方、ブロックチェーンが採用するタイムスタンプは、管理者であるタイムスタンプ局(=中央集権型タイムスタンプ)を使用しないため「非中央集権型タイムスタンプ」と説明できます。
中央集権型タイムスタンプのデメリット
ブロックチェーンは分散化されたノードにより運営されていますが、各ノードが正確な時計の機能を担うことはできません。
仮に、タイムスタンプだけタイムスタンプ局に依頼をすることになれば、その時点で中央集権になってしまいます。
中央集権になるとタイムスタンプ局がゲームなどによりアクセス過剰になった場合や、ハッカーによる攻撃などによりシステムがダウンし、タイムスタンプ機能が破綻する可能性があります。
そこでブロックチェーンでは中央管理者に依存しない新たなタイムスタンプ技術を構築する必要がありました。
ビットコインブロックチェーンにおけるタイムスタンプ
では、ビットコインブロックチェーンにおけるタイムスタンプはどのようなものか説明していきます。
非中央集権型タイムスタンプが中央集権型タイムスタンプと決定的に違うのは「現実世界における時間軸の不可逆性とそれに基づくイベントの前後関係をハッシュ関数を用いて最構築した点」です。
とても難しいのでわかりやすく解説していきます。
ビットコイン論文に見るタイムスタンプ
ビットコインの論文では、第1章「イントロダクション」に、タイムスタンプについて書かれています。
「In this paper, We propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions.」
日本語訳:この論文では、時系列取引のコンピュータ的証明を作成するP2P分散型タイムスタンプ・サーバーを用いた二重払い問題の解決策を提案する
(引用元:https://www.kk-kernel.co.jp/qgis/HALTAK/FEBupload/nakamotosatoshi-paper.pdf)
論文ではこの後の章である「タイムスタンプ・サーバー」から具体的な説明が始まりますが、上記の文章だけ見てもタイムスタンプはビットコインブロックチェーンにおいてとても重要な技術であることがわかります。
なぜ、それだけ重要なのか。
それは「二重支払問題を防ぐ」ためで、言い換えると「二重支払ではないことを証明する」必要があるためです。
ブロックチェーンにおける最大の特徴は、過去の契約を変更したり消すことができない、つまり改ざんすることが不可能であるということです。
それを実現している技術の1つがタイムスタンプなのです。
先述した通り、一般的なタイムスタンプの役割として「存在証明」と「非改ざん証明」をすると書きました。
ブロックチェーンでもその目的は同じですが、非中央集権型という手段を取ることにより、より信頼性の高さを可能にし、強固な「世界共通の時計」を実現しました。
ブロックチェーンのブロックの中身
ここからは、ブロックの中身を見ながらその仕組みについて説明していきます。
まずは、下記のビットコインのブロックリストを簡単に紹介します。
赤枠がタイムスタンプです。
さらに各ブロックの中身を見ていきます。
ブロックには「ブロックヘッダ」と「トランザクションリスト」があり、「ブロックヘッダ」にタイムスタンプが記されています。
ブロックチェーンにおけるタイムスタンプは「ハッシュ関数」
上記の図に「タイムスタンプ」と便宜上書きましたが、ブロックには「Time」としか書かれていません。
実ははこれがブロックチェーンにおける時間の概念と一般的な時間の概念との決定的な違いで、ブロックチェーンにおける時間はあくまでも目安として記録しているに過ぎないのです。
では、どのような方法で「時間の証明」をしているかというと「ハッシュ関数」を用いて証明しています。
ハッシュ関数はブロックチェーン特有の技術ではなく、一般的な暗号技術です。くわえて、これまで紹介した一般的なタイムスタンプもハッシュ関数を使用して発行されているのです。
一般的なタイムスタンプの場合、イベントのハッシュ値をスタンプ局に提出をし、それを受けたタイムスタンプ局がタイムスタンプを発行します。
つまり、ハッシュ関数はイベントの証明を示す手段として使用され、メインは時間の発行です。
しかし、ブロックチェーンでは時間軸の基準を時間ではなくハッシュ関数を用いて行っています。
それはハッシュ関数こそが時間軸の不可逆性を実現しており、中央集権的なタイムスタンプに比べ、よりイベントの前後関係を証明するのに最適と考えられるためです。
ハッシュ関数とは
それでは、そのハッシュ関数とはどのようなものか解説していきます。
ハッシュ関数は、暗号技術の1つで、ある文字列をランダムな英数字の文字列に変換してくる技術で、SHA-256というツールが多く活用されています。
最大の特徴は出力された文字列(ハッシュ値)から、元になった文字列を特定することができないということです。
例えば「パソコン」という文字からSHA-256で出力されるハッシュ値は「5f52ef058b01108a527e2a64bbec5e6f40026088f2e58135739468b6f9da307f」になります。
この技術がブロックチェーンではとても大事な要素となって活用されています。
ブロックチェーンにおけるタイムスタンプの役割
先ほど、ハッシュ関数の特徴として、5fで始まるハッシュ値から元の文字である「パソコン」という言葉を特定することができないことを紹介しました。
これは、一度ハッシュ値が出力されるとその元になった文字列を変更することも、改ざんすることも不可能であることを意味し、さらに出力されたハッシュ値の前にパソコンという文字が存在していたことを証明することにもなります。
仮に、元の文字列を1文字でも変更すると出力されるハッシュ値が変更されるため、万が一不正をしてもすぐに判明します。
このようにブロックチェーンではハッシュ値をイベントの時系列でチェーンのようにつなげることによりトランザクションの前後関係を明示し、非中央主権型のタイムスタンプとして機能させているのです。
実際のブロックには直前のブロック(1つ前のブロック)のハッシュ値を記載し、ハッシュ値の時系列で並んでいるのが確認できます。
また、先ほどの図にある「Time」はブロックが生成された時間を記録していますが、ハッシュの時系列順でブロックがつながっていくので、まれに「Time」が前後することがあります。
これがブロックチェーンでは「時間」を単なる目安とし、「ハッシュ値」を正確な時間軸を証明する技術として採用している理由になっています。
ブロックチェーンは中央集権型のタイムスタンプではなく、ハッシュ関数の特徴を生かし、より優れたトランザクションの前後関係を証明することを実現しました。
そしてデータ改ざんなどの不正を排除し、二重払いを防ぐことを実現したタイムスタンプを完成させました。
マークルルートについて
ブロックチェーンには時間の不可逆を維持するために、様々な技術が施されています。
そのうちの1つがマークルルートとよばれる技術です。
上記の図で「Time」の下にあるのが「マークルルート」です。
マークルルートもとても複雑な技術なので詳細の仕組みは省きますが、簡単に説明すると「ブロック内におけるトランザクションの要約値」です。
トランザクションの全てを、あるルールに基づいてハッシュ値を何度も出力と入力を繰り返し、最終的に出力されたハッシュ値がマークルルートとして記載されています。
こちらもハッシュ値なので、一度実行されたトランザクションが少しでも変更されると、このマークルルートの値も変わってしまうので不正を防ぐ要因として機能しています。
まとめ
ブロックチェーンの中身などを紹介しながらタイムスタンプの説明をしてきました。
ブロックチェーンは時間という概念も非中央集権で証明することを実現しただけでなく、不正を防ぐ仕組みを強固にしました。
このようにブロックチェーンには中央集権的な既存システムにはない魅力がたくさん存在していますので、いろいろな角度から眺めると新しい発見があると思います。