ここが Midnight の心臓部です。 名前はむずかしいけど、考えかたはとてもシンプル。1回でぜんぶ分からなくて大丈夫です。
なんのためにあるの?
「正しいことを証明したい。でも、中身は見せたくない」——そんなわがままをかなえる技です。
中身を見せずに、「これは正しいよ」とだけ、相手に納得させる。
これを ゼロ知識証明(ゼロちしきしょうめい / ZKP) と言います。
たとえ話:パスワードを見せずに証明する
あなたは、あるアプリの正しいパスワードを知っています。 でも、パスワードそのものはぜったいに見せたくないですよね。
ゼロ知識証明を使うと、
- パスワードは見せない
- でも「正しいパスワードを知っている」ことだけは、相手にちゃんと納得させられる
「答えは見せないけど、ちゃんと解けたよ」と証明できる、魔法みたいな技です。
3つの約束(これだけ覚えよう)
ゼロ知識証明は、つぎの3つを守ります。
この3つがそろって、はじめて「見せずに証明する」が成り立ちます。
登場人物(だれが何をする?)
⚠️ prover も verifier も「人」とはかぎりません。アプリの中で、同じプログラムが両方の役を演じることもあります。「役わりの名前」だと思ってください。
1回だけで終わる証明(ブロックチェーン向き)
- やり取りしながら納得させるやりかた(interactive)もありますが、
- ブロックチェーンでは「1回つくった証明を、後からだれでも1人で確かめられる」必要があります。
- だから Midnight では「1回で完結する証明」(non-interactive)が前提です。
気をつけること(よくあるかんちがい)
- ゼロ知識証明は「暗号で隠して運ぶ」しくみではありません。「事実だけを納得させる」しくみです。
- 「回路(circuit)」を書くのは、あとで出てくる Compact の役目。今は入口だけでOK。
開発者として何を学べばいい?
- まずは「中身を見せずに、正しさだけ渡せる」というイメージをつかむこと
- 3つの約束(完全性・健全性・ゼロ知識)を、言葉だけでも覚えておくこと
- 「prover / verifier / witness」という役わりの名前に慣れておくこと
今日のまとめ
- ゼロ知識証明=中身を見せずに「正しい」とだけ納得させる技
- 約束は3つ:正しければ通る・うそは通らない・中身はもれない
- ブロックチェーンでは「1回で完結する証明」を使う
今はここだけでOK
「答えを見せずに、解けたことだけ証明できる」——このイメージが持てたら大成功です。
✍️ 白紙練習
答えを見る前に、いったん自分の頭と手から出してみよう。手で書くと「わかったつもり」がはがれます。
ゼロ知識証明とは何か、たとえ話を使わずに自分の言葉で説明してみよう。
ゼロ知識証明とは、中身を見せずに「これは正しいよ」とだけ相手に納得させる技です。たとえば、パスワードそのものは見せないまま、「正しいパスワードを知っている」ことだけを相手にちゃんと納得させられます。
ゼロ知識証明が守る「3つの約束」を、それぞれやさしい意味つきで書き出してみよう。
- 完全性:ほんとに正しければ、検査は必ず合格する。
- 健全性:うそをついても、ほぼ合格できない。
- ゼロ知識:たしかめた人は「正しい」以外、何もわからない。
この3つがそろって、はじめて「見せずに証明する」が成り立ちます。
prover と verifier はそれぞれ何をする役わり?
- prover(証明する人)=「知ってる/条件を満たす」と主張する人(「解けたよ!」と言う人)。
- verifier(たしかめる人)=その主張がほんとか確かめる人(「ほんと?」と検査する人)。
witness と circuit はそれぞれ何を表す?
- witness(証拠・秘密)=証明する人が手元に持つ秘密の値(手元のパスワードそのもの)。
- circuit(回路)=「何を証明するか」を計算の手順で書いたもの(検査のルールブック)。
ブロックチェーンでは interactive と non-interactive のどちらの証明を使う?その理由は?
non-interactive(1回で完結する証明)を使います。ブロックチェーンでは「1回つくった証明を、後からだれでも1人で確かめられる」必要があるからです。
ゼロ知識証明は「暗号で隠して運ぶ」しくみ?
いいえ。ゼロ知識証明は「暗号で隠して運ぶ」しくみではなく、「事実だけを納得させる」しくみです。
📘 もっと正確に(原文準拠コース)
Academy 原文に忠実な詳しい版はこちら:
つぎに読むページ
➡️ では、その「見せかた」をどう設計する? 必要なことだけ見せる
📚 もっとくわしく(公式・むずかしめ): Midnight Academy(外部リンク・別タブで開きます) / ZKP とは(ブログ)(外部リンク・別タブで開きます)