LIVE ADA-- MCAP-- TVL-- STAKE-- EPOCH-- Cardano & Midnight 総合情報ポータル
SIPO
速報 Cardano、ステークプール運営者による重要な投票が9月1日で期限切れ 5時間前 速報一覧 →
HOMEDeep Dive › AI × Privacy 何を隠し、何を証明するか——AIにお金を任せる時代の、“見せ方”のデザイン
Deep Dive

AI × Privacy 何を隠し、何を証明するか——AIにお金を任せる時代の、“見せ方”のデザイン

2026-08-21SIPO
AIのロボットアームが封をした封筒を台帳に置き、虫眼鏡にはチェックマークだけが見える

「秘匿されていて、検証可能で、説明責任がある」——SALT Wyoming でチャールズ・ホスキンソン氏がエージェント金融に求めた3条件です(詳報 Signal)。では、それは実際にどんな手触りなのでしょうか。SIPO は、AIエージェントにゼロ知識証明の秘匿決済アプリを作らせ、Midnight のテストネットで動かしてきました。本稿はそのデモ「Midnight Private Payment Demo v2」の設計を、”見せ方”という切り口から解説します。8月22日(土)の Midnight Community Workshop Vol.1 でライブ実演するものです。

■ AIエージェントが、プライバシーアプリを作った

このデモには、技術と同じくらい大事な出自があります。AIエージェント(Claude Code × Midnight MCP)が作った、ということです。Midnight MCP はスマートコントラクトの生成・コンパイル・デプロイまでを AI から操作できるツール群で、自然言語で指示するだけで、Compact 言語やゼロ知識証明の専門知識がなくても、秘匿決済のコントラクトを組み上げられます(経緯は v1 の解説記事にまとめています)。

つまりこのデモは「AIがお金を扱う時代に、プライバシーをどう設計するか」という問いに対して、AI自身が答えの試作品を作ったという、少し入れ子になった実例です。ワークショップの副題「AI × Privacy: Building the Next Freedom」は、この実話から来ています。

■ ひとつの支払いの物語——1000 − 100 − 10 = 890

デモは機能の羅列ではなく、ひとつの物語として設計しました。登場するのは、あなたと、あなたのAI助手。単位はテスト環境のアプリ内通貨「pt」です(実資産ではありません)。

デモの Wallet Mode — ウォレット拡張の接続前画面
ウォレット接続済み — アドレスと tNight 残高、コントラクト接続状態
手順何が起きるか
1. 財布に 1000pt 入れる最初の残高を作る。この 1000 だけは公開で登録
2. AIがサブスク代 100pt を払う金額は「封筒」の中。台帳には金額が載らない
3. ランチ代 10pt を払うあなたが決めたルール「1回 25pt まで」をアプリが確認してから実行
4. 台帳を見に行く金額はどこにも書かれていない
5. 「残高を確認」を押す890pt が表示される
Initialize Balance — 最初の残高 1000pt を登録し Transaction Confirmed

1000 − 100 − 10 = 890。金額は一度も台帳に載っていないのに、残高は正しく動いている——これがゼロ知識証明の決済の手触りです。

■ 画面に出てくる3つの言葉

Private Transfer — 金額を隠したまま 100pt を送金 (Amount: PRIVATE / Recipient: PUBLIC)

画面には英語の専門用語が出ますが、覚える意味は3つだけです。

公開ID(public key)——宛名に使う会員番号です。本名ではありませんが、同じ人はいつも同じ番号。平安時代の女房名のように、「識別できること」と「本名を明かすこと」を切り離します。

デジタルの封印(commitment)——金額を入れて封をした封筒です。開けずに「中身は同じ」ということだけ確認できます。台帳に残るのは、この封筒だけです。

秘密の数字(salt)——アプリが毎回自動で作るランダムな長い数字です。金額だけを封印すると、候補の数字を総当たりで試す「金額あてクイズ」が成立してしまう。そこで金額にこの数字を混ぜてから封をすることで、同じ金額でも封筒が毎回違う形になり、推測が事実上不可能になります。

■ 何が見えて、何が見えないのか

送金後の世界は、きれいに3つに分かれます。

Transfer Visibility — オンチェーンに載るもの・手元だけに残るものの3分類

みんなに見える——送った人の公開ID、受け取る人の公開ID、封をした封筒、取引があったという記録。あなたの手元だけ——送った金額、送ったあとの残高、秘密の数字。確認した時だけ——「残高を確認」を押すと、契約の決まりに従って、その時の残高が公開されます。890pt は最初から見えていたのではなく、あなたが「見せる」と操作したから表示されたのです。

疑い深い方は、ぜひ台帳を直接見てください。デモの各ページに View on Explorer ボタンを付けました。実際の取引ページには、成功ステータス、ブロック番号、取引ハッシュ、手数料——検証に必要な事実はすべて並んでいます。しかし、金額は探してもどこにもありません。「秘密を守りながら、取引の事実は誰でも検証できる」を、その場で確かめられます。なお v2 では 1AM ウォレットを接続する Wallet Mode にも対応し、ブラウザだけで実際のウォレットから同じフローを体験できるようになりました。

Midnight Explorer 上の実際の取引ページ — 金額はどこにも表示されない

■ 「1回25ptまで」が守るもの

Automatic Payment Policy — 1回25pt上限のルール判定と decision log

デモの中で地味に見えて、実はいちばん射程が長いのが Policy(支払いルール)です。ここでのポリシーとは、法律でもAIの判断でもなく、「AIにどこまで支払いを任せるかを、人が先に決めたルール」のこと。AI助手が「10pt 払いたい」と頼むと、アプリは「1回 25pt まで」「残高の範囲内」を確認し、条件を満たしたときだけ、1件だけ実行します。判定の過程は decision log(確認→承認→送信→確定)として手元に残り、判定材料はチェーンには載りません。

なぜこれが大事なのか。鍵や署名の仕組みが破られると、攻撃者は「正しい署名」を作れてしまい、被害は全額に及びます。今年、国内エコシステムでも署名実装の欠陥を突かれて大きな流出が起きました(経緯の分析はこちら)。もし「1回の上限」のようなルールが台帳側で強制されていれば、鍵を盗まれても、一撃で全額は抜かれません。被害の上限を、祈りではなく設計で決められる。しかもゼロ知識証明を使えば、上限や残高を公開せずに「ルールを守った」ことだけを証明できます。秘匿と、検証可能性と、説明責任——冒頭の3条件が、この小さなデモの中で同時に成立しています。

■ まだできないこと——正直なスコープ

誠実に書いておきます。このデモは「金額を隠して払う」部分の試作(PoC)であり、テストネット(Preprod)上で動くものです。できないことが、はっきりあります。

まず、取引相手の公開IDまでは隠していません。1回の金額は見えなくても、同じIDのペアが何度も台帳に並べば、「この2人は頻繁に取引している」という関係と頻度は推測できます。これは実は、ビットコインの原論文が「Privacy」の章で最初から指摘していた宿題です(サトシの処方箋は「取引ごとに新しい鍵を使え」でした)。次に、受け取った人が中身を確認するための秘密情報を安全に渡す仕組みは未実装で、完成した二者間決済ではありません。

それでも——というより、だからこそ——このデモには意味があると考えています。「全部隠せます」という誇大な約束ではなく、何を隠せて、何がまだ見えるのかを、動くもので正確に示すこと。プライバシーの設計は、そこからしか始まらないからです。

Balance — 残高890ptの表示と Transaction History

■ 何を隠し、何を見せ、いつ確認するか

この問いに、唯一の正解はありません。しかし「誰が決めるのか」には、答えがあるべきです——あなたと、あなたが先に決めたルール。Midnight は、その選択をアプリケーションの仕組みとして実装できるブロックチェーンです。プライバシーの4000年史から見たこのデモの位置づけは、思想編「なぜ今、Midnight なのか」で詳しく書いています。

手を動かしたい方へ。デモは公開しており、ソースコードもすべて GitHub にあります。