diff --git a/recursive_verification/contract/src/main.nr b/recursive_verification/contract/src/main.nr index b0de7f3..3c9f73b 100644 --- a/recursive_verification/contract/src/main.nr +++ b/recursive_verification/contract/src/main.nr @@ -6,10 +6,10 @@ pub contract ValueNotEqual { global HONK_PROOF_SIZE: u32 = 492 + 16; use aztec::{ - macros::{functions::{external, initializer}, storage::storage}, + macros::{functions::{external, initializer, internal}, storage::storage}, oracle::debug_log::debug_log_format, protocol_types::{address::AztecAddress, traits::ToField}, - state_vars::Map, + state_vars::{Map, PublicImmutable}, }; use bb_proof_verification::verify_ultrahonkzk_proof; use easy_private_state::EasyPrivateUint; @@ -17,13 +17,22 @@ pub contract ValueNotEqual { #[storage] struct Storage { counters: Map, Context>, + vk_hash: PublicImmutable, } #[initializer] #[external("private")] - fn initialize(headstart: u64, owner: AztecAddress) { + fn initialize(headstart: u64, owner: AztecAddress, vk_hash: Field) { let counters = storage.counters; counters.at(owner).add(headstart, owner); + + ValueNotEqual::at(context.this_address())._set_vk_hash(vk_hash).enqueue(&mut context); + } + + #[internal] + #[external("public")] + fn _set_vk_hash(vk_hash: Field) { + storage.vk_hash.initialize(vk_hash); } #[external("private")] @@ -32,9 +41,9 @@ pub contract ValueNotEqual { verification_key: [Field; HONK_VK_SIZE], proof: [Field; HONK_PROOF_SIZE], public_inputs: [Field; 1], - vk_hash: Field, ) { debug_log_format("Incrementing counter for owner {0}", [owner.to_field()]); + let vk_hash = storage.vk_hash.read(); verify_ultrahonkzk_proof(verification_key, proof, public_inputs, vk_hash); ValueNotEqual::at(context.this_address()).emit_in_public(12345).enqueue(&mut context); let counters = storage.counters; diff --git a/recursive_verification/data.json b/recursive_verification/data.json index 36d7724..c32f87c 100644 --- a/recursive_verification/data.json +++ b/recursive_verification/data.json @@ -16,97 +16,97 @@ "0x0000000000000000000000000000000000000000000000093fe27776f50224bd", "0x000000000000000000000000000000000000000000000004a0c80c0da527a081", "0x0000000000000000000000000000000000000000000000000001b52c2020d746", - "0x0000000000000000000000000000003ef429ec894000c4e68825fd69dc2fad2d", - "0x00000000000000000000000000000000001bcde6f34dbbebf81c00167257474f", - "0x000000000000000000000000000000dbed96241e23658d93073a933b8020c074", - "0x00000000000000000000000000000000002b419e5968e17cd6462ee9ada534a2", - "0x0000000000000000000000000000003d23a336d00252697af0bf8d8f859f5665", - "0x0000000000000000000000000000000000283c16e7500a895bc494813da4299e", - "0x0000000000000000000000000000003175c6e13068c9adb230c23424c5f24eff", - "0x00000000000000000000000000000000000006b8b5fd31a51602a306eaa0da14", - "0x0000000000000000000000000000004a6524519c3f34c055d10b3426fa7364a1", - "0x00000000000000000000000000000000001c1599a543bb87daaf14b33ebce9b4", - "0x0000000000000000000000000000007960469d86d58e3f963db8995e94b17d77", - "0x00000000000000000000000000000000001ca39f90dfbf0f0c2f3ca5c6cfe031", - "0x000000000000000000000000000000a73f7f09cd0910325e6e8912c4c7155f40", - "0x00000000000000000000000000000000000ec416296f79931b4352ee7d64dc06", - "0x000000000000000000000000000000f659b696e8bbd81643ad4f82809ab5dc1b", - "0x00000000000000000000000000000000000470413cb84a93d11a32ea07387549", - "0x000000000000000000000000000000cee175d889684a3eecbe1de6039768535a", - "0x000000000000000000000000000000000008e3b54e5b3a1d16d0514b2e132f3e", - "0x0000000000000000000000000000003e1f06a4877315731b1e8e06fa0977b399", - "0x00000000000000000000000000000000002ca73412a9305a1c86c20964db3df5", - "0x000000000000000000000000000000df8e3bed6e47e1ead0dbc6fca94be22ca2", - "0x00000000000000000000000000000000001633832b15a93422b5f190d37bdaf5", - "0x000000000000000000000000000000b64302a893fe2d7ee4e2190f836a46e6d3", - "0x0000000000000000000000000000000000205774a483678e38f01cb72b44986c", - "0x000000000000000000000000000000a8cdc8b6a5d3bfd21043ecab52b89edf63", - "0x00000000000000000000000000000000001b50fa0ed6d01c4974959a7f281718", - "0x0000000000000000000000000000003c347b7a333a59fce8167b9b93da5e177f", - "0x00000000000000000000000000000000001423aaee0398fd19f1ccd7c2a38ca2", - "0x0000000000000000000000000000004948a39f068f2c4cdac79354e70a38c680", - "0x000000000000000000000000000000000029cd6e65a1a77d9ad6d2dc113837ab", - "0x0000000000000000000000000000008d75c2265a55225b379c45d5faafa49df8", - "0x00000000000000000000000000000000001c6659c8d2f14d9c99964951977be8", - "0x0000000000000000000000000000002a95dc3cab3a26964956f8bc79b87b5716", - "0x000000000000000000000000000000000002bac7da6f9a05e8946861d19deb7a", - "0x000000000000000000000000000000e52f911ff582715c1fedaa59156c26e901", - "0x000000000000000000000000000000000005ffb081a271b60f92aa5016051b4e", - "0x088bbe110f987068c60bcbcf6b1dd91b5417eb28c91991308dae8e8da020e11d", - "0x272072467652540b9bc8fcbcf2b5d60f958a99e9753776e0f3d52453963b5edf", - "0x2277f41ae4767431612c5d8be67d6f05d01fd2484c6b1c9167deee19bc8a9b35", - "0x275f0acc21bd5530afba37419845cf083fd4ddf52312bddf93cdc751f9f04fc4", - "0x0846d5a65ccaf428b3357225c2f78444e156981af35403a771c3e59681d2b393", - "0x2efa2d51606027a36607b0d1608131f39c827a769dcdd0f0fff7b40b82b59e25", - "0x1a6d26c61aa80246494f33545bf6e5e0fdb036b2fd5437dbb9837a6a823aec05", - "0x1b9d5dadfb310667514244753d50f9a12e95f1c8be0cd287d3a37d27f1123532", - "0x2e215110ba16152cdb7c15bfbae6221c77dc76980754b8feba5eedf6cc4bdb09", - "0x258f56d9d607e0ae601d6de7042cca77dbe553aee0db569b1aa610ac8bd1771f", - "0x010a95cce6f0bae7614c1ce1690692ffe9dce3da0da3953d86bb6d19f94b2f12", - "0x05914f869b29379bef58ff0c426677083222162f39be007c082178580c2a4833", - "0x2d16afb5a9f610890bbdde5617ceb6ce0435800179bbfaf621f60806e88f7731", - "0x0546e75fc25385d8f3891c7c5f8839085ed105c873512e8a734ba69c224553e9", - "0x04920743e90108e782f6552828ba171edf033eec311ad0e9daddb3ef0ad8e9da", - "0x1177cd95183c47d10985db1d41da7468407e164c7a93995aa09b31d6ae3a3550", - "0x088edfda68e154aba982502df61cece7471844c3043f350c0972aacd50ff13fd", - "0x0691b8d8538ce8aea0c4b0f2a2374137ea0c830155d549205ae7ab6fc82fb2b2", - "0x2ab53ee17d6e33ac7e6a417cec9c18c7cdd9993aa8100fd47a831c82b0cd50c8", - "0x0dfa8143ff8414978d50a2aa3345c3bfc4a1be60253f9f8c2d82695c02da5d29", - "0x216ea85964c01d0de7ef8518c0ff68535b3bcbfa43bad1196e45ba52a30aa269", - "0x257e614dfa3d5dd44f40315a06306babd76a6c4e42a10974bd16c560e9174aa0", - "0x236e5f516d059af60589bbaaa3b1d8b8442a7d0dba11b275862515ad0305f70b", - "0x2744043364d4da9e1e91bb8af23b6b0b11b67d90a98bf466cb5c21306822144f", - "0x05871bf76d2e1fbc51b6bf0ca251335c81c1d31d129d10a65e27538580fc70a7", - "0x0d82e370de98690b4d23c118dc06af45eaa5dd4f85e801c55956f4f1dd73a8de", - "0x142154cfa29397423d750beb7baa737c5b91076a68af1bebdcd7556dc6dc5c56", - "0x148a24d986bb1cc274820b527b6b67c977be714dac101a1c3909efae4ea38316", - "0x112a23a4076b640dd4369d220cb0245b11a9a4edef7520a2302dd9e08fa7898f", - "0x212cf10b466cb3cf48d557f142daafceb64e22d1036cec7a17c9a18a3416dbf9", - "0x118ccdad1e99ed0db6ab495fd9217a7b466090d5f2c52e0a9616ff36c32b9415", - "0x1f3b3c5166b5a5860d15afcc8335ce62f15a0cec05e667097fd6407723ded3f2", - "0x0029e4ce8b51894846cccb5b89b1582c5e40ba601c5fe167aef9c7f1e6ec631f", - "0x03e6e44ff83ab993d18b21ca4f15217082b61b4fbcb5de3355a4ca41c7175046", - "0x29d9c22a5fd5f886391af9cf61bd59dd779fbeb62c2644d9f1db7ced2ebcbb1f", - "0x0e80071597707a0b39435dfbc0a86ea7b09c2aef702dee986d202b0ea301313d", - "0x1b25955ef982bec1bf614a842056c41a1042859322d49edb151e1aec52c6393a", - "0x2a8eb6a146cbed2eac192095da59875a616d48213fe5951383454fba88b85904", - "0x048ee442297514df0ebd10d547cad1fdd1813e75ecd5eb0630769052d19adf7f", - "0x164e86ebd1f305155b5f9ba753c227979c801ccb2ac59908bb5e8bbb797707ae", - "0x15b7fadb15e0dd4c93e4ddd9cdf0099c98541c784990a759b1abb031ffd5101a", - "0x1ad8bb96e522d9df6456815d547dd567a345283d790b2965dad68d1c617fabc0", - "0x27bee23350f1569d6eb768837b82f3d3260a71181b88816930cce1a057814f85", - "0x1f9fc17993cce5d7ec1b6b1bba9e47f727380b321e1501591774c5e5367a9335", - "0x0ff36cbd03d2b509c64125562b33f849dc89b4f134f09130dfdbb7c279ce61e5", - "0x1372ba8f28fce546d89b4d3f9454441385c1dc8e2421ee43f88798faa380c6a7", - "0x0e8bec129e2d1679cd5431cf0f6ee0a100d6a5f5b8f9e9a4a1994c52f6f28ef4", - "0x3004337c198d9788e557017fedb6d0fa9af4f7ec64f34f5ef396cb061c8f2211", - "0x13bc26408e34a24a5f04d9e50c896ec7c85634b109e940cfda1545167488b49a", - "0x00710cf877586b573399ad1433ac5afc2f18acf31486cc08d2a6ad0238fffb82", - "0x218dac5b64435a5c44c0c3578630bec167b00de55fcada333ec9ac6b671e2a51", - "0x205978ac6164fa11f289a0e8378874679b4178c3d4583f0e3193ac83fbc4f479", - "0x15eb5ce5ad6d36b2d554340d9e8e498676d903719a419cce592dd7b4fe9ad39d", - "0x1d93af83f0637a287117f56495bb76eefb69ec9952e2a2b61697fa1b29126c84", - "0x2d847ac4672a64baf1f7e566abb873504a40d0be9de66c3f59012695bda57ad4", + "0x000000000000000000000000000000477f5c556eef471043012a214f8391173c", + "0x00000000000000000000000000000000000c4c885d9a03685e00353b7d1829ee", + "0x00000000000000000000000000000089304f53390689e67799927aa274ae0759", + "0x0000000000000000000000000000000000248e2ca6e22a5456b5bab77f14bf41", + "0x0000000000000000000000000000009254d41ab67c1fc2505c09b12252307b16", + "0x00000000000000000000000000000000001609d72b60f018290ad31bafc87a31", + "0x000000000000000000000000000000b910b8ff4e1ee42dd030432eca3bb805ab", + "0x00000000000000000000000000000000001e0a009dbdccff3ff422c48b24506f", + "0x0000000000000000000000000000006fc376bdf7799e5abfc2ca4a61e9a9a391", + "0x00000000000000000000000000000000001935873d1973e094be0223c8222cc8", + "0x0000000000000000000000000000001f45b43b0a9c4881f921a0b273ce60e079", + "0x000000000000000000000000000000000015baa5b3c8fa2a6c1c8d3a34044db3", + "0x00000000000000000000000000000087ebeaf4379c970fc25ee2c319c120ba2b", + "0x000000000000000000000000000000000017272379f122c81144e63b4d974dd0", + "0x00000000000000000000000000000022997fdc50853632132ec74aa6210144a4", + "0x000000000000000000000000000000000018e05c3317f835abac7d7839bf5eb7", + "0x0000000000000000000000000000005bdfa83b480d0d4dcc22daa8b8b2a59fc2", + "0x00000000000000000000000000000000000abd864acecfc8c2c7936ea7dbbf97", + "0x00000000000000000000000000000051ca146fb47631a8ee05b029a5b19b2ec2", + "0x0000000000000000000000000000000000203b9d8d276a08cb6b9ef371b80ef6", + "0x0000000000000000000000000000003df6051dc39a1be28b3bb8ea687dd2d652", + "0x00000000000000000000000000000000000c7eb98b60a77b2b9de43e4426bce5", + "0x0000000000000000000000000000005153725d9fb98da3130635faeaa045e3d0", + "0x00000000000000000000000000000000002c5b30bca08ef92bca8c5e090cc890", + "0x00000000000000000000000000000074e042fc8c0de199297ac978e443ab3720", + "0x0000000000000000000000000000000000017b49f8384cd35737a8d1cc421572", + "0x000000000000000000000000000000fa8e295a3054547ac15548cab8f0ecf65a", + "0x00000000000000000000000000000000002406a7f9f5847f0771c2485e279651", + "0x00000000000000000000000000000043a56fe1f56bb074c19cf536f9b43fb57c", + "0x0000000000000000000000000000000000233ab1280f4dd7679a9b7e43612e8c", + "0x000000000000000000000000000000613c205f1f210752f1f21e974657f153f7", + "0x00000000000000000000000000000000002ef091617d3a9466eebe1af2e74c3a", + "0x0000000000000000000000000000005362a1e02246192b9f8b3859ec6429a27e", + "0x0000000000000000000000000000000000204c47dd80fda0f057ebd4e533c996", + "0x000000000000000000000000000000bddfc184a951c087f82ae6b0f06499e74d", + "0x000000000000000000000000000000000003201c5a218f5c0c3184ef05da77c9", + "0x0255b6652306cbad47e5c0bcf87a67098e05be4546cac55c9979bc360147bbca", + "0x12721d694abd9c490cf5f7ad7bac21da99f2828ef7397c6da1fd7ccfe6665d69", + "0x004bd41ae724d6cd51d1e89723d1e53ab8de1241477cd9f56c99082678d85c44", + "0x25be9c58d023529869df7bb3f8532eb8d471933dd64f4f96a4ecf37868ab6d6f", + "0x30319d4b008c69f14dd07c5d7c922b667b54264e35bfe53ed3e9c88c2d2f143a", + "0x0a8946758f5a9026c3993773475ffd124acc98a5ac29b0e46e2cf3da570fe99c", + "0x106ec116b9e5b57e260266f69f3133d3dbf8aaac8c1b25d62ef29bae3b17b571", + "0x2de2c51b603afd8662d2f6c745052510cbcbbc63128765e3f98bae0de9e22a9c", + "0x227f3991ea6d962ceffa88d75f9290d6fd90c92b7c6ddd4f7e51ac53f71dca90", + "0x05b85a4a94ca5da088e232d5494a60e64a619cd2a5b53fc399fe11ba6a3fd6dc", + "0x184986aaf1a5b90c235d908573b8225f85e5e38f9847cac1cf4c838d52e9b4ca", + "0x1510f9bf74087b7bf255dab06ff9fe0b949090d105ef25ea41e99d550157e874", + "0x1cacf0969e445dc64b9c3369e13d897b99897ec3d6187079f699434ac49ab47e", + "0x06792424e7ad5419870be000dea75e503c310428644215dd9ad6491b37549631", + "0x23a95422913e070bc89ef5db9b4cb1675419cc81c8f48cd9b2fda8df9b07ec68", + "0x19d34c3911a73cd4249e24493ab336e8c2756a5517dc59f8cbb0e43297cecebc", + "0x208bc6e91d48c032ffd3508acfab396ef25108b24d305821d7769a00a6ab169c", + "0x16f6ee15b8c488248c7f327d4e9f8415d3080f1aa5ba100776b9291f5385d6c4", + "0x02547d61c201351f36284aba645bd92e452bdf62487eeb4757116a86f3650510", + "0x0214e81c1b4dbc1905d89253de32175d1d4b7dca3223fce829bda25dfa343955", + "0x16c0f767ca0dda9e43c3372de912af1a4e54b1e21e8149774306949d994e4e1e", + "0x2c95872a958bc8eb77f9c6775c43cf76ca967c0f32abcafe135ef5576de14811", + "0x15ab17aa7ac21e36bcb010ed74507d1490b02ffbc4fe07b3034a97b9cb595f1c", + "0x135bb734c361eb287758a52727133b858b436601b435c67a03d8699174f93f9f", + "0x25ad4ecd231c034c6d6def817ed1a236db085b8528cd053ea3f438a9e709cb1a", + "0x0eecfb353fdb87ffbcd8c25c1ce7391bea326133b147d13a7039553835d53312", + "0x1a8bccafed435fa5a5ab7a720fb6b19507b20bc33fdf12a9f221490101834dec", + "0x1558e8777c629415445b0d8c0c30e4ede569c856c71b59a34deb0d4011617512", + "0x2c21c9f1d2edba656ef557a105d526d960d364f46e03ee641d9889ce7691e454", + "0x116aa0068c66841c9791c78f2a3f1c1ffc417b86d6b8c4d7a8f02988c6b5dd5b", + "0x2065eca0e1867f0697b55ce6c28757514cc282fe960dd1b9b969515d7d399ed4", + "0x051807e35d26e39beda87cc73c5f119e27e8dc4baf9bc2c0c15ada2cc91c07d1", + "0x000677e1567d6b49ea02b76c9012f9cfe65b3750b37611431eb40e456ae3e007", + "0x0919e6ca298849bbd5167d58f10c5b22d6257d689b097c65e61af8c774e2ebd2", + "0x06e86739bd37d26f531e871f301914d1663b69f3aeb937672e7ecaf048c8608d", + "0x15a40f7e6bef080f4f2441a21e7000eba271be455b7d26b874f69cee6a3d9ea8", + "0x2e9eb60c2641798aa3e5952edf4c993de291ee2c504cdc4b1effe3cb4f954321", + "0x0f85516ab1cfb754a06bf3b81b67187d0ba4247cf45ce63a03661a336d1071f7", + "0x0ecfcfeab2527d89730de35336eb0014e68e4156f640f76848e528fc0cd873c0", + "0x1f133dc9fe06a397810911c177beed6f6562c36a064b3763608020f7a6c2cfae", + "0x1c9951e27331a4e824b682e5e728b34b8b39def87ee0fbe097c0fe71cbc9d3d0", + "0x194344c956ee5f7ab0d77d4179d778a1863b5ead6c5d54790099d531e5594043", + "0x058c31654c49a3538314f133cd9c8c728b50b65583c037bdd53040171b8d8aec", + "0x2362bb3d453c15794f1bf70b537f10cc5b95f1b0a5543d5aec8bd9d4a66fb8a8", + "0x0aa5f6c24a6cd0f55f866e2a6610f3b2b68e7483f0608be5dcf09a6e4c36a506", + "0x13f6ffc2f05db9f9af31f00810f7ae934e4320067f51a3dd203e547ffa7240ab", + "0x1563dafb4b4af8de890709b4dc9a8c32ac2f3818ddb8013a289b6076422dd177", + "0x22a89e5b6bd181d166cd7b77d80dbf9154dec4b5f4eb481825cf1a172737556c", + "0x2dce9f33455c71a3032d528bf119c095a724d6155040fa328e4b6ff25d7c0398", + "0x0682220e0abc3bde3748e79aa36f79b1085322fb95b3ac32364e9d2e81b9edaa", + "0x10758acf118ee45ff67f18096d3d1f7187af51b4b9f33167b58e99f51b83b708", + "0x1cc2755b60036118838dbe74fa89656f0e27de8b16f82734eb3a692fe412ac60", + "0x1f078db029c49b9340a00598a641779cf0fbeeca0931f1ac305ccb167aaab1ac", + "0x140e19c6ca04da42909f986b6a94e66622a564d5cc9b7ebb1519adf88dc2d789", + "0x13f1448a2dd1ab001ca8d969b289011e5a18bf02918220fdff4b015f3f067f09", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -305,81 +305,81 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x297e3352e0ff6b81f37b7116deebfa39573eac53d7c69c95f03ceb70cbecb245", - "0x2eff18725a08e491994899b367168471f5067528d016d39e45d23588915f7cd8", - "0x05e00d2479603045168583adf2fdb59d0dcda907c4696cc4085cd435c93ca493", - "0x0601b082bea96ebea445b60fcd392e23f2281abf300945fdc120e45c21ed2fe3", - "0x13d828cda96d7e9fdd056a7fb2acef5d6e25e4b3d669e701ba8f4f04a7173be7", - "0x0db628aa302dd4639a88439f30d70496fd929d7701d883089c8ebd3a3a30e388", - "0x12594974b4dcc1fd0533dd2a72c91ad112b8446f76d30d3f08ac5edd62c376be", - "0x0a426f7ab6cbcebe3fa072b4c70e7aa0ade4956844b06ff6889082a1cd3482d2", - "0x26585c04bd34045d5bee79312ebf8ad02086ef6916cc89292e9d10c0d6c1845a", - "0x258ac34233ba91e65fa002f8a87d9af4beafaea6a0b57fc4377a07604bbd271d", - "0x0a5778fcc5f72246391f8c4df3848c6f95944fec986d04a4adac4618b95aec5d", - "0x0e891edbc17c53129094c5864920b52b3d6ecaee1928b2860d2500d067d878e5", - "0x117424dd5ca6a33df0638bc777408776f99a4232d3128db0a14dc9c3689c691a", - "0x2a5861d59bc62cf0a3987b11adc2c64748dc2ac977ae5dc1e6edcb5b5ef75e2e", - "0x12c231f379dbb33cd06fbca47b9a882cba957a0e02dc590d6d5e4fa86f1fe52e", - "0x005bc2c50c2460f076add2861044270d9303f143d0b539705337ed007c56c3c4", - "0x162b49095e3ab7168c401c3a229dfbdd6618e06be3a45e44e3a3b88a874edc53", - "0x0261c17e421bb5192beadb27f75f4d1ab72c733b7ee4cfebc1da1151666fd632", - "0x234dd6e0b4c40616fb82fbe79e7db8f8085e3c0fa518fd19e04410950effc178", - "0x2e628e3271503f2f215555d46eff7fe5e3ff8093a2d15f15ba918c40705a67c2", - "0x18c920f04b45f53ec49e9f21a1ae10fbb15ddc5be8bafcd98ca5da56a051f30c", - "0x14ce3befc9d0cfd803208850b63442b6d326294d1a414185f633856cd7d36904", - "0x0b4e04e7b38a6367f954e867bd1599fa0e76179c04b33fb562632f4fc58107a8", - "0x29a89004f9772360c0ee3cc0470a7a8f81c6a6faa0d42894125f097da21b609e", - "0x22b5423fd51e0c0605aa7d9dc7b6c434c92e91fb3961f7f23e859d2eabc7cb11", - "0x116b34998ddb2586ad7a76a6294eab8033d96c984072e970c34edd775761ed0b", - "0x250817dd8f267d66824e9c364dfda12dbcd5688566c2f635bd179897d3bf8c61", - "0x1ae381a3c786a0b1ebdc35c84a236f5f2292317a92b5f5011279246d98c4c1de", - "0x07bcc83411599ab932b828c7e2f8b46f9a65749d69aadc1bfd98ffc681c7afdd", - "0x2a45d03263dddcfbb29a0deb0fee768974e67d1736769006461c171a5fa3e167", - "0x16dc2aaa9f71bb63f634e9678d53e811cebc30e8b9ce60318ccd348ab5b321b1", - "0x09074c969cc1a28d13926023cf61e6d7ef3876545dc43bfa0b5e5b15827814c8", - "0x1490759f5d0bee1517cb694e7e5d8a9db64a2af96ac88648ae329e60cf38198f", - "0x16477674ee417dfe2759d8e312a09408399e2c727515ca20aed1b6e2837e9a12", - "0x1ad7ddfcd229cf0a269ffaa45273dfaf1356910b1670ad82b6ab4aee5f4d54af", - "0x236723b964c5e36f2ffa2312c27a6e1813ae0920ccf3a55c07b148752ae2fe75", - "0x1bb58a3fa766fd1872c5d642528fc179bebb2e52a28179abc3075588b3ba81f7", - "0x0317d0bc527c06519bc7ec84e21595323bb002530cf8af976b613111bcd4f28f", - "0x25f7e0445ba5eea44d8fb97c1c49ddec8f510cf45fef55d0ef2dc7c9988f6ae7", - "0x214db4f7d60feae6902d2b9ca20466284ac607e5f17fc39b0b84aeea9db9cdbb", - "0x2bade6c2b0783f3c9db0a2882ff8d95f53eacbc13d2c96becc71cc02f97878ed", - "0x03766c2d8c9797c26a3e5253be2b783caa1374d7767a2348e7fc6769574c0bef", - "0x000000000000000000000000000000070341e5ee23063a3ea06997bd7b95461c", - "0x00000000000000000000000000000000000e10f22c5d01fe8d1bf02c558b74f4", - "0x00000000000000000000000000000041b2f1d3a3b37402dae5cbe4f851d422eb", - "0x0000000000000000000000000000000000241ff30f12697723b87c0512de9416", - "0x00000000000000000000000000000092dc6bbd542b93bcff04c4ba528d7365c0", - "0x000000000000000000000000000000000001577b16bbf3a77aa23b49313ea4dd", - "0x000000000000000000000000000000a62a95d8a8600e0ed573cf5b0808b6b314", - "0x000000000000000000000000000000000004452820899edee9af042f189f9325", - "0x000000000000000000000000000000e0e6f1442c5c6d9f22889ea6807509bc75", - "0x00000000000000000000000000000000000870edbebd26f9c46c63fae1c0999f", - "0x000000000000000000000000000000613fa84241396620a4c47f46a026e404df", - "0x000000000000000000000000000000000014605cff61bb8874189501b507df70", - "0x1ed8ae3c0b4578e0c0e6995157a5db9a9a5b224fc84d6641db2457aad6fd5d2a", - "0x0000000000000000000000000000006f0b58fcb747bef3abce0a6374d9a1aa6b", - "0x00000000000000000000000000000000002a98db633c6c01067510f09d0a0715", - "0x000000000000000000000000000000f70b717a83cc3bd91983c11a2a2cd6a878", - "0x00000000000000000000000000000000002beb0285ee3069c6aaf1911dd6d96c", - "0x000000000000000000000000000000198300da5a98e46037bf7c0395ed4a0754", - "0x00000000000000000000000000000000002b3004e099cc2a3c11f55ccfe6e8cb", - "0x000000000000000000000000000000db82802ef55e2a649e654d29c6dd650018", - "0x000000000000000000000000000000000017a4790dbf808432dfe6dfb8debc9b", - "0x00000000000000000000000000000035511cb83bce1078aa2d8ad1bc8cb49785", - "0x000000000000000000000000000000000005fdb879b7ad6acd4a185fad547f3e", - "0x0000000000000000000000000000007acafcc4e734185b9cae8451b24af23613", - "0x0000000000000000000000000000000000042f406d4f11aac87eef978b5121c6", - "0x000000000000000000000000000000ff19346cb7b75b3a3075ced8f1645ecb40", - "0x000000000000000000000000000000000019d68f4dadec865ff3b6a6f57d060d", - "0x000000000000000000000000000000d18d150000e40286cdaa6140d97ee4872a", - "0x00000000000000000000000000000000002e9b73abb657bace0f419c782c4c62", - "0x000000000000000000000000000000463bbc47516526f681c37a263ce0aea94b", - "0x00000000000000000000000000000000001192421fd3f1778976cc965a4f7854", - "0x000000000000000000000000000000c40d2037325d6a9cd1bf2dd0db94086eff", - "0x00000000000000000000000000000000001ef2631af98b7f609a4847e3516e03", + "0x0b6eacce945b90cba354e37c3c94a12b1d117dbfbfbed802ed1ddf8f6d6abd90", + "0x12213d4e0a9d485d563c540b2dbbbbf3a158e0d59ab59f5dd027dba75a8a5a8d", + "0x0359b5c4a849b61ec102b6e2f18164bc2c8ff7a8675ad213cdeb329d2a2c3aab", + "0x014ccf2dfe8312f2dcb5e70793a3c787a89dfa2771041c4311ae7740ec8d6a5e", + "0x06b434ba5cd79d539e59625160023c798c2f83dd8e990eb07d96e79719db3c6a", + "0x2112c330d0badea5e56496d85059bbd9005350e3e18448aca4888fb977952649", + "0x0043cca41d11e4806cd5b5a26efc5094b865f50c7fe9818e5dd21b2b8c76aa68", + "0x23653a1ccd77d2082b29db89ed8061be5a84a0ba65209b4c357e2673cfd7c56d", + "0x0b5814b7733c37e41955bb62174ba04a9e8668f5e14ba0d99743e4d57b09509c", + "0x02f2d2a12db455a20addaa2fafc48fcd235044b873da2498945b26330fe54964", + "0x1971269b82b7fa537c4ebd719d3f9c82fee66c9fbb7325a5525bce7854d7dc9a", + "0x280ef10d679e647250d5b84da455f792dca0ae21d7c8a090c2b5ef5746407b35", + "0x1839f988be3a096f48a075f4890d878b6e14e432d4517afcb0e172f3e1cb2dbe", + "0x19a3b37bcebfa5df5f2d826aee737f89d5863a4d950fb1445e5bb053cc33732c", + "0x1479d59d2c4ff848191145f768f5c6148483a9c3bea9cedb3725eff3600e7389", + "0x21943b8805275c2562d2cc5a7c615ac807c03e818ef6a3724cc2172f183aa124", + "0x122f6f61e20c741047e83fe330068404c09a0e99891dd11332bdeb4448f5d368", + "0x001bc4e42f6f2600131321171ad33bc4f077861e4503039148e81d378153f67e", + "0x0eb9a8e6e7fdc369dbce5a83785eeb6366c463784f34096b5fd95ccdcdb25e1a", + "0x127da00822a78b95a8f4e4dccb6f965ba67e4c79eb55d0d5ee24dbca6fc5c276", + "0x163d3e0f1fbcd69b6b7d6b5a63d0ff384dac6a49e79fa3fc8809008414c5fa7e", + "0x1e39afe662e7059e77ba93f3ed744fc61b50396b670c9dce80268d3fb47b41e1", + "0x019a562d1aca49a58318bcaf9cf354b31c4268bae7e98ac9e0b09fb6588b2c87", + "0x2b996afe4b9043e7c9618fea117c57661bd59d7c185da13200b710c30f054559", + "0x15d7a3fd3f7f38e74ed8597e3f99324d260391d9ee29945d064b6d8612a05993", + "0x29e609b192f1d86518e0412b1ed10664a65aacb26ca31904f21bf11c7f0bdc8c", + "0x141103f06623de916285192d34091980b50b5c44389306d41052b42d4df181cd", + "0x28eaeec5e6e3c5ea8f5de7358a593151b60d1c60543a74cbcdf8a4b52ee4f72e", + "0x1910954c410f1e941f9943decde875694e6393d045880ac68a437673c47e8db3", + "0x08d8204eb4055f39e8aa805a41d083d7522cb9a494f90d5d6d176b9f9704f892", + "0x27904099f052e2b2cba73922546e376f4e59ec4605733abf7abdc4b308e74db6", + "0x2d60b45b01503873783045c1c35ce7fc779fa17bfc8782175062161502cd3742", + "0x041de34f030dfbbcc7c1d6310e72725dc5e18aaa26da58f47b3a46e6e5c2cb1b", + "0x00fbf7d7058807401835d75b88a5a7956f191e32abd06e5979b0bd7a5d59f317", + "0x1323ae8d9310a8f5bcead60ac54370e5f1330d497a73cf50819b2f191f9662fe", + "0x187772998c9a90f789aba20130c1da24717c7e22381b5b3b7885eb93c31a5864", + "0x090b9b8d7d421769a8d9eb88ed581344fabc9be22dac87b2f7c726bc38438cac", + "0x2b6be4445d294254c00232a4b7ab06cd186e06d2a8a099ac443fbf4d8d466f2f", + "0x21a92da7de45f3d681be59eff858c8773af3e1af051d2f39a4b43c99c69f6307", + "0x0376846a0ac50142acb50bdb5ed94151d6bb26ee8108e56a828a8fc5be8727d9", + "0x050a23e78cfa39212d8547fe8c8a5dfab8325abbb4c236b78b8336a83dbb383a", + "0x00ff4e720f43eeaa057201607c2f30fde8270e482975053bc415f7f12713b580", + "0x00000000000000000000000000000066213fbf30e97b4ca194293ea6d49a7b15", + "0x00000000000000000000000000000000000a4e0b427696f64b16f56aaa5d5142", + "0x0000000000000000000000000000006660f4fce6f4b40e27d355426f8a20bac1", + "0x000000000000000000000000000000000003f2e23ef488e1489b1576800c147d", + "0x000000000000000000000000000000d04073b59974996cee88fcce3b03f49880", + "0x00000000000000000000000000000000002f1822ad5219b73001b3c38dbff6b7", + "0x000000000000000000000000000000455646bb132395bbce1269e6623527ef28", + "0x0000000000000000000000000000000000265c4de6c904838c0ba6d27e781ab8", + "0x00000000000000000000000000000086e8f89bd463996d025be1e0109b8f5217", + "0x00000000000000000000000000000000000b3fc985189650bb31da3085142f86", + "0x00000000000000000000000000000094177d92c25e0e33c3d745b67339fe04e8", + "0x000000000000000000000000000000000003c311a63dfe66977f37b89e951392", + "0x2200a6d1765ac1161d89aede4db352260e571e6a564c6ccea301fec5d7d122a0", + "0x00000000000000000000000000000075b5e052e6cff1b44f3aa8c33fbda9a1e4", + "0x00000000000000000000000000000000002220d57cb34bcb559fc063d44a7378", + "0x0000000000000000000000000000000b4022034ff4dcbee061daf5a15d5f8bad", + "0x00000000000000000000000000000000000375fee0e59fe4a8ba387b29f3b508", + "0x000000000000000000000000000000302d0740996fb8d1acd7279e92cef2e600", + "0x0000000000000000000000000000000000007924b705a2f6b2b687c3d8c95d56", + "0x000000000000000000000000000000e0b0e94a5d2cacde661409490106038058", + "0x000000000000000000000000000000000004eec6c1375f0a87cdc0dd26be4fec", + "0x000000000000000000000000000000ea0845095a97386297f7e269d99995e3a6", + "0x00000000000000000000000000000000002da17752af2257222c29b167e68d95", + "0x000000000000000000000000000000437cb87b7858f71ed5d3b20ab8f71e942b", + "0x00000000000000000000000000000000000e3a64dbada4158c2ab1256e6d7597", + "0x000000000000000000000000000000e6409ffa23b70a21337c865a32cd5cef1a", + "0x00000000000000000000000000000000000b0a7773a8cb6dd1a5a91fc2d21075", + "0x0000000000000000000000000000005e175c6a5c23cd0fdc9b6c0139fdf768d1", + "0x0000000000000000000000000000000000261a40e0711745b0df11f78a931a99", + "0x000000000000000000000000000000ac4e0cfa925ea832d5fe395671e40d7cb7", + "0x00000000000000000000000000000000000cbf291314691a237a68539cf7a093", + "0x000000000000000000000000000000c035975a8a9846a6b371ec3ad85a47d93d", + "0x0000000000000000000000000000000000238971ade26975f001a334e28e61f0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -468,12 +468,12 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x2b08a87ee273a09bef6198a38ef56a98ffeec5ea68c53b6e595b0dc4c9daf00e", - "0x152ec3a3f3bdd589745cba2a45aa2b651ab523e91bdcb7c3b397d5567e901322", - "0x1f6d240a43913f0aeaaf35126b548cbd6f8c7b8e02f56bf9da9b0e42977bec9f", - "0x2859f2bfbe662897c4813e2507f2b615ad0e705f251476b1dc876576cb358ebe", - "0x0748c9534a3eb5a098b9502891cbb08ff28b7bfc963dedc0e1f7bd59350c54d9", - "0x006c21dba55b05de2c3f5667e2fa3e1914b1902f368307b3c9085b8a54866fde", + "0x2bf24fd889c8bed50d0c4ad0da2600fe700302c76ab18a8514f2cf477c1f0211", + "0x205899b747234cdde1886d3645a4980ea21cb0ae460736323d01508f9a08616a", + "0x0c00a521a2ef8eb61ddb020e7654c76c8cc71bf39d8b4d6a15eec41ecad60ba6", + "0x26b5bb941da09ca3b2260a2b4766a75c8595aab3248c74c2f78cf5be91f8056c", + "0x06b2ac980c84e583c8b1f35e668191fc71a253fe0a982b106ebaf2c2732c6480", + "0x2036d9a4b69ee5a7a3d57ebabee6458ece16b7e0846882094c331844d32903f7", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -496,18 +496,18 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x228c2416b81cb69025072ceb54c0f409817aae2d91e8ef396a483a0917886dc4", - "0x1a0be9d79336ee61aa42b44f1bf791839fcd7bf74f1e6bcffac9325b23a0287c", - "0x304c34c63f6a8c1e53d14db02be9a107ef929761b07e5e34d4558702f17f4b53", - "0x2c4e79263a27c099d5b680266dfdd1bccf3da81a25c453544ec7bb808cde6f45", - "0x0000000000000000000000000000003b169beef72995c50667898fe80ae12705", - "0x000000000000000000000000000000000011e67dc88295bab0a43813a3fcd8f6", - "0x000000000000000000000000000000704779fa0834df3519d8007b0fb6144a7d", - "0x00000000000000000000000000000000000319e12d3cd4388b8b0f21e9f66852", - "0x0000000000000000000000000000007096727dacfe92eb586d67858195cb963d", - "0x0000000000000000000000000000000000190850089776d7538095fbe3960bb9", - "0x0000000000000000000000000000000877c3522dbc321451875d13a2cfb379c8", - "0x0000000000000000000000000000000000040d8a987bb29c12a81aa8c25591c3" + "0x259be68f3223a776dccce98688f1f58c796c4d98e11569746d0c580531f0ea7d", + "0x28d898b4cb086b7b52791d47cd1b15e490d4df255028e4170153ef7d26ec2c75", + "0x2702612d671364d79d4dad12ab8b3e5c69ba6761bed722f6d8263f2a779668cd", + "0x2a93ae6c823e26a7d459a50c3f334896547f9653918be3cfdf5cb1cd15b34ee8", + "0x0000000000000000000000000000004c5207948ad1eb978cab3544f22a0479c9", + "0x000000000000000000000000000000000014a794f4c60c9f229081739d347d72", + "0x000000000000000000000000000000468558b98cd684e777ffdb964af52446ab", + "0x00000000000000000000000000000000001bb0efb217de6378595dab80205fb8", + "0x00000000000000000000000000000086c78b668ab2d77fc855b70dc45629b759", + "0x00000000000000000000000000000000001e361c121f0974be2c735f628b1612", + "0x000000000000000000000000000000d3bb533275f6445416365fcbea2b04bf8f", + "0x0000000000000000000000000000000000218f1c5343fd75dae1520f23c4a7fe" ], "vkAsFields": [ "0x0000000000000000000000000000000000000000000000000000000000000006", diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts index 5642256..9b72a08 100644 --- a/recursive_verification/scripts/run_recursion.ts +++ b/recursive_verification/scripts/run_recursion.ts @@ -82,7 +82,8 @@ async function main() { const valueNotEqual = await ValueNotEqualContract.deploy( testWallet, 10, - accounts[0].item + accounts[0].item, + data.vkHash as unknown as FieldLike ) .send({ from: accounts[0].item, @@ -100,7 +101,6 @@ async function main() { data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[], - data.vkHash as unknown as FieldLike ); await captureProfile(interaction, opts, "recursion"); diff --git a/recursive_verification/tests/recursive_verification.test.ts b/recursive_verification/tests/recursive_verification.test.ts index 97ef2f8..710ad5e 100644 --- a/recursive_verification/tests/recursive_verification.test.ts +++ b/recursive_verification/tests/recursive_verification.test.ts @@ -1,49 +1,90 @@ -import { describe, expect, test, beforeAll } from "bun:test" -import { AccountWalletWithSecretKey, Contract, createPXEClient, waitForPXE, type FieldLike, type PXE, TxStatus } from "@aztec/aztec.js" -import { getInitialTestAccountsWallets } from '@aztec/accounts/testing' -import { ValueNotEqualContract, ValueNotEqualContractArtifact } from '../contract/artifacts/ValueNotEqual' +import { describe, expect, test, beforeAll, afterAll } from "bun:test" +import type { FieldLike } from "@aztec/aztec.js/abi" +import { TxStatus } from "@aztec/aztec.js/tx" +import { AztecAddress } from "@aztec/aztec.js/addresses" +import { createAztecNodeClient } from "@aztec/aztec.js/node" +import { SponsoredFeePaymentMethod } from "@aztec/aztec.js/fee" +import { TestWallet } from "@aztec/test-wallet/server" +import { SponsoredFPCContract } from "@aztec/noir-contracts.js/SponsoredFPC" +import { getPXEConfig } from "@aztec/pxe/config" +import { ValueNotEqualContract } from '../contract/artifacts/ValueNotEqual' +import { getSponsoredFPCInstance } from '../scripts/sponsored_fpc' import data from '../data.json' -const PXE_URL = 'http://localhost:8080' +const NODE_URL = 'http://localhost:8080' -// Test timeout - proof verification can take some time -const TEST_TIMEOUT = 60000 // 60 seconds +// Test timeout - proof generation/verification can take several minutes +const TEST_TIMEOUT = 600000 // 10 minutes describe("Recursive Verification", () => { - let pxe: PXE - let owner: AccountWalletWithSecretKey - let user1: AccountWalletWithSecretKey - let user2: AccountWalletWithSecretKey + let testWallet: TestWallet + let ownerAddress: AztecAddress + let user1Address: AztecAddress let valueNotEqualContract: ValueNotEqualContract + let sponsoredPaymentMethod: SponsoredFeePaymentMethod beforeAll(async () => { - // Setup PXE client - console.log(`Connecting to PXE at ${PXE_URL}`) - pxe = await createPXEClient(PXE_URL) - await waitForPXE(pxe) - console.log('PXE client connected') - - // Setup wallets - const wallets = await getInitialTestAccountsWallets(pxe) - owner = wallets[0] - user1 = wallets[1] - user2 = wallets[2] - - console.log('Test wallets configured') - console.info('Owner address:', owner.getAddress().toString()) - console.info('User1 address:', user1.getAddress().toString()) - console.info('User2 address:', user2.getAddress().toString()) + // Setup TestWallet with PXE + console.log(`Connecting to Aztec Node at ${NODE_URL}`) + const aztecNode = await createAztecNodeClient(NODE_URL) + + // Setup sponsored FPC for fee payment + const sponsoredFPC = await getSponsoredFPCInstance() + sponsoredPaymentMethod = new SponsoredFeePaymentMethod(sponsoredFPC.address) + + // Create PXE config and TestWallet + const config = getPXEConfig() + // TODO: this hangs when set to true, need to debug + config.proverEnabled = false + + testWallet = await TestWallet.create(aztecNode, config) + + // Register the sponsored FPC contract + await testWallet.registerContract({ + instance: sponsoredFPC, + artifact: SponsoredFPCContract.artifact, + }) + console.log('TestWallet configured') + + // Create owner account + console.log('Creating owner account...') + const ownerAccountManager = await testWallet.createAccount() + console.log('Getting deploy method...') + const ownerDeployMethod = await ownerAccountManager.getDeployMethod() + console.log('Deploying account (this may take a while for proof generation)...') + const txReceipt = await ownerDeployMethod.send({ + from: AztecAddress.ZERO, + fee: { paymentMethod: sponsoredPaymentMethod }, + }).wait() + console.log(`Account deployed! Tx hash: ${txReceipt.txHash.toString()}`) + + const accounts = await testWallet.getAccounts() + ownerAddress = accounts[0].item + console.info('Owner address:', ownerAddress.toString()) }, TEST_TIMEOUT) + afterAll(async () => { + if (testWallet) { + await testWallet.stop() + } + }) + test("should deploy ValueNotEqual contract", async () => { const initialValue = 10 - valueNotEqualContract = await Contract.deploy( - owner, - ValueNotEqualContractArtifact, - [initialValue, owner.getAddress()], - 'initialize' - ).send({ from: owner.getAddress() }).deployed() as ValueNotEqualContract + const sendOpts = { + from: ownerAddress, + fee: { paymentMethod: sponsoredPaymentMethod }, + } + + valueNotEqualContract = await ValueNotEqualContract.deploy( + testWallet, + initialValue, + ownerAddress, + data.vkHash as unknown as FieldLike + ) + .send(sendOpts) + .deployed() expect(valueNotEqualContract.address).toBeDefined() expect(valueNotEqualContract.address.toString()).not.toBe("") @@ -52,14 +93,18 @@ describe("Recursive Verification", () => { }, TEST_TIMEOUT) test("should verify proof and increment counter", async () => { + const sendOpts = { + from: ownerAddress, + fee: { paymentMethod: sponsoredPaymentMethod }, + } + // Call increment with proof data const tx = await valueNotEqualContract.methods.increment( - owner.getAddress(), + ownerAddress, data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[], - data.vkHash as unknown as FieldLike, - ).send({ from: owner.getAddress() }).wait() + ).send(sendOpts).wait() expect(tx).toBeDefined() expect(tx.txHash).toBeDefined() @@ -71,8 +116,8 @@ describe("Recursive Verification", () => { test("should read incremented counter value", async () => { const counterValue = await valueNotEqualContract.methods.get_counter( - owner.getAddress() - ).simulate({ from: owner.getAddress() }) + ownerAddress + ).simulate({ from: ownerAddress }) // Initial value was 10, after increment should be 11 expect(counterValue).toBe(11n) @@ -81,14 +126,18 @@ describe("Recursive Verification", () => { }, TEST_TIMEOUT) test("should verify proof and increment counter again", async () => { + const sendOpts = { + from: ownerAddress, + fee: { paymentMethod: sponsoredPaymentMethod }, + } + // Second increment to verify the contract works multiple times const tx = await valueNotEqualContract.methods.increment( - owner.getAddress(), + ownerAddress, data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[], - data.vkHash as unknown as FieldLike - ).send({ from: owner.getAddress() }).wait() + ).send(sendOpts).wait() expect(tx).toBeDefined() expect(tx.txHash).toBeDefined() @@ -96,8 +145,8 @@ describe("Recursive Verification", () => { // Check counter value is now 12 const counterValue = await valueNotEqualContract.methods.get_counter( - owner.getAddress() - ).simulate({ from: owner.getAddress() }) + ownerAddress + ).simulate({ from: ownerAddress }) expect(counterValue).toBe(12n) @@ -107,27 +156,46 @@ describe("Recursive Verification", () => { test("should maintain separate counters for different users", async () => { const initialValue = 5 + // Create user1 account + const user1AccountManager = await testWallet.createAccount() + const user1DeployMethod = await user1AccountManager.getDeployMethod() + await user1DeployMethod + .send({ + from: AztecAddress.ZERO, + fee: { paymentMethod: sponsoredPaymentMethod }, + }) + .deployed() + + const accounts = await testWallet.getAccounts() + user1Address = accounts[1].item + + const sendOpts = { + from: user1Address, + fee: { paymentMethod: sponsoredPaymentMethod }, + } + // Deploy a new contract instance for user1 - const user1Contract = await Contract.deploy( - user1, - ValueNotEqualContractArtifact, - [initialValue, user1.getAddress()], - 'initialize' - ).send({ from: user1.getAddress() }).deployed() as ValueNotEqualContract + const user1Contract = await ValueNotEqualContract.deploy( + testWallet, + initialValue, + user1Address, + data.vkHash as unknown as FieldLike + ) + .send(sendOpts) + .deployed() // Increment user1's counter await user1Contract.methods.increment( - user1.getAddress(), + user1Address, data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[], - data.vkHash as unknown as FieldLike - ).send({ from: user1.getAddress() }).wait() + ).send(sendOpts).wait() // Check user1's counter const user1Counter = await user1Contract.methods.get_counter( - user1.getAddress() - ).simulate({ from: user1.getAddress() }) + user1Address + ).simulate({ from: user1Address }) expect(user1Counter).toBe(6n) // 5 + 1