すべての記事

約10分で読めます

Merkle ルートによるプルーフ・オブ・リザーブ

Label 309 のタイムスタンプでアンカーした Merkle ルートを使えば、準備金・負債・証拠のスナップショットにコミットしたうえで、すべての口座を公開することなく、個々の顧客に対して包含を証明できます。

Merkle ルートを使うと、プルーフ・オブ・リザーブのスナップショットの検証がはるかに容易になります。ただし、それだけで支払能力(ソルベンシー)を証明できるわけではありません。証明できるのは、特定のエントリ群が特定の時刻にコミットされたという事実だけです。それらのエントリが支払能力のある事業を裏付けるかどうかは、別の問題です。

パターンはこうです。取引所、カストディアン、フィンテック、マーケットプレイス、ステーブルコイン発行者、あるいは社内のトレジャリーチームが、準備金または負債のスナップショットに対して Merkle ツリーを構築し、その単一の 32 バイトのルートを Cardano 上の Label 309 レコードとしてチェーン上に記録します。各顧客、各ウォレット、各残高行が 1 つのリーフになります。後から任意の参加者に対して、短い包含証明を渡すことができます。これにより、データセット全体を一切公開することなく、その参加者のエントリがコミット済みスナップショットに含まれていたことを示せます。

タイムスタンプが果たす役割は 1 つだけで、きわめて明確です。そのコミットメントが「いつ」存在したかを、公開チェーン上に、信頼すべき発行者サーバーなしで確定させることです。スナップショット自体の質は、依然として会計処理、対象範囲、負債のカバレッジ、カストディの統制、そして独立したレビューに依存します。

プルーフ・オブ・リザーブのスナップショットとは何か

プルーフ・オブ・リザーブのスナップショットとは、ある時点における資産に関する証拠です。

暗号資産ネイティブな企業にとっては、特定のオンチェーンウォレットが、特定のブロック高または時刻に、特定の資産を保有していたことを証明する、という意味になることが多いです。より堅牢なプロセスでは、それらの資産を顧客負債、内部台帳、カストディの統制、そして独立したレビューにも結び付けます。

スナップショットには次のようなものが含まれ得ます。

  • 準備金ウォレットの残高
  • 資産識別子
  • ブロック高
  • 負債残高
  • 顧客口座のコミットメント
  • 除外項目と調整項目
  • 監査人レポート
  • 統制の証拠
  • 照合ファイル
  • 経営者の表明書

スナップショットは生きた貸借対照表ではありません。ある一時点のコミットメントです。

なぜ Merkle ルートを使うのか

完全なスナップショットは、たいていの場合、公開するには大きすぎるか、機密性が高すぎるからです。

Merkle ツリーを使えば、企業は多数のエントリに対して 1 つの 32 バイトのルートでコミットできます。各顧客、各口座、各ウォレット、各残高行がリーフになり、リーフどうしがハッシュされてツリーにまとめられ、チェーン上に載るのはルートだけです。ルートは、コミット対象のリーフについて何も明かしませんが、それらすべてに結び付いています。どれか 1 つのリーフ、あるいはリーフの数を変えると、ルートはもう一致しなくなります。後から参加者は包含証明を受け取ります。これは短い兄弟ノードのパスで、おおむね log n 個のハッシュの規模であり、その参加者のエントリがコミット済みスナップショットに含まれていたことを示します。

これによって、選択的開示が可能になります。

  • ある 1 人の顧客は、自分自身の包含だけを検証できます。
  • 監査人には、完全なリーフリストと口座マッピングを渡せます。
  • 一般の人々が目にするのは、タイムスタンプが付いたルートだけです。
  • 機密性の高い口座の詳細は、一度も外部にさらす必要がありません。

これは、数千のファイルに 1 つのレコードをチェーン上に記録する際と同じバッチ処理の仕組みです。ルートはコンパクトですが、実際に重要なのは、その背後にあるプロセスです。

Label 309 は何を加えるのか

どの単一の当事者も支配しない、独立した公開タイムスタンプを加えます。

プルーフ・オブ・リザーブのレポートは、ウェブサイトや PDF に置かれ、Merkle ルートはブログ記事に載る、ということがよくあります。しかしウェブサイトは変更できます。PDF は差し替えられます。レポートはひそかに更新されることがあり、それに伴って古いルートも消え去ってしまいます。

スナップショットのルートを Label 309 レコードとして公開すれば、そのコミットメントには代わりに Cardano の公開された時刻アンカーが与えられます。後から誰でも、トランザクションメタデータと公開された Cardano エクスプローラーだけを用いて、同じルートがそのトランザクションのブロック時刻までに存在していたことを確認できます。発行者サーバーは不要であり、CardanoWall のドメインやインフラを信頼する必要もありません。

レコードには次のものも含めることができます。

  • 署名された表明書のハッシュ
  • 資産スナップショットのハッシュ
  • 負債スナップショットのルート
  • コンテンツアドレス指定のレポート URI
  • 選定した受信者向けの封印された監査ワークペーパー
  • 訂正レポート用の上書きポインタ

スナップショットには何を入れるべきか

ツリーを構築する前に、主張する内容を定義してください。

スナップショットは、何を証明しているのかを明確にすべきです。準備金のみのスナップショットは、準備金と負債のスナップショットとは別物です。ウォレットのみのスナップショットは、監査済みの財務諸表とは別物です。

役立つフィールドには、たとえば次のものがあります。

  • スナップショット ID
  • スナップショット時刻
  • チェーンと資産 ID
  • ブロック高または台帳参照
  • ウォレットアドレスまたは内部口座 ID
  • 残高
  • 負債エントリのハッシュ
  • 顧客識別子のハッシュまたはブラインド化された ID
  • 包含リーフのハッシュ
  • 監査人またはレビュー担当者の参照
  • レポートのハッシュ
  • 対象範囲の記述
  • 除外項目
  • Merkle リーフインデックス

スキーマは決定論的であるべきです。リーフの構築方法が曖昧だと、検証は脆くなります。

顧客はどのように包含を検証できるのか

企業は各顧客に証明パッケージを渡します。

そのパッケージには次のものが含まれ得ます。

  • 顧客自身の残高エントリ
  • 用いている場合は、ソルトまたはブラインド化用の素材
  • Merkle パス
  • ルート
  • Label 309 のトランザクション参照
  • レポートのハッシュ
  • 検証手順

顧客は、自分のエントリがリーフへとハッシュされること、Merkle パスをたたみ込むと公開されたルートに行き着くこと、そしてそのルートがチェーン上の Label 309 レコードのルートと一致することを検証します。これらのいずれも、企業のサーバーがオンラインであることや正直であることを必要としません。オープンソースの Label 309 ツールcardanowall コマンドラインツールを含む)を使えば、レコードを検証し、包含証明を独立して確認できます。

これが証明するのは、そのスナップショットへの包含です。ほかのすべての口座が正しく扱われたことを証明するわけではありません。だからこそ、次に述べる監査人の視点が重要になります。

監査人はこれをどう活用できるのか

監査人は、証拠一式の全体を精査できます。

一般の人々が目にするのは、ルートとレポートだけかもしれません。一方、監査人や規制当局には、完全なマニフェスト、リーフリスト、口座マッピング、ウォレットの証拠、照合ファイル、そして封印されたワークペーパーを渡すことができます。

Label 309 は、次のものをチェーン上に記録することで役立ち得ます。

  • 公開ルート
  • 完全な非公開マニフェストのハッシュ
  • ウォレット残高の証拠
  • 負債ファイル
  • 照合エクスポート
  • 監査レポートの草案
  • 署名された最終レポート

これにより、監査証跡を事後に書き換えることが難しくなります。

訂正はどうすればよいのか

訂正は隠すのではなく、見えるようにすべきです。

スナップショットに誤りが見つかった場合、企業は古いレポートをひそかに差し替えるのではなく、訂正したレコードを公開すべきです。Label 309 には、このための仕組みが組み込まれています。supersedes ポインタが、先行レコードのトランザクションハッシュを保持し、訂正から、それが置き換える対象への追記専用のリンクを作ります。

このリンクについては、理解しておく価値のある点が 2 つあります。第 1 に、上書きは先行レコードを削除したり無効化したりするものではありません。チェーンは追記専用なので、元のルートはチェーン上に残り、永久に独立して検証可能なままです。新しいレコードはその隣に並んで、過去を指し示します。読み手は両方を見ることができます。第 2 に、このリンクが信頼に足るものであるためには、両方のレコードが同じ鍵で署名されているべきです。誰でも、自分のレコードを上書きすると「主張する」レコードを公開できてしまうため、検証ツールやその他のツール類は、上書きするレコードが、元のレコードにも存在する鍵で署名されている場合に限って、上書きリンクを尊重することが期待されています。訂正を発行するつもりがあるなら、スナップショットに署名してください。

これは、最初のルートがそもそも存在しなかったかのように振る舞うよりも、はるかに優れています。

これが証明しないものは何か

これは、それだけで支払能力を証明するものではありません。

すべての負債が含まれていたことを証明するものではありません。

資産に担保設定などの拘束がないことを証明するものではありません。

鍵が安全に管理されていることを証明するものではありません。

スナップショットのために資産が一時的に借り入れられたものでないことを証明するものではありません。

監査、規制当局のレビュー、会計統制、または顧客負債の照合に取って代わるものではありません。

これが証明するのは、範囲が限られている一方で、本当に有用な事柄です。特定のコミットメントが公開された時刻に存在したこと、そして個々のエントリがその内部にあることを示せること、これだけです。あらゆる存在証明(Proof of Existence)と同様に、これはタイミングと完全性の証明であって、真実や権利の証明ではありません

暗号資産取引所以外では、どこで役立つのか

同じパターンは、多数の非公開エントリを含むスナップショットがあるところなら、どこでも機能します。

例として、次のようなものがあります。

  • ステーブルコインの準備金
  • トークン化された資産のレポート
  • マーケットプレイスの出品者残高
  • フィンテックのカストディ残高
  • 社内トレジャリーのスナップショット
  • 従業員持株(エクイティ)台帳
  • ロイヤルティポイントの負債
  • カーボンクレジットの在庫
  • 保険金請求の引当金
  • 顧客預り金の台帳

共通する発想はシンプルです。多数のエントリにコミットし、選択的に開示し、タイムスタンプを保持する、ということです。

要点だけ

Merkle ルートは、プルーフ・オブ・リザーブのスナップショットをスケーラブルにします。Label 309 は、そのルートにタイムスタンプを付け、公開チェーンに対して独立して検証可能にします。

ルートを使ってスナップショットにコミットしてください。顧客や監査人には包含証明を使ってください。機密性の高い証拠には封印付きレコードを使ってください。訂正には、署名を伴う上書きを使ってください。

そのうえで、限界については正直でいてください。タイムスタンプ付きの Merkle ルートは、支払能力そのものではありません。それは、より広い証明プロセスの中の、強力で改ざんが検知できる 1 つの部品です。Label 309 自体は、オープンでベンダー中立な標準であり、Cardano の CIP プロセスに提出され、現在 CIP エディターによって Metadata カテゴリの提案としてレビュー中です。上で述べたバッチ処理、ハッシュ、上書きの仕組みは、この標準で定義されているものであって、特定の一製品で定義されているものではありません。

さらに読む

compliance-legalmerkleaudit