Commit-Reveal方式
仕組み
CommitProofはCommit-Reveal方式を用いて、アイデアが特定の時点で存在していたことを、その内容を公開することなく証明します。
- Commit: テキストを入力すると、ブラウザがランダムなSaltとともにSHA-256 Hashを計算します。このHashのみがCardanoブロックチェーンに記録されます。
- Reveal: 後日、オリジナルのテキストとSaltを公開します。誰でもHashを再計算し、ブロックチェーン上の記録と照合できます。タイムスタンプ付きです。
オリジナルのテキストは一切ブラウザの外に出ません。サーバーに送信されることも、ブロックチェーンに保存されることもありません。オンチェーンに記録されるのは暗号学的Hashのみです。自分で確認する方法はこちら。
Saltはcrypto.getRandomValuesで生成される16文字のランダムな文字列です。ブルートフォース攻撃を防ぎ、SaltなしではオリジナルのテキストをHashから復元することはできません。
オンチェーン証明
各証明はラベル8413のメタデータを含むCardanoトランザクションです:
{
"ts": 1708000000000,
"app": "commitproof.com",
"algo": "sha256",
"hash": "a1b2c3…",
"version": "1"
} ts: クライアント側のタイムスタンプ(ミリ秒)、参考値のみ。実際の時刻証明はブロックチェーン上のブロックタイムスタンプによるもので、このフィールドではありませんapp: 送信元アプリケーションの識別子algo: 使用されたハッシュアルゴリズム(SHA-256)hash: オリジナルコンテンツとSaltを組み合わせた一方向フィンガープリントversion: 将来の互換性のためのメタデータフォーマットバージョン
各証明トランザクションはCommitProofのサービスアドレスに3 adaを送信します。このアドレスは公開インデックスとして機能し、すべてのCommitProofトランザクションを取得できます。Proof Explorerもこの仕組みで動作しています。
すべての証明はCardanoブロックチェーンに永続的に保存され、誰でも独立して検証できます。 Cardanoが初めてですか? こちらから始めましょう。
検証
証明を検証するには、3つの情報が必要です:
- トランザクションHash(ブロックチェーン上の証明を特定します)
- オリジナルのテキスト
- 作成時に使用されたSalt
検証時にブラウザ上でSHA-256(text + ":" + salt)を直接計算し、ブロックチェーン上のHashと比較します。両者が一致すれば証明は有効であり、ブロックのタイムスタンプが作成日時を証明します。
CommitProofはこれら3つをダウンロード可能な証明ファイル(PDFまたはJSON)にまとめます。共有やアーカイブに利用できます。証明ファイルの形式について詳しくはFAQをご覧ください。