diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml index a744d49172a1..7430f285171a 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml @@ -1,18 +1,18 @@ -vk_tree_root = "0x0edaeafdba7c80d2e3e72ef861e773163946546cfd1a558862f7ad4fbca77f32" +vk_tree_root = "0x01fb1a72339cf08f7501ab121697829057b3c24baf6f3ec6a118d33b07bb08b0" is_private_only = false first_nullifier_hint = "0x0000000000000000000000000000000000000000000000000000000000000000" revertible_counter_hint = "0x0000000000000000000000000000000000000000000000000000000000000005" [tx_request] -args_hash = "0x0d5c944262527aa58a2dd4fc2a5d4eebdcf62a98ebcdd9066de9a780deb1e1ec" -salt = "0x00935c361dce5c2ea237fa92fe53e5dcf2776797f72900852bcc3d7121c07ea3" +args_hash = "0x25490e33a161339a3bf057450470a210334a08cfcf22fc857ebd2a6c3fbdffc8" +salt = "0x2882025f447268bea6863ad19e468fe817af6057013c81dffea00d7b3e9555f6" [tx_request.origin] - inner = "0x07f331dce41cdc40e4c82a65d49106535a5a07f6fc607eba2709f46de0472d37" + inner = "0x167e9ad24c298ee484e6e5ca5f357b9549a2d0f877172c41e73570ac73ef5ea7" [tx_request.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000065366335" + version = "0x0000000000000000000000000000000000000000000000000000000033346232" [tx_request.tx_context.gas_settings.gas_limits] da_gas = "0x0000000000000000000000000000000000000000000000000000000000c00000" @@ -24,7 +24,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000000f4240" [tx_request.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000099c" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000017886" [tx_request.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -37,22 +37,22 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 inner = "0x000000000000000000000000000000000000000000000000000000009d57a239" [[protocol_contracts.derived_addresses]] -inner = "0x05fda6959d16dc98152a2b02b05ac1c83dac4858e92f0c4d5a2f2180cb874426" +inner = "0x1dc64374e96b37a36d94b737a049efb4686f45f628457f5d6d74f5d45817944b" [[protocol_contracts.derived_addresses]] -inner = "0x302b2c7770f45b069c7c910e245c4bd3ed63f1877d0787c733085ee762f36c2a" +inner = "0x24b7c46308ae93c05e3bac8201935effd50b61504954eef96d7b0384f27ee80c" [[protocol_contracts.derived_addresses]] -inner = "0x0f88984a79b48bb60e8c14f08d7976fff1597d51ed70dd9b428bdea4a51f60af" +inner = "0x2f6b4852b69e0381596da99b3aad9b8d493312f47e1c0e3523928e010e1f9df2" [[protocol_contracts.derived_addresses]] -inner = "0x21fdf87e23092c43f7387494ceeff3022a0c4c70106e1e950d2f733d3106ddd9" +inner = "0x1c93c2cb51b87faa1ee26b5f933a8136642cec5cdf95216bdd9aa4873d4b38ff" [[protocol_contracts.derived_addresses]] -inner = "0x16e38dce316ebea7cadc3294d017c08a09e4bfee6de1823cc403e3210793b0eb" +inner = "0x2223ff211abddd65cb27b3fd9ef6cbcdfed867b1b5c2421f87624c6fe86c39ff" [[protocol_contracts.derived_addresses]] -inner = "0x092fffee147c9315d3310e6e03417e5bb9cc4c1456bb61c1ab3b8606fdc1f049" +inner = "0x090dc318c793abc5ee9a560dcf9f0ba54c73902086dd7258cd48da8c79ef201a" [[protocol_contracts.derived_addresses]] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -74,30 +74,30 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000010", "0x0000000000000000000000000000000000000000000000000000000000000010", "0x0000000000000000000000000000000000000000000000000000000000000baa", - "0x000000000000000000000000000000826cf468235f65b3cfff2d4a2aa0e29956", - "0x0000000000000000000000000000000000211a14b1c0ac7dad129277d33e324d", - "0x00000000000000000000000000000070ece040299e8c0fd61fc6b54d8b704eac", - "0x0000000000000000000000000000000000176c6b4a920ee81fb86c59c3704cf9", - "0x000000000000000000000000000000a634082e6a31290c4b592be42d1342e190", - "0x00000000000000000000000000000000002230f21ecea2cf437031c7addb648f", - "0x0000000000000000000000000000005b1e8e1c3b7a9592fe7be8b72e209b4b58", - "0x00000000000000000000000000000000000fc7deb1a3f7c05d6c194e1c83cebc", - "0x0000000000000000000000000000007119d5b272afcac6097f140813d63bd90b", - "0x00000000000000000000000000000000001815164cb5563fe1d5a6958e79d2c3", - "0x000000000000000000000000000000b413c96bd779cda00f20d7cd35bdb03e2d", - "0x000000000000000000000000000000000005ce86bb4846bd3aeebca21b6e4898", - "0x0000000000000000000000000000009a1a7c242d89bdc2388e6087c573ef1598", - "0x00000000000000000000000000000000000a230ee7885c2fe1ca9928c36f134b", - "0x0000000000000000000000000000007419c9c0c83e7b894fd39e2437f3004f8c", - "0x000000000000000000000000000000000023ab94e4bb963b6d06ea08b3ae76b3", - "0x000000000000000000000000000000cbff4df442f60df728ac2a0cfe9eb4eee9", - "0x000000000000000000000000000000000012275263d92e8ad3937a02e11a9b5a", - "0x0000000000000000000000000000006bc6ac7e29898719a0812e0fb35db6cd94", - "0x00000000000000000000000000000000000fb882183dd930b5f0002a20625dcc", - "0x000000000000000000000000000000ca604f8b8c9bb6b4345bf4805b4130dfba", - "0x00000000000000000000000000000000000ad0008af32ddf3222c62b09197526", - "0x0000000000000000000000000000004f3a80baec53c0655e9f9d742cd5ef058d", - "0x000000000000000000000000000000000015b1e0372c4dcade256f42699f0639", + "0x000000000000000000000000000000d2082cd6ed37f16501981bf2c32d2076ad", + "0x00000000000000000000000000000000000877ff6f76db5cd0acbdef8e251160", + "0x000000000000000000000000000000a3bd6685ce0505e6ded1026459ce00f152", + "0x0000000000000000000000000000000000075c4cc3ee351a5c7d65d8dd565d3c", + "0x0000000000000000000000000000001622842e6ffb76e4b8ce1b79308ab7f3e0", + "0x00000000000000000000000000000000000b5ceda701839cdc463c2cdec1c182", + "0x0000000000000000000000000000002880d5bc99e9a2cc7e11cb105ef454fc99", + "0x00000000000000000000000000000000000348df26c23fa6a5d051190e8f12d1", + "0x000000000000000000000000000000f4256b5555474d8a44d623187ab9ae2464", + "0x000000000000000000000000000000000026001125428661831ef2c8931df854", + "0x000000000000000000000000000000cd77f6bef08c634a0bdfba8a5ed2d509cc", + "0x000000000000000000000000000000000014f54817f5f167ee65f1d5ee103670", + "0x00000000000000000000000000000034c61c33f64b18cc25b81e7c700a5d3b1f", + "0x000000000000000000000000000000000009131c10d4afa6c23cb7a734898d37", + "0x000000000000000000000000000000f6a165b81c622fa4545a9f1775f7b03f07", + "0x00000000000000000000000000000000001c401bfb556db02a72188690ccd5c3", + "0x000000000000000000000000000000a93f210471c54d147ca7de0fdad0bc6de6", + "0x00000000000000000000000000000000001d5f061c09130ea3a9af0321ce16de", + "0x0000000000000000000000000000005c05840308ce5927d66d7bd75d6251ba10", + "0x0000000000000000000000000000000000243126faf7643f48cb8feba9377574", + "0x000000000000000000000000000000bd5108cab0738b36254117c792119505e1", + "0x000000000000000000000000000000000018179eea69aa1b965d6abe8bd35c70", + "0x000000000000000000000000000000c4612cd00f58c62df80837ed4ff9a379fe", + "0x00000000000000000000000000000000002ecfd77f787d0ddb34dba6ad98d594", "0x00000000000000000000000000000027317d2f0a800cd6ca71f5284fc2ad4daf", "0x00000000000000000000000000000000000e75f32de10f988b564ceda49217cb", "0x0000000000000000000000000000001e49f0f8d391333b66e08a8e5e28d4dd1d", @@ -106,66 +106,66 @@ key = [ "0x000000000000000000000000000000000025923106823db5731803856d66151f", "0x0000000000000000000000000000006e394258a16cec12457f70fd0d95f28fe3", "0x000000000000000000000000000000000002e287f91c886cc01d8e67624279b1", - "0x000000000000000000000000000000ad924986f37bb16ad74f4b6b394052161b", - "0x000000000000000000000000000000000017b927cf207af572cbf7c6c625572e", - "0x000000000000000000000000000000335962c88fbf5a493528a8687843822bd9", - "0x000000000000000000000000000000000000ea308a2c5ec3682a40aece8043f6", - "0x00000000000000000000000000000005e4a79f18cc3db76cea934f5fd79eea23", - "0x0000000000000000000000000000000000090eb3e2a881634ec88f0a846c2955", - "0x00000000000000000000000000000018bb0ee17914b0fc99b26d45dcd73422d4", - "0x00000000000000000000000000000000001470599906113325ce15780a5af2f8", - "0x0000000000000000000000000000007685a53f509132608569e3e5c82a7b06a8", - "0x000000000000000000000000000000000007d521a5d4f836567264d573acf17b", - "0x000000000000000000000000000000aabd1018e6bc29df43d8bb4e1b231bda37", - "0x00000000000000000000000000000000001330e0d55c83da973268ba73796f20", - "0x0000000000000000000000000000004f9144d824c1bb4f595adae3347d0c7c9a", - "0x0000000000000000000000000000000000136c6ad90e54bf1e429827b967ecd1", - "0x000000000000000000000000000000bf75a08334c32dac96296766efb9f6df1e", - "0x0000000000000000000000000000000000191c272191dc47369507091a6ed661", - "0x000000000000000000000000000000e9f747d317bf19d591dfd4e8c25a838e36", - "0x00000000000000000000000000000000000b797c2c5802b5f25403858dc3ea81", - "0x000000000000000000000000000000e66f663dd61df58d33f27222dc11d6d651", - "0x0000000000000000000000000000000000197e35e66e98b09bea4cb73cbefcdb", - "0x000000000000000000000000000000a213c292e1a0d08c70b29f8f19eae02ad8", - "0x0000000000000000000000000000000000081eb1d9272a668e6536901e1f2247", - "0x000000000000000000000000000000515e1441bda4d25ced1e39829ee69d89eb", - "0x0000000000000000000000000000000000026ddcbc535edb8c0f3df29353f6f8", - "0x000000000000000000000000000000b26d925ee2fac055f772285667d5f9a5c5", - "0x0000000000000000000000000000000000196a8093ff594051b7bdd11514ea27", - "0x000000000000000000000000000000720ada4facd5f0473100aea7ed01ff0631", - "0x000000000000000000000000000000000019d6f5c77cd062f3cd42e59073555a", - "0x00000000000000000000000000000046bf4e88d4a3b2011294843f22d867d903", - "0x000000000000000000000000000000000010ca9c3daadbe5445fa6976559912b", - "0x0000000000000000000000000000007a5ac067062ee27f6990027ae94d896ce4", - "0x0000000000000000000000000000000000194f066170fce249d4f5a884eb2376", - "0x000000000000000000000000000000b31c031ab96d6dd104ed5f8da9bc1fb7cc", - "0x00000000000000000000000000000000000b92cb3a63490a254c75438075ab6a", - "0x000000000000000000000000000000091ad818e56a81d03233a60b93942be42d", - "0x0000000000000000000000000000000000019dbff3221f15edf31ef8c2befe35", - "0x000000000000000000000000000000aad835714675a497189e6356da5223499d", - "0x000000000000000000000000000000000025f389036993b53070e7e3573704cb", - "0x000000000000000000000000000000d79f3ed9b1a7064d28971aa5b58fbdd7a7", - "0x0000000000000000000000000000000000234300fd53316dec6ddcd185fb8fe8", - "0x000000000000000000000000000000605af22844b1a4a1b609d8c0ed77137b58", - "0x00000000000000000000000000000000002b034ce97cfaa33ce8b2da19a60c99", - "0x000000000000000000000000000000d4cb7a439b09976176010b186268dfe017", - "0x000000000000000000000000000000000003446a50dc9317f61cbcb527941c6e", - "0x00000000000000000000000000000065b785e607eb325866fd35839cbd7e8c6d", - "0x000000000000000000000000000000000024e12f296e567c35c3be3befab230d", - "0x000000000000000000000000000000e0d4f87c2188721737f9a84651e8dd22b5", - "0x00000000000000000000000000000000000a170cdb27e2fd7f58da66dd89131b", - "0x000000000000000000000000000000fa64a21d48424be990a6e1f6d3dc0f1778", - "0x00000000000000000000000000000000002c76a8a9446981eabdbe3c36b9d161", - "0x0000000000000000000000000000001801c8f6ecbf03cdb17648cfbcd4e7aed2", - "0x00000000000000000000000000000000002f04989bbd6ac6864c547fe682c26f", - "0x00000000000000000000000000000050313e7c471045bff2b6ebbc06e1cbbd0c", - "0x0000000000000000000000000000000000077134cf9ce414e377dafe6a2c4464", - "0x0000000000000000000000000000002f0b8db9de11856b2e657885c486c589dd", - "0x00000000000000000000000000000000000e3b42348b88e9dcd7a8352816e043", - "0x000000000000000000000000000000d61bf8b32f9c4ea3a496bcd10d595e4e0b", - "0x00000000000000000000000000000000001aa7249a3a623ac35f234f2ed46d78", - "0x0000000000000000000000000000003bfc608a4b0814424daca8dbad9b0eaafd", - "0x00000000000000000000000000000000001701f2dbf89c7cdc3b9c58a888c14b", + "0x000000000000000000000000000000eedb3b99045e1843c092192b17949516a2", + "0x000000000000000000000000000000000004434244a586a1301643a7c96a9bc4", + "0x000000000000000000000000000000aa902ab57a54f27c4fce1f6511aa472abf", + "0x00000000000000000000000000000000001977009d002aa60a34a65a5877a7b4", + "0x00000000000000000000000000000062678943e0284e7b73a056fd779cbc9df3", + "0x00000000000000000000000000000000002356613f2e243d8741bb50c7ad0e96", + "0x000000000000000000000000000000892dc13da2ad70f567be16f74385feff2a", + "0x000000000000000000000000000000000018a5f13c979129662cd1bb60a64b34", + "0x00000000000000000000000000000014425ce9964927719c2a060081635d913d", + "0x0000000000000000000000000000000000303902edad67767d70a73938378151", + "0x0000000000000000000000000000005cecffa19426faacce4443c13b80ba1e85", + "0x00000000000000000000000000000000000bbe1bf967950418a611781d995325", + "0x00000000000000000000000000000091fb1e9173e7f8d08633c015f33f3892bd", + "0x000000000000000000000000000000000029915cafbe96f42cf6c82ae8ac5530", + "0x0000000000000000000000000000009333d1c965c3fc0e6d1b76947c8e4da88c", + "0x000000000000000000000000000000000017ceae0ae265205203a9b2027e996a", + "0x000000000000000000000000000000ca28df79355553e0492918fe5665c2b11a", + "0x0000000000000000000000000000000000209d4cc9fc328b2f13d4499a7b1f76", + "0x0000000000000000000000000000001b174406a46fa62fb6b35dbdea8afd2c01", + "0x0000000000000000000000000000000000087975b4664f75e84bc0e49702f851", + "0x0000000000000000000000000000008f538f6819d42ba905bd3197b581bd60a8", + "0x00000000000000000000000000000000002853bc795c7ec2e60170c538be0753", + "0x0000000000000000000000000000000f730e2abae4b1eb651728cfefd4f0cba4", + "0x00000000000000000000000000000000000c386f91d31fa638322c6fa5208243", + "0x0000000000000000000000000000007c8645f80b219ba0bb3afd0acc44d8be19", + "0x000000000000000000000000000000000002f0fb692607fa270c3cba3f39bcec", + "0x000000000000000000000000000000858ab11c6b3fbbd3136c8f59c6eab3824a", + "0x0000000000000000000000000000000000258ec8b278f1cdb7a291123d71917c", + "0x000000000000000000000000000000e9236792fad53684bd880e9c5cacdf8856", + "0x00000000000000000000000000000000002a146f19cf8c1b3de7fabe66332421", + "0x0000000000000000000000000000002a11d7a05b54e535b6daebbffea3f537a1", + "0x000000000000000000000000000000000001ebba807443e41846cb6e3cb9234f", + "0x00000000000000000000000000000050427f8a2c66edb1522c6f6b013a0f2b92", + "0x00000000000000000000000000000000002518228aa94a598d2576ad4c660068", + "0x0000000000000000000000000000007847d38b8212e98bc0b0b0b9e42af14081", + "0x0000000000000000000000000000000000042556941c9b61513a6598ee78fa5b", + "0x000000000000000000000000000000832a6f28a254eb27c13b1aec784cd269d6", + "0x000000000000000000000000000000000012316725d07981610ec1f9ab65d3f7", + "0x000000000000000000000000000000f983dbf1c5896cc476ee59a2b02e3e6a76", + "0x00000000000000000000000000000000000d893f82219d48b155c585c4feba11", + "0x000000000000000000000000000000b777606de26af13f7df5d37e7e3c9abcaa", + "0x00000000000000000000000000000000001856287837d710361ee28d1bf41391", + "0x00000000000000000000000000000076ef55d2b5643502118e1682e0fde67934", + "0x00000000000000000000000000000000000808ff75b58a2ce5ecdbed92bac6be", + "0x000000000000000000000000000000d092e069d3a344c007c713cc8c5698182e", + "0x00000000000000000000000000000000000ce23a58ad17ae2c1b9fb2178ef457", + "0x00000000000000000000000000000066ad666cd4bde18e9e5f76836ffc32122a", + "0x00000000000000000000000000000000001ae0103697a8ecc943f66cf152520e", + "0x000000000000000000000000000000e58167ceb101cd2e8950bfbae3c54a8acb", + "0x00000000000000000000000000000000001b5b8a23f81e76264e6ecf4c32e95d", + "0x000000000000000000000000000000044da349ef3f920a907ee5058419aa3f24", + "0x00000000000000000000000000000000002b04bb7f33e668fc3e15cb495fd721", + "0x000000000000000000000000000000839a00fea990729910558bbbb112d78a1e", + "0x00000000000000000000000000000000000e6c814ba76649ebbb8d2be4220a50", + "0x000000000000000000000000000000631bf83b1b731e5cdd981f256b292cc675", + "0x000000000000000000000000000000000012db44ec913e80e2c2ff04d515839f", + "0x00000000000000000000000000000042486d66110626833a634730623249e014", + "0x000000000000000000000000000000000018e226fcc2ac7b40467bc9ac5e7cfb", + "0x00000000000000000000000000000064b177e8d585e90603f57d2aeb4b5244b5", + "0x00000000000000000000000000000000001aad880d2362d55845f957d69433ee", "0x000000000000000000000000000000ec0ec1564ae58b39c0edd2867f215fe5da", "0x00000000000000000000000000000000001477c98ac05ee5578e5297f4998989", "0x000000000000000000000000000000d19bbdf9ea0b6565b3ee75add4fef0c180", @@ -186,10 +186,10 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000005d9e1187753713930b05a1ae9f3756f2f4", - "0x00000000000000000000000000000000000c95f95d64f8cdc2c8d0e80d947368", - "0x000000000000000000000000000000cfbc9f184c478cad04da1f6226a132a5f1", - "0x00000000000000000000000000000000001ff8b04afc1da6597246f4e6d6dee3", + "0x0000000000000000000000000000002c979382e67e905e3055c20982d0f99ce5", + "0x000000000000000000000000000000000006c57a1c03ec0c733fc712f67f353b", + "0x000000000000000000000000000000d0135bb613049214d2f61aa6adc5aa043f", + "0x0000000000000000000000000000000000012ba461d237b067fda969e94fc965", "0x0000000000000000000000000000006bcc7a05ff95a96b289424c5f733670d96", "0x000000000000000000000000000000000000c43726f75b6fda0de22ce0e0dfab", "0x0000000000000000000000000000001d0a09d7178ec93bad7858f96e64f0b48d", @@ -199,10 +199,10 @@ key = [ "0x0000000000000000000000000000008158112a46310a62b849f6dd562c2c8694", "0x000000000000000000000000000000000012905e96c2c8db0865d6938f75a324" ] -hash = "0x069bf8258d2cb240bbabac7e1f932b99d7f7323534a03a25ad6c8e0b9b5232f0" +hash = "0x0938864f81ccbb524fd80b2f6ef071c08d9f75327e559b34fa4c20740c450008" [private_call.verification_key_hints] -contract_class_artifact_hash = "0x02a3efc75cf792f3633bd4264021c8eb053917574927f940432a7b9bdd206e95" +contract_class_artifact_hash = "0x1b4aa1fc0195d6fa7e85a0467480d8445bdf710f53203a4a2c8970eebf272dc1" contract_class_public_bytecode_commitment = "0x0b6876c78f7b2457ee660998e706d985c9253307ef17a653976269d37ec4392a" updated_class_id_delayed_public_mutable_values = [ "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -213,8 +213,8 @@ updated_class_id_delayed_public_mutable_values = [ [private_call.verification_key_hints.function_leaf_membership_witness] leaf_index = "0" sibling_path = [ - "0x01784a907d21406cc83c5ac5d6fb811523d480f0884f25d27b47162832c56033", - "0x2c14b08017942ea0c35d14a9d24658a5fd6be67d7e52b139f5ee060de5941472", + "0x004622b26d746a0b1dc3183bce082260aefb20c68a20179be94d532f3c88c05b", + "0x2894c0bd5bebc47137ba266d6dc71efd964cf0afef43ad1fe3f0fc7d20446759", "0x0e1ce4f11f4d51a7d3136abbd625315fff3876d322e46ad8401da96f8e43a614", "0x1a0ca5eecb1430479902264f04e557160a4666fb42bb8b283c6397e3d17ac937", "0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854", @@ -223,39 +223,39 @@ updated_class_id_delayed_public_mutable_values = [ ] [private_call.verification_key_hints.public_keys.npk_m.inner] -x = "0x0101fcdd31ad3d836a4e50165bb657aa7f9ecb98dd3d2866939355335ff24c9d" -y = "0x0fe03e5fc6772cc3fe8461695ff4cfeac8b8660f311b84f01f6929a477fb9110" +x = "0x01ad382996fc0295491cf000bad39762d81604e18e8d8e38ce38234aac4b8713" +y = "0x2037b452899bcd95dcc99555831535d0bd04dcf88bd2a133f97018879d9b53ff" is_infinite = false [private_call.verification_key_hints.public_keys.ivpk_m.inner] -x = "0x006d91df3b469a3fb6c99d488174c15ae03db9ed5a17ea5b52b53d45caf1bc82" -y = "0x272c03e0028f9acbbdcd75d14034e1dd044d700c9db07e997550bb16393295ed" +x = "0x0807996cff6c22de22879491fb8934ba762eb8dabdc6e5bd6717ba54dc7d1381" +y = "0x289cf7591a241195e376b08525c1c8f49ea2dd11d61b8eb2e3ea417b58f25ec0" is_infinite = false [private_call.verification_key_hints.public_keys.ovpk_m.inner] -x = "0x28cb218c1ec6122f26ae97c1726e2aca1af13f4f22a9d3ad54b9dbb21a582543" -y = "0x07d8693af5e5382a60ec4ba0a69c5e0752971835b39069fd99d6260b92a63283" +x = "0x2a01639d05e18f2980fa3a7e24c5a9fd064f95852d304fa055505602a0e29198" +y = "0x18729edd53e9d68f56bbf54ac58a0472bf179ce29cca25a48a6538d9c63ca87e" is_infinite = false [private_call.verification_key_hints.public_keys.tpk_m.inner] -x = "0x0348c00b8e79b4ea80b0ecc5ecf88e25353741d5e04c81e9645fed082e42a83d" -y = "0x13ea6f27599b2b048949ddd6a1b6b3b198a357f826f07ad8c4e9e76f5f6846f3" +x = "0x10d58ddd6896ba9f7d529b2c2aafd17e2a9228ca74bf5f6b40864c4b42b75767" +y = "0x006f3ad230135e7daaaf42de4f5d3a41a799c5d9c2bf5b45d47a3a4ee761fb52" is_infinite = false [private_call.verification_key_hints.salted_initialization_hash] - inner = "0x1cdb6679fd8f0db7c1f70dbf2b49b76b010e78208f063176407b65fddab98cc4" + inner = "0x0880c5535f46d3b556eea8ad605bad49dddc38e9220e7c73f41b8c196c865773" [private_call.verification_key_hints.updated_class_id_witness] - leaf_index = "116" + leaf_index = "118" sibling_path = [ - "0x01a5aa76a80549701c19f5fc9c4f84fecbafcede1bab34d4e5eb0af97730e419", - "0x2bd1ca18edfc93d8ab9b844c54e3552c900ddeee72d7d25532293ceaebaff881", + "0x091ea6554dd0710492a5535dd346e93e1f19f4fc66b07572cd46a988b5cd72f4", + "0x2b9d7a752493f48e82a038f8bf74d880146b59d5a2e37a1d88f0ba5b525ce664", "0x29208ecc66c5a3f559855bd44866e51a9e1b053fe1b60786941ab50664c75667", - "0x08032f0bbff0f47f23ba2459cb525f0482c0f42611c3728a696ac185bfaba5ab", + "0x0fe778a684ee1f122ea59e8f35082b1e512044f6e524af93a1051821c1ec00d2", "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x0181677bea9d5ea251adfc7047cd940dd6e96d4274608655547d48d84eeb4862", + "0x2a390171f2f78d323feed9a691a501a7724af376d6cae3cdd6913b3e1ba00698", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -291,13 +291,807 @@ is_infinite = false ] [private_call.verification_key_hints.updated_class_id_leaf] - slot = "0x0000000000000000000000000000000000000000000000000000000000000074" - value = "0x0000000000000000000000000000000000000000000000000000000000000000" - next_slot = "0x05523b7c504edfbfd05c270172887660751236c92c6c4b6b5f9f0e7f1da1ecbf" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000075" + slot = "0x0a8d73c1dc0dd4f132a14ac0510fd6dd6838abf67721db09702e61ea40ab483a" + value = "0x00000000000000000000000000000000000000000000021e19e0c9bab2400000" + next_slot = "0x0ddf42da33a89beb434777255df99e3c590fbede238bf9f59f0591a7730d432b" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000077" + +[private_call.side_effect_uniqueness_hints] +note_hash_read_request_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +nullifier_read_request_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +note_hashes_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +nullifiers_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +private_call_requests_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +public_call_requests_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +l2_to_l1_msgs_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +private_logs_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +contract_class_logs_hashes_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000003" + end = "0x0000000000000000000000000000000000000000000000000000000000000003" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000005" + end = "0x0000000000000000000000000000000000000000000000000000000000000005" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000048" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs] -args_hash = "0x0d5c944262527aa58a2dd4fc2a5d4eebdcf62a98ebcdd9066de9a780deb1e1ec" +args_hash = "0x25490e33a161339a3bf057450470a210334a08cfcf22fc857ebd2a6c3fbdffc8" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000002" end_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000006" @@ -305,7 +1099,7 @@ expected_non_revertible_side_effect_counter = "0x0000000000000000000000000000000 expected_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000000" min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000005" is_fee_payer = true -include_by_timestamp = "0x000000000000000000000000000000000000000000000000000000006925b970" +include_by_timestamp = "0x00000000000000000000000000000000000000000000000000000000692ac9a1" [app_public_inputs.call_context] is_static_call = false @@ -314,7 +1108,7 @@ include_by_timestamp = "0x000000000000000000000000000000000000000000000000000000 inner = "0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000" [app_public_inputs.call_context.contract_address] - inner = "0x07f331dce41cdc40e4c82a65d49106535a5a07f6fc607eba2709f46de0472d37" + inner = "0x167e9ad24c298ee484e6e5ca5f357b9549a2d0f877172c41e73570ac73ef5ea7" [app_public_inputs.call_context.function_selector] inner = "0x000000000000000000000000000000000000000000000000000000009d57a239" @@ -324,7 +1118,7 @@ include_by_timestamp = "0x000000000000000000000000000000000000000000000000000000 [[app_public_inputs.note_hash_read_requests.array]] [app_public_inputs.note_hash_read_requests.array.inner] -inner = "0x0ba31263cf0b7e0445682cdd303ef549bc0f08d8fe282793db171210377f23df" +inner = "0x264d03ddee47192ff933dd8a6dea6826196cc1e39215163f55181010f86ff75f" counter = "0x0000000000000000000000000000000000000000000000000000000000000003" [app_public_inputs.note_hash_read_requests.array.contract_address] @@ -1097,13 +1891,13 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.public_call_requests.array.inner] is_static_call = true - calldata_hash = "0x0428acdef0628810f8409a6d244d40703cfb7db9aa71dcdef13d9348b64a6066" + calldata_hash = "0x15c8814c1ecdd0d3cfe2e68d409afc0e66fe49dfa502c2d522e2efcbe315ad1f" [app_public_inputs.public_call_requests.array.inner.msg_sender] - inner = "0x07f331dce41cdc40e4c82a65d49106535a5a07f6fc607eba2709f46de0472d37" + inner = "0x167e9ad24c298ee484e6e5ca5f357b9549a2d0f877172c41e73570ac73ef5ea7" [app_public_inputs.public_call_requests.array.inner.contract_address] - inner = "0x0df9d5578ec61c1c2a0fcf5828b9b5dd1057ddd6335178b4ab46f2b72cce903e" + inner = "0x2ad94f8b5bedf546630768a074f1d9eed552ddebf62124e310f1145d42c42cf9" [[app_public_inputs.public_call_requests.array]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2071,12 +2865,12 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.anchor_block_header] - sponge_blob_hash = "0x1690bfcde18b9d39e1b69f1d274e653e340efa9d0434b9339f9d91631bc3a56b" - total_fees = "0x0000000000000000000000000000000000000000000000000000000008e78850" - total_mana_used = "0x000000000000000000000000000000000000000000000000000000000000f124" + sponge_blob_hash = "0x192117c0b2b61d5cd54a40e49890b7885836b57543406aa29253385c038ccd4e" + total_fees = "0x0000000000000000000000000000000000000000000000000000000207f2040a" + total_mana_used = "0x000000000000000000000000000000000000000000000000000000000000f109" [app_public_inputs.anchor_block_header.last_archive] - root = "0x1d8cbfd158f232a206f3ce5e4dc939f5eb79c9d6d493e5501ea576607b799b79" + root = "0x1698275776708edb05d7a266b2c9ec367761e2d2880b8351124759c6bc811aab" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [app_public_inputs.anchor_block_header.state.l1_to_l2_message_tree] @@ -2084,37 +2878,37 @@ root = "0x0d582c10ff8115413aa5b70564fdd2f3cefe1f33a1e43a47bc495081e91e73e5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000002000" [app_public_inputs.anchor_block_header.state.partial.note_hash_tree] -root = "0x279bed2dff65bf4c71346cfefaf7da4aa9a6b78f35207f85874d17c9a5df0cfb" +root = "0x12594dd0532f6878c6911c140ce7a3a7f3290255234a527626ec7c88a0dc0ff3" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [app_public_inputs.anchor_block_header.state.partial.nullifier_tree] -root = "0x0f21e45441dee2af87084e04f64cadb7f6bcc3a887c3108ffb8ab60b5137f7ef" +root = "0x22a9075d4c4b4577d9f26a178d8aaaad7703ef737bc42844e3bfa6a61d8a03ef" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [app_public_inputs.anchor_block_header.state.partial.public_data_tree] -root = "0x0fb4f19322664f0fdf265206a9c80bf59c88c760ca2313d4eac0a3b0c6085c31" +root = "0x09923b3a3c41078e7bce6f43cf9f4d557d6942383951e2dbc64ba6da9eb1ecdd" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008b" [app_public_inputs.anchor_block_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000065366335" + version = "0x0000000000000000000000000000000000000000000000000000000033346232" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000022" - timestamp = "0x00000000000000000000000000000000000000000000000000000000692467f0" + timestamp = "0x0000000000000000000000000000000000000000000000000000000069297821" [app_public_inputs.anchor_block_header.global_variables.coinbase] - inner = "0x000000000000000000000000b476929343e25eae412082fd6785d57991942218" + inner = "0x000000000000000000000000b1d9d47da1fb6effcafe07337c149daf03083a89" [app_public_inputs.anchor_block_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.anchor_block_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000974" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000002283a" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000065366335" + version = "0x0000000000000000000000000000000000000000000000000000000033346232" [app_public_inputs.tx_context.gas_settings.gas_limits] da_gas = "0x0000000000000000000000000000000000000000000000000000000000c00000" @@ -2126,7 +2920,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000000f4240" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000099c" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000017886" [app_public_inputs.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml index 986465571374..1e28697ec0ca 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml @@ -1,13 +1,13 @@ [previous_kernel.vk_data] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" sibling_path = [ - "0x10bd630082571975ce685bfb567a44575274869ae81b26bc072a4cf8caf2b3fb", + "0x130070f245bd8da8bc5a36a99b32ed806ed8e1e1a0b0dabf02c6e84544c49f61", "0x1ea826447c3ccb9d36335912a450b551a2a70179767ffc439409f4187f12fe31", "0x1d3e95c74cce7cb43b649678de75f0b584e00ff56d81aeb86377422c52aecde3", "0x2fd0f6da82050373bb385b20b83b346130dac8dc764c90e6406a58db5e030d2c", - "0x24b35f88284b3df5e0be139ad872da7b9f9496e9251f423964bcc7fa648479b5", - "0x026a1cddd46b61c5da82c38cdf468d94bcec5f544d688a09e53ee01d1c0b9b31", - "0x13aded61902b3fb695e085c55876893bac77ef421026492e8be094d8156632df" + "0x189fc6c39b1ab8cdcfc7029c334e56dc05f32492914e1d28424bc6d01e1a7de4", + "0x287ad3b7c2e11fa343c4c7771abf7203fbf6a89be137ec032a080890ab37035e", + "0x012811c14ebfe2c7656e1c479fdbb9b151e12a98cb0f1471b70235b782dda3b9" ] [previous_kernel.vk_data.vk] @@ -15,30 +15,30 @@ sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000010", "0x0000000000000000000000000000000000000000000000000000000000000041", "0x0000000000000000000000000000000000000000000000000000000000000c7f", - "0x00000000000000000000000000000011f8dee186dd726afa3ba688d21dc882a8", - "0x00000000000000000000000000000000000963c386cda15e279e6101c42b6791", - "0x000000000000000000000000000000362c25c22c22d9566845357369fbd1d537", - "0x000000000000000000000000000000000023b3db60e14ac95e3fdbf3bc487335", - "0x00000000000000000000000000000014cf85606bcaf1a50ad00194e6be201593", - "0x00000000000000000000000000000000000051a285bc9fe6e9cd8fcada0de55d", - "0x00000000000000000000000000000080abe441747ef272c5fd3b4eeeafd82b78", - "0x00000000000000000000000000000000001524966daa93940513984d065aab70", - "0x0000000000000000000000000000004b8459cd6cca82b3f35908e24477bdfd39", - "0x00000000000000000000000000000000001858957315f13560ecd3fee02462ba", - "0x000000000000000000000000000000c045e3671848f1d6404eb3f9821922acee", - "0x000000000000000000000000000000000023201f2fd35f8a0890df2615fba747", - "0x0000000000000000000000000000003c3d685a6eb5ba01438464a1e7d9c30367", - "0x000000000000000000000000000000000006b7a6467bec9d3b6a8d699d03eee0", - "0x000000000000000000000000000000f87185df249975568fd221ea2271280f79", - "0x000000000000000000000000000000000025b132f6a9ad046b2c12a096d7fa17", - "0x00000000000000000000000000000008223218ccd935b8307a61865fbd327a8c", - "0x00000000000000000000000000000000000d39359a308d9e636a07ba275a99d3", - "0x000000000000000000000000000000851813fef317bd174d3eb791db76b22af4", - "0x00000000000000000000000000000000000567d2eeb3ade73aa22e0626373c36", - "0x0000000000000000000000000000009e3d8b8520c2612d3241ca0fe33ae51846", - "0x0000000000000000000000000000000000004517042df192aa014de4073bd700", - "0x000000000000000000000000000000781ea1a300d00a19dd380a02efa116301d", - "0x0000000000000000000000000000000000140aa405fe73f64f5642d0ccaf72c0", + "0x000000000000000000000000000000171cc4b5a870918e08b4b6eed50c2313c8", + "0x00000000000000000000000000000000001cd8588ef8f9a26ee51de2de21646c", + "0x00000000000000000000000000000078e2b819a9e3bfdc916679607bf5ac0829", + "0x00000000000000000000000000000000001d6a5a21cf945e0e21545e281a195e", + "0x0000000000000000000000000000007305ef5b63ad55e117e2912f47bc5db8dd", + "0x0000000000000000000000000000000000138d4492212492a252b323f9691d51", + "0x0000000000000000000000000000002f053e375870a5c34bebb660788b81c506", + "0x00000000000000000000000000000000001b3202973b037fddf3a0921d7ec226", + "0x000000000000000000000000000000f3495dfe953dcfcc29ff8b3b0793382e9b", + "0x00000000000000000000000000000000002a48ae6c25c90eeb1f1ca24022212b", + "0x0000000000000000000000000000000983b596da5bf7ea2cb766863e44d0d9ba", + "0x00000000000000000000000000000000001881df954c4312bf708848f066becc", + "0x000000000000000000000000000000a09599d2ee6767c5b4f92284a70d9d4ac3", + "0x00000000000000000000000000000000000d21fc44bfcaa557c324c94f343941", + "0x00000000000000000000000000000060fd71a0bc36b186856ac2a7af6488c7d3", + "0x0000000000000000000000000000000000070d78e9828ebdce2bc67b57701d56", + "0x000000000000000000000000000000d89af8620eda2433d4e1ec7b23217180bf", + "0x00000000000000000000000000000000001d69251452105baf0ccc94692ee5af", + "0x000000000000000000000000000000107be753e7fc50838f6f298e1d185394f7", + "0x000000000000000000000000000000000008131f8554249228d5ae2073a29cbf", + "0x000000000000000000000000000000e07283a97db929f76f79fdf59d767e8df0", + "0x000000000000000000000000000000000009afb433ef8f546fbb616c3c362e45", + "0x00000000000000000000000000000094fbcca53104c06282aa88202f89806c54", + "0x00000000000000000000000000000000000040a7ab3093fe787706f9dd4564b6", "0x000000000000000000000000000000ebee6bcf5453e496d8d45b1fcf2451422a", "0x000000000000000000000000000000000016734bfdea3abc3a58bbce5f19dc54", "0x0000000000000000000000000000001554315ffe075b6dae67d247eb2bf2b1e1", @@ -47,66 +47,66 @@ sibling_path = [ "0x00000000000000000000000000000000002c4a2ea67a50afd022682a601bb5e7", "0x00000000000000000000000000000064f1cac49d590211f11680b06c37dca01f", "0x000000000000000000000000000000000008250bda7710939b19dc4e772777d3", - "0x00000000000000000000000000000042b4d779f8ae62e5778fbbdb4fe5776f0c", - "0x0000000000000000000000000000000000024dec3274006994af22e1d896727a", - "0x0000000000000000000000000000003e1acee97449ff78ce3a24168f32557db1", - "0x000000000000000000000000000000000026fae9e5d45912e6ccaafae9eb986c", - "0x0000000000000000000000000000002d84d1e463b1dc61f70e75acd540412219", - "0x0000000000000000000000000000000000010d47c88a05a2d6e3551962d79181", - "0x000000000000000000000000000000a43f147ccc07c4ac9dc016eacad91b039d", - "0x0000000000000000000000000000000000050be2fe70165c94cfa78fa2f6c116", - "0x0000000000000000000000000000002e583087f093b4d3c17be28268a32f215c", - "0x000000000000000000000000000000000011291a4e33ab5ba0a657980d519417", - "0x0000000000000000000000000000005c172d2947edad57583ea285dfa6ac6885", - "0x000000000000000000000000000000000013fad09aa0a8b08f7f05c282c1227b", - "0x0000000000000000000000000000004d63f9a17a5d5e06f367d663dd57ca2507", - "0x00000000000000000000000000000000001f575a156a5d703d6bfaf7efa32c97", - "0x00000000000000000000000000000039c5d1163f439440d84c8a7dc936104267", - "0x00000000000000000000000000000000001717872762622cf78eba4b21b44fea", - "0x000000000000000000000000000000690623a8a344312d5f1c63a40c98e16b4e", - "0x000000000000000000000000000000000005152c984957276605677ac15394ba", - "0x0000000000000000000000000000003c29d8cd87a5b4cd4f29af1ab0c32cc727", - "0x00000000000000000000000000000000000d647387ce2214ffa4644d4130a968", - "0x00000000000000000000000000000050a9abed44bee83ddbdfe4ce83fc9e5bf8", - "0x000000000000000000000000000000000006cd6c22d89540af0fe986db7007f8", - "0x0000000000000000000000000000006cd14d180cdbb1028421ce0823afea47bd", - "0x00000000000000000000000000000000002954e7f8d6a0960ed6b162bf3a5d8d", - "0x0000000000000000000000000000006c610d4c3e12c49a5143bd8ca904a89706", - "0x00000000000000000000000000000000001fb4969aeaf9da525cfad7f4e8f9e1", - "0x000000000000000000000000000000d4124a2740f740c59c99c794859415cb14", - "0x0000000000000000000000000000000000032cd02842942c05f15fb53940e9c5", - "0x000000000000000000000000000000debfccda47306dcb03370ba0045b8d1f31", - "0x00000000000000000000000000000000000f75e3c0fa985f5b59f821846cbd03", - "0x000000000000000000000000000000aa29ce59cd51529907826fcbe90220f67f", - "0x00000000000000000000000000000000000c14ec19d2706289892efac54bb9b7", - "0x0000000000000000000000000000008690c942de46a55217f3b75e7ffd7830f4", - "0x000000000000000000000000000000000010c51dd84dd2c5277ee129d155ee46", - "0x0000000000000000000000000000005359aa4d0652b824d155d6e0221c9680df", - "0x00000000000000000000000000000000002974537f26894bf684175fa0a8e8a1", - "0x00000000000000000000000000000046e69ff1184e9150af15538bc73c4ea933", - "0x00000000000000000000000000000000001c7f1a9dae2f0045e3cdb2c8050c83", - "0x000000000000000000000000000000d49c6365879961f707eb3d577d889c9855", - "0x00000000000000000000000000000000000b51a928760a56d00149e053f9000e", - "0x000000000000000000000000000000b3daf6e45d474017bd3959998c17e89a85", - "0x0000000000000000000000000000000000223c8f1706c0a19e3b58e3f22d0616", - "0x000000000000000000000000000000037d6f210a282a5fa91fa628f0d0266f1b", - "0x00000000000000000000000000000000001fb1eccd61f2461ebd9b46076c93e1", - "0x0000000000000000000000000000004a2378baaaec62683a9ab33f9f898f3abf", - "0x000000000000000000000000000000000014a02eae54e78f332a47f8dfe86c05", - "0x000000000000000000000000000000c5b92b8f201cb0f656107f353e787658a0", - "0x00000000000000000000000000000000000f4df2f09601d04083c7a817b64acd", - "0x000000000000000000000000000000b264c3083fa802731e4ddc11003029bbb2", - "0x000000000000000000000000000000000001ead32d8680056461c378bead6321", - "0x0000000000000000000000000000008032b4f06d445ff688bff35ca25d6c0083", - "0x00000000000000000000000000000000002cffe3e60beaa87ea5f489d830651c", - "0x00000000000000000000000000000020bfaeee123f4fc69bde673c1ef795f190", - "0x000000000000000000000000000000000012d4fdeafcb51fb3d9485e576d8941", - "0x000000000000000000000000000000f3bfe10b0e30b9aac826995c750fe1dec7", - "0x0000000000000000000000000000000000251baa8c4cc9c0715561282994e5ca", - "0x000000000000000000000000000000149c800e88676d84526d4fbe4d2e1d7c23", - "0x00000000000000000000000000000000002bd2a2285c45eaf5893727bea89a1d", - "0x000000000000000000000000000000310c85385f0add09422201fcbc8db9609b", - "0x0000000000000000000000000000000000120ad18fd9a6d825d78c455bffd25b", + "0x000000000000000000000000000000dc4cab4d88a6348f7b475fe9db1cfe7ff2", + "0x0000000000000000000000000000000000104fe99f31e86cd680e3073a7b96fa", + "0x00000000000000000000000000000015e59767c06ebe300fbc662f8e77c4fdee", + "0x00000000000000000000000000000000001d0d82a8447a7679a8f7cf62364660", + "0x0000000000000000000000000000000db0c5f67f09c34017c3e55f4e77dfb0da", + "0x00000000000000000000000000000000000a9d07140173246e0309741f6b31c0", + "0x000000000000000000000000000000c332e7c293bff2970809ed2cad85472f00", + "0x000000000000000000000000000000000019ec402eda094bbee5935cf6338864", + "0x000000000000000000000000000000801527e0514c6a44a4ba23befbb0b94b92", + "0x00000000000000000000000000000000001f6e2dfb759cbfd7fb387eaa7b475c", + "0x0000000000000000000000000000002d65a30634fb785c2fc6fb5be54e2c8862", + "0x0000000000000000000000000000000000177325a6ca19ca973461dc28946dd9", + "0x0000000000000000000000000000003999c701ecaf6078c221c23f22d04e9d6c", + "0x00000000000000000000000000000000001d8026acf813b1f17a9b3b657cbb5c", + "0x000000000000000000000000000000a349bb1b1c7c39b7c2de869d8ad183d6b0", + "0x00000000000000000000000000000000002e7771cb8ff4b110e88a9d3e8c348b", + "0x000000000000000000000000000000c186cf17cf72eb5ef497105151a27cc045", + "0x000000000000000000000000000000000006f9dcbc1e18852345d0f7e193cdd6", + "0x000000000000000000000000000000b667f77d63279cc66a9b7e55677f5bed44", + "0x00000000000000000000000000000000002ec0f87f40ac61d9ce657cf9f7c757", + "0x000000000000000000000000000000890b27e6e8742cc85ef6808fa232e76e4a", + "0x00000000000000000000000000000000000d7b81b0fb508b46d36eb41ab39146", + "0x000000000000000000000000000000ea8dfa4d19f96f9c6d0225511558fcc6b6", + "0x00000000000000000000000000000000002abc25a0936d73b1a31fbac33bbdf3", + "0x00000000000000000000000000000004149be8d64332b24f4b73ee358565cc0f", + "0x0000000000000000000000000000000000124a8d1f60b7f40ecf44353c40e7f3", + "0x0000000000000000000000000000004989d5255b01b711e2fb6eb5b214580d98", + "0x00000000000000000000000000000000002603a96f91309d77058a78b993a35f", + "0x00000000000000000000000000000006b9dced10769c66390b47e821c9a7ad98", + "0x0000000000000000000000000000000000241fd93969e0265875ba6f1e39d547", + "0x00000000000000000000000000000072707381f91e0d9556e0e5fc31caccd5ca", + "0x00000000000000000000000000000000002b1f7e97a5a2900df82cdb238ce1ac", + "0x00000000000000000000000000000092843d768adbea3219352c52441bdff024", + "0x00000000000000000000000000000000001380e5b73de3c923a4db02092404d8", + "0x0000000000000000000000000000003959fdd68e38bfcd7a09c0b5aef9336236", + "0x00000000000000000000000000000000000aa5d418ce23e90c9072f132771ce7", + "0x000000000000000000000000000000e75a8891a572a8e857e2e0fd1401136914", + "0x0000000000000000000000000000000000014c15ae2ce0e82fcbc6ffb3dab17e", + "0x000000000000000000000000000000abadf2746853d29dfb105cf3a431a9ee1e", + "0x000000000000000000000000000000000004772a25faeccdaf96f261de1dff6d", + "0x0000000000000000000000000000009aaffbf0bdb221c8ae8176a07ac0453bd8", + "0x00000000000000000000000000000000001a0cf7697c7802e18d11602be35e28", + "0x000000000000000000000000000000f47af989cf364fef4252b5de2927d62e94", + "0x00000000000000000000000000000000002b1d46d07cf721ad9277f432cfd1af", + "0x000000000000000000000000000000aaac8ffe068efe11fc9165f3d710ae3eb9", + "0x00000000000000000000000000000000002d6a8426a788d3298605d7896f36aa", + "0x0000000000000000000000000000000460696d8f381cf0775d07e276cf5b4ed3", + "0x00000000000000000000000000000000001c358f6d17b985d41ab39b823bfd91", + "0x00000000000000000000000000000063fd5529ed8a8ccc4fe6ef528d3baac704", + "0x0000000000000000000000000000000000035d07987080afd572f59e4ac2966f", + "0x000000000000000000000000000000cc7b112c77bae451256ebd76b5d4230a90", + "0x00000000000000000000000000000000001b9e549aca427d2e66f05887a957ba", + "0x000000000000000000000000000000e5800fc74663bbf5083970fb8cae3f0d42", + "0x000000000000000000000000000000000007c017f2ba54f35e929a8ea0515f50", + "0x0000000000000000000000000000009d042922876169a01a8f7f64714d451208", + "0x00000000000000000000000000000000000a40b0dc54705e19737f7eaa5c032c", + "0x000000000000000000000000000000ec78b010ee5afa2c9524215e0a3ee2a7c1", + "0x000000000000000000000000000000000019cde689b74f0bb6239673748051dd", + "0x0000000000000000000000000000000b4ee038a64b24c815bd44e91714b9fb47", + "0x000000000000000000000000000000000004c7a70b7e27b8d5adf71d45e5a433", "0x00000000000000000000000000000095b5d8b7b4a63b05df652b0d10ef146d26", "0x0000000000000000000000000000000000099e3bd5a0a00ab7fe18040105b9b3", "0x0000000000000000000000000000002129af3a637f5a622a32440f860d1e2a7f", @@ -127,10 +127,10 @@ sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000021ba3fefc3d049b8dbef17b228ec5601d6", - "0x00000000000000000000000000000000001a0a3a3f5f70ecb880cc55d3784413", - "0x000000000000000000000000000000248ebc78f50bc3ca915035603278ef45c1", - "0x0000000000000000000000000000000000278d9eb688d02b18b9c8e3bb92025f", + "0x000000000000000000000000000000da44c394d6f7395aeddc645a0df005cb8b", + "0x000000000000000000000000000000000008061095e7aebcb184686f7c0f329b", + "0x000000000000000000000000000000c54a4e1a8b9646b7ffcf7110a6ce82c6a6", + "0x000000000000000000000000000000000005b81eaa0704c952a5d4ef01ab38d5", "0x000000000000000000000000000000001dbb619e6e929e76a6efd1e4385c88f3", "0x000000000000000000000000000000000005f8a1641d13b243a02a3f02b2ee28", "0x0000000000000000000000000000002d82538a2445a88d2075c85f73a52fa00d", @@ -140,25 +140,25 @@ sibling_path = [ "0x0000000000000000000000000000008f12f63bbd5ad2fd910b0be1a9c270c25f", "0x000000000000000000000000000000000023039a7218918bdddf55645b1a71ec" ] - hash = "0x011fda72c092ceafb2cb57e24890248b9d3154ad0bb6446370b8deb049a2478d" + hash = "0x1bb9391beaead1ef741acd2e57c13ef09a0f76e30e4c795c319cc5a9604aba55" [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000005" -include_by_timestamp = "0x000000000000000000000000000000000000000000000000000000006925b970" +include_by_timestamp = "0x00000000000000000000000000000000000000000000000000000000692ac9a1" is_private_only = true -claimed_first_nullifier = "0x2fc51e21e487cf3d5e2eafb9d6604662b3229d2371ee497fd4acdcf11c30d972" +claimed_first_nullifier = "0x20d9ffcd6864a69a3ee672f719c30e823056da8306889658f8dfa8be5be61d66" claimed_revertible_counter = "0x0000000000000000000000000000000000000000000000000000000000000005" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x0edaeafdba7c80d2e3e72ef861e773163946546cfd1a558862f7ad4fbca77f32" + vk_tree_root = "0x01fb1a72339cf08f7501ab121697829057b3c24baf6f3ec6a118d33b07bb08b0" [previous_kernel_public_inputs.constants.anchor_block_header] - sponge_blob_hash = "0x1690bfcde18b9d39e1b69f1d274e653e340efa9d0434b9339f9d91631bc3a56b" - total_fees = "0x0000000000000000000000000000000000000000000000000000000008e78850" - total_mana_used = "0x000000000000000000000000000000000000000000000000000000000000f124" + sponge_blob_hash = "0x192117c0b2b61d5cd54a40e49890b7885836b57543406aa29253385c038ccd4e" + total_fees = "0x0000000000000000000000000000000000000000000000000000000207f2040a" + total_mana_used = "0x000000000000000000000000000000000000000000000000000000000000f109" [previous_kernel_public_inputs.constants.anchor_block_header.last_archive] - root = "0x1d8cbfd158f232a206f3ce5e4dc939f5eb79c9d6d493e5501ea576607b799b79" + root = "0x1698275776708edb05d7a266b2c9ec367761e2d2880b8351124759c6bc811aab" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [previous_kernel_public_inputs.constants.anchor_block_header.state.l1_to_l2_message_tree] @@ -166,37 +166,37 @@ root = "0x0d582c10ff8115413aa5b70564fdd2f3cefe1f33a1e43a47bc495081e91e73e5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000002000" [previous_kernel_public_inputs.constants.anchor_block_header.state.partial.note_hash_tree] -root = "0x279bed2dff65bf4c71346cfefaf7da4aa9a6b78f35207f85874d17c9a5df0cfb" +root = "0x12594dd0532f6878c6911c140ce7a3a7f3290255234a527626ec7c88a0dc0ff3" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.anchor_block_header.state.partial.nullifier_tree] -root = "0x0f21e45441dee2af87084e04f64cadb7f6bcc3a887c3108ffb8ab60b5137f7ef" +root = "0x22a9075d4c4b4577d9f26a178d8aaaad7703ef737bc42844e3bfa6a61d8a03ef" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [previous_kernel_public_inputs.constants.anchor_block_header.state.partial.public_data_tree] -root = "0x0fb4f19322664f0fdf265206a9c80bf59c88c760ca2313d4eac0a3b0c6085c31" +root = "0x09923b3a3c41078e7bce6f43cf9f4d557d6942383951e2dbc64ba6da9eb1ecdd" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008b" [previous_kernel_public_inputs.constants.anchor_block_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000065366335" + version = "0x0000000000000000000000000000000000000000000000000000000033346232" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000022" - timestamp = "0x00000000000000000000000000000000000000000000000000000000692467f0" + timestamp = "0x0000000000000000000000000000000000000000000000000000000069297821" [previous_kernel_public_inputs.constants.anchor_block_header.global_variables.coinbase] - inner = "0x000000000000000000000000b476929343e25eae412082fd6785d57991942218" + inner = "0x000000000000000000000000b1d9d47da1fb6effcafe07337c149daf03083a89" [previous_kernel_public_inputs.constants.anchor_block_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.anchor_block_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000974" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000002283a" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000065366335" + version = "0x0000000000000000000000000000000000000000000000000000000033346232" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x0000000000000000000000000000000000000000000000000000000000c00000" @@ -208,29 +208,29 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000000f4240" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000099c" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000017886" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.constants.protocol_contracts.derived_addresses]] -inner = "0x05fda6959d16dc98152a2b02b05ac1c83dac4858e92f0c4d5a2f2180cb874426" +inner = "0x1dc64374e96b37a36d94b737a049efb4686f45f628457f5d6d74f5d45817944b" [[previous_kernel_public_inputs.constants.protocol_contracts.derived_addresses]] -inner = "0x302b2c7770f45b069c7c910e245c4bd3ed63f1877d0787c733085ee762f36c2a" +inner = "0x24b7c46308ae93c05e3bac8201935effd50b61504954eef96d7b0384f27ee80c" [[previous_kernel_public_inputs.constants.protocol_contracts.derived_addresses]] -inner = "0x0f88984a79b48bb60e8c14f08d7976fff1597d51ed70dd9b428bdea4a51f60af" +inner = "0x2f6b4852b69e0381596da99b3aad9b8d493312f47e1c0e3523928e010e1f9df2" [[previous_kernel_public_inputs.constants.protocol_contracts.derived_addresses]] -inner = "0x21fdf87e23092c43f7387494ceeff3022a0c4c70106e1e950d2f733d3106ddd9" +inner = "0x1c93c2cb51b87faa1ee26b5f933a8136642cec5cdf95216bdd9aa4873d4b38ff" [[previous_kernel_public_inputs.constants.protocol_contracts.derived_addresses]] -inner = "0x16e38dce316ebea7cadc3294d017c08a09e4bfee6de1823cc403e3210793b0eb" +inner = "0x2223ff211abddd65cb27b3fd9ef6cbcdfed867b1b5c2421f87624c6fe86c39ff" [[previous_kernel_public_inputs.constants.protocol_contracts.derived_addresses]] -inner = "0x092fffee147c9315d3310e6e03417e5bb9cc4c1456bb61c1ab3b8606fdc1f049" +inner = "0x090dc318c793abc5ee9a560dcf9f0ba54c73902086dd7258cd48da8c79ef201a" [[previous_kernel_public_inputs.constants.protocol_contracts.derived_addresses]] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -252,7 +252,7 @@ length = "0x0000000000000000000000000000000000000000000000000000000000000001" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests.array]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.array.inner] -inner = "0x0ba31263cf0b7e0445682cdd303ef549bc0f08d8fe282793db171210377f23df" +inner = "0x264d03ddee47192ff933dd8a6dea6826196cc1e39215163f55181010f86ff75f" counter = "0x0000000000000000000000000000000000000000000000000000000000000003" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.array.contract_address] @@ -2763,7 +2763,7 @@ length = "0x0000000000000000000000000000000000000000000000000000000000000001" counter = "0x0000000000000000000000000000000000000000000000000000000000000001" [previous_kernel_public_inputs.end.nullifiers.array.inner.inner] - value = "0x04a52ed6bd417aa551261d063de6d794da4b6f4254660ed41230810f60b3408e" + value = "0x251af32e33ba4aef18aea2aea231ecb87f61a942cd86752e4271e70414832cb2" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.end.nullifiers.array.contract_address] @@ -6121,7 +6121,7 @@ length = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000001" [[previous_kernel_public_inputs.end.private_call_stack.array]] - args_hash = "0x04aebcb795afa1a87a365fe71195f8296e952f79d1e7f0c530cd75b5eecdcf38" + args_hash = "0x24d4f7e78135988983525194e4679691fd19d01d7d6bf6af15ce6894d593a4e7" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000005" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000f" @@ -6130,10 +6130,10 @@ length = "0x0000000000000000000000000000000000000000000000000000000000000001" is_static_call = false [previous_kernel_public_inputs.end.private_call_stack.array.call_context.msg_sender] - inner = "0x07f331dce41cdc40e4c82a65d49106535a5a07f6fc607eba2709f46de0472d37" + inner = "0x167e9ad24c298ee484e6e5ca5f357b9549a2d0f877172c41e73570ac73ef5ea7" [previous_kernel_public_inputs.end.private_call_stack.array.call_context.contract_address] - inner = "0x0df9d5578ec61c1c2a0fcf5828b9b5dd1057ddd6335178b4ab46f2b72cce903e" + inner = "0x2ad94f8b5bedf546630768a074f1d9eed552ddebf62124e310f1145d42c42cf9" [previous_kernel_public_inputs.end.private_call_stack.array.call_context.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000754fb767" @@ -6419,7 +6419,7 @@ length = "0x0000000000000000000000000000000000000000000000000000000000000001" inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x07f331dce41cdc40e4c82a65d49106535a5a07f6fc607eba2709f46de0472d37" + inner = "0x167e9ad24c298ee484e6e5ca5f357b9549a2d0f877172c41e73570ac73ef5ea7" [private_call.vk] key = [ @@ -6438,10 +6438,10 @@ key = [ "0x00000000000000000000000000000000000992eb23d8a252e009ceb6173f0f51", "0x00000000000000000000000000000076f6a2afee1c50531b5d7a16b5af0737e3", "0x00000000000000000000000000000000000990cf1619349d3fbc931738cd68a8", - "0x000000000000000000000000000000100631f3f13e80a2f244cafd1ccd7830e7", - "0x000000000000000000000000000000000003d0ca30416cd90e5ceff576afd6c3", - "0x00000000000000000000000000000072f196a664213c88bfbc1c267e728d87e0", - "0x00000000000000000000000000000000002e4229047da60c0602498afcf5dbb2", + "0x00000000000000000000000000000035f947d4ddcfa63860d5287fcf6018cfb6", + "0x00000000000000000000000000000000002ff803b7e3be3685a7b0c85ac3aaee", + "0x0000000000000000000000000000008e9fd6f637c07bd52fabf3dd28608b0f28", + "0x00000000000000000000000000000000002b7fa950bcfff37d30a2cf4ff83d46", "0x0000000000000000000000000000003fa0779d4d975d78eccef049cad911088e", "0x0000000000000000000000000000000000071a569a1148f9b62f9ab977f0cc37", "0x0000000000000000000000000000006eade77ffdc9307058562f8c1a236e6161", @@ -6486,30 +6486,30 @@ key = [ "0x00000000000000000000000000000000002bef8719c372a357df63930b094b84", "0x000000000000000000000000000000754f5055a5b41f74ba103c9d15ca08678a", "0x00000000000000000000000000000000000fd1dc8efab06c07174b54d3df1c55", - "0x00000000000000000000000000000082cb2b3e41fc486a08126e41860d4ddb35", - "0x00000000000000000000000000000000000243d2c884fae344c51dc43d50060d", - "0x000000000000000000000000000000fad07db2e0482d37ee01855bc1957767bf", - "0x00000000000000000000000000000000000e9d7cb990eb12c35606ce562f7954", - "0x000000000000000000000000000000fe057323fc7f12fd728c8b804fe744d5aa", - "0x00000000000000000000000000000000001fbee1b773c6f24cc25b197d423c6c", - "0x000000000000000000000000000000299ab518980159cb0ee611732793c4969e", - "0x000000000000000000000000000000000013dee4cf84296f7d78c659c65b8af1", - "0x000000000000000000000000000000fdf55932bba76eb255120cc3b7ecc9e491", - "0x000000000000000000000000000000000021a48cbf32a4438d03ed3facae493a", - "0x000000000000000000000000000000959502452df933607bd86b0f9ad05d69cc", - "0x000000000000000000000000000000000020307a8d75fb11cc6939426457a399", - "0x0000000000000000000000000000008725180251565f9ae792a66c9aeaf40784", - "0x0000000000000000000000000000000000290225176fd2a9488bb40ff9a9bc8d", - "0x00000000000000000000000000000080fcbe6abc60956386e9893f36c6ac4cff", - "0x0000000000000000000000000000000000182a58c6f90393336a6701a5b321db", - "0x00000000000000000000000000000063d59dd81f0fdf0a3a330ff1b05a4c7174", - "0x00000000000000000000000000000000002656c02401589cad0c6dd96ccdfef1", - "0x0000000000000000000000000000000a37b5246418735913f81af4035208f060", - "0x000000000000000000000000000000000021933ea053a8a478d28896cfb3da1c", - "0x00000000000000000000000000000031873ea4aab412ea169528d697f439dbe7", - "0x000000000000000000000000000000000024838a4d45df2066823c9d5fb41675", - "0x00000000000000000000000000000017ede8f83f44d8444c1c864a41e42cc255", - "0x000000000000000000000000000000000015a6cbd8dcd916caafa3bac7d194dc", + "0x000000000000000000000000000000cf21ea5cbbc1816a3284928c5cd21e22ac", + "0x000000000000000000000000000000000020cfb944f93f18404d50dad1c126ce", + "0x0000000000000000000000000000007794b5e171a562d7e8919f6672d94d0e18", + "0x00000000000000000000000000000000002e4f473a767269ea90069caa0a0455", + "0x00000000000000000000000000000039e16c72dbbeac562f5486ba434140d456", + "0x000000000000000000000000000000000002c7a9ee49780749e7961b646f5d75", + "0x000000000000000000000000000000e0cf223c33196e5f1d0fcb9c4f33a06def", + "0x00000000000000000000000000000000000b662c3c42aeb0d014b388ed0eb71e", + "0x0000000000000000000000000000000e1b5f95c9008379f9b7120da73909737d", + "0x000000000000000000000000000000000013640fb073d58a3334b35ab2f96982", + "0x00000000000000000000000000000087da9cd1002c24321d79df3af54bd6af2b", + "0x000000000000000000000000000000000027917d3095083a9b888e1367f036c5", + "0x000000000000000000000000000000fc6fc20a64d7cf4c42364340261988b072", + "0x000000000000000000000000000000000009fa76640e61e903e6836bcc1a9531", + "0x00000000000000000000000000000066506aa5227a6d2e0194360a7bec194184", + "0x000000000000000000000000000000000026f88ff377527235727c59ac68137c", + "0x0000000000000000000000000000005645e2885a808fc3c372d1e44df33c6c60", + "0x000000000000000000000000000000000027b35d2e32f2fa676c8f65f97243ee", + "0x000000000000000000000000000000f5b47b6c6703a34ee68ea378416d508b28", + "0x00000000000000000000000000000000000bab320cccf49b09a38d5405e00dac", + "0x000000000000000000000000000000b1672d08b66a855df53887a5c0f3411cf2", + "0x00000000000000000000000000000000000fefa6dd55f3b14201a28659d7735d", + "0x000000000000000000000000000000cba4b7b7f28bb045a9a73424b171feb364", + "0x0000000000000000000000000000000000152ccf61ecb6e802fe83d393095ce2", "0x0000000000000000000000000000002efc49de6445ab5f3f634e37effc8c075e", "0x000000000000000000000000000000000012c3d6ff449ff04de811ca88f5c444", "0x0000000000000000000000000000004b4ff1e91e8847f23576acf41b2908078e", @@ -6551,11 +6551,11 @@ key = [ "0x0000000000000000000000000000008158112a46310a62b849f6dd562c2c8694", "0x000000000000000000000000000000000012905e96c2c8db0865d6938f75a324" ] -hash = "0x11eee316c2f005cad53713778aa7c00701851fca30b2c0cd57c426027a55ebaa" +hash = "0x15e8b4d018a6d3925d38926f9123b1661b7636140485138963988868c4214135" [private_call.verification_key_hints] -contract_class_artifact_hash = "0x18fdc3e5b3c1c05739e27337983527f88591f27945ff3086af505440cdc17dbc" -contract_class_public_bytecode_commitment = "0x1f62583dd95ef865588da8c93e92621843eee32aa6a5bb1825d6807cfe0107f2" +contract_class_artifact_hash = "0x0bf2b697fbd18f32d7d023ed59463cc9d5205b9d077a6023c019547a10c8bc37" +contract_class_public_bytecode_commitment = "0x0fcd44e9618c3690f1cd22b8a01abb4ca493126b444e0c41cb167fc82eb8f64e" updated_class_id_delayed_public_mutable_values = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -6565,10 +6565,10 @@ updated_class_id_delayed_public_mutable_values = [ [private_call.verification_key_hints.function_leaf_membership_witness] leaf_index = "3" sibling_path = [ - "0x2cb4f2e1cb6d5544f55e885e59c8b6cdbb435844bbfcb93faca88c7ed35d34ee", - "0x0b902da9ff1e88f214c446377fe7a6b4ebb46c9b243d07c6276e0e33726200f1", - "0x1e8a29b2bce14ea5e7726325240d28ac7732bc05f34e75564c95bc5ae626cf81", - "0x0936fc5591047fe29321b6dca276ce66747ee8ecd8cfdccc5d32410d4f488758", + "0x073012379c6ef9375a8942b92be936e2b0b805468dbd3cd4b38b339207b8ff07", + "0x24e109b36b06e8b882eb793d1a1643a0e1e88d4f38d527caa5641c15f2921383", + "0x199c30eed3faa79882ab9d0b0703746ec561223e819a668121536f2cb0295e4e", + "0x2898f53c3fcfe7fcc412fb0fb3e40eaf4c0a8874413f49ccc9f487eb3f90d37a", "0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854", "0x0a43a7d0ff038f2492a51b4465c73f28c0644cdde523cb652668b167eab21b7a", "0x2a9072ec897e59149199988f87258e75d43dea6ccb509eb1f6f864c3294dd512" @@ -6595,19 +6595,19 @@ y = "0x2039907fe37f08d10739255141bb066c506a12f7d1e8dfec21abc58494705b6f" is_infinite = false [private_call.verification_key_hints.salted_initialization_hash] - inner = "0x0e6f9ee64c239e6a8a234586f1295a9c1028357d5b189c0f8aa2aa70243af212" + inner = "0x08076a48def246a1eb04c26d8fbd2e05e124a017094dff8139d50254f0b0846d" [private_call.verification_key_hints.updated_class_id_witness] - leaf_index = "126" + leaf_index = "120" sibling_path = [ - "0x28fb5268250ceabd0a61f1879414dc3e6d59bea95e0403ba1fdc4a832a6d353f", - "0x1320e4c2b06b34954af4e936c3e36dbec88a64508ce6a00583e8fe99240b6982", - "0x02aff0487909df2c0aae1404dfc77f215d8e5f3523cbd43cd1d49cd0869e3736", - "0x01a8580046da8f49d49ec2abe17b3c6bdb49cfe9f18dbebf462ffc773543c43d", + "0x1de44627aa33117bad6d35048dab2025024a28e3a662c0bdb46724c8e057cf74", + "0x24f950bb2880cb3f6dc125332a2f956192af379f567dd022432eea8ceafc3efa", + "0x21955a0dd5f8405bc71f3ee3778ae67a2ae74befa545746443226ef7532380d4", + "0x0f1835762763601f0cebf2f0cd02c04afb154d4f02f46dad2083961240ac3f97", "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x0181677bea9d5ea251adfc7047cd940dd6e96d4274608655547d48d84eeb4862", + "0x2a390171f2f78d323feed9a691a501a7724af376d6cae3cdd6913b3e1ba00698", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -6643,13 +6643,807 @@ is_infinite = false ] [private_call.verification_key_hints.updated_class_id_leaf] - slot = "0x2505553f932f4a173ccfbae107a1a2feddac0c9082c4ddda0c67b8f32b858cd5" - value = "0x00000000000000000000000000000000000000000000021e19e0c9bab1a4c400" - next_slot = "0x2af597565bde0504e9d387bc79f6b1aca094095cbd6e21a8373977c71660a7cb" - next_index = "0x000000000000000000000000000000000000000000000000000000000000007f" + slot = "0x0f8c4ec24b81ae228514cd014e72689da0ef473461d6b3d840c8e56c3a00c4cc" + value = "0x00000000000000000000000000000000000000000000021e19e0c9bab2400000" + next_slot = "0x165d13d2c97196dbcb2085041970dd312998d53e84dcb86f3b066f72062f11f3" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000079" + +[private_call.side_effect_uniqueness_hints] +note_hash_read_request_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +nullifier_read_request_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +note_hashes_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +nullifiers_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +private_call_requests_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +public_call_requests_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +l2_to_l1_msgs_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +private_logs_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +contract_class_logs_hashes_indices = [ + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000006" + end = "0x0000000000000000000000000000000000000000000000000000000000000006" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000010" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000007" + end = "0x0000000000000000000000000000000000000000000000000000000000000007" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000008" + end = "0x0000000000000000000000000000000000000000000000000000000000000008" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000030" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000009" + end = "0x0000000000000000000000000000000000000000000000000000000000000009" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000020" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x000000000000000000000000000000000000000000000000000000000000000a" + end = "0x000000000000000000000000000000000000000000000000000000000000000a" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000070" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x000000000000000000000000000000000000000000000000000000000000000b" + end = "0x000000000000000000000000000000000000000000000000000000000000000b" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000021" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x000000000000000000000000000000000000000000000000000000000000000c" + end = "0x000000000000000000000000000000000000000000000000000000000000000c" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000071" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x000000000000000000000000000000000000000000000000000000000000000d" + end = "0x000000000000000000000000000000000000000000000000000000000000000d" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000031" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x000000000000000000000000000000000000000000000000000000000000000e" + end = "0x000000000000000000000000000000000000000000000000000000000000000e" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000072" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[private_call.side_effect_uniqueness_hints.side_effect_ranges]] + start = "0x0000000000000000000000000000000000000000000000000000000000000000" + end = "0x0000000000000000000000000000000000000000000000000000000000000000" + side_effect_global_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs] -args_hash = "0x04aebcb795afa1a87a365fe71195f8296e952f79d1e7f0c530cd75b5eecdcf38" +args_hash = "0x24d4f7e78135988983525194e4679691fd19d01d7d6bf6af15ce6894d593a4e7" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000005" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000f" @@ -6657,16 +7451,16 @@ expected_non_revertible_side_effect_counter = "0x0000000000000000000000000000000 expected_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000006" min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000000" is_fee_payer = false -include_by_timestamp = "0x000000000000000000000000000000000000000000000000000000006925b970" +include_by_timestamp = "0x00000000000000000000000000000000000000000000000000000000692ac9a1" [app_public_inputs.call_context] is_static_call = false [app_public_inputs.call_context.msg_sender] - inner = "0x07f331dce41cdc40e4c82a65d49106535a5a07f6fc607eba2709f46de0472d37" + inner = "0x167e9ad24c298ee484e6e5ca5f357b9549a2d0f877172c41e73570ac73ef5ea7" [app_public_inputs.call_context.contract_address] - inner = "0x0df9d5578ec61c1c2a0fcf5828b9b5dd1057ddd6335178b4ab46f2b72cce903e" + inner = "0x2ad94f8b5bedf546630768a074f1d9eed552ddebf62124e310f1145d42c42cf9" [app_public_inputs.call_context.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000754fb767" @@ -6676,7 +7470,7 @@ include_by_timestamp = "0x000000000000000000000000000000000000000000000000000000 [[app_public_inputs.note_hash_read_requests.array]] [app_public_inputs.note_hash_read_requests.array.inner] -inner = "0x298c1202da1eeda033d72961f78256a4eb9493633002874e8be2b3d8e44e98d7" +inner = "0x0558baeabeca7e8407e1c5cdda13c95a98961bbb68a989adf07b4208bb1595fa" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [app_public_inputs.note_hash_read_requests.array.contract_address] @@ -6807,11 +7601,11 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifier_read_requests.array]] [app_public_inputs.nullifier_read_requests.array.inner] -inner = "0x0df9d5578ec61c1c2a0fcf5828b9b5dd1057ddd6335178b4ab46f2b72cce903e" +inner = "0x2ad94f8b5bedf546630768a074f1d9eed552ddebf62124e310f1145d42c42cf9" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" [app_public_inputs.nullifier_read_requests.array.contract_address] -inner = "0x0df9d5578ec61c1c2a0fcf5828b9b5dd1057ddd6335178b4ab46f2b72cce903e" +inner = "0x2ad94f8b5bedf546630768a074f1d9eed552ddebf62124e310f1145d42c42cf9" [[app_public_inputs.nullifier_read_requests.array]] [app_public_inputs.nullifier_read_requests.array.inner] @@ -6940,11 +7734,11 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" sk_app_generator = "0x0000000000000000000000000000000000000000000000000000000000000030" [app_public_inputs.key_validation_requests_and_generators.array.request] - sk_app = "0x23841720eb720412fead8196067afe78497f6c6ba597140069d8be32cdcb0f4b" + sk_app = "0x00eea5af88dab963d1da81725f05f043274583324b9a511eba0f5f4856862c0c" [app_public_inputs.key_validation_requests_and_generators.array.request.pk_m] - x = "0x0101fcdd31ad3d836a4e50165bb657aa7f9ecb98dd3d2866939355335ff24c9d" - y = "0x0fe03e5fc6772cc3fe8461695ff4cfeac8b8660f311b84f01f6929a477fb9110" + x = "0x01ad382996fc0295491cf000bad39762d81604e18e8d8e38ce38234aac4b8713" + y = "0x2037b452899bcd95dcc99555831535d0bd04dcf88bd2a133f97018879d9b53ff" is_infinite = false [[app_public_inputs.key_validation_requests_and_generators.array]] @@ -7116,11 +7910,11 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000002" [[app_public_inputs.note_hashes.array]] - inner = "0x063aa82fbed705aa44d5f5e34a7a0dc11397bd5ca01cd965e4ba2afbb0bd2aa4" + inner = "0x22d3209ca4cae53dbd7e12f9ed31995c03d292e0260595e02613272374fa0dfc" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [[app_public_inputs.note_hashes.array]] - inner = "0x05d39c30bec0df23e46233e442414c60cb7a4b822c641091d49fd1498050950e" + inner = "0x04267f510c0963c63a45ee7a31f0e191b4bbbb91f1377e577bcc0cc2af6ef11b" counter = "0x000000000000000000000000000000000000000000000000000000000000000b" [[app_public_inputs.note_hashes.array]] @@ -7186,14 +7980,14 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" counter = "0x0000000000000000000000000000000000000000000000000000000000000008" [app_public_inputs.nullifiers.array.inner] - value = "0x1ecc95e0ef05008f7e111ff8ab1f56f42ba164f01fca2d4637fe467882db6f6b" + value = "0x258f87b1214d551d2fa69502bde7a6ec1cb94cbfa73d02fdbbb74ef51cf61dff" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifiers.array]] counter = "0x000000000000000000000000000000000000000000000000000000000000000d" [app_public_inputs.nullifiers.array.inner] - value = "0x2a0ed84f2470dbb8f1633591784d2df3369a1d5253aaedc022920531103be6ff" + value = "0x259091425592148c01550ab9126355cf91ff4c469972ca99819604501d696ff7" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifiers.array]] @@ -7956,24 +8750,24 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.array.inner.log] fields = [ - "0x1e712d019cf5d1f44973b6efcc68a7b8b4c651f74e61ca77180e7870f9e8535f", - "0x0024d4aaf9c8f8e1523ad162821ae1f47c4b71dff15349143ae1500d32efef9b", - "0x0001661218222dd530e8c7a8d1a6a2cec46447bf708f035445d42932aebf95d6", - "0x0056ad2f00d94f82b8418121794a248d3d549c5bb8bc295f1836fa5ac3f79d83", - "0x002cd6f9ae1dc2876b46dee8d8c3890b0607db3ba4e72a79812745cc110001ba", - "0x00850d32696f1b26d82ef49d8903c345e356bf8c215c3a170578f8c338a9f6b7", - "0x0025c5bc8325870dc44af01f28e5a7fabace1d42b1a549d4b984413a0af67649", - "0x009047b70108be9705997d962702cb0bf6acd36b02b42b928fadaa0dbe2a472d", - "0x00a6403f09e48551e95e134a1c55eb687bb17e48219a1b5b97bfda40575e5262", - "0x00a53498e5e306bb7a86d67bfc8856c98353ea0e7529e7855c36f5d000b475de", - "0x002ad40e7e524050e5825a7c4ff8efeb6f4abc3e952d1f1f18389dc502f97753", - "0x0032b7fed579bb0e13ca6066e2b2ac6527aa09c04ef8fb07a1f593d19ba09c4e", - "0x00a381ef61f53041989fba2acc6a960b7bbb52b353ecb3e79c43de25fd497d0e", - "0x002b5c4bd638ade91ad0f53baf318487cbaf005ef06ed0bf40e2481824f823d2", - "0x00a4e79ad691c3579ada16675d329dbee2ca7b43e7903f1ea28312419fbdc860", - "0x00e0312b09b7ca8517d0cc96fb20c826a89ccc9864dbc7f6a63b3958acffbbb4", - "0x0098d3ec4a8b7dd7b4f9ae3a984c13c6aa0499c7415812115302d949229da3bc", - "0x00d6199ee76be7cf11da35b7dad25a7b6d4cf762e03a25855ee746d610c60d9f" + "0x0dd489dc2c300747f9b9b0af2fe67e27678cda16d52aaada71678d973243dac7", + "0x1ef802742d1a0c83f79b05baddd30dbff1b65ee45a6a9002de64c09242ee65f1", + "0x000040f4263d5925c8e82fddb72e24f93684179ec2ba8e3c24b89ecd2ef28d8b", + "0x0040cfc275e0a4025f2e0260ed6b110f4d972c4ac92678fed2b22d9d3cfd1eab", + "0x0057b939b9a8499ac701f2de5ec4e66e2b9e2b7327acaf066fd57e77828239cf", + "0x00f17ea43a4b695202481c57e617246103b82471cdb82aa31526036880c556f6", + "0x00f5cd325ac417dc6857fcd5214fda3a05e7a9991457c0f3fc4079401f039ccf", + "0x00f20cc8ee6ec3713e3ef5756e5c77bb7f6029b6e928ce26c53d0d4b2fe0130d", + "0x00253d87b82102062a33543d32da4b7024037f28a1f23cac04ee362240ce446b", + "0x00e5568ea7e387418cbf7b10fe8bc1861c84f1a46f9b9b20eebdd78cc24a6c2b", + "0x007d7a703f61109109ff8162a1cc1013f129ad188464f6e756c3e81df0369310", + "0x00b86e00263c81537f7c10410c59d6619e1d47f6f1a427f5766a2587ba618934", + "0x00e116fa6a321649d8c715b9b3fc8baedeba42226de178b770ee515d23bcb761", + "0x00bb5cde040d96027ebbef1965f167369db87907a79dbd62f43e261ccc51258b", + "0x003482f7beb1c738dadbf5f25c620ebb243f2d82ba378e8d7801b8c46b7b4d4d", + "0x00084195f084d1c3973338edaed2ae6f53db8484a5c4e1367c550428f714a559", + "0x0024f8110b793dc6def5288a3b8b8f9a81717f3b62b0e451aa4ca8214196a56c", + "0x00bd3baed7b61f0d2bc7344a100cc3df9017a40298ed2fbcd96f63939937b436" ] length = "0x0000000000000000000000000000000000000000000000000000000000000012" @@ -7985,24 +8779,24 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.array.inner.log] fields = [ - "0x211beb192bcfcfa1f959c8ea91ac86ef1c431a89e1cbc5c0d73c920f22cfc142", - "0x15d70c46d122a32acf63c20f36da52bc6add17cbeeebd94f056055d9a0402c72", - "0x0000e57c685dcf10ab40577a02fbeadda0297b08439611485430a8f1e0e69b6d", - "0x004514ccf8df5799682042e41120b14cb88687f01fecab4f6b5dd8b069a7d10b", - "0x00bdff557dda48b43f984cb1ffd85ad9f34a7d9310fbb8ead5640155fb7a2d02", - "0x008fc6508dd1796be6fb43a5649536f4818dfa63e57408e9d7e8a4ca00a1454e", - "0x00a73542b31d614e245b8aa04a8fccc079b63e0abdef6453c0d786015acdf759", - "0x00bbdde17f4cab9133f32e175471dff2e5a158c49a106c2394177d9a767a6d88", - "0x009892956d05c5ada4f33b2fa07618d28a11fc857a942f4b2f3b78d8e4ea481a", - "0x004b99e8afa34c3c678c5c0aa1b54919f505cdc30945eb7101f0a1f53848359c", - "0x003cce06b973465f44c7161548a387fe367457620431e5147c3b95e04a5787e4", - "0x0027068b01ff29e1a795382f5fd4c63249308878b82c125c5478689bad505101", - "0x004119ae08a40a5a82f7f5ef43959a83b6e6ec07134f864f43fb4efa2f242705", - "0x007ebb46a24258f1439e053cd9354f13766e9039845692a49f56d829db420ade", - "0x009865592ed361e4fd1d9e5abc65cecfb04300532dcf5dcc9ce1b43b8c20229a", - "0x006242bdd69019ee550cf651bf2dd1b762d71383d3751a1eb5df8554e4a54d23", - "0x003032b10c55919bca2f027f77f0f0b82a8467c8b74d3861a05feff5100e4c01", - "0x0009e6e0b59c2ffeca6626c2286a8944803e3174b48229d90529ccd3252624f1" + "0x19db9c3f6aef7797e8306e30002760765522e0ff6b83b183259b1555d59e10c8", + "0x0d6f0818461c63feb24c28c1deda9e72bd03397135bb9dc43f475bdc2d08a334", + "0x000161d36c88d59b3e32dd75542494200ed3e63c01c5fede7e220896dd7f95c4", + "0x0082f6a846575799d60345d51e04f7e240292406914924af007024280b3f549f", + "0x00f3e0ec784b4ffd01f7d6ffaaf984f95f872baf51ee26e90c6c48217ea6a092", + "0x001de65cdbf2f617f590d8680c856e73d6ccd059ec7f1ce77c6e5933e58b2ffc", + "0x00d03d158eadaeb102e853613299a341d01c1961087306bda5199aa60ea0a46c", + "0x005538b36bc4b3f7c970feb7148440f91d8cf8e80365978fdceaf44e80ffaafb", + "0x009afff232349206c12d3feaeb1a32ea663b23511d57754e5c75d59850ab5433", + "0x007b36908deb344e3b029882f3d673134aae9e5725ce065b10df4612a64996f5", + "0x00c2a6f57f436cc6c62ca3738d0c155fcbf884f4b467596849012abd15a9c4b0", + "0x00c04806a87d3bf7b29e7601dcde502469d476fba51b50f9b58d775a9c085755", + "0x00355a0764fc30e90dee93917f30e1fe9e54e1b4306ce28be65c650ea1cbbd7a", + "0x00ed150a88b1444facaa6487aac5e5764da1fb8b19e6a74eabce09c05094ad37", + "0x00085ebf5e2d0de757b1e1d5a8fbd80d7fb18e7a5b5af05fde4c23c8899cf83b", + "0x00d0a25257927f691bb76ff0b7a853f1bf7f694c06e65b613c9d1567908a2d9b", + "0x004dd495d24ab00cfa8b22330b35390008fb2b9d0c9ebb656a4cd6f8495f3bef", + "0x003b142fb5e4bfde653bc121cbf1ad4af0214230ef91a1764213bbc81748661a" ] length = "0x0000000000000000000000000000000000000000000000000000000000000012" @@ -8014,24 +8808,24 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.array.inner.log] fields = [ - "0x2340d76f4fe2c8dfef05d02b0dcd0c973d81b481c83d966f33fa502ddfa4f116", - "0x0599c892d5eb274f9d74a9387438065f4adc27c3f83bd3e27c02cc9b92b8a5ff", - "0x0001ab4b1bfbd8106beac61aeb343ea2d6bb8e254f1f7f180d80e1fc6a2a9bd5", - "0x00f6df1e40a2211ea6004f41fd523e3bac2328bee1d1d3ac3a5761ed32ea52c8", - "0x00a8d21bc13d8342b5f80cd0ca399a53ba3797a772165d0a25806554a8afc4d0", - "0x0004f193581c351656fcfb4433003059f6cb32678454d8b4f72bf22b4db2ab5a", - "0x00221ed0428c68d5c3abcdb4a4215c128dafc0c9cf0d37aebcf68b696c692832", - "0x004140487e1bd853237d6b75a7cecd3e8a3208edead00c1e9d580968a65e7261", - "0x0029630e7764f819ad104369b92e1b96d28a4b3a025ea5c351e52e8899007617", - "0x008eb7d3724f43bf17d3bb6928171964cf147886da4c81fa2f971c10745b74f5", - "0x00e485cc93c8c32f332b97a73b102460c8d89ed6fd4d88953562555d2437d61b", - "0x002950c3c61a8b57c92eb705e8b4cddf579a380a6bec9ca7ffe4b8ef3bb69f70", - "0x00d30b5592c25293ec8f6ed38efb07c79f7b26b9fe3e2cb5fd6e34479f22921b", - "0x001f86913d3ea7876b9592571e250b041023707717279f444173f5c41e224944", - "0x0003d84091853c2be03741526eba87c6803d17cf24e1b03a2137718b5814216d", - "0x00ee0cbc49a6124e58f8dd4e8954bf6b03df401eecb0005ca0ca4247cf989011", - "0x006a8bfdeb2353a16797f504448da426d2fc62a4e7b5b9a9c3b8edeaae22e611", - "0x0072de82df8473cc6f899c0c823acb29bd91d667dbe48985f2ef3ade7ea6511b" + "0x0011e91a8ad340de230133c2cd565f8c548551baa993f7cd9f3c2e93f9f426df", + "0x1e70f66acddcd47ff730a29b48c2986c2a96357fde2dd2187952961d79df050e", + "0x00002753bcda89007d91da678c48a4c92ff3cfaa9b34942b31b9ac88595771f6", + "0x001cbdac8be925c7b063f6073c4a05903efffac20fa0775e26d549b851574c09", + "0x00ef4c971f93fcad640b7bf463be20e89d68253dddd2a1be5c42bb25779b41a3", + "0x00178d928105ac2f87d710a5fb8d0f28a27d5d3e5f599d9770fa3b4412d55323", + "0x0039469b0250aca8e2e379a25848aab89f6436b2d0176eb06e1a9ccb1c05816f", + "0x0097f6d0d2ab6e43d12af8206d2ab103fe00a48bd24ed2ae9ab6185f4afc61f1", + "0x00d5568a03c2e0ff4fed2dfced12e21a9f548e37c1089ade232337e65acff561", + "0x00aae23c259386153f4d45e3414aafa51f92aaeae2e04f0af6667031202f3243", + "0x008d438e3ee858b561b022999a43b2a94946334a9fc58bbe737530d3d19ea21d", + "0x004e22c68f394b5973ca7b17b37763dafa5f62c909b0d322822ba8b781040e18", + "0x00e254f9de97183915411ec08b0caa4cc8f5854813c8e9735c5cc6d92c52f9c9", + "0x002006ff61d082484b48ef5bdf9a0bc83c61fb1252662d0d122d06c4a2768d32", + "0x008677bd8d2b0e167a7baffbc341aa35cd87522360059007e6756e460552a48e", + "0x00329307c4fe4031819f693bc3e87c68d4e0f16806099ca18de5738ad891770e", + "0x003047d2c425a910c433293379248b27343fa16edb65bdb710905fe4cf180c1b", + "0x00f2de622597ad618e70b1364f6dc18377bd5fcf9c4e054ec7be47124edec5a9" ] length = "0x0000000000000000000000000000000000000000000000000000000000000012" @@ -8423,12 +9217,12 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.anchor_block_header] - sponge_blob_hash = "0x1690bfcde18b9d39e1b69f1d274e653e340efa9d0434b9339f9d91631bc3a56b" - total_fees = "0x0000000000000000000000000000000000000000000000000000000008e78850" - total_mana_used = "0x000000000000000000000000000000000000000000000000000000000000f124" + sponge_blob_hash = "0x192117c0b2b61d5cd54a40e49890b7885836b57543406aa29253385c038ccd4e" + total_fees = "0x0000000000000000000000000000000000000000000000000000000207f2040a" + total_mana_used = "0x000000000000000000000000000000000000000000000000000000000000f109" [app_public_inputs.anchor_block_header.last_archive] - root = "0x1d8cbfd158f232a206f3ce5e4dc939f5eb79c9d6d493e5501ea576607b799b79" + root = "0x1698275776708edb05d7a266b2c9ec367761e2d2880b8351124759c6bc811aab" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [app_public_inputs.anchor_block_header.state.l1_to_l2_message_tree] @@ -8436,37 +9230,37 @@ root = "0x0d582c10ff8115413aa5b70564fdd2f3cefe1f33a1e43a47bc495081e91e73e5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000002000" [app_public_inputs.anchor_block_header.state.partial.note_hash_tree] -root = "0x279bed2dff65bf4c71346cfefaf7da4aa9a6b78f35207f85874d17c9a5df0cfb" +root = "0x12594dd0532f6878c6911c140ce7a3a7f3290255234a527626ec7c88a0dc0ff3" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [app_public_inputs.anchor_block_header.state.partial.nullifier_tree] -root = "0x0f21e45441dee2af87084e04f64cadb7f6bcc3a887c3108ffb8ab60b5137f7ef" +root = "0x22a9075d4c4b4577d9f26a178d8aaaad7703ef737bc42844e3bfa6a61d8a03ef" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [app_public_inputs.anchor_block_header.state.partial.public_data_tree] -root = "0x0fb4f19322664f0fdf265206a9c80bf59c88c760ca2313d4eac0a3b0c6085c31" +root = "0x09923b3a3c41078e7bce6f43cf9f4d557d6942383951e2dbc64ba6da9eb1ecdd" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008b" [app_public_inputs.anchor_block_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000065366335" + version = "0x0000000000000000000000000000000000000000000000000000000033346232" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000022" - timestamp = "0x00000000000000000000000000000000000000000000000000000000692467f0" + timestamp = "0x0000000000000000000000000000000000000000000000000000000069297821" [app_public_inputs.anchor_block_header.global_variables.coinbase] - inner = "0x000000000000000000000000b476929343e25eae412082fd6785d57991942218" + inner = "0x000000000000000000000000b1d9d47da1fb6effcafe07337c149daf03083a89" [app_public_inputs.anchor_block_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.anchor_block_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000974" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000002283a" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000065366335" + version = "0x0000000000000000000000000000000000000000000000000000000033346232" [app_public_inputs.tx_context.gas_settings.gas_limits] da_gas = "0x0000000000000000000000000000000000000000000000000000000000c00000" @@ -8478,7 +9272,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000000f4240" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000099c" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000017886" [app_public_inputs.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/accumulated_data/mod.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/accumulated_data/mod.nr index ac743aec3a5c..c3eb53dff24a 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/accumulated_data/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/accumulated_data/mod.nr @@ -7,7 +7,6 @@ pub mod assert_split_sorted_transformed_arrays; pub mod assert_split_transformed_arrays_from_sorted_padded_array; pub mod assert_transformed_array; pub mod sort_by_counter; -pub mod validate_incrementing_counters; pub use assert_array_appended::{ assert_array_appended, assert_array_appended_and_scoped, @@ -25,7 +24,3 @@ pub use assert_split_sorted_transformed_arrays::assert_split_sorted_transformed_ pub use assert_split_transformed_arrays_from_sorted_padded_array::assert_split_transformed_arrays_from_sorted_padded_array; pub use assert_transformed_array::assert_transformed_array; pub use sort_by_counter::sort_by_counter; -pub use validate_incrementing_counters::{ - validate_incrementing_call_request_counters_within_range, - validate_incrementing_counters_within_range, -}; diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/accumulated_data/validate_incrementing_counters.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/accumulated_data/validate_incrementing_counters.nr deleted file mode 100644 index 1d408ce64270..000000000000 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/accumulated_data/validate_incrementing_counters.nr +++ /dev/null @@ -1,62 +0,0 @@ -use types::{ - abis::private_call_request::PrivateCallRequest, side_effect::Ordered, - utils::arrays::ClaimedLengthArray, -}; - -/// Validate that the counters of the `items` within the claimed length are strictly increasing and fall within the -/// specified range (`counter_start`, `counter_end`) (not inclusive). -pub fn validate_incrementing_counters_within_range( - counter_start: u32, - counter_end: u32, - items: ClaimedLengthArray, -) -where - T: Ordered, -{ - let mut prev_counter = counter_start; - let mut should_check = true; - for i in 0..N { - should_check &= i != items.length; - if should_check { - let item = items.array[i]; - assert( - item.counter() > prev_counter, - "counter must be larger than the counter of the previous item", - ); - prev_counter = item.counter(); - } - } - assert(prev_counter < counter_end, "counter must be smaller than the end counter of the call"); -} - -/// Validate that the `start_side_effect_counter` and `end_side_effect_counter` of the `private_call_requests` are -/// strictly increasing within the range (`counter_start`, `counter_end`) and non-overlapping - the -/// `start_side_effect_counter` of a call request must be larger than the `end_side_effect_counter` of the previous -/// call request. -pub fn validate_incrementing_call_request_counters_within_range( - counter_start: u32, - counter_end: u32, - private_call_requests: ClaimedLengthArray, -) { - let mut prev_counter = counter_start; - let mut should_check = true; - for i in 0..N { - should_check &= i != private_call_requests.length; - if should_check { - let item = private_call_requests.array[i]; - assert( - item.start_side_effect_counter > prev_counter, - "start counter must be larger than the end counter of the previous call", - ); - assert( - item.end_side_effect_counter > item.start_side_effect_counter, - "nested call has incorrect counter range", - ); - prev_counter = item.end_side_effect_counter; - } - } - assert( - prev_counter < counter_end, - "end counter must be smaller than the end counter of the parent call", - ); -} diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator.nr index 440a92513ca4..dfa2248e6f51 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator.nr @@ -1,11 +1,8 @@ pub(crate) mod find_index_of_first_fully_revertible_private_call_request; mod validate_contract_address; mod validate_min_revertible_side_effect_counter; +mod validate_side_effect_counters; -use crate::accumulated_data::{ - validate_incrementing_call_request_counters_within_range, - validate_incrementing_counters_within_range, -}; use dep::types::{ abis::{ kernel_circuit_public_inputs::PrivateKernelCircuitPublicInputs, @@ -14,9 +11,11 @@ use dep::types::{ public_call_request::PublicCallRequest, transaction::tx_request::TxRequest, }, constants::NULL_MSG_SENDER_CONTRACT_ADDRESS, + traits::Empty, }; use validate_contract_address::validate_contract_address; use validate_min_revertible_side_effect_counter::validate_no_phase_change_within_child_calls; +use validate_side_effect_counters::validate_unique_and_within_bounds_side_effect_counters; pub struct PrivateCallDataValidator { data: PrivateCallData, @@ -47,7 +46,10 @@ impl PrivateCallDataValidator { self.validate_private_call_requests(); self.validate_public_call_requests(); - self.validate_that_side_effect_counters_are_strictly_increasing_and_within_bounds(); + validate_unique_and_within_bounds_side_effect_counters( + self.data.public_inputs, + self.data.side_effect_uniqueness_hints, + ); } /// For Init only. @@ -265,7 +267,7 @@ impl PrivateCallDataValidator { }); // We also process the enqueued teardown call request: - if !public_inputs.public_teardown_call_request.contract_address.is_zero() { + if !public_inputs.public_teardown_call_request.is_empty() { self.validate_public_call_request(public_inputs.public_teardown_call_request); } } @@ -297,63 +299,6 @@ impl PrivateCallDataValidator { } } - // Tested with validate_counters.nr - fn validate_that_side_effect_counters_are_strictly_increasing_and_within_bounds(self) { - let public_inputs = self.data.public_inputs; - let counter_start = public_inputs.start_side_effect_counter; - let counter_end = public_inputs.end_side_effect_counter; - - assert(counter_start < counter_end, "private call has incorrect counter range"); - - validate_incrementing_counters_within_range( - counter_start, - counter_end, - public_inputs.note_hash_read_requests, - ); - validate_incrementing_counters_within_range( - counter_start, - counter_end, - public_inputs.nullifier_read_requests, - ); - validate_incrementing_counters_within_range( - counter_start, - counter_end, - public_inputs.note_hashes, - ); - validate_incrementing_counters_within_range( - counter_start, - counter_end, - public_inputs.nullifiers, - ); - validate_incrementing_counters_within_range( - counter_start, - counter_end, - public_inputs.l2_to_l1_msgs, - ); - validate_incrementing_counters_within_range( - counter_start, - counter_end, - public_inputs.private_logs, - ); - validate_incrementing_counters_within_range( - counter_start, - counter_end, - public_inputs.contract_class_logs_hashes, - ); - validate_incrementing_call_request_counters_within_range( - counter_start, - counter_end, - public_inputs.private_call_requests, - ); - - // Validate the public call requests by checking their start counters only, as their end counters are unknown. - validate_incrementing_counters_within_range( - counter_start, - counter_end, - public_inputs.public_call_requests, - ); - } - fn validate_expected_counters(self, claimed_revertible_counter: u32) { let expected_non_revertible_side_effect_counter = self.data.public_inputs.expected_non_revertible_side_effect_counter; diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator/validate_side_effect_counters.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator/validate_side_effect_counters.nr new file mode 100644 index 000000000000..376ad9708543 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/private_call_data_validator/validate_side_effect_counters.nr @@ -0,0 +1,222 @@ +use types::{ + abis::{ + private_call_request::PrivateCallRequest, + private_circuit_public_inputs::PrivateCircuitPublicInputs, + private_kernel::private_call_data::{SideEffectCounterRange, SideEffectUniquenessHints}, + }, + constants::{ + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, + GLOBAL_INDEX_NOTE_HASH_OFFSET, GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, + GLOBAL_INDEX_NULLIFIER_OFFSET, GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, GLOBAL_INDEX_PRIVATE_LOG_OFFSET, + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, + }, + side_effect::Ordered, + utils::arrays::ClaimedLengthArray, +}; + +// This function ensures that side effect counters of a private call are unique and within bounds of the private call. +// For nested calls, the uniqueness check also ensures that no other side effect falls within the range of the nested call counters. +// In order to do that, we map each side effect in the public inputs to a range of counters. For regular side effects, start and end are the same, +// for nested calls, start and end are different. +// After constraining the mapping to the list of ranges, we validate that call_start_counter < ranges[0].start ... < call_end_counter. +// Tested in tests/private_call_data_validator_builder/validate_side_effect_counters.nr +pub fn validate_unique_and_within_bounds_side_effect_counters( + public_inputs: PrivateCircuitPublicInputs, + side_effect_sorting_hints: SideEffectUniquenessHints, +) { + // In order to constrain the mapping to the list of ranges, we are going to require that each side effect is mapped to a range, and that one range + // is mapped to one side effect. In order to address side effects, we introduce the concept of global indices, which allow us to uniquely identify a slot + // in the set of all possible side effects. + let side_effect_ranges = side_effect_sorting_hints.side_effect_ranges; + + // The number of active items in the ranges list. + let total_side_effects = public_inputs.note_hash_read_requests.length + + public_inputs.nullifier_read_requests.length + + public_inputs.note_hashes.length + + public_inputs.nullifiers.length + + public_inputs.private_call_requests.length + + public_inputs.public_call_requests.length + + public_inputs.l2_to_l1_msgs.length + + public_inputs.private_logs.length + + public_inputs.contract_class_logs_hashes.length; + + // If the global index offsets constants were incorrectly calculated, this would be very bad. There is a test in constants.nr to check that they are properly computed. + validate_side_effect_ranges_for_counted_side_effects( + public_inputs.note_hash_read_requests, + side_effect_sorting_hints.note_hash_read_request_indices, + side_effect_ranges, + GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, + total_side_effects, + ); + validate_side_effect_ranges_for_counted_side_effects( + public_inputs.nullifier_read_requests, + side_effect_sorting_hints.nullifier_read_request_indices, + side_effect_ranges, + GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, + total_side_effects, + ); + validate_side_effect_ranges_for_counted_side_effects( + public_inputs.note_hashes, + side_effect_sorting_hints.note_hashes_indices, + side_effect_ranges, + GLOBAL_INDEX_NOTE_HASH_OFFSET, + total_side_effects, + ); + validate_side_effect_ranges_for_counted_side_effects( + public_inputs.nullifiers, + side_effect_sorting_hints.nullifiers_indices, + side_effect_ranges, + GLOBAL_INDEX_NULLIFIER_OFFSET, + total_side_effects, + ); + validate_side_effect_ranges_for_call_request( + public_inputs.private_call_requests, + side_effect_sorting_hints.private_call_requests_indices, + side_effect_ranges, + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, + total_side_effects, + ); + validate_side_effect_ranges_for_counted_side_effects( + public_inputs.public_call_requests, + side_effect_sorting_hints.public_call_requests_indices, + side_effect_ranges, + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, + total_side_effects, + ); + validate_side_effect_ranges_for_counted_side_effects( + public_inputs.l2_to_l1_msgs, + side_effect_sorting_hints.l2_to_l1_msgs_indices, + side_effect_ranges, + GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, + total_side_effects, + ); + validate_side_effect_ranges_for_counted_side_effects( + public_inputs.private_logs, + side_effect_sorting_hints.private_logs_indices, + side_effect_ranges, + GLOBAL_INDEX_PRIVATE_LOG_OFFSET, + total_side_effects, + ); + validate_side_effect_ranges_for_counted_side_effects( + public_inputs.contract_class_logs_hashes, + side_effect_sorting_hints.contract_class_logs_hashes_indices, + side_effect_ranges, + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, + total_side_effects, + ); + + let counter_start = public_inputs.start_side_effect_counter; + let counter_end = public_inputs.end_side_effect_counter; + + assert(counter_start < counter_end, "private call has incorrect counter range"); + + validate_increasing_ranges( + side_effect_ranges, + total_side_effects, + counter_start, + counter_end, + ); +} + +fn validate_side_effect_ranges_for_counted_side_effects( + items: ClaimedLengthArray, + indices: [u32; N], + side_effect_ranges: [SideEffectCounterRange; TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL], + global_index_offset: u32, + total_side_effects: u32, +) +where + T: Ordered, +{ + let mut should_check = true; + for i in 0..N { + let global_index = global_index_offset + i; + let index = indices[i]; + let range = side_effect_ranges[index]; + let counter = items.array[i].counter(); + + should_check &= i != items.length; + + if should_check { + // Validate index + assert(index < total_side_effects, "side effect range index out of bounds"); + // Validate that counter == range item + assert_eq(counter, range.start, "counter does not match start range item"); + assert_eq(counter, range.end, "counter does not match end range item"); + // The range points to this exact side effect. This avoids pointing two side effects to the same range, which would lead to incorrect validation. + assert_eq( + global_index, + range.side_effect_global_index, + "range global index does not match side effect global index", + ); + } + } +} + +fn validate_side_effect_ranges_for_call_request( + private_call_requests: ClaimedLengthArray, + indices: [u32; N], + side_effect_ranges: [SideEffectCounterRange; TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL], + global_index_offset: u32, + total_side_effects: u32, +) { + let mut should_check = true; + for i in 0..N { + let global_index = global_index_offset + i; + let index = indices[i]; + let range = side_effect_ranges[index]; + let item = private_call_requests.array[i]; + let start_counter = item.start_side_effect_counter; + let end_counter = item.end_side_effect_counter; + + should_check &= i != private_call_requests.length; + + if should_check { + // Validate index + assert(index < total_side_effects, "side effect range index out of bounds"); + + // Validate that (start_counter, end_counter) == range item + assert_eq(start_counter, range.start, "start counter does not match range item"); + assert_eq(end_counter, range.end, "end counter does not match range item"); + // For ranges that come from counted side effects, range.start == range.end. + // However, for ranges that come from nested calls, we need to ensure that start_counter < end_counter. + // Without this check, we would allow the ranges which should be monotonically increasing, to decrease. + assert(start_counter < end_counter, "nested call has incorrect counter range"); + + // The range points to this exact side effect. This avoids pointing two side effects to the same range, which would lead to incorrect validation. + assert_eq( + global_index, + range.side_effect_global_index, + "range global index does not match side effect global index", + ); + } + } +} + +// Validates that the active ranges are monotonically increasing. +fn validate_increasing_ranges( + side_effect_ranges: [SideEffectCounterRange; TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL], + total_side_effects: u32, + counter_start: u32, + counter_end: u32, +) { + let mut prev_counter = counter_start; + let mut should_check = true; + for i in 0..TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL { + let range = side_effect_ranges[i]; + should_check &= i != total_side_effects; + + if should_check { + assert( + range.start > prev_counter, + "start counter must be greater than previous counter", + ); + // We don't need to check here that range.end > range.start, because active ranges can only come from two sources: + // 1. Counted side effects, where range.start == range.end. + // 2. Nested calls, where we validated above that range.start < range.end. + prev_counter = range.end; + } + } + assert(prev_counter < counter_end, "end counter must be less than the end counter of the call"); +} diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/reset_output_validator.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/reset_output_validator.nr index 43042995c51a..4e9f1d4d46d0 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/reset_output_validator.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/components/reset_output_validator.nr @@ -131,7 +131,7 @@ impl validate_squashed_transient_data` will be called, + // because `transient_data/validate_log_squashing` will be called, // and it ensures that each note log is either: // - linked to a note hash being squashed, or // - linked to one that is being kept. @@ -156,11 +156,6 @@ impl(vec: &mut BoundedVec) -where - T: Empty, -{ - assert(vec.len() == 1, "Input vec is not valid"); - let empty_item = T::empty(); - let first_item = vec.get(0); - vec.push(first_item); - vec.set(0, empty_item); -} - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_arrays_malformed_note_hash_read_requests_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_note_hash_read_requests(1); - unshift_empty_item(&mut builder.private_call.note_hash_read_requests); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_arrays_malformed_nullifier_read_requests_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_nullifier_read_requests(1); - unshift_empty_item(&mut builder.private_call.nullifier_read_requests); - - builder.validate(); -} - -// TODO: this is succeeding when it should fail. What is happening? -// #[test(should_fail_with = "Invalid array")] -// fn validate_arrays_malformed_key_validation_requests_fails() { -// let mut builder = PrivateCallDataValidatorBuilder::new(); - -// builder.private_call.append_key_validation_requests(1); -// unshift_empty_item( -// &mut builder.private_call.scoped_key_validation_requests_and_generators, -// ); - -// builder.validate(); -// } - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_arrays_malformed_note_hashes_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_note_hashes(1); - unshift_empty_item(&mut builder.private_call.note_hashes); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_arrays_malformed_nullifiers_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_nullifiers(1); - unshift_empty_item(&mut builder.private_call.nullifiers); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_arrays_malformed_l2_to_l1_msgs_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_l2_to_l1_msgs(1); - unshift_empty_item(&mut builder.private_call.l2_to_l1_msgs); - - builder.validate(); -} - -#[test(should_fail_with = "incorrect msg_sender for call request")] -fn validate_arrays_malformed_private_call_requests_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(1); - unshift_empty_item(&mut builder.private_call.private_call_requests); - - builder.validate(); -} - -#[test(should_fail_with = "incorrect msg_sender for call request")] -fn validate_arrays_malformed_public_call_stack_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_public_call_requests(1); - unshift_empty_item(&mut builder.private_call.public_call_requests); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_arrays_malformed_private_logs() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_logs(1); - unshift_empty_item(&mut builder.private_call.private_logs); - - builder.validate(); -} diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_call_data_validator_builder/validate_counters.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_call_data_validator_builder/validate_counters.nr deleted file mode 100644 index dfbbce8b08c6..000000000000 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_call_data_validator_builder/validate_counters.nr +++ /dev/null @@ -1,251 +0,0 @@ -use crate::tests::private_call_data_validator_builder::PrivateCallDataValidatorBuilder; - -/** - * Private call. - */ -#[test] -fn validate_counters_private_call_succeeds() { - let builder = PrivateCallDataValidatorBuilder::new_from_counter(23); - builder.validate(); -} - -#[test] -fn validate_counters_private_call_from_0_counter_succeeds() { - let builder = PrivateCallDataValidatorBuilder::new_from_counter(0); - builder.validate(); -} - -#[test(should_fail_with = "private call has incorrect counter range")] -fn validate_counters_private_call_no_counter_range_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.counter = builder.private_call.counter_start; - - builder.validate(); -} - -#[test(should_fail_with = "private call has incorrect counter range")] -fn validate_counters_private_call_negative_call_counter_range_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.counter = builder.private_call.counter_start - 1; - - builder.validate(); -} - -/** - * Note hashes - */ -#[test] -fn validate_counters_note_hashes_succeeds() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_note_hashes(2); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_counters_note_hash_counter_same_as_call_counter_start_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_note_hashes(1); - // Tweak the counter of the first note hash to EQUAL the start counter of the call. - let mut note_hash = builder.private_call.note_hashes.get(0); - note_hash.inner.counter = builder.private_call.counter_start; - builder.private_call.note_hashes.set(0, note_hash); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_counters_note_hash_counter_smaller_than_call_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_note_hashes(1); - // Tweak the counter of the first note hash to be LESS than the start counter of the call. - let mut note_hash = builder.private_call.note_hashes.get(0); - note_hash.inner.counter = builder.private_call.counter_start - 1; - builder.private_call.note_hashes.set(0, note_hash); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_counters_note_hash_identical_counters_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_note_hashes(2); - let counter_start = builder.private_call.counter_start; - // Tweak the counter of the second note hash to EQUAL the counter of the first note hash. - let mut note_hash_0 = builder.private_call.note_hashes.get(0); - note_hash_0.inner.counter = counter_start + 1; - builder.private_call.note_hashes.set(0, note_hash_0); - let mut note_hash_1 = builder.private_call.note_hashes.get(1); - note_hash_1.inner.counter = counter_start + 1; - builder.private_call.note_hashes.set(1, note_hash_1); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be larger than the counter of the previous item")] -fn validate_counters_note_hash_unordered_counters_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_note_hashes(2); - let counter_start = builder.private_call.counter_start; - // Tweak the counter of the second note hash to be LESS than the counter of the first note hash. - let mut note_hash_0 = builder.private_call.note_hashes.get(0); - note_hash_0.inner.counter = counter_start + 2; - builder.private_call.note_hashes.set(0, note_hash_0); - let mut note_hash_1 = builder.private_call.note_hashes.get(1); - note_hash_1.inner.counter = counter_start + 1; - builder.private_call.note_hashes.set(1, note_hash_1); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be smaller than the end counter of the call")] -fn validate_counters_note_hash_counter_larger_than_call_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_note_hashes(2); - // Tweak the counter of the second note hash to be GREATER than the end counter of the call. - let mut note_hash = builder.private_call.note_hashes.get(1); - note_hash.inner.counter = builder.private_call.counter + 1; - builder.private_call.note_hashes.set(1, note_hash); - - builder.validate(); -} - -#[test(should_fail_with = "counter must be smaller than the end counter of the call")] -fn validate_counters_note_hash_counter_same_as_call_counter_end_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_note_hashes(2); - // Tweak the counter of the second note hash to EQUAL the end counter of the call. - let mut note_hash = builder.private_call.note_hashes.get(1); - note_hash.inner.counter = builder.private_call.counter; - builder.private_call.note_hashes.set(1, note_hash); - - builder.validate(); -} - -/** - * Private call requests. - */ -#[test] -fn validate_counters_private_call_requests_succeeds() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(2); - - builder.validate(); -} - -#[test(should_fail_with = "start counter must be larger than the end counter of the previous call")] -fn validate_counters_private_call_requests_less_than_call_start_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(1); - // Tweak the start counter of the first nested call to be LESS than the start counter of the call. - let mut call_request = builder.private_call.private_call_requests.get(0); - call_request.start_side_effect_counter = builder.private_call.counter_start - 1; - builder.private_call.private_call_requests.set(0, call_request); - - builder.validate(); -} - -#[test(should_fail_with = "start counter must be larger than the end counter of the previous call")] -fn validate_counters_private_call_requests_equal_call_start_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(1); - // Tweak the start counter of the call to EQUAL the start counter of the first nested call. - let mut call_request = builder.private_call.private_call_requests.get(0); - call_request.start_side_effect_counter = builder.private_call.counter_start; - builder.private_call.private_call_requests.set(0, call_request); - - builder.validate(); -} - -#[test(should_fail_with = "start counter must be larger than the end counter of the previous call")] -fn validate_counters_private_call_requests_less_than_previous_end_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(2); - // Tweak the start counter of the second nested call to be LESS than the end counter of the first nested call. - let counter_end = builder.private_call.private_call_requests.get(0).end_side_effect_counter; - let mut call_request = builder.private_call.private_call_requests.get(1); - call_request.start_side_effect_counter = counter_end - 1; - builder.private_call.private_call_requests.set(1, call_request); - - builder.validate(); -} - -#[test(should_fail_with = "start counter must be larger than the end counter of the previous call")] -fn validate_counters_private_call_requests_same_as_previous_end_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(2); - // Tweak the start counter of the second nested call to EQUAL the end counter of the first nested call. - let counter_end = builder.private_call.private_call_requests.get(0).end_side_effect_counter; - let mut call_request = builder.private_call.private_call_requests.get(1); - call_request.start_side_effect_counter = counter_end; - builder.private_call.private_call_requests.set(1, call_request); - - builder.validate(); -} - -#[test(should_fail_with = "nested call has incorrect counter range")] -fn validate_counters_private_call_requests_end_less_than_start_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(1); - // Tweak the end counter of the first nested call to be LESS than its start counter. - let mut call_request = builder.private_call.private_call_requests.get(0); - call_request.end_side_effect_counter = call_request.start_side_effect_counter - 1; - builder.private_call.private_call_requests.set(0, call_request); - - builder.validate(); -} - -#[test(should_fail_with = "nested call has incorrect counter range")] -fn validate_counters_private_call_requests_end_equal_start_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(1); - // Tweak the end counter of the first nested call to EQUAL its start counter. - let mut call_request = builder.private_call.private_call_requests.get(0); - call_request.end_side_effect_counter = call_request.start_side_effect_counter; - builder.private_call.private_call_requests.set(0, call_request); - - builder.validate(); -} - -#[test(should_fail_with = "end counter must be smaller than the end counter of the parent call")] -fn validate_counters_private_call_requests_greater_than_call_end_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(1); - // Tweak the end counter of the nested call to be GREATER than the end counter of the call. - let counter_end = builder.private_call.counter; - let mut call_request = builder.private_call.private_call_requests.get(0); - call_request.end_side_effect_counter = counter_end + 1; - builder.private_call.private_call_requests.set(0, call_request); - - builder.validate(); -} - -#[test(should_fail_with = "end counter must be smaller than the end counter of the parent call")] -fn validate_counters_private_call_requests_equal_call_end_fails() { - let mut builder = PrivateCallDataValidatorBuilder::new(); - - builder.private_call.append_private_call_requests(1); - // Tweak the end counter of the nested call to EQUAL the end counter of the call. - let mut call_request = builder.private_call.private_call_requests.get(0); - call_request.end_side_effect_counter = builder.private_call.counter; - builder.private_call.private_call_requests.set(0, call_request); - - builder.validate(); -} diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_call_data_validator_builder/validate_side_effect_counters.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_call_data_validator_builder/validate_side_effect_counters.nr new file mode 100644 index 000000000000..5ada37971713 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_call_data_validator_builder/validate_side_effect_counters.nr @@ -0,0 +1,684 @@ +use crate::{ + components::private_call_data_validator::PrivateCallDataValidator, + tests::private_call_data_validator_builder::PrivateCallDataValidatorBuilder, +}; +use types::constants::{ + MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, + MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL, + MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, + MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL, +}; + +#[test] +fn validate_side_effect_counters_succeeds() { + let builder = PrivateCallDataValidatorBuilder::new_from_counter(23); + builder.validate(); +} + +#[test] +fn validate_side_effect_counters_full_inputs_succeeds() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(2); + builder.private_call.append_note_hashes(MAX_NOTE_HASHES_PER_CALL); + builder.private_call.append_nullifiers(MAX_NULLIFIERS_PER_CALL); + builder.private_call.append_note_hash_read_requests(MAX_NOTE_HASH_READ_REQUESTS_PER_CALL); + builder.private_call.append_nullifier_read_requests(MAX_NULLIFIER_READ_REQUESTS_PER_CALL); + builder.private_call.append_private_call_requests(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL); + builder.private_call.append_public_call_requests(MAX_ENQUEUED_CALLS_PER_CALL); + builder.private_call.append_l2_to_l1_msgs(MAX_L2_TO_L1_MSGS_PER_CALL); + builder.private_call.append_private_logs(MAX_PRIVATE_LOGS_PER_CALL); + builder.private_call.append_contract_class_logs(MAX_CONTRACT_CLASS_LOGS_PER_CALL); + builder.validate(); +} + +#[test(should_fail_with = "private call has incorrect counter range")] +fn validate_side_effect_counters_call_request_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.counter = 10; + builder.validate(); +} + +// Note hash read requests + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_note_hash_read_request_counter_less_than_counter_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_note_hash_read_requests(1); + + let mut item = builder.private_call.note_hash_read_requests.get(0); + item.inner.counter = 49; + + builder.private_call.note_hash_read_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "end counter must be less than the end counter of the call")] +fn validate_side_effect_counters_note_hash_read_request_counter_greater_than_counter_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_note_hash_read_requests(1); + + let mut item = builder.private_call.note_hash_read_requests.get(0); + item.inner.counter = 100; + + builder.private_call.note_hash_read_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_duplicated_note_hash_read_request_counter_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_note_hash_read_requests(5); + + let mut item = builder.private_call.note_hash_read_requests.get(0); + let another_item = builder.private_call.note_hash_read_requests.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.note_hash_read_requests.set(0, item); + + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_note_hash_read_request_counter_duplicated_in_other_array_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_note_hash_read_requests(5); + builder.private_call.append_nullifier_read_requests(5); + + let mut item = builder.private_call.note_hash_read_requests.get(0); + let another_item = builder.private_call.nullifier_read_requests.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.note_hash_read_requests.set(0, item); + builder.validate(); +} + +// Nullifier read requests +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_nullifier_read_request_counter_less_than_counter_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_nullifier_read_requests(1); + + let mut item = builder.private_call.nullifier_read_requests.get(0); + item.inner.counter = 49; + + builder.private_call.nullifier_read_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "end counter must be less than the end counter of the call")] +fn validate_side_effect_counters_nullifier_read_request_counter_greater_than_counter_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_nullifier_read_requests(1); + + let mut item = builder.private_call.nullifier_read_requests.get(0); + item.inner.counter = 100; + + builder.private_call.nullifier_read_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_duplicated_nullifier_read_request_counter_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_nullifier_read_requests(5); + + let mut item = builder.private_call.nullifier_read_requests.get(0); + let another_item = builder.private_call.nullifier_read_requests.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.nullifier_read_requests.set(0, item); + + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_nullifier_read_request_counter_duplicated_in_other_array_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_nullifier_read_requests(5); + builder.private_call.append_note_hash_read_requests(5); + + let mut item = builder.private_call.nullifier_read_requests.get(0); + let another_item = builder.private_call.note_hash_read_requests.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.nullifier_read_requests.set(0, item); + + builder.validate(); +} + +// Note hashes + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_note_hash_counter_less_than_counter_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_note_hashes(1); + + let mut item = builder.private_call.note_hashes.get(0); + item.inner.counter = 49; + + builder.private_call.note_hashes.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "end counter must be less than the end counter of the call")] +fn validate_side_effect_counters_note_hash_counter_greater_than_counter_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_note_hashes(1); + + let mut item = builder.private_call.note_hashes.get(0); + item.inner.counter = 100; + + builder.private_call.note_hashes.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_duplicated_note_hash_counter_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_note_hashes(5); + + let mut item = builder.private_call.note_hashes.get(0); + let another_item = builder.private_call.note_hashes.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.note_hashes.set(0, item); + + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_note_hash_counter_duplicated_in_other_array_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_note_hashes(5); + builder.private_call.append_nullifiers(5); + + let mut item = builder.private_call.note_hashes.get(0); + let another_item = builder.private_call.nullifiers.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.note_hashes.set(0, item); + + builder.validate(); +} + +// Nullifiers +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_nullifier_counter_less_than_counter_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_nullifiers(1); + + let mut item = builder.private_call.nullifiers.get(0); + item.inner.counter = 49; + + builder.private_call.nullifiers.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "end counter must be less than the end counter of the call")] +fn validate_side_effect_counters_nullifier_counter_greater_than_counter_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_nullifiers(1); + + let mut item = builder.private_call.nullifiers.get(0); + item.inner.counter = 100; + + builder.private_call.nullifiers.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_duplicated_nullifier_counter_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_nullifiers(5); + + let mut item = builder.private_call.nullifiers.get(0); + let another_item = builder.private_call.nullifiers.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.nullifiers.set(0, item); + + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_nullifier_counter_duplicated_in_other_array_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_nullifiers(5); + builder.private_call.append_note_hash_read_requests(5); + + let mut item = builder.private_call.nullifiers.get(0); + let another_item = builder.private_call.note_hash_read_requests.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.nullifiers.set(0, item); + + builder.validate(); +} + +// Private call requests +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_private_call_request_start_counter_less_than_counter_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(1); + + let mut item = builder.private_call.private_call_requests.get(0); + item.start_side_effect_counter = 49; + + builder.private_call.private_call_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "end counter must be less than the end counter of the call")] +fn validate_side_effect_counters_private_call_request_end_counter_greater_than_counter_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(1); + + let mut item = builder.private_call.private_call_requests.get(0); + item.end_side_effect_counter = 100; + + builder.private_call.private_call_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_private_calls_with_overlapping_counter_ranges_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(2); + + let mut item = builder.private_call.private_call_requests.get(0); + let another_item = builder.private_call.private_call_requests.get(1); + + item.end_side_effect_counter = another_item.start_side_effect_counter + 1; + + builder.private_call.private_call_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_private_calls_with_adjacent_counter_ranges_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(2); + + let mut item = builder.private_call.private_call_requests.get(0); + let another_item = builder.private_call.private_call_requests.get(1); + + item.end_side_effect_counter = another_item.start_side_effect_counter; + + builder.private_call.private_call_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "nested call has incorrect counter range")] +fn validate_side_effect_counters_private_call_with_reversed_counter_ranges_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(1); + + let mut item = builder.private_call.private_call_requests.get(0); + + let start_counter = item.start_side_effect_counter; + item.start_side_effect_counter = item.end_side_effect_counter; + item.end_side_effect_counter = start_counter; + + builder.private_call.private_call_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "nested call has incorrect counter range")] +fn validate_side_effect_counters_private_call_with_no_range_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(1); + + let mut item = builder.private_call.private_call_requests.get(0); + + item.start_side_effect_counter = item.end_side_effect_counter; + + builder.private_call.private_call_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_private_calls_overlapping_other_side_effect_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(1); + builder.private_call.append_nullifier_read_requests(1); + + let call = builder.private_call.private_call_requests.get(0); + let mut another_item = builder.private_call.nullifier_read_requests.get(0); + + another_item.inner.counter = call.start_side_effect_counter + 1; + + builder.private_call.nullifier_read_requests.set(0, another_item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_private_calls_same_start_other_side_effect_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(1); + builder.private_call.append_nullifier_read_requests(1); + + let call = builder.private_call.private_call_requests.get(0); + let mut another_item = builder.private_call.nullifier_read_requests.get(0); + + another_item.inner.counter = call.start_side_effect_counter; + + builder.private_call.nullifier_read_requests.set(0, another_item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_private_calls_same_end_other_side_effect_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(1); + builder.private_call.append_nullifier_read_requests(1); + + let call = builder.private_call.private_call_requests.get(0); + let mut another_item = builder.private_call.nullifier_read_requests.get(0); + + another_item.inner.counter = call.end_side_effect_counter; + + builder.private_call.nullifier_read_requests.set(0, another_item); + builder.validate(); +} + +// Public call requests + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_public_call_request_start_counter_less_than_counter_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_public_call_requests(1); + + let mut item = builder.private_call.public_call_requests.get(0); + item.counter = 49; + + builder.private_call.public_call_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "end counter must be less than the end counter of the call")] +fn validate_side_effect_counters_public_call_request_end_counter_greater_than_counter_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_public_call_requests(1); + + let mut item = builder.private_call.public_call_requests.get(0); + item.counter = 100; + + builder.private_call.public_call_requests.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_duplicated_public_call_request_counter_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_public_call_requests(5); + + let mut item = builder.private_call.public_call_requests.get(0); + let another_item = builder.private_call.public_call_requests.get(3); + + item.counter = another_item.counter; + builder.private_call.public_call_requests.set(0, item); + + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_public_call_request_counter_duplicated_in_other_array_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_public_call_requests(5); + builder.private_call.append_l2_to_l1_msgs(5); + + let mut item = builder.private_call.public_call_requests.get(0); + let another_item = builder.private_call.l2_to_l1_msgs.get(3); + + item.counter = another_item.inner.counter; + builder.private_call.public_call_requests.set(0, item); + + builder.validate(); +} + +// L2 to L1 messages +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_l2_to_l1_msg_counter_less_than_counter_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_l2_to_l1_msgs(1); + + let mut item = builder.private_call.l2_to_l1_msgs.get(0); + item.inner.counter = 49; + + builder.private_call.l2_to_l1_msgs.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "end counter must be less than the end counter of the call")] +fn validate_side_effect_counters_l2_to_l1_msg_counter_greater_than_counter_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_l2_to_l1_msgs(1); + + let mut item = builder.private_call.l2_to_l1_msgs.get(0); + item.inner.counter = 100; + + builder.private_call.l2_to_l1_msgs.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_duplicated_l2_to_l1_msg_counter_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_l2_to_l1_msgs(5); + + let mut item = builder.private_call.l2_to_l1_msgs.get(0); + let another_item = builder.private_call.l2_to_l1_msgs.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.l2_to_l1_msgs.set(0, item); + + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_l2_to_l1_msg_counter_duplicated_in_other_array_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_l2_to_l1_msgs(5); + builder.private_call.append_private_logs(5); + + let mut item = builder.private_call.l2_to_l1_msgs.get(0); + let another_item = builder.private_call.private_logs.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.l2_to_l1_msgs.set(0, item); + + builder.validate(); +} + +// Private logs +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_private_log_counter_less_than_counter_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_logs(1); + + let mut item = builder.private_call.private_logs.get(0); + item.inner.counter = 49; + + builder.private_call.private_logs.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "end counter must be less than the end counter of the call")] +fn validate_side_effect_counters_private_log_counter_greater_than_counter_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_logs(1); + + let mut item = builder.private_call.private_logs.get(0); + item.inner.counter = 100; + + builder.private_call.private_logs.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_duplicated_private_log_counter_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_private_logs(5); + + let mut item = builder.private_call.private_logs.get(0); + let another_item = builder.private_call.private_logs.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.private_logs.set(0, item); + + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_private_log_counter_duplicated_in_other_array_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_private_logs(5); + builder.private_call.append_contract_class_logs(1); + + let mut item = builder.private_call.private_logs.get(3); + let another_item = builder.private_call.contract_class_logs_hashes.get(0); + + item.inner.counter = another_item.inner.counter; + builder.private_call.private_logs.set(0, item); + + builder.validate(); +} + +// Contract class logs +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_contract_class_log_counter_less_than_counter_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_contract_class_logs(1); + + let mut item = builder.private_call.contract_class_logs_hashes.get(0); + item.inner.counter = 49; + + builder.private_call.contract_class_logs_hashes.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "end counter must be less than the end counter of the call")] +fn validate_side_effect_counters_contract_class_log_counter_greater_than_counter_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_contract_class_logs(1); + + let mut item = builder.private_call.contract_class_logs_hashes.get(0); + item.inner.counter = 100; + + builder.private_call.contract_class_logs_hashes.set(0, item); + builder.validate(); +} + +#[test(should_fail_with = "start counter must be greater than previous counter")] +fn validate_side_effect_counters_duplicated_contract_class_log_counter_in_other_array_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(10); + builder.private_call.append_contract_class_logs(1); + builder.private_call.append_note_hash_read_requests(5); + + let mut item = builder.private_call.contract_class_logs_hashes.get(0); + let another_item = builder.private_call.note_hash_read_requests.get(3); + + item.inner.counter = another_item.inner.counter; + builder.private_call.contract_class_logs_hashes.set(0, item); + + builder.validate(); +} + +// Modifying hints + +#[test(should_fail_with = "side effect range index out of bounds")] +fn validate_side_effect_counters_modify_range_index_out_of_bounds_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_nullifiers(2); + + let mut private_call = builder.private_call.to_private_call_data(); + + private_call.side_effect_uniqueness_hints.nullifiers_indices[0] = 10; + + PrivateCallDataValidator::new(private_call).validate_common( + builder.private_call.protocol_contracts, + ); +} + +#[test(should_fail_with = "counter does not match start range item")] +fn validate_side_effect_counters_modify_range_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_note_hash_read_requests(2); + + let mut private_call = builder.private_call.to_private_call_data(); + + private_call.side_effect_uniqueness_hints.side_effect_ranges[0].start += 1; + + PrivateCallDataValidator::new(private_call).validate_common( + builder.private_call.protocol_contracts, + ); +} + +#[test(should_fail_with = "counter does not match end range item")] +fn validate_side_effect_counters_modify_range_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_nullifier_read_requests(2); + + let mut private_call = builder.private_call.to_private_call_data(); + + private_call.side_effect_uniqueness_hints.side_effect_ranges[0].end += 1; + + PrivateCallDataValidator::new(private_call).validate_common( + builder.private_call.protocol_contracts, + ); +} + +#[test(should_fail_with = "range global index does not match side effect global index")] +fn validate_side_effect_counters_modify_range_global_index_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_l2_to_l1_msgs(2); + + let mut private_call = builder.private_call.to_private_call_data(); + + private_call.side_effect_uniqueness_hints.side_effect_ranges[0].side_effect_global_index += 1; + + PrivateCallDataValidator::new(private_call).validate_common( + builder.private_call.protocol_contracts, + ); +} + +#[test(should_fail_with = "start counter does not match range item")] +fn validate_side_effect_counters_modify_call_request_range_start_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(1); + + let mut private_call = builder.private_call.to_private_call_data(); + + private_call.public_inputs.private_call_requests.array[0].start_side_effect_counter += 1; + + PrivateCallDataValidator::new(private_call).validate_common( + builder.private_call.protocol_contracts, + ); +} + +#[test(should_fail_with = "end counter does not match range item")] +fn validate_side_effect_counters_modify_call_request_range_end_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(2); + + let mut private_call = builder.private_call.to_private_call_data(); + + private_call.public_inputs.private_call_requests.array[0].end_side_effect_counter += 1; + + PrivateCallDataValidator::new(private_call).validate_common( + builder.private_call.protocol_contracts, + ); +} + +#[test(should_fail_with = "range global index does not match side effect global index")] +fn validate_side_effect_counters_modify_call_request_range_global_index_fails() { + let mut builder = PrivateCallDataValidatorBuilder::new_from_counter(50); + builder.private_call.append_private_call_requests(2); + + let mut private_call = builder.private_call.to_private_call_data(); + + private_call.side_effect_uniqueness_hints.side_effect_ranges[1].side_effect_global_index += 1; + + PrivateCallDataValidator::new(private_call).validate_common( + builder.private_call.protocol_contracts, + ); +} diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_kernel/private_call_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_kernel/private_call_data.nr index 1951b2ce087b..73b8a0dad34f 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_kernel/private_call_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_kernel/private_call_data.nr @@ -1,17 +1,25 @@ use crate::{ abis::private_circuit_public_inputs::PrivateCircuitPublicInputs, address::SaltedInitializationHash, - constants::{FUNCTION_TREE_HEIGHT, PROOF_TYPE_HN, PROOF_TYPE_OINK, PUBLIC_DATA_TREE_HEIGHT}, + constants::{ + FUNCTION_TREE_HEIGHT, MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL, + MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL, + MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, + MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL, PROOF_TYPE_HN, + PROOF_TYPE_OINK, PUBLIC_DATA_TREE_HEIGHT, TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, + }, data::public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage, merkle_tree::MembershipWitness, proof::verification_key::ChonkVerificationKey, public_keys::PublicKeys, + traits::Empty, }; pub struct PrivateCallData { pub public_inputs: PrivateCircuitPublicInputs, pub vk: ChonkVerificationKey, pub verification_key_hints: PrivateVerificationKeyHints, + pub side_effect_uniqueness_hints: SideEffectUniquenessHints, } impl PrivateCallData { @@ -53,6 +61,7 @@ pub struct PrivateVerificationKeyHints { pub struct PrivateCallDataWithoutPublicInputs { pub vk: ChonkVerificationKey, pub verification_key_hints: PrivateVerificationKeyHints, + pub side_effect_uniqueness_hints: SideEffectUniquenessHints, } impl PrivateCallDataWithoutPublicInputs { @@ -64,6 +73,54 @@ impl PrivateCallDataWithoutPublicInputs { public_inputs, vk: self.vk, verification_key_hints: self.verification_key_hints, + side_effect_uniqueness_hints: self.side_effect_uniqueness_hints, + } + } +} + +#[derive(Eq)] +pub struct SideEffectCounterRange { + pub start: u32, + pub end: u32, + pub side_effect_global_index: u32, +} + +impl Empty for SideEffectCounterRange { + fn empty() -> Self { + SideEffectCounterRange { start: 0, end: 0, side_effect_global_index: 0 } + } +} + +#[derive(Eq)] +pub struct SideEffectUniquenessHints { + pub side_effect_ranges: [SideEffectCounterRange; TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL], + + pub note_hash_read_request_indices: [u32; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], + pub nullifier_read_request_indices: [u32; MAX_NULLIFIER_READ_REQUESTS_PER_CALL], + pub note_hashes_indices: [u32; MAX_NOTE_HASHES_PER_CALL], + pub nullifiers_indices: [u32; MAX_NULLIFIERS_PER_CALL], + pub private_call_requests_indices: [u32; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], + pub public_call_requests_indices: [u32; MAX_ENQUEUED_CALLS_PER_CALL], + pub l2_to_l1_msgs_indices: [u32; MAX_L2_TO_L1_MSGS_PER_CALL], + pub private_logs_indices: [u32; MAX_PRIVATE_LOGS_PER_CALL], + pub contract_class_logs_hashes_indices: [u32; MAX_CONTRACT_CLASS_LOGS_PER_CALL], +} + +impl Empty for SideEffectUniquenessHints { + fn empty() -> Self { + SideEffectUniquenessHints { + side_effect_ranges: [ + SideEffectCounterRange::empty(); TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL + ], + note_hash_read_request_indices: [0; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], + nullifier_read_request_indices: [0; MAX_NULLIFIER_READ_REQUESTS_PER_CALL], + note_hashes_indices: [0; MAX_NOTE_HASHES_PER_CALL], + nullifiers_indices: [0; MAX_NULLIFIERS_PER_CALL], + private_call_requests_indices: [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL], + public_call_requests_indices: [0; MAX_ENQUEUED_CALLS_PER_CALL], + l2_to_l1_msgs_indices: [0; MAX_L2_TO_L1_MSGS_PER_CALL], + private_logs_indices: [0; MAX_PRIVATE_LOGS_PER_CALL], + contract_class_logs_hashes_indices: [0; MAX_CONTRACT_CLASS_LOGS_PER_CALL], } } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 0563d30c900b..c251465e5e6d 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -123,6 +123,36 @@ pub comptime global PARITY_ROOT_VK_INDEX: u32 = 23; pub comptime global PRIVATE_KERNEL_RESET_INDEX: u32 = 24; // Important: Do not define indexes after the PRIVATE_KERNEL_RESET_INDEX. They are allocated for the variants of private kernel reset. +// SIDE EFFECT RELATED CONSTANTS +// Global indices allow us to uniquely index side effects in PrivateCircuitPublicInputs +pub global GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET: u32 = 0; +pub global GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET: u32 = + GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET + MAX_NOTE_HASH_READ_REQUESTS_PER_CALL; +pub global GLOBAL_INDEX_NOTE_HASH_OFFSET: u32 = + GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET + MAX_NULLIFIER_READ_REQUESTS_PER_CALL; +pub global GLOBAL_INDEX_NULLIFIER_OFFSET: u32 = + GLOBAL_INDEX_NOTE_HASH_OFFSET + MAX_NOTE_HASHES_PER_CALL; +pub global GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET: u32 = + GLOBAL_INDEX_NULLIFIER_OFFSET + MAX_NULLIFIERS_PER_CALL; +pub global GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET: u32 = + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET + MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL; +pub global GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET: u32 = + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET + MAX_ENQUEUED_CALLS_PER_CALL; +pub global GLOBAL_INDEX_PRIVATE_LOG_OFFSET: u32 = + GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET + MAX_L2_TO_L1_MSGS_PER_CALL; +pub global GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET: u32 = + GLOBAL_INDEX_PRIVATE_LOG_OFFSET + MAX_PRIVATE_LOGS_PER_CALL; + +pub global TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL: u32 = MAX_NOTE_HASH_READ_REQUESTS_PER_CALL + + MAX_NULLIFIER_READ_REQUESTS_PER_CALL + + MAX_NOTE_HASHES_PER_CALL + + MAX_NULLIFIERS_PER_CALL + + MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL + + MAX_ENQUEUED_CALLS_PER_CALL + + MAX_L2_TO_L1_MSGS_PER_CALL + + MAX_PRIVATE_LOGS_PER_CALL + + MAX_CONTRACT_CLASS_LOGS_PER_CALL; + // MISC CONSTANTS pub global FUNCTION_SELECTOR_NUM_BYTES: Field = 4; pub global INITIAL_CHECKPOINT_NUMBER: Field = 1; @@ -1171,13 +1201,22 @@ mod test { use crate::address::aztec_address::AztecAddress; use crate::constants::{ AVM_RETRIEVED_BYTECODES_TREE_HEIGHT, AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_HEIGHT, - MAX_PROTOCOL_CONTRACTS, MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS, - MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, SIDE_EFFECT_MASKING_ADDRESS, + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, + GLOBAL_INDEX_NOTE_HASH_OFFSET, GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, + GLOBAL_INDEX_NULLIFIER_OFFSET, GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, GLOBAL_INDEX_PRIVATE_LOG_OFFSET, + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, MAX_CONTRACT_CLASS_LOGS_PER_CALL, + MAX_ENQUEUED_CALLS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, + MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL, + MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, + MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL, MAX_PROTOCOL_CONTRACTS, + MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, + SIDE_EFFECT_MASKING_ADDRESS, }; use crate::traits::FromField; use super::{ NUM_BASE_PARITY_PER_ROOT_PARITY, NUM_MSGS_PER_BASE_PARITY, - NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, + NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, }; #[test] @@ -1228,4 +1267,27 @@ mod test { ); } + #[test] + fn validate_global_indexes() { + let sequence = [ + (GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL), + (GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, MAX_NULLIFIER_READ_REQUESTS_PER_CALL), + (GLOBAL_INDEX_NOTE_HASH_OFFSET, MAX_NOTE_HASHES_PER_CALL), + (GLOBAL_INDEX_NULLIFIER_OFFSET, MAX_NULLIFIERS_PER_CALL), + (GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL), + (GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, MAX_ENQUEUED_CALLS_PER_CALL), + (GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, MAX_L2_TO_L1_MSGS_PER_CALL), + (GLOBAL_INDEX_PRIVATE_LOG_OFFSET, MAX_PRIVATE_LOGS_PER_CALL), + (GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, MAX_CONTRACT_CLASS_LOGS_PER_CALL), + ]; + + let mut last_offset = 0; + for i in 0..sequence.len() { + let (offset, count) = sequence[i]; + assert_eq(offset, last_offset); + last_offset += count; + } + assert_eq(last_offset, TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL); + } + } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr index 56d05b9c510b..203bc615d31b 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr @@ -78,12 +78,15 @@ use crate::{ public_keys::PublicKeys, side_effect::{Counted, Ordered, Scoped}, storage::map::derive_storage_slot_in_map, - tests::fixtures::{ - self, - contract_functions::ContractFunction, - contracts::ContractData, - public_data_tree::empty_public_data_tree, - vk_tree::{get_vk_data, vk_tree_root}, + tests::{ + fixtures::{ + self, + contract_functions::ContractFunction, + contracts::ContractData, + public_data_tree::empty_public_data_tree, + vk_tree::{get_vk_data, vk_tree_root}, + }, + side_effect_uniqueness_hints::build_uniqueness_hints, }, traits::{Deserialize, Empty, FromField, Hash, Packable}, utils::arrays::ClaimedLengthArray, @@ -519,10 +522,14 @@ impl FixtureBuilder { } pub fn to_private_call_data(mut self) -> PrivateCallData { + let public_inputs = self.to_private_circuit_public_inputs(); + // Safety: These are hints to be validated in the kernels. + let uniqueness_hints = unsafe { build_uniqueness_hints(public_inputs) }; PrivateCallData { - public_inputs: self.to_private_circuit_public_inputs(), + public_inputs, vk: self.vk, verification_key_hints: self.to_private_verification_key_hints(), + side_effect_uniqueness_hints: uniqueness_hints, } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/mod.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/mod.nr index 881d6c652005..7b7a0a1bd8c5 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/mod.nr @@ -1,3 +1,4 @@ +pub mod side_effect_uniqueness_hints; pub mod merkle_tree_utils; pub mod fixtures; pub mod types; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/side_effect_uniqueness_hints.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/side_effect_uniqueness_hints.nr new file mode 100644 index 000000000000..fa7b131a6088 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/side_effect_uniqueness_hints.nr @@ -0,0 +1,146 @@ +use crate::{ + abis::{ + private_call_request::PrivateCallRequest, + private_circuit_public_inputs::PrivateCircuitPublicInputs, + private_kernel::private_call_data::{SideEffectCounterRange, SideEffectUniquenessHints}, + }, + constants::{ + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, + GLOBAL_INDEX_NOTE_HASH_OFFSET, GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, + GLOBAL_INDEX_NULLIFIER_OFFSET, GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, GLOBAL_INDEX_PRIVATE_LOG_OFFSET, + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, + }, + side_effect::Ordered, + traits::Empty, + utils::arrays::subarray, +}; + +fn build_side_effect_range(item: T, global_index: u32) -> SideEffectCounterRange +where + T: Ordered, +{ + SideEffectCounterRange { + start: item.counter(), + end: item.counter(), + side_effect_global_index: global_index, + } +} + +fn build_side_effect_range_from_private_call_request( + item: PrivateCallRequest, + global_index: u32, +) -> SideEffectCounterRange { + SideEffectCounterRange { + start: item.start_side_effect_counter, + end: item.end_side_effect_counter, + side_effect_global_index: global_index, + } +} + +pub unconstrained fn build_uniqueness_hints( + public_inputs: PrivateCircuitPublicInputs, +) -> SideEffectUniquenessHints { + let mut side_effect_ranges = BoundedVec::new(); + + for i in 0..public_inputs.note_hash_read_requests.length { + side_effect_ranges.push(build_side_effect_range( + public_inputs.note_hash_read_requests.array[i], + i + GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, + )); + } + + for i in 0..public_inputs.nullifier_read_requests.length { + side_effect_ranges.push(build_side_effect_range( + public_inputs.nullifier_read_requests.array[i], + i + GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, + )); + } + + for i in 0..public_inputs.note_hashes.length { + side_effect_ranges.push(build_side_effect_range( + public_inputs.note_hashes.array[i], + i + GLOBAL_INDEX_NOTE_HASH_OFFSET, + )); + } + + for i in 0..public_inputs.nullifiers.length { + side_effect_ranges.push(build_side_effect_range( + public_inputs.nullifiers.array[i], + i + GLOBAL_INDEX_NULLIFIER_OFFSET, + )); + } + + for i in 0..public_inputs.private_call_requests.length { + side_effect_ranges.push(build_side_effect_range_from_private_call_request( + public_inputs.private_call_requests.array[i], + i + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, + )); + } + + for i in 0..public_inputs.public_call_requests.length { + side_effect_ranges.push(build_side_effect_range( + public_inputs.public_call_requests.array[i], + i + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, + )); + } + + for i in 0..public_inputs.l2_to_l1_msgs.length { + side_effect_ranges.push(build_side_effect_range( + public_inputs.l2_to_l1_msgs.array[i], + i + GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, + )); + } + + for i in 0..public_inputs.private_logs.length { + side_effect_ranges.push(build_side_effect_range( + public_inputs.private_logs.array[i], + i + GLOBAL_INDEX_PRIVATE_LOG_OFFSET, + )); + } + + for i in 0..public_inputs.contract_class_logs_hashes.length { + side_effect_ranges.push(build_side_effect_range( + public_inputs.contract_class_logs_hashes.array[i], + i + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, + )); + } + + let sorted_side_effect_ranges = side_effect_ranges.storage().sort_via(|a, b| { + if b.is_empty() { + true + } else { + a.start <= b.start + } + }); + + let mut indices = [0; TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL]; + + // Using the bounded vec here because we know the length of the array. + for i in 0..side_effect_ranges.len() { + let range = sorted_side_effect_ranges[i]; + indices[range.side_effect_global_index] = i; + } + + SideEffectUniquenessHints { + side_effect_ranges: sorted_side_effect_ranges, + note_hash_read_request_indices: subarray( + indices, + GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, + ), + nullifier_read_request_indices: subarray( + indices, + GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, + ), + note_hashes_indices: subarray(indices, GLOBAL_INDEX_NOTE_HASH_OFFSET), + nullifiers_indices: subarray(indices, GLOBAL_INDEX_NULLIFIER_OFFSET), + private_call_requests_indices: subarray(indices, GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET), + public_call_requests_indices: subarray(indices, GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET), + l2_to_l1_msgs_indices: subarray(indices, GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET), + private_logs_indices: subarray(indices, GLOBAL_INDEX_PRIVATE_LOG_OFFSET), + contract_class_logs_hashes_indices: subarray( + indices, + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, + ), + } +} diff --git a/yarn-project/constants/src/constants.gen.ts b/yarn-project/constants/src/constants.gen.ts index 1762430e5a8f..06b2917cbd66 100644 --- a/yarn-project/constants/src/constants.gen.ts +++ b/yarn-project/constants/src/constants.gen.ts @@ -76,6 +76,16 @@ export const ROOT_ROLLUP_VK_INDEX = 21; export const PARITY_BASE_VK_INDEX = 22; export const PARITY_ROOT_VK_INDEX = 23; export const PRIVATE_KERNEL_RESET_INDEX = 24; +export const GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET = 0; +export const GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET = 16; +export const GLOBAL_INDEX_NOTE_HASH_OFFSET = 32; +export const GLOBAL_INDEX_NULLIFIER_OFFSET = 48; +export const GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET = 64; +export const GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET = 72; +export const GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET = 104; +export const GLOBAL_INDEX_PRIVATE_LOG_OFFSET = 112; +export const GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET = 128; +export const TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL = 129; export const FUNCTION_SELECTOR_NUM_BYTES = 4; export const INITIAL_CHECKPOINT_NUMBER = 1; export const INITIAL_L2_BLOCK_NUM = 1; @@ -90,16 +100,11 @@ export const MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS = 3000; export const MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS = 3000; export const CLASS_REGISTRY_PRIVATE_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS = 23; export const CLASS_REGISTRY_UTILITY_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS = 14; -export const CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE = - 14149211982683198966415397187677099530590983261208050372085833907509n; -export const CONTRACT_CLASS_REGISTRY_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE = - 2889881020989534926461066592611988634597302675057895885580456197069n; -export const CONTRACT_CLASS_REGISTRY_UTILITY_FUNCTION_BROADCASTED_MAGIC_VALUE = - 24399338136397901754495080759185489776044879232766421623673792970137n; -export const CONTRACT_INSTANCE_PUBLISHED_MAGIC_VALUE = - 19558544958816189742429223939242700295084178455458336806004020892999n; -export const CONTRACT_INSTANCE_UPDATED_MAGIC_VALUE = - 1534834688047131268740281708431107902615560100979874281215533519862n; +export const CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE = 14149211982683198966415397187677099530590983261208050372085833907509n; +export const CONTRACT_CLASS_REGISTRY_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE = 2889881020989534926461066592611988634597302675057895885580456197069n; +export const CONTRACT_CLASS_REGISTRY_UTILITY_FUNCTION_BROADCASTED_MAGIC_VALUE = 24399338136397901754495080759185489776044879232766421623673792970137n; +export const CONTRACT_INSTANCE_PUBLISHED_MAGIC_VALUE = 19558544958816189742429223939242700295084178455458336806004020892999n; +export const CONTRACT_INSTANCE_UPDATED_MAGIC_VALUE = 1534834688047131268740281708431107902615560100979874281215533519862n; export const MAX_PROTOCOL_CONTRACTS = 11; export const CANONICAL_AUTH_REGISTRY_ADDRESS = 1; export const CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS = 2; @@ -108,8 +113,7 @@ export const MULTI_CALL_ENTRYPOINT_ADDRESS = 4; export const FEE_JUICE_ADDRESS = 5; export const ROUTER_ADDRESS = 6; export const SIDE_EFFECT_MASKING_ADDRESS = 12; -export const NULL_MSG_SENDER_CONTRACT_ADDRESS = - 21888242871839275222246405745257275088548364400416034343698204186575808495616n; +export const NULL_MSG_SENDER_CONTRACT_ADDRESS = 21888242871839275222246405745257275088548364400416034343698204186575808495616n; export const CONTRACT_CLASS_REGISTRY_BYTECODE_CAPSULE_SLOT = 79025834455612; export const FEE_JUICE_BALANCES_SLOT = 1; export const UPDATED_CLASS_IDS_SLOT = 1; @@ -476,12 +480,10 @@ export const PROOF_TYPE_HN_TAIL = 9; export const PROOF_TYPE_CHONK = 10; export const TWO_POW_64 = 18446744073709551616n; export const AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_HEIGHT = 6; -export const AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_INITIAL_ROOT = - 18291678969210913367302010540259942201271604198321103848479209155223586227821n; +export const AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_INITIAL_ROOT = 18291678969210913367302010540259942201271604198321103848479209155223586227821n; export const AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_INITIAL_SIZE = 1; export const AVM_RETRIEVED_BYTECODES_TREE_HEIGHT = 5; -export const AVM_RETRIEVED_BYTECODES_TREE_INITIAL_ROOT = - 7257575663883662864904159007845791361042428565864275462740313586853981161757n; +export const AVM_RETRIEVED_BYTECODES_TREE_INITIAL_ROOT = 7257575663883662864904159007845791361042428565864275462740313586853981161757n; export const AVM_RETRIEVED_BYTECODES_TREE_INITIAL_SIZE = 1; export const TIMESTAMP_OF_CHANGE_BIT_SIZE = 32; export const DEFAULT_UPDATE_DELAY = 86400; diff --git a/yarn-project/noir-protocol-circuits-types/src/conversion/client.ts b/yarn-project/noir-protocol-circuits-types/src/conversion/client.ts index b2cec17ff55b..078c820bdf9c 100644 --- a/yarn-project/noir-protocol-circuits-types/src/conversion/client.ts +++ b/yarn-project/noir-protocol-circuits-types/src/conversion/client.ts @@ -33,6 +33,8 @@ import { ScopedPrivateLogData, ScopedReadRequest, SettledReadHint, + SideEffectCounterRange, + SideEffectUniquenessHints, TransientDataSquashingHint, } from '@aztec/stdlib/kernel'; import type { PublicKeys } from '@aztec/stdlib/keys'; @@ -70,6 +72,8 @@ import type { ReadRequestHints as ReadRequestHintsNoir, Scoped, SettledReadHint as SettledReadHintNoir, + SideEffectCounterRange as SideEffectCounterRangeNoir, + SideEffectUniquenessHints as SideEffectUniquenessHintsNoir, TransientDataSquashingHint as TransientDataSquashingHintNoir, TxRequest as TxRequestNoir, } from '../types/index.js'; @@ -534,6 +538,34 @@ export function mapPrivateVerificationKeyHintsToNoir( }; } +function mapSideEffectCounterRangeToNoir(sideEffectCounterRange: SideEffectCounterRange): SideEffectCounterRangeNoir { + return { + start: mapNumberToNoir(sideEffectCounterRange.start), + end: mapNumberToNoir(sideEffectCounterRange.end), + side_effect_global_index: mapNumberToNoir(sideEffectCounterRange.sideEffectGlobalIndex), + }; +} + +function mapSideEffectUniquenessHintsToNoir( + sideEffectUniquenessHints: SideEffectUniquenessHints, +): SideEffectUniquenessHintsNoir { + return { + side_effect_ranges: mapTuple(sideEffectUniquenessHints.sideEffectRanges, mapSideEffectCounterRangeToNoir), + note_hash_read_request_indices: mapTuple(sideEffectUniquenessHints.noteHashReadRequestIndices, mapNumberToNoir), + nullifier_read_request_indices: mapTuple(sideEffectUniquenessHints.nullifierReadRequestIndices, mapNumberToNoir), + note_hashes_indices: mapTuple(sideEffectUniquenessHints.noteHashesIndices, mapNumberToNoir), + nullifiers_indices: mapTuple(sideEffectUniquenessHints.nullifiersIndices, mapNumberToNoir), + private_call_requests_indices: mapTuple(sideEffectUniquenessHints.privateCallRequestsIndices, mapNumberToNoir), + public_call_requests_indices: mapTuple(sideEffectUniquenessHints.publicCallRequestsIndices, mapNumberToNoir), + l2_to_l1_msgs_indices: mapTuple(sideEffectUniquenessHints.l2ToL1MsgsIndices, mapNumberToNoir), + private_logs_indices: mapTuple(sideEffectUniquenessHints.privateLogsIndices, mapNumberToNoir), + contract_class_logs_hashes_indices: mapTuple( + sideEffectUniquenessHints.contractClassLogsHashesIndices, + mapNumberToNoir, + ), + }; +} + /** * Maps a private call data to a noir private call data. * @param privateCallData - The private call data. @@ -543,6 +575,7 @@ export function mapPrivateCallDataToNoir(privateCallData: PrivateCallData): Priv return { vk: mapVerificationKeyToNoir(privateCallData.vk, MEGA_VK_LENGTH_IN_FIELDS), verification_key_hints: mapPrivateVerificationKeyHintsToNoir(privateCallData.verificationKeyHints), + side_effect_uniqueness_hints: mapSideEffectUniquenessHintsToNoir(privateCallData.sideEffectUniquenessHints), }; } diff --git a/yarn-project/pxe/src/private_kernel/hints/compute_side_effect_uniqueness_hints.ts b/yarn-project/pxe/src/private_kernel/hints/compute_side_effect_uniqueness_hints.ts new file mode 100644 index 000000000000..a51fd1766d93 --- /dev/null +++ b/yarn-project/pxe/src/private_kernel/hints/compute_side_effect_uniqueness_hints.ts @@ -0,0 +1,173 @@ +import { + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, + GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, + GLOBAL_INDEX_NOTE_HASH_OFFSET, + GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, + GLOBAL_INDEX_NULLIFIER_OFFSET, + GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, + GLOBAL_INDEX_PRIVATE_LOG_OFFSET, + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, + MAX_CONTRACT_CLASS_LOGS_PER_CALL, + MAX_ENQUEUED_CALLS_PER_CALL, + MAX_L2_TO_L1_MSGS_PER_CALL, + MAX_NOTE_HASHES_PER_CALL, + MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, + MAX_NULLIFIERS_PER_CALL, + MAX_NULLIFIER_READ_REQUESTS_PER_CALL, + MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, + MAX_PRIVATE_LOGS_PER_CALL, + TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, +} from '@aztec/constants'; +import { makeTuple } from '@aztec/foundation/array'; +import { padArrayEnd } from '@aztec/foundation/collection'; +import type { Serializable } from '@aztec/foundation/serialize'; +import { + ClaimedLengthArray, + PrivateCallRequest, + type PrivateCircuitPublicInputs, + SideEffectCounterRange, + SideEffectUniquenessHints, +} from '@aztec/stdlib/kernel'; + +export function computeSideEffectUniquenessHints(publicInputs: PrivateCircuitPublicInputs): SideEffectUniquenessHints { + let sideEffectRanges: SideEffectCounterRange[] = []; + + sideEffectRanges = sideEffectRanges.concat( + createRangesFromClaimedLengthArray( + publicInputs.noteHashReadRequests, + GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET, + createRangeFromCountedItem, + ), + ); + sideEffectRanges = sideEffectRanges.concat( + createRangesFromClaimedLengthArray( + publicInputs.nullifierReadRequests, + GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET, + createRangeFromCountedItem, + ), + ); + sideEffectRanges = sideEffectRanges.concat( + createRangesFromClaimedLengthArray( + publicInputs.noteHashes, + GLOBAL_INDEX_NOTE_HASH_OFFSET, + createRangeFromCountedItem, + ), + ); + sideEffectRanges = sideEffectRanges.concat( + createRangesFromClaimedLengthArray( + publicInputs.nullifiers, + GLOBAL_INDEX_NULLIFIER_OFFSET, + createRangeFromCountedItem, + ), + ); + sideEffectRanges = sideEffectRanges.concat( + createRangesFromClaimedLengthArray( + publicInputs.privateCallRequests, + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET, + createRangeFromPrivateCallRequest, + ), + ); + sideEffectRanges = sideEffectRanges.concat( + createRangesFromClaimedLengthArray( + publicInputs.publicCallRequests, + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET, + createRangeFromCountedItem, + ), + ); + sideEffectRanges = sideEffectRanges.concat( + createRangesFromClaimedLengthArray( + publicInputs.l2ToL1Msgs, + GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET, + createRangeFromCountedItem, + ), + ); + sideEffectRanges = sideEffectRanges.concat( + createRangesFromClaimedLengthArray( + publicInputs.privateLogs, + GLOBAL_INDEX_PRIVATE_LOG_OFFSET, + createRangeFromCountedItem, + ), + ); + sideEffectRanges = sideEffectRanges.concat( + createRangesFromClaimedLengthArray( + publicInputs.contractClassLogsHashes, + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET, + createRangeFromCountedItem, + ), + ); + + sideEffectRanges.sort((a, b) => a.start - b.start); + + const sideEffectRangeIndices = makeTuple(TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, () => 0); + for (let i = 0; i < sideEffectRanges.length; i++) { + const range = sideEffectRanges[i]; + sideEffectRangeIndices[range.sideEffectGlobalIndex] = i; + } + + const hints = SideEffectUniquenessHints.from({ + sideEffectRanges: padArrayEnd( + sideEffectRanges, + SideEffectCounterRange.empty(), + TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, + ), + noteHashReadRequestIndices: makeTuple( + MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, + i => sideEffectRangeIndices[i + GLOBAL_INDEX_NOTE_HASH_READ_REQUEST_OFFSET], + ), + nullifierReadRequestIndices: makeTuple( + MAX_NULLIFIER_READ_REQUESTS_PER_CALL, + i => sideEffectRangeIndices[i + GLOBAL_INDEX_NULLIFIER_READ_REQUEST_OFFSET], + ), + noteHashesIndices: makeTuple( + MAX_NOTE_HASHES_PER_CALL, + i => sideEffectRangeIndices[i + GLOBAL_INDEX_NOTE_HASH_OFFSET], + ), + nullifiersIndices: makeTuple( + MAX_NULLIFIERS_PER_CALL, + i => sideEffectRangeIndices[i + GLOBAL_INDEX_NULLIFIER_OFFSET], + ), + privateCallRequestsIndices: makeTuple( + MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, + i => sideEffectRangeIndices[i + GLOBAL_INDEX_PRIVATE_CALL_REQUEST_OFFSET], + ), + publicCallRequestsIndices: makeTuple( + MAX_ENQUEUED_CALLS_PER_CALL, + i => sideEffectRangeIndices[i + GLOBAL_INDEX_PUBLIC_CALL_REQUEST_OFFSET], + ), + l2ToL1MsgsIndices: makeTuple( + MAX_L2_TO_L1_MSGS_PER_CALL, + i => sideEffectRangeIndices[i + GLOBAL_INDEX_L2_TO_L1_MSG_OFFSET], + ), + privateLogsIndices: makeTuple( + MAX_PRIVATE_LOGS_PER_CALL, + i => sideEffectRangeIndices[i + GLOBAL_INDEX_PRIVATE_LOG_OFFSET], + ), + contractClassLogsHashesIndices: makeTuple( + MAX_CONTRACT_CLASS_LOGS_PER_CALL, + i => sideEffectRangeIndices[i + GLOBAL_INDEX_CONTRACT_CLASS_LOG_HASH_OFFSET], + ), + }); + + return hints; +} + +function createRangesFromClaimedLengthArray( + array: ClaimedLengthArray, + globalIndexOffset: number, + rangeConstructor: (item: T, globalIndex: number) => SideEffectCounterRange, +): SideEffectCounterRange[] { + const ranges = []; + for (let i = 0; i < array.claimedLength; i++) { + ranges.push(rangeConstructor(array.array[i], globalIndexOffset + i)); + } + return ranges; +} + +function createRangeFromCountedItem(item: { counter: number }, globalIndex: number): SideEffectCounterRange { + return new SideEffectCounterRange(item.counter, item.counter, globalIndex); +} + +function createRangeFromPrivateCallRequest(item: PrivateCallRequest, globalIndex: number): SideEffectCounterRange { + return new SideEffectCounterRange(item.startSideEffectCounter, item.endSideEffectCounter, globalIndex); +} diff --git a/yarn-project/pxe/src/private_kernel/private_kernel_execution_prover.ts b/yarn-project/pxe/src/private_kernel/private_kernel_execution_prover.ts index f1ec28d51bcd..289a8238f1d2 100644 --- a/yarn-project/pxe/src/private_kernel/private_kernel_execution_prover.ts +++ b/yarn-project/pxe/src/private_kernel/private_kernel_execution_prover.ts @@ -35,6 +35,7 @@ import { import { VerificationKeyAsFields, VerificationKeyData, VkData } from '@aztec/stdlib/vks'; import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_kernel_reset_private_inputs.js'; +import { computeSideEffectUniquenessHints } from './hints/compute_side_effect_uniqueness_hints.js'; import type { PrivateKernelOracle } from './private_kernel_oracle.js'; const NULL_SIMULATE_OUTPUT: PrivateKernelSimulateOutput = { @@ -415,6 +416,9 @@ export class PrivateKernelExecutionProver { await this.oracle.getContractClassIdPreimage(currentContractClassId); const updatedClassIdHints = await this.oracle.getUpdatedClassIdHints(contractAddress); + + const sideEffectUniquenessHints = computeSideEffectUniquenessHints(publicInputs); + return PrivateCallData.from({ publicInputs, vk, @@ -426,6 +430,7 @@ export class PrivateKernelExecutionProver { functionLeafMembershipWitness, updatedClassIdHints, }), + sideEffectUniquenessHints, }); } } diff --git a/yarn-project/stdlib/src/kernel/private_call_data.ts b/yarn-project/stdlib/src/kernel/private_call_data.ts index 9bc0c06e1555..80b78fd7524e 100644 --- a/yarn-project/stdlib/src/kernel/private_call_data.ts +++ b/yarn-project/stdlib/src/kernel/private_call_data.ts @@ -1,12 +1,27 @@ -import { FUNCTION_TREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT, UPDATES_VALUE_SIZE } from '@aztec/constants'; +import { + FUNCTION_TREE_HEIGHT, + MAX_CONTRACT_CLASS_LOGS_PER_CALL, + MAX_ENQUEUED_CALLS_PER_CALL, + MAX_L2_TO_L1_MSGS_PER_CALL, + MAX_NOTE_HASHES_PER_CALL, + MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, + MAX_NULLIFIERS_PER_CALL, + MAX_NULLIFIER_READ_REQUESTS_PER_CALL, + MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, + MAX_PRIVATE_LOGS_PER_CALL, + PUBLIC_DATA_TREE_HEIGHT, + TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, + UPDATES_VALUE_SIZE, +} from '@aztec/constants'; import { Fr } from '@aztec/foundation/fields'; -import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; +import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; import { MembershipWitness } from '@aztec/foundation/trees'; import type { FieldsOf } from '@aztec/foundation/types'; import { DelayedPublicMutableValues } from '../delayed_public_mutable/delayed_public_mutable_values.js'; import { PublicKeys } from '../keys/public_keys.js'; import { PublicDataTreeLeafPreimage } from '../trees/index.js'; +import type { UInt32 } from '../types/shared.js'; import { VerificationKeyAsFields } from '../vks/verification_key.js'; import { PrivateCircuitPublicInputs } from './private_circuit_public_inputs.js'; @@ -29,6 +44,11 @@ export class PrivateCallData { * Hints for the validation of the vk */ public verificationKeyHints: PrivateVerificationKeyHints, + + /** + * Hints for validating the uniqueness of the side effects. + */ + public sideEffectUniquenessHints: SideEffectUniquenessHints, ) {} /** @@ -37,7 +57,7 @@ export class PrivateCallData { * @returns The array. */ static getFields(fields: FieldsOf) { - return [fields.publicInputs, fields.vk, fields.verificationKeyHints] as const; + return [fields.publicInputs, fields.vk, fields.verificationKeyHints, fields.sideEffectUniquenessHints] as const; } static from(fields: FieldsOf): PrivateCallData { @@ -63,6 +83,7 @@ export class PrivateCallData { reader.readObject(PrivateCircuitPublicInputs), reader.readObject(VerificationKeyAsFields), reader.readObject(PrivateVerificationKeyHints), + reader.readObject(SideEffectUniquenessHints), ); } } @@ -180,3 +201,109 @@ export class UpdatedClassIdHints { ); } } + +export class SideEffectUniquenessHints { + constructor( + public sideEffectRanges: Tuple, + public noteHashReadRequestIndices: Tuple, + public nullifierReadRequestIndices: Tuple, + public noteHashesIndices: Tuple, + public nullifiersIndices: Tuple, + public privateCallRequestsIndices: Tuple, + public publicCallRequestsIndices: Tuple, + public l2ToL1MsgsIndices: Tuple, + public privateLogsIndices: Tuple, + public contractClassLogsHashesIndices: Tuple, + ) {} + + /** + * Serialize into a field array. Low-level utility. + * @param fields - Object with fields. + * @returns The array. + */ + static getFields(fields: FieldsOf) { + return [ + fields.sideEffectRanges, + fields.noteHashReadRequestIndices, + fields.nullifierReadRequestIndices, + fields.noteHashesIndices, + fields.nullifiersIndices, + fields.privateCallRequestsIndices, + fields.publicCallRequestsIndices, + fields.l2ToL1MsgsIndices, + fields.privateLogsIndices, + fields.contractClassLogsHashesIndices, + ] as const; + } + + static from(fields: FieldsOf): SideEffectUniquenessHints { + return new SideEffectUniquenessHints(...SideEffectUniquenessHints.getFields(fields)); + } + + /** + * Serialize this as a buffer. + * @returns The buffer. + */ + toBuffer(): Buffer { + return serializeToBuffer(...SideEffectUniquenessHints.getFields(this)); + } + + /** + * Deserializes from a buffer or reader. + * @param buffer - Buffer or reader to read from. + * @returns The deserialized instance. + */ + static fromBuffer(buffer: Buffer | BufferReader): SideEffectUniquenessHints { + const reader = BufferReader.asReader(buffer); + return new SideEffectUniquenessHints( + reader.readArray(TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, SideEffectCounterRange), + reader.readNumbers(MAX_NOTE_HASH_READ_REQUESTS_PER_CALL), + reader.readNumbers(MAX_NULLIFIER_READ_REQUESTS_PER_CALL), + reader.readNumbers(MAX_NOTE_HASHES_PER_CALL), + reader.readNumbers(MAX_NULLIFIERS_PER_CALL), + reader.readNumbers(MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL), + reader.readNumbers(MAX_ENQUEUED_CALLS_PER_CALL), + reader.readNumbers(MAX_L2_TO_L1_MSGS_PER_CALL), + reader.readNumbers(MAX_PRIVATE_LOGS_PER_CALL), + reader.readNumbers(MAX_CONTRACT_CLASS_LOGS_PER_CALL), + ); + } +} + +export class SideEffectCounterRange { + constructor( + public start: UInt32, + public end: UInt32, + public sideEffectGlobalIndex: UInt32, + ) {} + + static getFields(fields: FieldsOf) { + return [fields.start, fields.end, fields.sideEffectGlobalIndex] as const; + } + + static from(fields: FieldsOf): SideEffectCounterRange { + return new SideEffectCounterRange(...SideEffectCounterRange.getFields(fields)); + } + + static empty(): SideEffectCounterRange { + return new SideEffectCounterRange(0, 0, 0); + } + + /** + * Serialize this as a buffer. + * @returns The buffer. + */ + toBuffer(): Buffer { + return serializeToBuffer(...SideEffectCounterRange.getFields(this)); + } + + /** + * Deserializes from a buffer or reader. + * @param buffer - Buffer or reader to read from. + * @returns The deserialized instance. + */ + static fromBuffer(buffer: Buffer | BufferReader): SideEffectCounterRange { + const reader = BufferReader.asReader(buffer); + return new SideEffectCounterRange(reader.readNumber(), reader.readNumber(), reader.readNumber()); + } +}