From 7e63ca147eb91d72104bf936e62144beb3f54924 Mon Sep 17 00:00:00 2001 From: Oleksandr Brezhniev Date: Wed, 29 Nov 2023 22:43:42 +0000 Subject: [PATCH 1/9] Linked Proof PoCs: linked nullifier variation and multiQuery (3 or 10 queries at once in one linked circuit) --- circuits/linked/multiQuery.circom | 122 +++++++++++++++++++++++++++++ circuits/linked/nullifier.circom | 71 +++++++++++++++++ circuits/linkedMultiQuery10.circom | 5 ++ circuits/linkedMultiQuery3.circom | 5 ++ circuits/linkedNullifier.circom | 5 ++ 5 files changed, 208 insertions(+) create mode 100644 circuits/linked/multiQuery.circom create mode 100644 circuits/linked/nullifier.circom create mode 100644 circuits/linkedMultiQuery10.circom create mode 100644 circuits/linkedMultiQuery3.circom create mode 100644 circuits/linkedNullifier.circom diff --git a/circuits/linked/multiQuery.circom b/circuits/linked/multiQuery.circom new file mode 100644 index 00000000..27d5236e --- /dev/null +++ b/circuits/linked/multiQuery.circom @@ -0,0 +1,122 @@ +pragma circom 2.1.5; + +include "../../node_modules/circomlib/circuits/comparators.circom"; +include "../lib/linked/linkId.circom"; +include "../lib/query/query.circom"; +include "../lib/query/modifiers.circom"; +include "../lib/utils/safeOne.circom"; +include "../lib/utils/claimUtils.circom"; + +// This circuit generates nullifier for a given claim using linked proof +template LinkedMultiQuery(N, claimLevels, valueArraySize) { + + // linked proof signals + signal input linkID; + signal input linkNonce; + signal input issuerClaim[8]; + + // query signals + // TODO: add enabled flag for each query + // TODO: add query hash + signal input claimPathNotExists[N]; // 0 for inclusion, 1 for non-inclusion + signal input claimPathMtp[N][claimLevels]; + signal input claimPathMtpNoAux[N]; // 1 if aux node is empty, 0 if non-empty or for inclusion proofs + signal input claimPathMtpAuxHi[N]; // 0 for inclusion proof + signal input claimPathMtpAuxHv[N]; // 0 for inclusion proof + signal input claimPathKey[N]; // hash of path in merklized json-ld document + signal input claimPathValue[N]; // value in this path in merklized json-ld document + + signal input slotIndex[N]; + signal input operator[N]; + signal input value[N][valueArraySize]; + + // Modifier/Computation Operator output ($sd) + signal output operatorOutput[N]; + signal output merklized; + + // get safe one values to be used in ForceEqualIfEnabled + signal one <== SafeOne()(linkID); // 7 constraints + + component issuerClaimHeader = getClaimHeader(); // 300 constraints + issuerClaimHeader.claim <== issuerClaim; + + component merklize = getClaimMerklizeRoot(); + merklize.claim <== issuerClaim; + merklize.claimFlags <== issuerClaimHeader.claimFlags; + + merklized <== merklize.flag; + + signal slotValue[N]; + signal fieldValue[N]; + signal querySatisfied[N]; + signal isQueryOp[N]; + + for (var i=0; i Date: Fri, 1 Dec 2023 13:35:44 +0000 Subject: [PATCH 2/9] Add claimSchema input & circuitQueryHash output --- circuits/linked/multiQuery.circom | 42 +++++++++++++++++++++++++----- circuits/linkedMultiQuery10.circom | 2 +- circuits/linkedMultiQuery3.circom | 2 +- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/circuits/linked/multiQuery.circom b/circuits/linked/multiQuery.circom index 27d5236e..8c4e34f5 100644 --- a/circuits/linked/multiQuery.circom +++ b/circuits/linked/multiQuery.circom @@ -1,11 +1,12 @@ pragma circom 2.1.5; include "../../node_modules/circomlib/circuits/comparators.circom"; -include "../lib/linked/linkId.circom"; include "../lib/query/query.circom"; include "../lib/query/modifiers.circom"; -include "../lib/utils/safeOne.circom"; +include "../lib/linked/linkId.circom"; include "../lib/utils/claimUtils.circom"; +include "../lib/utils/safeOne.circom"; +include "../lib/utils/spongeHash.circom"; // This circuit generates nullifier for a given claim using linked proof template LinkedMultiQuery(N, claimLevels, valueArraySize) { @@ -16,8 +17,7 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { signal input issuerClaim[8]; // query signals - // TODO: add enabled flag for each query - // TODO: add query hash + signal input claimSchema; signal input claimPathNotExists[N]; // 0 for inclusion, 1 for non-inclusion signal input claimPathMtp[N][claimLevels]; signal input claimPathMtpNoAux[N]; // 1 if aux node is empty, 0 if non-empty or for inclusion proofs @@ -25,32 +25,45 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { signal input claimPathMtpAuxHv[N]; // 0 for inclusion proof signal input claimPathKey[N]; // hash of path in merklized json-ld document signal input claimPathValue[N]; // value in this path in merklized json-ld document - signal input slotIndex[N]; signal input operator[N]; signal input value[N][valueArraySize]; - // Modifier/Computation Operator output ($sd) - signal output operatorOutput[N]; + // Outputs signal output merklized; + signal output operatorOutput[N]; + signal output circuitQueryHash[N]; + + ///////////////////////////////////////////////////////////////// + // General verifications + ///////////////////////////////////////////////////////////////// // get safe one values to be used in ForceEqualIfEnabled signal one <== SafeOne()(linkID); // 7 constraints + // get claim header component issuerClaimHeader = getClaimHeader(); // 300 constraints issuerClaimHeader.claim <== issuerClaim; + // get merklized flag & root component merklize = getClaimMerklizeRoot(); merklize.claim <== issuerClaim; merklize.claimFlags <== issuerClaimHeader.claimFlags; merklized <== merklize.flag; + // Verify issuerClaim schema + verifyCredentialSchema()(one, issuerClaimHeader.schema, claimSchema); // 3 constraints + signal slotValue[N]; signal fieldValue[N]; signal querySatisfied[N]; signal isQueryOp[N]; + signal valueHash[N]; + ///////////////////////////////////////////////////////////////// + // Query Processing Loop + ///////////////////////////////////////////////////////////////// for (var i=0; i Date: Mon, 4 Dec 2023 14:51:51 +0000 Subject: [PATCH 3/9] Move common code for processing query and modifiers on claim to a separate template --- .../query/processQueryWithModifiers.circom | 88 +++++++++++++++++++ circuits/linked/multiQuery.circom | 80 ++++------------- .../credentialAtomicQueryV3OffChain.circom | 55 ++++-------- 3 files changed, 120 insertions(+), 103 deletions(-) create mode 100644 circuits/lib/query/processQueryWithModifiers.circom diff --git a/circuits/lib/query/processQueryWithModifiers.circom b/circuits/lib/query/processQueryWithModifiers.circom new file mode 100644 index 00000000..5e39c0e4 --- /dev/null +++ b/circuits/lib/query/processQueryWithModifiers.circom @@ -0,0 +1,88 @@ +pragma circom 2.1.1; + +include "../../../node_modules/circomlib/circuits/comparators.circom"; +include "query.circom"; +include "modifiers.circom"; +include "../utils/claimUtils.circom"; + +template ProcessQueryWithModifiers(claimLevels, valueArraySize){ + signal input claimPathNotExists; // 0 for inclusion, 1 for non-inclusion + signal input claimPathMtp[claimLevels]; + signal input claimPathMtpNoAux; // 1 if aux node is empty, 0 if non-empty or for inclusion proofs + signal input claimPathMtpAuxHi; // 0 for inclusion proof + signal input claimPathMtpAuxHv; // 0 for inclusion proof + signal input claimPathKey; // hash of path in merklized json-ld document + signal input claimPathValue; // value in this path in merklized json-ld document + signal input slotIndex; + signal input operator; + signal input value[valueArraySize]; + + signal input issuerClaim[8]; + signal input merklized; + signal input merklizedRoot; + + // Modifier/Computation Operator output ($sd) + signal output operatorOutput; + + // check path/in node exists in merkletree specified by jsonldRoot + SMTVerifier(claimLevels)( + enabled <== merklized, // if merklize flag 0 skip MTP verification + fnc <== claimPathNotExists, // inclusion + root <== merklizedRoot, + siblings <== claimPathMtp, + oldKey <== claimPathMtpAuxHi, + oldValue <== claimPathMtpAuxHv, + isOld0 <== claimPathMtpNoAux, + key <== claimPathKey, + value <== claimPathValue + ); // 9585 constraints + + // select value from claim by slot index (0-7) + signal slotValue <== getValueByIndex()(issuerClaim, slotIndex); + + // select value for query verification, + // if claim is merklized merklizeFlag = `1|2`, take claimPathValue + // if not merklized merklizeFlag = `0`, take value from selected slot + signal fieldValue <== Mux1()( + [slotValue, claimPathValue], + merklized + ); + + ///////////////////////////////////////////////////////////////// + // Query Operator Processing + ///////////////////////////////////////////////////////////////// + + // verify query + // 1756 constraints (Query+LessThan+ForceEqualIfEnabled) + signal querySatisfied <== Query(valueArraySize)( + in <== fieldValue, + value <== value, + operator <== operator + ); + + signal isQueryOp <== LessThan(5)([operator, 16]); + ForceEqualIfEnabled()( + isQueryOp, + [querySatisfied, 1] + ); + + ///////////////////////////////////////////////////////////////// + // Modifier/Computation Operators Processing + ///////////////////////////////////////////////////////////////// + + // selective disclosure + // no need to calc anything, fieldValue is just passed as an output + + ///////////////////////////////////////////////////////////////// + // Modifier Operator Validation & Output Preparation + ///////////////////////////////////////////////////////////////// + + // output value only if modifier operation was selected + operatorOutput <== modifierValidatorOutputSelector()( + operator <== operator, + modifierOutputs <== [ + fieldValue, // 16 - selective disclosure (16-16 = index 0) + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // 17-31 - not used + ] + ); +} \ No newline at end of file diff --git a/circuits/linked/multiQuery.circom b/circuits/linked/multiQuery.circom index 8c4e34f5..d3c83967 100644 --- a/circuits/linked/multiQuery.circom +++ b/circuits/linked/multiQuery.circom @@ -1,8 +1,7 @@ pragma circom 2.1.5; include "../../node_modules/circomlib/circuits/comparators.circom"; -include "../lib/query/query.circom"; -include "../lib/query/modifiers.circom"; +include "../lib/query/processQueryWithModifiers.circom"; include "../lib/linked/linkId.circom"; include "../lib/utils/claimUtils.circom"; include "../lib/utils/safeOne.circom"; @@ -66,70 +65,21 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { ///////////////////////////////////////////////////////////////// for (var i=0; i Date: Thu, 7 Dec 2023 15:47:15 +0200 Subject: [PATCH 4/9] linkID to output --- circuits/linked/multiQuery.circom | 11 +++++++++-- circuits/linked/nullifier.circom | 13 ++++++------- circuits/linkedMultiQuery10.circom | 2 +- circuits/linkedMultiQuery3.circom | 2 +- circuits/linkedNullifier.circom | 2 +- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/circuits/linked/multiQuery.circom b/circuits/linked/multiQuery.circom index d3c83967..e2024fcb 100644 --- a/circuits/linked/multiQuery.circom +++ b/circuits/linked/multiQuery.circom @@ -11,7 +11,6 @@ include "../lib/utils/spongeHash.circom"; template LinkedMultiQuery(N, claimLevels, valueArraySize) { // linked proof signals - signal input linkID; signal input linkNonce; signal input issuerClaim[8]; @@ -29,6 +28,7 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { signal input value[N][valueArraySize]; // Outputs + signal output linkID; signal output merklized; signal output operatorOutput[N]; signal output circuitQueryHash[N]; @@ -38,7 +38,7 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { ///////////////////////////////////////////////////////////////// // get safe one values to be used in ForceEqualIfEnabled - signal one <== SafeOne()(linkID); // 7 constraints + signal one <== SafeOne()(linkNonce); // 7 constraints // get claim header component issuerClaimHeader = getClaimHeader(); // 300 constraints @@ -60,6 +60,13 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { signal isQueryOp[N]; signal valueHash[N]; + signal issuerClaimHash, issuerClaimHi, issuerClaimHv; + (issuerClaimHash, issuerClaimHi, issuerClaimHv) <== getClaimHash()(issuerClaim); // 834 constraints + //////////////////////////////////////////////////////////////////////// + // calculate linkID + //////////////////////////////////////////////////////////////////////// + linkID <== LinkID()(issuerClaimHash, linkNonce); // 243 constraints + ///////////////////////////////////////////////////////////////// // Query Processing Loop ///////////////////////////////////////////////////////////////// diff --git a/circuits/linked/nullifier.circom b/circuits/linked/nullifier.circom index 0e47b304..17e04741 100644 --- a/circuits/linked/nullifier.circom +++ b/circuits/linked/nullifier.circom @@ -2,7 +2,7 @@ pragma circom 2.1.5; include "../../node_modules/circomlib/circuits/comparators.circom"; include "../lib/linked/linkId.circom"; -include "../lib/query/nullify.circom"; +include "../lib/utils/nullify.circom"; include "../lib/utils/safeOne.circom"; include "../lib/utils/claimUtils.circom"; @@ -10,7 +10,6 @@ include "../lib/utils/claimUtils.circom"; template LinkedNullifier(){ // linked proof signals - signal input linkID; signal input linkNonce; signal input issuerClaim[8]; @@ -19,9 +18,10 @@ template LinkedNullifier(){ signal input claimSubjectProfileNonce; signal input claimSchema; signal input verifierID; - signal input verifierSessionID; + signal input nullifierSessionID; signal output nullifier; + signal output linkID; // get safe one values to be used in ForceEqualIfEnabled signal one <== SafeOne()(userGenesisID); // 7 constraints @@ -49,10 +49,9 @@ template LinkedNullifier(){ (issuerClaimHash, issuerClaimHi, issuerClaimHv) <== getClaimHash()(issuerClaim); // 834 constraints //////////////////////////////////////////////////////////////////////// - // verify linkID + // calculate linkID //////////////////////////////////////////////////////////////////////// - signal calculatedLinkID <== LinkID()(issuerClaimHash, linkNonce); // 243 constraints - ForceEqualIfEnabled()(one, [calculatedLinkID, linkID]); + linkID <== LinkID()(issuerClaimHash, linkNonce); // 243 constraints signal linkIDisNotZero <== NOT()(IsZero()(linkID)); ForceEqualIfEnabled()(one, [linkIDisNotZero, one]); @@ -65,7 +64,7 @@ template LinkedNullifier(){ claimSubjectProfileNonce, claimSchema, verifierID, - verifierSessionID + nullifierSessionID ); // 330 constraints } \ No newline at end of file diff --git a/circuits/linkedMultiQuery10.circom b/circuits/linkedMultiQuery10.circom index a0ffc2e4..2345cf5d 100644 --- a/circuits/linkedMultiQuery10.circom +++ b/circuits/linkedMultiQuery10.circom @@ -2,4 +2,4 @@ pragma circom 2.1.1; include "linked/multiQuery.circom"; -component main {public [linkID]} = LinkedMultiQuery(10, 32, 64); // 163694 constraints +component main = LinkedMultiQuery(10, 32, 64); // 163694 constraints diff --git a/circuits/linkedMultiQuery3.circom b/circuits/linkedMultiQuery3.circom index ac3d3c48..69bc88ec 100644 --- a/circuits/linkedMultiQuery3.circom +++ b/circuits/linkedMultiQuery3.circom @@ -2,4 +2,4 @@ pragma circom 2.1.1; include "linked/multiQuery.circom"; -component main {public [linkID]} = LinkedMultiQuery(3, 32, 64); // 49300 constraints +component main = LinkedMultiQuery(3, 32, 64); // 49300 constraints diff --git a/circuits/linkedNullifier.circom b/circuits/linkedNullifier.circom index bec19d54..72998ad6 100644 --- a/circuits/linkedNullifier.circom +++ b/circuits/linkedNullifier.circom @@ -2,4 +2,4 @@ pragma circom 2.1.1; include "linked/nullifier.circom"; -component main {public [linkID, verifierID, verifierSessionID]} = LinkedNullifier(); +component main {public [verifierID, nullifierSessionID]} = LinkedNullifier(); From fca9c923a2cb7cd33b9b4e7b3c892c20766b3395 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Mon, 11 Dec 2023 14:42:29 +0200 Subject: [PATCH 5/9] add enabled[N] to linkedMultiQuery --- circuits/lib/query/processQueryWithModifiers.circom | 8 ++++++-- circuits/linked/multiQuery.circom | 2 ++ circuits/linkedMultiQuery10.circom | 2 +- circuits/linkedMultiQuery3.circom | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/circuits/lib/query/processQueryWithModifiers.circom b/circuits/lib/query/processQueryWithModifiers.circom index 5e39c0e4..8636546a 100644 --- a/circuits/lib/query/processQueryWithModifiers.circom +++ b/circuits/lib/query/processQueryWithModifiers.circom @@ -6,6 +6,7 @@ include "modifiers.circom"; include "../utils/claimUtils.circom"; template ProcessQueryWithModifiers(claimLevels, valueArraySize){ + signal input enabled; signal input claimPathNotExists; // 0 for inclusion, 1 for non-inclusion signal input claimPathMtp[claimLevels]; signal input claimPathMtpNoAux; // 1 if aux node is empty, 0 if non-empty or for inclusion proofs @@ -24,9 +25,11 @@ template ProcessQueryWithModifiers(claimLevels, valueArraySize){ // Modifier/Computation Operator output ($sd) signal output operatorOutput; + signal smtEnabled <== AND()(enabled, merklized); + // check path/in node exists in merkletree specified by jsonldRoot SMTVerifier(claimLevels)( - enabled <== merklized, // if merklize flag 0 skip MTP verification + enabled <== smtEnabled, // if merklize flag 0 or enabled 0 skip MTP verification fnc <== claimPathNotExists, // inclusion root <== merklizedRoot, siblings <== claimPathMtp, @@ -61,8 +64,9 @@ template ProcessQueryWithModifiers(claimLevels, valueArraySize){ ); signal isQueryOp <== LessThan(5)([operator, 16]); + signal querySatisfiedEnabled <== AND()(enabled, isQueryOp); ForceEqualIfEnabled()( - isQueryOp, + querySatisfiedEnabled, [querySatisfied, 1] ); diff --git a/circuits/linked/multiQuery.circom b/circuits/linked/multiQuery.circom index e2024fcb..80ab16e9 100644 --- a/circuits/linked/multiQuery.circom +++ b/circuits/linked/multiQuery.circom @@ -15,6 +15,7 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { signal input issuerClaim[8]; // query signals + signal input enabled[N]; // 1 if query non-empty, 0 to skip query check signal input claimSchema; signal input claimPathNotExists[N]; // 0 for inclusion, 1 for non-inclusion signal input claimPathMtp[N][claimLevels]; @@ -74,6 +75,7 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { // output value only if modifier operation was selected operatorOutput[i] <== ProcessQueryWithModifiers(claimLevels, valueArraySize)( + enabled[i], claimPathNotExists[i], claimPathMtp[i], claimPathMtpNoAux[i], diff --git a/circuits/linkedMultiQuery10.circom b/circuits/linkedMultiQuery10.circom index 2345cf5d..dcbb5954 100644 --- a/circuits/linkedMultiQuery10.circom +++ b/circuits/linkedMultiQuery10.circom @@ -2,4 +2,4 @@ pragma circom 2.1.1; include "linked/multiQuery.circom"; -component main = LinkedMultiQuery(10, 32, 64); // 163694 constraints +component main {public [enabled]} = LinkedMultiQuery(10, 32, 64); // 164791 constraints diff --git a/circuits/linkedMultiQuery3.circom b/circuits/linkedMultiQuery3.circom index 69bc88ec..dd524cea 100644 --- a/circuits/linkedMultiQuery3.circom +++ b/circuits/linkedMultiQuery3.circom @@ -2,4 +2,4 @@ pragma circom 2.1.1; include "linked/multiQuery.circom"; -component main = LinkedMultiQuery(3, 32, 64); // 49300 constraints +component main {public [enabled]} = LinkedMultiQuery(3, 32, 64); // 50383 constraints From df8f208d1418eccde38a4dbefdd6a60f5b1d11ab Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Tue, 12 Dec 2023 12:40:34 +0200 Subject: [PATCH 6/9] zero circuitQueryHash if enabled 0 --- circuits/linked/multiQuery.circom | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/circuits/linked/multiQuery.circom b/circuits/linked/multiQuery.circom index 80ab16e9..40597cc6 100644 --- a/circuits/linked/multiQuery.circom +++ b/circuits/linked/multiQuery.circom @@ -55,11 +55,8 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { // Verify issuerClaim schema verifyCredentialSchema()(one, issuerClaimHeader.schema, claimSchema); // 3 constraints - signal slotValue[N]; - signal fieldValue[N]; - signal querySatisfied[N]; - signal isQueryOp[N]; signal valueHash[N]; + signal queryHash[N]; signal issuerClaimHash, issuerClaimHi, issuerClaimHv; (issuerClaimHash, issuerClaimHi, issuerClaimHv) <== getClaimHash()(issuerClaim); // 834 constraints @@ -96,8 +93,7 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { ///////////////////////////////////////////////////////////////// // 4950 constraints (SpongeHash+Poseidon) valueHash[i] <== SpongeHash(valueArraySize, 6)(value[i]); // 6 - max size of poseidon hash available on-chain - - circuitQueryHash[i] <== Poseidon(6)([ + queryHash[i] <== Poseidon(6)([ claimSchema, slotIndex[i], operator[i], @@ -105,5 +101,7 @@ template LinkedMultiQuery(N, claimLevels, valueArraySize) { claimPathNotExists[i], valueHash[i] ]); + + circuitQueryHash[i] <== Mux1()([0, queryHash[i]], enabled[i]); } } \ No newline at end of file From d89acca83ef252efac517e53a43f32664821ea94 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Mon, 18 Dec 2023 12:25:43 +0200 Subject: [PATCH 7/9] add enabled one to ProcessQueryWithModifiers in v3 --- circuits/offchain/credentialAtomicQueryV3OffChain.circom | 1 + 1 file changed, 1 insertion(+) diff --git a/circuits/offchain/credentialAtomicQueryV3OffChain.circom b/circuits/offchain/credentialAtomicQueryV3OffChain.circom index 3d602a29..755d1be0 100644 --- a/circuits/offchain/credentialAtomicQueryV3OffChain.circom +++ b/circuits/offchain/credentialAtomicQueryV3OffChain.circom @@ -232,6 +232,7 @@ template credentialAtomicQueryV3OffChain(issuerLevels, claimLevels, valueArraySi ///////////////////////////////////////////////////////////////// // output value only if modifier operation was selected operatorOutput <== ProcessQueryWithModifiers(claimLevels, valueArraySize)( + one, claimPathNotExists, claimPathMtp, claimPathMtpNoAux, From f6cfc9d317bf508cb67fbeedd1fc5278e586c385 Mon Sep 17 00:00:00 2001 From: Oleksandr Brezhniev Date: Mon, 18 Dec 2023 17:05:12 +0000 Subject: [PATCH 8/9] Fix comment --- circuits/linked/multiQuery.circom | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circuits/linked/multiQuery.circom b/circuits/linked/multiQuery.circom index 40597cc6..49d3f553 100644 --- a/circuits/linked/multiQuery.circom +++ b/circuits/linked/multiQuery.circom @@ -7,7 +7,7 @@ include "../lib/utils/claimUtils.circom"; include "../lib/utils/safeOne.circom"; include "../lib/utils/spongeHash.circom"; -// This circuit generates nullifier for a given claim using linked proof +// This circuit processes multiple query requests at once for a given claim using linked proof template LinkedMultiQuery(N, claimLevels, valueArraySize) { // linked proof signals From 44d399f4a71cda87a082549602c83e05020a51a6 Mon Sep 17 00:00:00 2001 From: Oleksandr Brezhniev Date: Fri, 26 Jan 2024 13:29:52 +0000 Subject: [PATCH 9/9] Remove instantiations of unused circuits: linkedNullifier.circom, linkedMultiQuery3.circom --- circuits/linkedMultiQuery3.circom | 5 ----- circuits/linkedNullifier.circom | 5 ----- 2 files changed, 10 deletions(-) delete mode 100644 circuits/linkedMultiQuery3.circom delete mode 100644 circuits/linkedNullifier.circom diff --git a/circuits/linkedMultiQuery3.circom b/circuits/linkedMultiQuery3.circom deleted file mode 100644 index dd524cea..00000000 --- a/circuits/linkedMultiQuery3.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.1.1; - -include "linked/multiQuery.circom"; - -component main {public [enabled]} = LinkedMultiQuery(3, 32, 64); // 50383 constraints diff --git a/circuits/linkedNullifier.circom b/circuits/linkedNullifier.circom deleted file mode 100644 index 72998ad6..00000000 --- a/circuits/linkedNullifier.circom +++ /dev/null @@ -1,5 +0,0 @@ -pragma circom 2.1.1; - -include "linked/nullifier.circom"; - -component main {public [verifierID, nullifierSessionID]} = LinkedNullifier();