概要
では、commitment-carrying IVC
をIVCのstepで受け渡しいくダイジェストとして用いることで、zkVMのMemory Consistency Checkを行う手法が提案されいます。
Memory Checkingの立ち位置としてはSpiceの後継で、主にMultisetの表現について改良がなされています。
Spiceでは、Multisetを表現するためにHash(Poseidonなど)の楕円曲線上の加算を用いていましたが、Nebulaでは、衝突耐性を持つ一方向性の関数としてJoltと同じfingerprintingを使い、commitment-carrying IVC
でMultisetを表現しています。なお、fingerprintingは、ランダム線型結合で計算されます。
Nebulaのもう一つの特徴であるswitchboardは、MemoryCheckingからは外れるため、このページでは解説しません。
前提知識
Committed Relation
このR(com)は、structure s、instance u, witness wがとある関係Rにあり、さらにcommit Cと public-param ppcomが、com=(Gen,Commit)によって生成されたものであることを示す関係です。
また、structure s は、folding schemeでたたみ込まれるインスタンスの構造の種類を表しています。
(i,z0,z)を入力に受け取ってzi+1←Fi(z0)を証明するΠiを生成するFを使い、(ii+1,z0,zi+1)とΠi+1を再帰的に計算していくことで、繰り返しの計算を再帰的に証明していきます。
NIVC は、IVC の一般化で、各ステップで実行される関数が固定ではなく、決まった関数集合 F1,F2,…,Fℓ から選ばれます。Fの選択には補助的な関数ϕを利用し、全体ではzj+1←Fϕ(zj,wj)j(zj,wj)を計算します。
Multi-folding schemes
Folding schemesでは、構造sを持つ関係Rの2つのインスタンスを1つのインスタンスの検証に削減しますが、HyperNovaなどのMulti-folding schemesでは、s1の構造を持つ関係R1のインスタンスu1と、s2の構造を持つ関係R2のインスタンスu2を、関係R1のインスタンスの検証に削減します。
2つの関係 R1 と R2に対して、ある互換性述語(predicate) compat があり、この述語が R1 と R2のインスタンス間で満たされる必要があります。また、μ,ν∈N はそれぞれのインスタンスの数を表すパラメータです。この(R1,R2,compat,μ,ν)対して、Multi-foldingでは次の4つの関数が定義されます。
g(1λ,N)=pp : security param λ とサイズ上限 Nからpublic param ppを求める。
Enc(pp,(s1,s2))→(pk,vk) : ppと構造s1,s2から証明・検証の為の鍵を求める。
P(pk,(u1,w1),(u2,w2))→(u,w) : μ個のR1のinstance u1とwitness w1の配列と、ν個のR2のinstance u2とwitness w2の配列を、R1のinstance uとwitness wに畳み込む。
V(vk,(u1,u2))→u : u1とu2の配列から新しいinstance uを作る。
NIVC-compatible multi-folding scheme
R1と、R2′に基づくコミット関係R2 を考えた時、決定論的な Vを持つmulti-folding scheme (Gen,Enc,P,V) が、以下のプロパティを満たす場合にNIVC互換であるとします。
NP-completness: 任意の算術回路 Fのinput x, 非決定的な入力w、output yに対して、構造・インスタンス・witness のタプル(s2,u,w) が R2′ に属し、 F(x,w)=y が成り立つ。
Partial functions: compat(s1,s2)=1を満たすcompat(s1,s2)=1(s1,s2)を生成するencstr(F)と、R2′ のinstance uを生成するencinst((x,y))が存在し、あるR2′のwitness wに対して(s2,u,w)=enc(F,(x,y),w)となる。
Monotonicity: 任意の算術回路 ( F ) と ( G ) について、もし ∣F∣≤∣G∣であれば、∣encstr(F)∣≤∣encstr(G)∣ が成り立つ。ここで、∣F∣は Fのゲートの総数を表し、∣encstr(F)∣ は、encstr(F)内の制約の数を示す。
Default instances: あるデフォルトインスタンス (u⊥,w⊥) が存在し、任意の公開パラメータ ppと構造 sに対して、(pp,s,u⊥,w⊥)∈R1 が成り立つ。
Commitment-carrying NIVC from multi-folding schemes