Opentimestampsは誰でも使えるタイムスタンプサーバーの設計図
Opentimestampsはブロックチェーンを用いたタイムスタンプを実現する方法の共通規格です。遊びで作ろうと思っているライトニングノードを使ったオフチェーンNFTのようなものを作る上で調べていたので紹介してみようと思いました。
一般的なタイムスタンプサービスとの比較と合わせてどうぞ。
一般的なタイムスタンプ
従来のタイムスタンプは「時刻認証局(TSA)」と呼ばれる特定のサーバーが、ある時刻にあるハッシュ値に対応するデータが存在したことを保証する電子証明書でした。すなわち、タイムスタンプを発行してもらいたい人は検証する人が信用する時刻認証局を利用する必要があるというトラストベースの仕組みです。もちろん、現在も広く利用されています。
ビットコインの誕生によって、ブロックチェーンを使えば特定の時刻にデータが存在したことの証明を特定の権威サーバーの必要なしに実現できるようになりました。例えばビットコイントランザクションもデータであり、ブロックチェーンに取り込まれた時点で存在していたことは明らかです。同様にブロックチェーンに任意のデータが書き込めるOP_RETURNという機能を使ってハッシュ値を書き込むことでタイムスタンプと同じことが実現できます。
時刻認証局は仕組み自体は誰にでも作ることができますが、サービスの品質などにトラストが必要な業務なので日本では総務省と日本データ通信協会が求める要件に沿って認可されている5局が提供しているようです。お試しのようなインターフェイスはなく、BtoBという印象です。一方アメリカには同様の認可の仕組みは見当たらず、無料で利用できるサービスもありました。
FreeTSA:https://www.freetsa.org/index_en.php
マークル木でデータを圧縮
さて、OP_RETURNで1つ1つデータを書き込んでいては将来的にタイムスタンプあたりのコストが膨大になってしまいます。参考として日本の認可事業者のアマノタイムスタンプサービスではタイムスタンプサービス1回あたり8円ですが、1入力1出力+1件のOP_RETURNをもつビットコイントランザクションを一番安い手数料で通せても同じくらいかかります。手数料が高騰しているときに急いでいれは100倍くらいかかるかもしれません。
また、タイムスタンプあたりの手数料を下げる工夫として1つのトランザクションにOP_RETURNを複数含めても大した節約にならないばかりか、そのようなトランザクションは他のノードに伝播されないのでこの手法はマイナーに直接頼む必要が出てきます。
そこでOpentimestampsに準拠するタイムスタンプサーバーは前回も出てきたマークル木というデータ構造を利用して多数のデータを一度にタイムスタンプします。特定のタイムスタンプサーバー(「カレンダー」)を利用したいユーザーはファイルのハッシュ値または複数のファイルから作成したマークルルートを送信すると、カレンダーが現在作っているマークル木にそのデータを追加し、そのマークル木を構築するのに必要なデータを返送してきます。
後にブロックチェーンにそのマークルルートが取り込まれた後に先程のデータにそのときのブロックヘッダを加えることでタイムスタンプが完成します。OP_RETURNを含むトランザクションもブロックヘッダに影響を与えるため、チェーンが巻き戻されてトランザクションが再び取り込まれた場合には無効になります。
Opentimestampsのカレンダーはいくつかありますが、どれもトランザクション手数料が寄付によって運営されています。1回のトランザクションあたり数千~数万のタイムスタンプを生成して1件あたりのコストを圧縮していますが、ライトニングネットワークなどで少額の寄付がしやすくなればOpentimestampsを活用したサービスが利用量に応じて寄付したりしやすいので対応してほしいです。
タイムスタンプを検証する
タイムスタンプの検証は簡単で、元のデータとタイムスタンプのファイルを持っていれば行うことができます。これは単純にマークル木の検証と、タイムスタンプが行われたブロック内でOP_RETURNを使ったマークルルートの書き込みが行われていることの検証です。
OPENTIMESTAMPSの利点
タイムスタンプの発行と検証をそれぞれパーミッションレス・トラストレスに行えるため、順序が重要なデータ、不変性が必要なデータなどに利用します。仮想通貨関係にはそのようなデータが多いので、タイムスタンプの応用で実現できるサービスもいろいろあるかもしれません。
またOpentimestampsはオープンソースなので自身でカレンダーを立ち上げて独自にタイムスタンプを作成し記録することができます。その分コストがかさむ可能性はありますが、このようにして自分で作ったタイムスタンプも第三者がトラストレスに検証できるということが何よりの強みではないでしょうか。
まとめ
ある時点であるデータが存在したことを保証する一般的なタイムスタンプサービスは時刻認証局と呼ばれ、検証したい者はその認証局をトラストする必要がある仕組みのため大手や認可事業者が利用されます。Opentimestampsはタイムスタンプサーバーがブロックチェーン上でトラストレスに検証可能なタイムスタンプを記録する方法を定めた規格で、誰でもタイムスタンプサービスを運営することができることが特徴です。
現在は4つのパブリックなタイムスタンプサーバーが寄付で運営されています。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション