暗号通貨ジーキャッシュ(Zcash)について⑧くりぷと知っ得情報1月7日号

明けましておめでとうございます。
クリプトスタディ(クリスタ)の水野です。
今年も、「くりぷと知っ得情報」を通じて、暗号通貨を中心に情報発信ができればと思いますので、よろしくお願いします。
さて、今年のスタートは、昨年からの続き、プライバシー重視の暗号通貨、「ジーキャッシュ(Zcash)」について書いていきます。
🔶ジーキャッシュ(Zcash)の概要くりぷと知っ得情報11月12日号🔶ビットコイン(BTC)とジーキャッシュ(Zcash)の共通点くりぷと知っ得情報11月19日号🔶秘密の中身を見せなくても正しいと証明できる魔法の技術「zk-SNARKs」
くりぷと知っ得情報11月26日号🔶ビットコイン(BTC)が「ゼロ知識証明」の概念を採用しない理由くりぷと知っ得情報12月3日号🔶「zk-SNARKs」が信用・信頼を勝ち取っている背景①くりぷと知っ得情報12月10日号🔶「zk-SNARKs」が信用・信頼を勝ち取っている背景②くりぷと知っ得情報12月17日号🔶「zk-SNARKs」が信用・信頼を勝ち取っている背景③くりぷと知っ得情報12月24日号
前号まで、ジーキャッシュ(Zcash)がどうやって、
「zk-SNARKs」を安全に、また、その信用・信頼を勝ち取っているのか?
について、具体的な
超強力な数式そのもの=テクノロジー
について、書きました。
前号までのおさらい
①見えない送金の正しさ‥‥楕円曲線暗号(ECC)
②ペアリング暗号
くりぷと知っ得情報12月17日号
③裏側の超重要な下ごしらえ‥‥QAP(Quadratic Arithmetic Programs)
くりぷと知っ得情報12月24日号
今回は、その続き、
テクノロジーの裏側の概念について
核心に迫ります。
「ジーキャッシュ(Zcash)」の凄さは、
見せない残高
見せない送金額
見せない送金者・送金先
でした。
そもそもの疑問。
見えないのに、どうやって二重払いを防ぐのか?
UTXO(Unspent Transaction Output)=「未使用トランザクション出力」=「使いきりのお金のかたまり」について、くりぷと知っ得情報12月3日号で書きました。
UTXOとは、
コインの動きは「見える」
↓
使ったコインはUTXOとして消える
↓
同じコインをもう一度使おうとすると‥‥
みんなにバレる
ビットコイン(BTC)の場合は、残高、金額、送金元〜送金先まで、透明に公開されます。
ですが、「ジーキャッシュ(Zcash)」の場合、中身が見えないのにどうやって「もう使ったかどうか」をどう判断するのか?
と言う点が、そもそもの疑問です。
二重払いを防ぐNullifier(ヌリファイア)
「Nullifier(ヌリファイアー)」は、「何かを無効にする人、または無効化する装置・物」を意味し、動詞「nullify(無効にする、取り消す)」から派生した言葉です。
ジーキャッシュ(Zcash)は、その「Nullifier(ヌリファイアー)」を使って、二重払いを阻止している?
そもそも、「Nullifier(ヌリファイアー)」って、どこからきた概念なの?
Nullifier(ヌリファイア)の正体
🔶「Nullifier(ヌリファイアー)」は「暗号通貨で突然生まれた概念」ではありません。
🔶元は「ゼロ知識証明」(ZKP:Zero-Knowledge Proof)と匿名投票・電子現金の研究分野で育った考え方です。
🔶それを暗号通貨に本格導入したのがジーキャッシュ(Zcash)で、
中身を明かさずに、”使用済み”であることだけを示す印
として、導入されています。
ルーツは1990年代の研究「電子現金(e-cash)」
1990年代から研究されていた課題として、
🔹匿名で支払いたい
🔹でも二重払いは防ぎたい
と言う、匿名性と二重払い防止は矛盾しやすい課題がありました。
そこで出てきた発想として、
取引内容は匿名、でも、使ったら必ず「同じ印」を残す
と言うもので、
🔹「double-spending tag(重複使用タグ)」
🔹「serial number(秘密の通し番号)」
といった、「Nullifier(ヌリファイアー)」の原型が生まれました。
その、匿名システム全般の設計として、著名な人物がいます。
David Chaum(デヴィッド・チャウム)氏
匿名電子現金という分野を“最初に理論化し、実装し、体系を作った人物”
David Chaum(デヴィッド・チャウム: 1955年生まれ)氏は、アメリカの計算機科学者・暗号学者で、「デジタルキャッシュの発明者」として広く知られています。(公式 X)

オンライン匿名性や電子投票など、現代のプライバシー技術と暗号理論の基礎を築いた先駆的存在です。
何が凄かったかというと‥‥
銀行を通さず、身元を明かさずに支払える“電子のお金”を作ろうとした最初の本格研究
にあります。
🔶各電子コインには「秘密の番号」があって、
🔶支払い時に番号を提出。
🔶銀行は、「この番号、前に使われてない?」だけ確認し、
🔶同じ番号が2回出たら、「❌不正」。
これが「Nullifier(ヌリファイアー)」の原型になっています。
ゼロ知識証明(ZKP)との融合(2000年代)
2000年代に入って「ゼロ知識証明」(ZKP:Zero-Knowledge Proof)の研究が進むと、こう考えられるようになります。
🔶「私は正しいコインを持っている」
🔶「それを初めて使う」
🔶「でもどのコインかは教えない」
🔶 “条件だけを満たしている”証明が可能
ここで
🔶秘密から計算され
🔶公開しても正体が分からず
🔶同じ秘密なら必ず同じ値になる
という、「Nullifier(ヌリファイアー)」的性質が確立したと言うわけです。
まとめ
ジーキャッシュ(Zcash)が、二重払いを防いでいる方法は、
コインごとに“秘密の番号”を1回だけ提出させ
同じ番号が2回出たら不正と判定する
映画館の「半券」
例えで言うと、映画館の「半券」みたいなものです。
映画館の受付で、
🔹チケット本体は見せない(匿名)
🔹半券だけをもぎる。
🔹同じ半券が2回出たら
👉「不正入場!」
この「半券」が、秘密番号。
不正ができないように「残高チェック」を暗号化して行っていることで、二重払いが起きないようになっているんですね。
おわりに
今回は、ジーキャッシュ(Zcash)の、テクノロジーの裏側の概念、歴史について書きました。
お読みいただきありがとうございました。