暗号レイヤ

コミットメント

Commitment Scheme

値を一旦伏せて固定し (commit)、後で開示できる (reveal) 暗号構成。固定後は値を変更できない (binding) かつ、開示前は値が漏れない (hiding) という二性質を満たす。

定義

古典的なコミットメント方式は三系統に大別される。(1) ハッシュベース: H(m, r) で値 m とランダムソルト r をハッシュ化、(2) Pedersen コミットメント: g^m · h^r (群論的)、(3) Kate/KZG コミットメント: 多項式コミットメント。

ZK 証明系では、回路に値を直接渡すのではなくコミットメントを渡し、必要な部分だけを ゼロ知識証明 で開示する設計が一般的。コミットメントが ZK の入力プライバシーの土台になる。

binding は事後の改竄を防ぎ、hiding は事前の漏洩を防ぐ。両方を満たすことで「言質を取った上で、後で必要な分だけ見せる」という運用が可能になる。

Lemma Oracle での実装

Lemma の属性コミットメント・モデルコミットメント・来歴コミットメントすべては Pedersen 系または KZG 系を採る。属性レベルで開示できるよう、属性ごとに独立したコミットメントを束ねるベクトル/多項式コミットメントを使用する。

選択的開示 はコミットメントの開示制御として実装され、プロヴナンス の各段階はコミットメントのチェーンとして固定される。

Poseidonハッシュ ベースのコミットメントを採用することで、ZK 回路上での開示証明コストを最小化する。

始める

値を、開示の前に固定する。