やさしく解説 · 全7部中 第1部
「存在証明」とは、本当はどういうことなのか

守る価値のある何かを思いついたとしましょう。科学的な成果、だれもが味わったことのない最高のパイのレシピ、新しい発明、契約書の草案、あるいは一枚の写真かもしれません。いつか、それがある日付の時点ですでに存在していたこと、つまり他のだれかが自分のものだと主張するより 先に 自分が持っていたことを、証明しなければならなくなるかもしれません。
よくある手は、実のところうまくいきません。自分宛てにメールを送る、どこかに日付付きで投稿する、といった方法はどれも、だれかが偽れる時計か、あとからこっそり記録を書き換えられる会社に頼っています。しかも、タイムスタンプを正直に保ってもらうために、その相手に自分の秘密を渡さなければなりません。
Label 309 は、これを解決するオープン標準です。 しかも、肝心のもの自体を一切明かさずに解決します。
ファイルそのものではなく、フィンガープリント
Label 309 が最初に行うのは、コンテンツを ハッシュ関数 に通すことです。これは、どんなサイズのファイルでも短く決まった長さのコードに変える、一方向の計算です。この標準では広く知られたハッシュ(SHA-256 または BLAKE2b-256)を使います。どちらを使っても、結果はわずか 32 バイトです。これをフィンガープリント(コンテンツのハッシュ値)だと考えてください。そのまったく同じコンテンツに固有のものであり、たった一文字でも変われば、フィンガープリントはまったく別のものになります。
このフィンガープリントが役立つ理由は、二つあります。
- 元に戻せません。 フィンガープリントだけから、レシピや発明を復元できる人はいません。
- 偽造できません。 同じ フィンガープリントを生み出す 別の ファイルを、だれも作り出せません。
ですから、実際のコンテンツは手元に置いたまま、フィンガープリントだけを世界中に公開できます。これが Label 309 の核心であり、標準ではこれを コンテンツ第一(コンテンツ・ファースト)と呼びます。ハッシュ値こそが主張そのものであり、それ以外はすべて、その主張に添えられた注記にすぎません。
時間に固定する
フィンガープリントは、Cardano ブロックチェーン上のトランザクションに入ります。これは、何千台もの独立したコンピューターが合意のもとで保つ、公開された台帳です。Label 309 はこれを特定の棚番号、すなわち メタデータラベル309 のもとに収めます。この番号は Cardano 全体で、存在証明(Proof of Existence, PoE)のレコード専用に予約されています。
いったん記録されると、二つのことが永遠に変わりません。フィンガープリントがそこにあること、そしてそれが ブロック時刻、つまりネットワークがそれに合意した瞬間とともに残ることです。レコード自体に、自分で打ち込んだ日付が入ることは決してありません。意味を持つ唯一のタイムスタンプは、ネットワークがブロックに刻む時刻だけです。だれもあとから割り込んで、それを書き換えたり、過去の日付に偽ったりはできません。
これでフィンガープリントは時間に固定されました。コンテンツはその瞬間 までに 存在していたことになり、その事実は、自分にも、発行者にも、特定の一社がオンラインであり続けることにも依存しない公開記録の中に残ります。
あとから証明する
あとから、おそらく何年も先に、オリジナルを明かします。だれでもそれを同じハッシュ関数に通せば、同じフィンガープリントが得られ、ブロックチェーン上で照合できます。一致すれば、その人は完全に自分自身の力で、次のことを確認できたことになります。
- これがそのフィンガープリントの裏にある、まさにそのコンテンツであること、そして
- それがそのブロックの時刻以前に存在していたこと。
その人は、自分を信頼する必要はありませんでした。サーバーを信頼する必要もありませんでした。公開されたチェーンを、自分自身で確かめたのです。これこそが Label 309 の根底にある考え方です。だれでも検証でき、だれも鵜呑みにする必要のない証明 です。
証明できること、証明できないこと
Label 309 のレコードが証明するのは、このまったく同じコンテンツがあるブロック時刻 までに 存在していたことです。これは上限であって、「ちょうどこの日付に作られた」ではありません。レコードそれ自体は、だれが それを作ったかは語りません。著作者性は、後から付け足せる任意の署名で別に示します(鍵のはなし、やさしく を参照)。そして、自分が望まないかぎり、コンテンツが明かされることは決してありません。