diff --git a/CCTF_Solutions_main/hash.zok b/CCTF_Solutions_main/hash.zok index 9a271b4..d80a46e 100644 --- a/CCTF_Solutions_main/hash.zok +++ b/CCTF_Solutions_main/hash.zok @@ -1,6 +1,9 @@ import "hashes/sha256/sha256Padded.zok" as sha256; +from "utils/casts.zok" import cast; -def main(public u32[8] hash,private u8[8] flag) { +def main(public u32[5] address,private u8[64] flag) { + u8[20] addr8 = cast(address); + u8[84] forHash = [...addr8,...flag]; u32[8] genHash = sha256(flag); log("Hash: {} {} {} {} {} {} {} {}",genHash[0],genHash[1],genHash[2],genHash[3],genHash[4],genHash[5],genHash[6],genHash[7]); //assert(genHash == hash); diff --git a/CCTF_Solutions_main/proving.key b/CCTF_Solutions_main/proving.key index 8030e06..1337c87 100644 Binary files a/CCTF_Solutions_main/proving.key and b/CCTF_Solutions_main/proving.key differ diff --git a/CCTF_Solutions_main/root.zok b/CCTF_Solutions_main/root.zok index 4c0466c..43ac1a2 100644 --- a/CCTF_Solutions_main/root.zok +++ b/CCTF_Solutions_main/root.zok @@ -1,9 +1,9 @@ import "hashes/sha256/sha256Padded.zok" as sha256; from "utils/casts.zok" import cast; -def main(public u32[8] hash,public u32[5] address,private u8[8] flag) { +def main(public u32[8] hash,public u32[5] address,private u8[64] flag) { u8[20] addr8 = cast(address); - u8[28] forHash = [...addr8,...flag]; + u8[84] forHash = [...addr8,...flag]; u32[8] genHash = sha256(flag); log("Hash: {} {} {} {} {} {} {} {}",genHash[0],genHash[1],genHash[2],genHash[3],genHash[4],genHash[5],genHash[6],genHash[7]); assert(genHash == hash); diff --git a/CCTF_Solutions_main/verification.key b/CCTF_Solutions_main/verification.key index 0b0a3e3..508a121 100644 --- a/CCTF_Solutions_main/verification.key +++ b/CCTF_Solutions_main/verification.key @@ -3,98 +3,98 @@ "curve": "bn128", "h": [ [ - "0x22a143b711ff4a90face484ff1496c2a008b70edb7ca94eb56d71ea91cccc2fa", - "0x20871b75c91ec5edcfced7c24ffdf041b4105f07fdf9155edd905e812e7f42cc" + "0x1987b081d9e79fef76bf8ca5327377d71d7437509afd5a3e639fc05ae530784e", + "0x14a4b99dbb69974e172da7ce995ce07eeeb3a9a02f644e3156b8bc99b47b044a" ], [ - "0x0785ab3ea76cee3828a9e1175c05c84283fa222ac3fce8191f87a82b64e31636", - "0x09096823f3bb349509a9c15dbba6e7eb5690dea94a81f5f97809a3ee934f6eab" + "0x27f79b506e2b01b967add82ddaba2492dba5f78a97fd8398861de263b850aa24", + "0x277d2eb080a9a5be34ab060bf66a2a2ef0fe3e57489f637cc84de35641e6579b" ] ], "g_alpha": [ - "0x2d3d82c22c65b92a1b1235ff060c593c19e88535116e4f37030f1599ba0b0857", - "0x17d67e76fdad58f9a4bab028b87b1e69dc43b90d932c617874fcc6fd0e29e7fd" + "0x1af16f7e1b4c377ab6c4030da9a6e419966b2964e135c2ffdd63a11227dab103", + "0x22abe7bd0b677d7af32a4cfa0f7cdb2899de18b93514c2a437e8bdc99b93d752" ], "h_beta": [ [ - "0x04eaf701cae25b7d2f8c77341b87beae57726bd25292818f4c1968c76ccb9c14", - "0x12637630d3c9bcfa124bb60f9f1a370533f48a4227b3f73ab8d363c3c5bec243" + "0x034c5050fee8d8c647a0c72a5cca62c0dd58ae94c5f0fa18daf31957e0141edc", + "0x075f8abf179be64d209a67922ce6b912ff0384307e533d992a2143a4ca9831bf" ], [ - "0x0450bf92a0622add3f4c91cd9eaad4ebd6fbba315b21090992e3285e397a83fc", - "0x0bb827c12688c53d9559bee1769d68bdf279a84828ce44dbfd970aa7920065d4" + "0x12c085e2b5c6c753d3990e792df8a5dbae7cd1b4ee2f577a04a79939b6d2818d", + "0x28ca6ae55e61c3515bbea752b559a1f23ca516635b800613210c6bf3f3d4b082" ] ], "g_gamma": [ - "0x11fdbbc4227f2f61b37623ef81514c36ef27b1dc55cbed203dce97d108c7a005", - "0x281625f041042595d0c7d62f2ce0f958fc59cc4f0d051f6e587248e917e61e2c" + "0x06bc8cfd3ce3960da1a807483fda0f2456444e25295f62df768294a759abf645", + "0x19a9cabdcef807d910d1017bcb39f95e5ddaa455bfb16876cd8c6e068f7761bf" ], "h_gamma": [ [ - "0x22a143b711ff4a90face484ff1496c2a008b70edb7ca94eb56d71ea91cccc2fa", - "0x20871b75c91ec5edcfced7c24ffdf041b4105f07fdf9155edd905e812e7f42cc" + "0x1987b081d9e79fef76bf8ca5327377d71d7437509afd5a3e639fc05ae530784e", + "0x14a4b99dbb69974e172da7ce995ce07eeeb3a9a02f644e3156b8bc99b47b044a" ], [ - "0x0785ab3ea76cee3828a9e1175c05c84283fa222ac3fce8191f87a82b64e31636", - "0x09096823f3bb349509a9c15dbba6e7eb5690dea94a81f5f97809a3ee934f6eab" + "0x27f79b506e2b01b967add82ddaba2492dba5f78a97fd8398861de263b850aa24", + "0x277d2eb080a9a5be34ab060bf66a2a2ef0fe3e57489f637cc84de35641e6579b" ] ], "query": [ [ - "0x1b947842fa89dd24916e414947c05670d9ba0dbcf6f9682f2e37f95507db0dc8", - "0x096cbf7107898a03be81bbec80e6d3772b3e01584d856dd4af7876fba6f90ea7" + "0x19dbe8348f43ecef2d4b03b22d26bef5c47a0ee33897281d560eb6f2b7179604", + "0x254b5cfd319603af200999ea6ec5d815cc60bccd35e89f22c6debde5931761a7" ], [ - "0x1f732aaf3d2f205783612c1ecdde48e2ddfd082eda2c796950ef23af1fb44b8e", - "0x08edccc6e33c9ab7c81bf58033a217c7f65e2984ba0c8fea06e1ad1a916d699f" + "0x083c8155781a86a5d98e5fbceed4ab089416c73919481bd8f70f6bf0612a43fc", + "0x3060a07934aecefb8258ea174c342e4ad291d639467dc5bf5d74d3547e375ff7" ], [ - "0x1bd620813ca0ccfbe2701abc703c0c2a7ecabe39935145292bee3abc4e5ee157", - "0x1828f72b551ba67c9cd2c763c23426b117f850786af7dae5e2a957e0665b8474" + "0x246d4fb03a3db773657d640b322db1406bebfb5479ef053ee517f521f6c37f79", + "0x198f2f89c1050429b6fe464ad2d73494f942b545fefe17b470a9a1b874acbfb1" ], [ - "0x21914239a94e727d8ee788aecef446cba53a2e2596916a6946578999a2a07505", - "0x2218f81765b28773690e9e9b5be4ceb49c4472c514921dd222a12c718c61f121" + "0x1ed7265627a3f8b208a2187bf89539b4e83c5e8cf82676e1fd63e9eb0a309867", + "0x2f3d4ce00c506694a26928e379d04e9e963217bdeddc9fcefa5ea4044455d432" ], [ - "0x1246a97ee147f11d472967ae104e0797671557aad3954ef6fc4bebdb0a048bf9", - "0x2223e3b2e9a9bc94b8bd3061a1ba48d389666da3f7f884f93c041d0f40818282" + "0x12c5865178af48e1a9403943b9d1d241945f2f5da0f0964ba239d79dcbb17928", + "0x24d2792c712065da2ea9fc18e7194806020398ee4dc9afd5332458808ce99b02" ], [ - "0x228ac68e80487613cabec4a0b235fda5c05fcc2bca8c367ba4ed6171924df3eb", - "0x1a36a43f0497edadbf08039f21fb55b99d48a8f69936a51c87d03893439310a5" + "0x102b4a6dda6f17b54c0d3b78c6c56b274730917bc7c7f54b6dc11ae0c1742882", + "0x053e0b76f387f7f96aaeec4703f70ce2deac61899601d3dff36051744c9f7bc9" ], [ - "0x1a6e4aeb8628b47ba9992a931bf2def678060f36a16f141bd649b056321ab615", - "0x03b558e2c5ecd75194b4394abce234d886f9701ed5946edbb16e4e7f07ec0ba4" + "0x00c4b4f168da284bd45c219ad6fd5cbe356b9682cc69bbab6682f5abeb8b7987", + "0x20c12f1b52241bda747ebdcb0b079b823cbb59fc1a071d847add5edf513cf733" ], [ - "0x03349d90dcad9369885487dee75837ab40c0e8ade24a686feceae3fc0953469b", - "0x0cb0ce11ba655c3f2a97e599be74a5779642a72d6788d204410e54042fdfebb8" + "0x21e0c81112e14d58b449c644c4b9cf01124c8eaf10a77ba349fe9794f540ae70", + "0x08c7f106184afaa926186e8f38fab6fed5b8a133f1791447d30796be6fb404cc" ], [ - "0x2c1db29c185b5bef50139e20e934bbac9f42af267daf64fc1e375bd1209cb365", - "0x0228adc7030bbdf75ebd6bd69e6f7e99389d9a27d8eae0516dcd7039d80c6154" + "0x1ee060d49d4285c8e530e0c3a225a61ea6ea6e471e3b22bf6404349c030c9591", + "0x0bbc0046b6199037f1d55fc4b9c884495cefb1af93f6b481f0fcdb4c8613c513" ], [ - "0x2163212e52702be32b7bce81c67701cd98ad83e6badc003a3b5a59eee12558ec", - "0x005b17d0532a07966787f8e654cf0497420950a5a5dbe948fe4191b83ab0bcd3" + "0x08e945dfe3e747c2892b0b852c22046475999d546c1c90c879fbf830735f9d74", + "0x0f84091467f4c8875135b21d71936150ca6199fd9eb360b133ff787597365d6b" ], [ - "0x141e3358d23685f57978419d07fccd67c9e6981c26adf5f34fea035c3ebc6e89", - "0x2abd0f7542f02165c7282026e57bdcd9f8e44afb3770bd9cf5c3ae3356c6a89c" + "0x23571e1a7f9f07961c7d2de1dfe555718a66cd34cfeb898d5073c216cfb86785", + "0x1b12c739283c6de16f7c74f6a82e6a85b5021004cc8dbe6e1e1b712005675c57" ], [ - "0x140774a33658eaa7f5d195972a8e176ca26c26e7d6cd6fe1ea7f837c81f082cf", - "0x0d084ac16c74a3095017e619a1fdd1edc4b57b6cd4105e8a4f72ffc772ce49c0" + "0x2f7bbf295d9301f9268e0bad56a89ea1c810545164c548d8134e14d9c6b3e124", + "0x2e4f2d8e11f0b7b940f6a853cef4ce96a09754f604780b45088d3a8278d1ccea" ], [ - "0x044775db49f089912ab525e4565ef30c592d77f53ca0ac67260ea8f693ed9d07", - "0x151f986852bec8685540f1c82e0a0107e0e255e2e684d603516636e7512c6bc0" + "0x2445c474cebfe51884e66485bbf0320c2f7282407e0dd987b95868aa95b36b7e", + "0x28e288ffb4a588f5f75b0caf3d4bd48d6206e201735045e64e3161fb68fc20c5" ], [ - "0x29822830733b283435c231b094b6c363c6ff95e266073f0eec9c1d91c475258d", - "0x0e41c9ad81ec496d63aeff4a937c302340fee326963d793348e6fe8094c43ee2" + "0x043032f915c2f2d561bc035796b72faf28da43d9f7126653e9618eaedc5e9859", + "0x0c85cec59b7bdd01c838505c929cae565926550859b12082e90f3bc04dd82125" ] ] } \ No newline at end of file diff --git a/CCTF_Solutions_main/verifier.sol b/CCTF_Solutions_main/verifier.sol index 3f38e04..67b620f 100644 --- a/CCTF_Solutions_main/verifier.sol +++ b/CCTF_Solutions_main/verifier.sol @@ -561,26 +561,26 @@ contract Verifier { Pairing.G1Point c; } function verifyingKey() pure internal returns (VerifyingKey memory vk) { - vk.h= Pairing.G2Point([uint256(0x22a143b711ff4a90face484ff1496c2a008b70edb7ca94eb56d71ea91cccc2fa), uint256(0x20871b75c91ec5edcfced7c24ffdf041b4105f07fdf9155edd905e812e7f42cc)], [uint256(0x0785ab3ea76cee3828a9e1175c05c84283fa222ac3fce8191f87a82b64e31636), uint256(0x09096823f3bb349509a9c15dbba6e7eb5690dea94a81f5f97809a3ee934f6eab)]); - vk.g_alpha = Pairing.G1Point(uint256(0x2d3d82c22c65b92a1b1235ff060c593c19e88535116e4f37030f1599ba0b0857), uint256(0x17d67e76fdad58f9a4bab028b87b1e69dc43b90d932c617874fcc6fd0e29e7fd)); - vk.h_beta = Pairing.G2Point([uint256(0x04eaf701cae25b7d2f8c77341b87beae57726bd25292818f4c1968c76ccb9c14), uint256(0x12637630d3c9bcfa124bb60f9f1a370533f48a4227b3f73ab8d363c3c5bec243)], [uint256(0x0450bf92a0622add3f4c91cd9eaad4ebd6fbba315b21090992e3285e397a83fc), uint256(0x0bb827c12688c53d9559bee1769d68bdf279a84828ce44dbfd970aa7920065d4)]); - vk.g_gamma = Pairing.G1Point(uint256(0x11fdbbc4227f2f61b37623ef81514c36ef27b1dc55cbed203dce97d108c7a005), uint256(0x281625f041042595d0c7d62f2ce0f958fc59cc4f0d051f6e587248e917e61e2c)); - vk.h_gamma = Pairing.G2Point([uint256(0x22a143b711ff4a90face484ff1496c2a008b70edb7ca94eb56d71ea91cccc2fa), uint256(0x20871b75c91ec5edcfced7c24ffdf041b4105f07fdf9155edd905e812e7f42cc)], [uint256(0x0785ab3ea76cee3828a9e1175c05c84283fa222ac3fce8191f87a82b64e31636), uint256(0x09096823f3bb349509a9c15dbba6e7eb5690dea94a81f5f97809a3ee934f6eab)]); + vk.h= Pairing.G2Point([uint256(0x1987b081d9e79fef76bf8ca5327377d71d7437509afd5a3e639fc05ae530784e), uint256(0x14a4b99dbb69974e172da7ce995ce07eeeb3a9a02f644e3156b8bc99b47b044a)], [uint256(0x27f79b506e2b01b967add82ddaba2492dba5f78a97fd8398861de263b850aa24), uint256(0x277d2eb080a9a5be34ab060bf66a2a2ef0fe3e57489f637cc84de35641e6579b)]); + vk.g_alpha = Pairing.G1Point(uint256(0x1af16f7e1b4c377ab6c4030da9a6e419966b2964e135c2ffdd63a11227dab103), uint256(0x22abe7bd0b677d7af32a4cfa0f7cdb2899de18b93514c2a437e8bdc99b93d752)); + vk.h_beta = Pairing.G2Point([uint256(0x034c5050fee8d8c647a0c72a5cca62c0dd58ae94c5f0fa18daf31957e0141edc), uint256(0x075f8abf179be64d209a67922ce6b912ff0384307e533d992a2143a4ca9831bf)], [uint256(0x12c085e2b5c6c753d3990e792df8a5dbae7cd1b4ee2f577a04a79939b6d2818d), uint256(0x28ca6ae55e61c3515bbea752b559a1f23ca516635b800613210c6bf3f3d4b082)]); + vk.g_gamma = Pairing.G1Point(uint256(0x06bc8cfd3ce3960da1a807483fda0f2456444e25295f62df768294a759abf645), uint256(0x19a9cabdcef807d910d1017bcb39f95e5ddaa455bfb16876cd8c6e068f7761bf)); + vk.h_gamma = Pairing.G2Point([uint256(0x1987b081d9e79fef76bf8ca5327377d71d7437509afd5a3e639fc05ae530784e), uint256(0x14a4b99dbb69974e172da7ce995ce07eeeb3a9a02f644e3156b8bc99b47b044a)], [uint256(0x27f79b506e2b01b967add82ddaba2492dba5f78a97fd8398861de263b850aa24), uint256(0x277d2eb080a9a5be34ab060bf66a2a2ef0fe3e57489f637cc84de35641e6579b)]); vk.query = new Pairing.G1Point[](14); - vk.query[0] = Pairing.G1Point(uint256(0x1b947842fa89dd24916e414947c05670d9ba0dbcf6f9682f2e37f95507db0dc8), uint256(0x096cbf7107898a03be81bbec80e6d3772b3e01584d856dd4af7876fba6f90ea7)); - vk.query[1] = Pairing.G1Point(uint256(0x1f732aaf3d2f205783612c1ecdde48e2ddfd082eda2c796950ef23af1fb44b8e), uint256(0x08edccc6e33c9ab7c81bf58033a217c7f65e2984ba0c8fea06e1ad1a916d699f)); - vk.query[2] = Pairing.G1Point(uint256(0x1bd620813ca0ccfbe2701abc703c0c2a7ecabe39935145292bee3abc4e5ee157), uint256(0x1828f72b551ba67c9cd2c763c23426b117f850786af7dae5e2a957e0665b8474)); - vk.query[3] = Pairing.G1Point(uint256(0x21914239a94e727d8ee788aecef446cba53a2e2596916a6946578999a2a07505), uint256(0x2218f81765b28773690e9e9b5be4ceb49c4472c514921dd222a12c718c61f121)); - vk.query[4] = Pairing.G1Point(uint256(0x1246a97ee147f11d472967ae104e0797671557aad3954ef6fc4bebdb0a048bf9), uint256(0x2223e3b2e9a9bc94b8bd3061a1ba48d389666da3f7f884f93c041d0f40818282)); - vk.query[5] = Pairing.G1Point(uint256(0x228ac68e80487613cabec4a0b235fda5c05fcc2bca8c367ba4ed6171924df3eb), uint256(0x1a36a43f0497edadbf08039f21fb55b99d48a8f69936a51c87d03893439310a5)); - vk.query[6] = Pairing.G1Point(uint256(0x1a6e4aeb8628b47ba9992a931bf2def678060f36a16f141bd649b056321ab615), uint256(0x03b558e2c5ecd75194b4394abce234d886f9701ed5946edbb16e4e7f07ec0ba4)); - vk.query[7] = Pairing.G1Point(uint256(0x03349d90dcad9369885487dee75837ab40c0e8ade24a686feceae3fc0953469b), uint256(0x0cb0ce11ba655c3f2a97e599be74a5779642a72d6788d204410e54042fdfebb8)); - vk.query[8] = Pairing.G1Point(uint256(0x2c1db29c185b5bef50139e20e934bbac9f42af267daf64fc1e375bd1209cb365), uint256(0x0228adc7030bbdf75ebd6bd69e6f7e99389d9a27d8eae0516dcd7039d80c6154)); - vk.query[9] = Pairing.G1Point(uint256(0x2163212e52702be32b7bce81c67701cd98ad83e6badc003a3b5a59eee12558ec), uint256(0x005b17d0532a07966787f8e654cf0497420950a5a5dbe948fe4191b83ab0bcd3)); - vk.query[10] = Pairing.G1Point(uint256(0x141e3358d23685f57978419d07fccd67c9e6981c26adf5f34fea035c3ebc6e89), uint256(0x2abd0f7542f02165c7282026e57bdcd9f8e44afb3770bd9cf5c3ae3356c6a89c)); - vk.query[11] = Pairing.G1Point(uint256(0x140774a33658eaa7f5d195972a8e176ca26c26e7d6cd6fe1ea7f837c81f082cf), uint256(0x0d084ac16c74a3095017e619a1fdd1edc4b57b6cd4105e8a4f72ffc772ce49c0)); - vk.query[12] = Pairing.G1Point(uint256(0x044775db49f089912ab525e4565ef30c592d77f53ca0ac67260ea8f693ed9d07), uint256(0x151f986852bec8685540f1c82e0a0107e0e255e2e684d603516636e7512c6bc0)); - vk.query[13] = Pairing.G1Point(uint256(0x29822830733b283435c231b094b6c363c6ff95e266073f0eec9c1d91c475258d), uint256(0x0e41c9ad81ec496d63aeff4a937c302340fee326963d793348e6fe8094c43ee2)); + vk.query[0] = Pairing.G1Point(uint256(0x19dbe8348f43ecef2d4b03b22d26bef5c47a0ee33897281d560eb6f2b7179604), uint256(0x254b5cfd319603af200999ea6ec5d815cc60bccd35e89f22c6debde5931761a7)); + vk.query[1] = Pairing.G1Point(uint256(0x083c8155781a86a5d98e5fbceed4ab089416c73919481bd8f70f6bf0612a43fc), uint256(0x3060a07934aecefb8258ea174c342e4ad291d639467dc5bf5d74d3547e375ff7)); + vk.query[2] = Pairing.G1Point(uint256(0x246d4fb03a3db773657d640b322db1406bebfb5479ef053ee517f521f6c37f79), uint256(0x198f2f89c1050429b6fe464ad2d73494f942b545fefe17b470a9a1b874acbfb1)); + vk.query[3] = Pairing.G1Point(uint256(0x1ed7265627a3f8b208a2187bf89539b4e83c5e8cf82676e1fd63e9eb0a309867), uint256(0x2f3d4ce00c506694a26928e379d04e9e963217bdeddc9fcefa5ea4044455d432)); + vk.query[4] = Pairing.G1Point(uint256(0x12c5865178af48e1a9403943b9d1d241945f2f5da0f0964ba239d79dcbb17928), uint256(0x24d2792c712065da2ea9fc18e7194806020398ee4dc9afd5332458808ce99b02)); + vk.query[5] = Pairing.G1Point(uint256(0x102b4a6dda6f17b54c0d3b78c6c56b274730917bc7c7f54b6dc11ae0c1742882), uint256(0x053e0b76f387f7f96aaeec4703f70ce2deac61899601d3dff36051744c9f7bc9)); + vk.query[6] = Pairing.G1Point(uint256(0x00c4b4f168da284bd45c219ad6fd5cbe356b9682cc69bbab6682f5abeb8b7987), uint256(0x20c12f1b52241bda747ebdcb0b079b823cbb59fc1a071d847add5edf513cf733)); + vk.query[7] = Pairing.G1Point(uint256(0x21e0c81112e14d58b449c644c4b9cf01124c8eaf10a77ba349fe9794f540ae70), uint256(0x08c7f106184afaa926186e8f38fab6fed5b8a133f1791447d30796be6fb404cc)); + vk.query[8] = Pairing.G1Point(uint256(0x1ee060d49d4285c8e530e0c3a225a61ea6ea6e471e3b22bf6404349c030c9591), uint256(0x0bbc0046b6199037f1d55fc4b9c884495cefb1af93f6b481f0fcdb4c8613c513)); + vk.query[9] = Pairing.G1Point(uint256(0x08e945dfe3e747c2892b0b852c22046475999d546c1c90c879fbf830735f9d74), uint256(0x0f84091467f4c8875135b21d71936150ca6199fd9eb360b133ff787597365d6b)); + vk.query[10] = Pairing.G1Point(uint256(0x23571e1a7f9f07961c7d2de1dfe555718a66cd34cfeb898d5073c216cfb86785), uint256(0x1b12c739283c6de16f7c74f6a82e6a85b5021004cc8dbe6e1e1b712005675c57)); + vk.query[11] = Pairing.G1Point(uint256(0x2f7bbf295d9301f9268e0bad56a89ea1c810545164c548d8134e14d9c6b3e124), uint256(0x2e4f2d8e11f0b7b940f6a853cef4ce96a09754f604780b45088d3a8278d1ccea)); + vk.query[12] = Pairing.G1Point(uint256(0x2445c474cebfe51884e66485bbf0320c2f7282407e0dd987b95868aa95b36b7e), uint256(0x28e288ffb4a588f5f75b0caf3d4bd48d6206e201735045e64e3161fb68fc20c5)); + vk.query[13] = Pairing.G1Point(uint256(0x043032f915c2f2d561bc035796b72faf28da43d9f7126653e9618eaedc5e9859), uint256(0x0c85cec59b7bdd01c838505c929cae565926550859b12082e90f3bc04dd82125)); } function verify(uint[] memory input, Proof memory proof) internal view returns (uint) { uint256 snark_scalar_field = 21888242871839275222246405745257275088548364400416034343698204186575808495617;