Commit-Revealスキーム

仕組み

CommitProofはCommit-Revealスキームを使い、アイデアの内容を明かさずに、そのアイデアを特定の時点で持っていたことを証明します。

  1. Commit:テキストを入力すると、ブラウザがランダムなソルトを加えてSHA-256ハッシュを計算します。Cardanoブロックチェーンに記録されるのは、このハッシュだけです。
  2. Reveal:後日、元のテキストとソルトを公開します。誰でもハッシュを再計算してブロックチェーン上の記録と照合し、ブロックのタイムスタンプも確認できます。

元のテキストがブラウザの外に出ることはありません。サーバーに送信されることも、ブロックチェーンに書き込まれることもありません。オンチェーンに記録されるのは暗号学的ハッシュだけです。自分で確かめる方法はこちら。

ソルトはcrypto.getRandomValuesで生成される16文字のランダムな文字列で、総当たりによる推測を防ぎます。ソルトがなければ、ハッシュから元のテキストを割り出すことはできません。

オンチェーン証明

各証明は、ラベル8413のメタデータを付けたCardanoトランザクションです:

{
  "ts": 1708000000000,
  "app": "commitproof.com",
  "algo": "sha256",
  "hash": "a1b2c3…",
  "version": "1"
}
  • ts:クライアント側のタイムスタンプ(ミリ秒)で、参考値です。時刻の証明には、このフィールドではなくブロックチェーン上のブロックのタイムスタンプが使われます
  • app:送信元アプリケーションの識別子
  • algo:使用したハッシュアルゴリズム(SHA-256)
  • hash:元のコンテンツとソルトから作られる一方向のフィンガープリント
  • version:将来の互換性のためのメタデータ形式のバージョン

証明のトランザクションは、毎回CommitProofのサービスアドレスに3 adaを送ります。このアドレスは公開インデックスの役割を果たし、照会するとすべてのCommitProofトランザクションを取得できます。Proof Explorerもこの仕組みで動いています。

すべての証明はCardanoブロックチェーンに永続的に保存され、誰でも独自に検証できます。Cardanoを初めて使う方は、始め方をご覧ください。

検証

次の3つの情報があれば、誰でも証明を検証できます:

  • トランザクションハッシュ(ブロックチェーン上の証明を特定します)
  • 元のテキスト
  • 証明作成時に使ったソルト

検証ではSHA-256(text + ":" + salt)をすべてブラウザ内で再計算し、オンチェーンに保存されたハッシュと比較します。一致すれば証明は有効で、ブロックのタイムスタンプが作成日時を示します。

CommitProofは、この3つをダウンロードできる証明ファイル(PDFまたはJSON)にまとめます。共有やアーカイブに使えます。証明ファイルの形式について詳しくはよくある質問をご覧ください。