ZKP(ゼロ知識証明)の情報と高速計算需要のメモ

事前知識
zk-SNARKs、zk-STARKsとは?
STARKの原理
Hardware Acceleration for Zero Knowledge Proofs

StarkNet も稼働しはじめており,
PoW のようにスケール(ZKP の計算を競う)のかは不明だが, 少なくとも, たとえば Solana validator のように ZKP Validators/Proovers が pipeline で ZKP 計算を特定の時間以内で行い, それに対して報酬をもらうという形態は出てくるであろう(2024/02 時点でもう出ているかもであるが)

SNARK の ASIC

ZK Hardware Acceleration: The Past, the Present and the Future

Accelerating zk-SNARKs - MSM and NTT algorithms on FPGAs with Hardcaml

一般情報

GPU 実装
icircle. 現状(2024/02)最も?よくできている GPU(CUDA) 実装と思われる.
Metal support も予定されているようだが, 既存の実装 risc0 ではレジスタ数不足で Metal やめるみたいな雰囲気もあり, ナカナカ一筋縄ではいかないようだ

webgpu?
icircle は CUDA べったりなので...
とりあえずは cpp 実装をベースに GPU 移植していくのがいいだろうか...

乱数
PC であれば /dev/urandom
使うことができるが...
webgpu で zk の場合, ブラウザの cryptographically secure RNG API を使うことになるであろう.

mcl is a library for pairing-based cryptography, which supports the optimal Ate pairing over BN curves and BLS12-381 curves.

Circle STARKs

Reed-Solomon Codes over the Circle Group

ビットコインをきっかけに学ぶ暗号技術入門

Baby Bear prime(素数)
p = 2^31 - 2^27 + 1
Risc Zero で使われている
(2^32 程度のフィールドで, より小さいフィールド. 計算効率がよい)
Baby Bear の命名の由来は不明.

Mersenne field M31(p = 2^31 - 1
)は, 32bit コンピュータでの計算において非常に効率がよい. Circle STARKs ではこれが使われている.

数学用語
irreducible. イレデューシブル. 既約.
reducible の対語(?)なので, 「減らす」ができない, 約分できない, という意味合い.
reducible は数学では「可約」と訳されているので, 「既約」はちょっとわかりずらいですね.

Binius
Circle STARK のように 64bit の有限体を使うが, 計算を 2 値(XOR)にして効率化を図る.
ingonyama が実装をだしている(FPGA)