From a44c34b64291054ec10c4791008a5d37858268e4 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 23 Jul 2023 12:41:45 +0100 Subject: [PATCH 1/3] Expose overrideWrapDomain and use it to fix failing tests --- src/bindings | 2 +- src/lib/proof_system.ts | 10 +++++++--- src/snarky.d.ts | 2 +- src/tests/inductive-proofs.ts | 1 + tests/integration/inductive-proofs.js | 1 + 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/bindings b/src/bindings index 3638778cd8..fe98da73ae 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit 3638778cd85fdd3557b3105b1a01ac37a1d14e76 +Subproject commit fe98da73ae008d9f15cb1a405b867a6099a664ce diff --git a/src/lib/proof_system.ts b/src/lib/proof_system.ts index 2b13a320e6..6f3bbc6de5 100644 --- a/src/lib/proof_system.ts +++ b/src/lib/proof_system.ts @@ -203,7 +203,8 @@ function ZkProgram< InferProvableOrVoid>, Types[I] >; - }; + }, + overrideWrapDomain?: number, } ): { name: string; @@ -267,7 +268,8 @@ function ZkProgram< publicOutputType, methodIntfs, methodFunctions, - selfTag + selfTag, + config.overrideWrapDomain ); compileOutput = { provers, verify }; return { verificationKey: verificationKey.data }; @@ -503,7 +505,8 @@ async function compileProgram( publicOutputType: ProvablePure, methodIntfs: MethodInterface[], methods: ((...args: any) => void)[], - proofSystemTag: { name: string } + proofSystemTag: { name: string }, + overrideWrapDomain?: number, ) { let rules = methodIntfs.map((methodEntry, i) => picklesRuleFromFunction( @@ -523,6 +526,7 @@ async function compileProgram( result = Pickles.compile(MlArray.to(rules), { publicInputSize: publicInputType.sizeInFields(), publicOutputSize: publicOutputType.sizeInFields(), + overrideWrapDomain, }); } finally { snarkContext.leave(id); diff --git a/src/snarky.d.ts b/src/snarky.d.ts index 4367c32169..c71d14f8e4 100644 --- a/src/snarky.d.ts +++ b/src/snarky.d.ts @@ -537,7 +537,7 @@ declare const Pickles: { */ compile: ( rules: MlArray, - signature: { publicInputSize: number; publicOutputSize: number } + signature: { publicInputSize: number; publicOutputSize: number, overrideWrapDomain?: number } ) => { provers: MlArray; verify: ( diff --git a/src/tests/inductive-proofs.ts b/src/tests/inductive-proofs.ts index 61c1c9dc1d..b02cfc88f2 100644 --- a/src/tests/inductive-proofs.ts +++ b/src/tests/inductive-proofs.ts @@ -49,6 +49,7 @@ let MaxProofsVerifiedOne = Experimental.ZkProgram({ let MaxProofsVerifiedTwo = Experimental.ZkProgram({ publicInput: Field, + overrideWrapDomain: 1, methods: { baseCase: { diff --git a/tests/integration/inductive-proofs.js b/tests/integration/inductive-proofs.js index 5fe77f4ced..db56563947 100644 --- a/tests/integration/inductive-proofs.js +++ b/tests/integration/inductive-proofs.js @@ -48,6 +48,7 @@ let MaxProofsVerifiedOne = Experimental.ZkProgram({ let MaxProofsVerifiedTwo = Experimental.ZkProgram({ publicInput: Field, + overrideWrapDomain: 1, methods: { baseCase: { From 300f20af4208f5d090bacef53bf37d4d7d9af14d Mon Sep 17 00:00:00 2001 From: Gregor Date: Wed, 26 Jul 2023 11:03:01 +0200 Subject: [PATCH 2/3] better default for overrideWrapDomain, harden type --- src/bindings | 2 +- src/lib/proof_system.ts | 24 +++++++++++++++++------- src/snarky.d.ts | 6 +++++- src/tests/inductive-proofs.ts | 1 - tests/integration/inductive-proofs.js | 1 - 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/bindings b/src/bindings index fe98da73ae..d7b42632f8 160000 --- a/src/bindings +++ b/src/bindings @@ -1 +1 @@ -Subproject commit fe98da73ae008d9f15cb1a405b867a6099a664ce +Subproject commit d7b42632f84d6a1be0d76a7123ac0f28ba3c9143 diff --git a/src/lib/proof_system.ts b/src/lib/proof_system.ts index 6f3bbc6de5..36cb0e154f 100644 --- a/src/lib/proof_system.ts +++ b/src/lib/proof_system.ts @@ -203,8 +203,8 @@ function ZkProgram< InferProvableOrVoid>, Types[I] >; - }, - overrideWrapDomain?: number, + }; + overrideWrapDomain?: 0 | 1 | 2; } ): { name: string; @@ -247,10 +247,7 @@ function ZkProgram< sortMethodArguments('program', key, methods[key].privateInputs, SelfProof) ); let methodFunctions = keys.map((key) => methods[key].method); - let maxProofsVerified = methodIntfs.reduce( - (acc, { proofArgs }) => Math.max(acc, proofArgs.length), - 0 - ) as any as 0 | 1 | 2; + let maxProofsVerified = getMaxProofsVerified(methodIntfs); let compileOutput: | { @@ -500,13 +497,16 @@ type MethodInterface = { returnType?: Provable; }; +// reasonable default choice for `overrideWrapDomain` +const maxProofsToWrapDomain = { 0: 0, 1: 1, 2: 1 } as const; + async function compileProgram( publicInputType: ProvablePure, publicOutputType: ProvablePure, methodIntfs: MethodInterface[], methods: ((...args: any) => void)[], proofSystemTag: { name: string }, - overrideWrapDomain?: number, + overrideWrapDomain?: 0 | 1 | 2 ) { let rules = methodIntfs.map((methodEntry, i) => picklesRuleFromFunction( @@ -517,6 +517,9 @@ async function compileProgram( methodEntry ) ); + let maxProofs = getMaxProofsVerified(methodIntfs); + overrideWrapDomain ??= maxProofsToWrapDomain[maxProofs]; + let { verificationKey, provers, verify, tag } = await prettifyStacktracePromise( withThreadPool(async () => { @@ -777,6 +780,13 @@ function getStatementType< }; } +function getMaxProofsVerified(methodIntfs: MethodInterface[]) { + return methodIntfs.reduce( + (acc, { proofArgs }) => Math.max(acc, proofArgs.length), + 0 + ) as any as 0 | 1 | 2; +} + function fromFieldVars(type: ProvablePure, fields: MlFieldArray) { return type.fromFields(MlFieldArray.from(fields)); } diff --git a/src/snarky.d.ts b/src/snarky.d.ts index c71d14f8e4..e23ce0e918 100644 --- a/src/snarky.d.ts +++ b/src/snarky.d.ts @@ -537,7 +537,11 @@ declare const Pickles: { */ compile: ( rules: MlArray, - signature: { publicInputSize: number; publicOutputSize: number, overrideWrapDomain?: number } + signature: { + publicInputSize: number; + publicOutputSize: number; + overrideWrapDomain?: 0 | 1 | 2; + } ) => { provers: MlArray; verify: ( diff --git a/src/tests/inductive-proofs.ts b/src/tests/inductive-proofs.ts index b02cfc88f2..61c1c9dc1d 100644 --- a/src/tests/inductive-proofs.ts +++ b/src/tests/inductive-proofs.ts @@ -49,7 +49,6 @@ let MaxProofsVerifiedOne = Experimental.ZkProgram({ let MaxProofsVerifiedTwo = Experimental.ZkProgram({ publicInput: Field, - overrideWrapDomain: 1, methods: { baseCase: { diff --git a/tests/integration/inductive-proofs.js b/tests/integration/inductive-proofs.js index db56563947..5fe77f4ced 100644 --- a/tests/integration/inductive-proofs.js +++ b/tests/integration/inductive-proofs.js @@ -48,7 +48,6 @@ let MaxProofsVerifiedOne = Experimental.ZkProgram({ let MaxProofsVerifiedTwo = Experimental.ZkProgram({ publicInput: Field, - overrideWrapDomain: 1, methods: { baseCase: { From d4bb96a30ba432146ebd330bc765b2978d877ca0 Mon Sep 17 00:00:00 2001 From: Gregor Date: Wed, 26 Jul 2023 11:04:53 +0200 Subject: [PATCH 3/3] dump vks --- src/examples/regression_test.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/examples/regression_test.json b/src/examples/regression_test.json index 91a4f38882..e4ff32ba79 100644 --- a/src/examples/regression_test.json +++ b/src/examples/regression_test.json @@ -24,8 +24,8 @@ } }, "verificationKey": { - "data": "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", - "hash": "18690260876976802291715817512280117552676294343874295925150458068952569157018" + "data": "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", + "hash": "2813935477567471911945472912135723666086926604613380953939219591854886442388" } }, "Membership_": { @@ -45,8 +45,8 @@ } }, "verificationKey": { - "data": "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", - "hash": "21880379544706987287793058801297976248460193369023221222304859087850666284358" + "data": "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", + "hash": "28812212964470135900836892492131087173481318173911627862116629714967585797668" } }, "HelloWorld": { @@ -58,8 +58,8 @@ } }, "verificationKey": { - "data": "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", - "hash": "13210598299596520651263611816317487768586937667438633151317097001003400182018" + "data": "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", + "hash": "7104833979409889865960701411974743820397841506973575156047462011089691815858" } }, "TokenContract": { @@ -103,8 +103,8 @@ } }, "verificationKey": { - "data": "AACvBk89JEkjQXD9jwDmCYNP7cIgXZCzEfGNiQ6/u6bEOJYsc75igrYsRsSOBKAVDA8vSy/F4t49wK/fDVVOL+s63YMPr0+pZ0hKbnwUipz42DRF8hxhD5bzpVybK9a2EDT/sai/clEbU+E1/Eq52P8btzCpcdOlLlGB0pMMAs1yGKq4hUSI9RRpQv9Jpfst2hboKw2bR1Xza4fzSxHEHE4A1MoFELzuBaib5HL9YgrPkB5sm9pG8z1hhtkDB3P9USPYgPS5kxvUstp2T5dCdVF4e4DCGyUFX7pVPCYaj4QpG0YVkOGItrhWgMjMEw9nEJftuVDF4KASX+P2IVVyYVonaoegxDVafjLkwr7TiAh3b3485ZXbuDxWaZRDSE1w3RgbCITeQALqwirM1kH4zfos3pOVFnAC/jCkW8waj+6+GEkT3np4PJqogiy0MZg+XgEXipDXluuFbJ4p6Of+CKwZlvJBmLM3jSgeDL7XptIlKHqf1Zu/Pn4TLZ5xAd4IzB+G37c0VqhhNhqPrrg7AHW4WMyNQypTYqCfGBkW26GnFI6igpHAJIfZM4HuPND6N6mRKXPNrd2JYar660pi+gokAEM3o8QolJ+0lc2SJ9ar4Z4ciChrnaR0DSlNzPzKdmgnI7nfS0c2qOurx1l2fsdppFfbPgaw4kU4UpJJQlwgdyVDqUM9cn7eyBi5h2ibwmGJ5RIf2WYKfml69vTcGbFIALAHbX/7luVuZQR1NJifvRpZN2bIYltyxwN3OwjyKiQvabyio/uGZaWeNLyHXpsQOHvrr20Cv5gvdtg4mrzbrDAUCeIJ13p8zOCGmz7kgaS0KEmUNS+sVu9HpJkZWSsXEjVpEvo9Co18YpZwo97hX+Iqh2p3XWMnLWdG8IVMYk03Br7SwTso7q64r+Y6FzbiAJvHJAYYp2VedmDZv1Ju5xgZOes3ysWT9flAdxtn6D/csR6HT2Uic07foYNlG0gZPIpSu0IZkStJ5Facx6pKFiKyxpfA6t+xh1Hpy4cTIw8mUJ/zcL4vLkFUYoVlYmQ7V+8agWWUEzmHiW/2rxc6Dip3DrhEpvxD7bfVpztWZBS9/55WcZA5x9cwzwXOJmurIagrZkyc0rOZqvI7Yb2UrmvhQdkNnqdNFv0AEJey4xgJU/EdM1FQ3fCCgTb9CF0TkKH1pbUNGinqKJ3cdMwXqQbLn7g7MUFB6DAwDX+rSjFjOq/HPBFBnbIOgEXGbfATG6237PSw+mNHWE1aeOgQbHQ6+x8cYqmKYzDedOQKOKEpXsLVQSFb9+l2twMcTMi1ax5GmfThZ0ii/480wUj5RAi5MsLPtCc/CEqavCupBiGZqgQNdReTWpfbOruDFa2hLpl3bAjd0rtvR1fn91jS+5JEdz2NTusVLhDjwB91aSUP0YRFu/iWdQBy3pNr3SfS+7mBeg9krK4V5008s3wwTjQVfwEvqK2xNbi7R8f+lhyEYyaj9q5x9WPZp1rKtFqMKZWqGvFoPTphHwFrI7O8IO/PRbUkeFcUkHpwLAJO0sg5a4A0LETbooUQgOgW67839+w0OdpvxnECLSTrk/mf7SNoXD20Bi7aVrPeFSMpGCSvY3SuozF5NzY1baKt7HGvJu/tzrfvf3uGHd6ZXuF0Xgx72qGPv4fkCwHn/g2yjJI+cD3CAI95sczapRB+G7QRsCp/6zhbepLv5aLbeAu6XAOYne689RWj/pUotKB+zPX8PcRQwdEsVJRxUT07zhfmBV2W1JAQa5m7FW7/xDsOt8a3znz8LEkrE872FfU7Wl0xKYOF/FkSEF2xJXZHvTaPzR6hasFEq3p8h+BuZnU5WxEGVI0vQnGFaD54Q6qwNcbYgiZnFej4N6T/sCRIk6PwBwBUnREuh/AlDnv/t9jGwW6HK9Kv7vZngvUPuuG4sLReC/9o7gVjYNvRGPvga4GhzMu/TBuwn0xqfbvpNL6qQZYo3ORZGYZP/Rxo7EtykfGU0mON1MRoORvKkBlCWNEkLwPct1jO0qNTGTOLPzxjYpDwZowIQpnN/1Lyf+9lk1KaFyQQ6yhhG7dREqi6fADcgivKLf/q4gh+gx3GgJGq948WlZLEMbNTyhiA9E+StJKno2q6hCsv/XOMWqC9zOUvmCrS6xyQEXgndPp2OUOFlfEkalRnf1Dp7ydl24QzQKgLLwORig/dcNoPzKW7QBfaPmIrWNkHhDvjtHquS/MwhgU5hqfbqRJbHWLwS0DzWwBG4crCnpl14dUaHx3vxwQJmB8+WB4TshlXUt9LFCKffdSA2xcI6qkqBGSCgVPdUYpaBJ1FiXr/I+ZsVEELt84QnIvYi961C/s4gtDnmDk7ZNUTowh0gVSXoii7LWLrdceyqiW/ODY3TK71beOSexUc4B0=", - "hash": "10496292368106592452173929736243006680037905823242464704920835285506770705090" + "data": "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", + "hash": "689185501864261322326027342060319856720005989089582548285103739463232853275" } }, "Dex": { @@ -132,8 +132,8 @@ } }, "verificationKey": { - "data": "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", - "hash": "17912761919799339150744904791441386191857306632350158314261170304651023766819" + "data": "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", + "hash": "11406029703152671354609825171246156694243044087115277799444503126064262770438" } }, "Group Primitive": {