OpenTimestamps:タイムスタンプサーバーの仕組み
OpenTimestampsは任意のファイルがある時点で存在していたことを証明する仕組みです。基本的な仕組みは、ファイルのダイジェストからマークル木のルートを計算して、その値をビットコインのトランザクションに書き込み、トランザクションがブロックに含まれるのを待ちます。これで、そのファイルは、トランザクションが含まれたブロックのヘッダーに書き込まれているタイムスタンプ時点で存在していたことを証明できます。証明するために必要なのは以下となります。
- ファイルそのものとそのダイジェスト(ハッシュ)
- ルートから対象のファイルダイジェストがあるノードへのパスともう片方のハッシュ
- そのパスに含まれないトップノードのハッシュ
以下の図で、ファイルダイジェストがHBだとすると、2はHA、3はHCDとなります。
出展元はこちら
OpenTimestampsでは各人がファイルダイジェストをサーバーへ送信し、サーバーはそれらのダイジェストからマークル木を構成し、そのルート値をビットコインのトランザクションへ書き込んでいます。しかし、ビットコインのブロックが生成されるまでに10分程度かかるため、使い勝手がよくありません。そこでカレンダーというサーバーを介在させることで、ユーザーはタイムスタンプを数秒で完了させることができます。このカレンダーサーバーはユーザーからのファイルダイジェストを預かり、ブロック承認された時点で構成したマークル木のデータを更新してくれます。ユーザーは後でカレンダーへアクセスして証明に必要なデータを取得することができます。
このタイムスタンプサービスは誰でも無料で使うことができます。ただし、ビットコインのブロックチェーンにデータを書き込んでいるので、その都度手数料が発生しています。こちらのサイトで確認できますが、だいたい1トランザクションで200円(2000sat)くらいみたいです。
参考OpenTimestamps: Scalable, Trust-Minimized, Distributed Timestamping with Bitcoin (petertodd.org)
https://ads.diamondhands.technology/c/demo