From 893e58b605de75b8fbfd81faa99a4a262a651ed0 Mon Sep 17 00:00:00 2001 From: tchataigner Date: Tue, 29 Oct 2024 15:58:07 +0100 Subject: [PATCH] feat: update sphinx & plonk artifacts to `1.0.8.3-testnet` (#308) * refactor: update sphinx & bls deps * refactor: update sphinx & bls deps fixture gen * refactor: bytes to raw * refactor: update programs * refactor: update fixtures * refactor: update forge sources --------- Co-authored-by: tchataigner --- aptos/Cargo.lock | 153 +++++++++-- .../benchmarks/signature-verification-program | Bin 363020 -> 363012 bytes .../artifacts/epoch-change-program | Bin 375852 -> 375844 bytes .../artifacts/inclusion-program | Bin 388524 -> 388516 bytes .../signature-verification/Cargo.lock | 180 +------------ .../signature-verification/src/main.rs | 4 +- aptos/programs/epoch-change/Cargo.lock | 178 +------------ aptos/programs/epoch-change/src/main.rs | 24 +- aptos/programs/inclusion/Cargo.lock | 178 +------------ aptos/programs/inclusion/src/main.rs | 16 +- aptos/solidity/contracts/lib/forge-std | 2 +- .../contracts/lib/openzeppelin-contracts | 2 +- aptos/solidity/contracts/lib/sphinx-contracts | 2 +- .../plonk_fixtures/epoch_change_fixture.json | 4 +- .../src/plonk_fixtures/inclusion_fixture.json | 6 +- ethereum/Cargo.lock | 160 ++++++++++-- .../artifacts/committee-change-program | Bin 334244 -> 334236 bytes .../artifacts/inclusion-program | Bin 337732 -> 337724 bytes .../fixtures/epoch_change_fixture.json | 4 +- .../sources/fixtures/inclusion_fixture.json | 4 +- ethereum/move/sources/wrapper.move | 8 +- .../pact/fixtures/epoch_change_fixture.json | 4 +- ethereum/pact/fixtures/inclusion_fixture.json | 4 +- ethereum/programs/committee-change/Cargo.lock | 20 +- .../programs/committee-change/src/main.rs | 34 +-- ethereum/programs/inclusion/Cargo.lock | 20 +- ethereum/programs/inclusion/src/main.rs | 24 +- fixture-generator/Cargo.lock | 153 +++++++++-- fixture-generator/src/bin/main.rs | 37 ++- kadena/Cargo.lock | 160 ++++++++++-- .../benchmarks/block-header-hashing-program | Bin 88148 -> 88140 bytes .../benchmarks/sha512-caller-program | Bin 54212 -> 69444 bytes .../artifacts/longest-chain-program | Bin 125716 -> 125708 bytes kadena/kadena-programs/artifacts/spv-program | Bin 141036 -> 141028 bytes .../block-header-hashing/src/main.rs | 8 +- .../benchmarks/sha512-caller/Cargo.lock | 245 +----------------- .../benchmarks/sha512-caller/src/main.rs | 8 +- kadena/programs/longest-chain/src/main.rs | 8 +- kadena/programs/spv/src/main.rs | 8 +- kadena/solidity/contracts/lib/forge-std | 2 +- .../contracts/lib/openzeppelin-contracts | 2 +- .../solidity/contracts/lib/sphinx-contracts | 2 +- .../plonk_fixtures/longest_chain_fixture.json | 4 +- .../src/plonk_fixtures/spv_fixture.json | 4 +- 44 files changed, 701 insertions(+), 971 deletions(-) diff --git a/aptos/Cargo.lock b/aptos/Cargo.lock index 71325a4d..3b957fef 100644 --- a/aptos/Cargo.lock +++ b/aptos/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -1215,7 +1215,7 @@ dependencies = [ "once_cell", "procfs", "prometheus", - "sysinfo", + "sysinfo 0.28.4", ] [[package]] @@ -2565,7 +2565,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a96eccde19bf861b0d1707b61b2ab15e294b154" +source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" dependencies = [ "cfg-if", "digest 0.9.0", @@ -2573,7 +2573,8 @@ dependencies = [ "group 0.13.0", "pairing 0.23.0", "rand_core 0.6.4", - "sphinx-precompiles", + "sphinx-lib", + "sphinx-zkvm", "subtle", ] @@ -3811,7 +3812,6 @@ dependencies = [ "rand_core 0.6.4", "sec1", "subtle", - "tap", "zeroize", ] @@ -5228,7 +5228,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -8192,6 +8192,15 @@ version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" +[[package]] +name = "psm" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +dependencies = [ + "cc", +] + [[package]] name = "publicsuffix" version = "2.2.3" @@ -9682,7 +9691,7 @@ dependencies = [ [[package]] name = "sphinx-core" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "arrayref", @@ -9744,7 +9753,7 @@ dependencies = [ [[package]] name = "sphinx-derive" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "proc-macro2", "quote", @@ -9754,30 +9763,29 @@ dependencies = [ [[package]] name = "sphinx-helper" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "cargo_metadata 0.18.1", "chrono", ] [[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom 0.2.14", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-primitives" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "itertools 0.12.1", "lazy_static", @@ -9790,7 +9798,7 @@ dependencies = [ [[package]] name = "sphinx-prover" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "backtrace", @@ -9832,7 +9840,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-circuit" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "itertools 0.12.1", @@ -9855,7 +9863,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-compiler" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "backtrace", "hashbrown 0.14.5", @@ -9881,7 +9889,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-core" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "arrayref", "backtrace", @@ -9915,7 +9923,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-derive" version = "0.1.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "proc-macro2", "quote", @@ -9925,7 +9933,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-gnark-ffi" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", @@ -9949,7 +9957,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-program" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "itertools 0.12.1", "p3-air", @@ -9971,13 +9979,14 @@ dependencies = [ "sphinx-primitives", "sphinx-recursion-compiler", "sphinx-recursion-core", + "stacker", "tracing", ] [[package]] name = "sphinx-sdk" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "alloy-sol-types", "anyhow", @@ -10008,6 +10017,7 @@ dependencies = [ "sphinx-prover", "strum 0.26.3", "strum_macros 0.26.4", + "sysinfo 0.31.4", "tempfile", "thiserror", "tokio", @@ -10016,6 +10026,23 @@ dependencies = [ "vergen", ] +[[package]] +name = "sphinx-zkvm" +version = "1.0.0" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" +dependencies = [ + "bincode", + "cfg-if", + "getrandom 0.2.14", + "lazy_static", + "libm", + "once_cell", + "rand 0.8.5", + "serde", + "sha2 0.10.8", + "sphinx-lib", +] + [[package]] name = "spin" version = "0.5.2" @@ -10044,6 +10071,19 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "stacker" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.59.0", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -10256,6 +10296,20 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "sysinfo" +version = "0.31.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" +dependencies = [ + "core-foundation-sys", + "libc", + "memchr", + "ntapi", + "rayon", + "windows", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -11483,6 +11537,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -11492,17 +11556,60 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + [[package]] name = "windows-registry" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-strings", "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.2.0" @@ -11518,7 +11625,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] diff --git a/aptos/aptos-programs/artifacts/benchmarks/signature-verification-program b/aptos/aptos-programs/artifacts/benchmarks/signature-verification-program index be1e67a7034c02f02ed1e18dc77e667c96ebf465..6a17a3b06982f6ef0ff885e5f880fc0488d111ee 100755 GIT binary patch delta 25131 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 F{|Dj+_eTH# delta 24794 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 WuflNqb!ZG!pM`2X5z0e(`TqeH@t}_Y diff --git a/aptos/aptos-programs/artifacts/epoch-change-program b/aptos/aptos-programs/artifacts/epoch-change-program index 0c6a08c078f145f2d5d92fbb1d67fe60f4c2650e..67c5049e859a44e405d2a7673cb41a411139334d 100755 GIT binary patch delta 70306 zcmbT933wF66X>TW*@Og;$dZdA2{|AejsyaPI|IliDgn6!1QZYj1Vj)Ngozgk!? zbtz%XrG%Af?B$0Wmo!S6qG|Ylqz3=RX&Qr%$`^cE z3!|)AY3VH6TATK~ZdO=>8h2+sE#7!VBYUKfXpoYv9_g(!vY%TAh3S5ut?|8@_N{4L zEZB+#m&R7$=fcvf%O6dDJHon>-!3{MQk$Ul*kT!NH$_)PAbf?}J6LjbS|ohYmh+YM zBI{Xmo3>^?Yfsam?NqUuSfNN+p-A6Ozwa7W;nQkarSaOC>HD)QprRSux2`ML4|VY! zJY;pw9?r5Xo}CJ{sL1ZGukLQu2uy6zv!g#M4a$kq#@6-4MI2n9p@vqe?^b_&mR4T6 zRg2i>Q)xY|je(M@eYfWOR%;PWz?h;=J+1tlLjCLR){LBmVdBoD_@6(?|8P5?f3FQ_gQO6)bU~MQS`<)r^*N;QGdvXs=gW_5<71%xwUFH_iP6{!Ptm z04bgF9)!Q&%*%kk&*k;Ulvcqzr&8KZ)k=D`H z0}}T)2B7p)1T7yx!koq;t4;oHsPmcpKzY5k&#~IF?_eMCFYxjHzDVrof3?eOo>hj4 z5nCL<&T`)Yts)9K*TMvCY}E&mI6yMCTh|tJjt#5C%7Ry}Hh+l7Vyq;q8{=iz@l9)V z`y~Moj(P8 zPVHjBzY$&0+AF$Nz`wl<@!uoP{ ziS|rJ`lg2d_*Kk5_#)#X&EAudiD_HH(#+lEm;2x0i%!E#=FsxVgIlRDT4ec_;f-0L zyz;XZ;{&%;+z^b_Fn{KLjf-@x%8C@}N&cDfD$V{Wf9C4o^`ES?N%2`HRPZTwm-;Y_5Q|^~)*ayoOPnj4IWpDS__Gwnt#02ZA z>GitW%l%*+CBCKb2oP@H^~u~z6RbFHyv7q`}pHP)`;mbV#}XhnHth1K`s zl`wL-XvvH9g5^CVtZ*?o_sGDkl>v<9CsXb&F57eJ;JeWVTCsV2~3d_1k zW@Y!PY&B&zW3fLLtIOu9^s8jLy)Y!lC<)0iAIKjM9a2`MxCDB5nCVPQ6cX%}Rl-Ni zFF*f4yGY$`Q=Yk~b<|b%4sc(ETwc3kjeBUye@x=J&3(y_EN{fNm!~X`)S0h5W90~N z0TV3qk#@R0w*2`=ZjOjPEsD6#YPjYVmT7&q=3Mhku_7pG25w+YO)-H&r`_o-oi#=%Nt#1wf zr2sOO1W<5{6ddE*nP1wMMKnRd2SKo%t^CXK^^=3u%0Y(|D>8totvVYLz#AXikYsh; zFir`La56jdeI3Jv)>A@{ZCIdd2dqIGM+L`tmd|==V^=WIUmFYbXwfLzy;l1t=CB>s zz9)Kt3RuyI9jHQ#hJX8)fC`)2fm`Uc`3#$1iS{!_ptthhS0DO8tj0x}Hrx{ZqWb$y z`7;MIdCeFm`%DbXLNMOb#4v&D(C?(YA)-r{M#4%XGI)Kc7y|P8p#1S|1se%Y^hRsf z)?%rM*3XIrMP|ZSkV;%D3c6T7_`PpfA$_WqD6LkauPpe%2+OxDLMmqV2^FmM49kCw zVxxeKGE^;k3QLqe7z2qhO29SwGo`jL$hw7u8Akqi@Y_OBv(P%fZK7^;v4%a_OSjuw zWluh#TD->O*IUdMYhDs|;HRdl;y-(~A6_6~KBA{H!+i z>=tcmnp~E`%yq+4X|(}fBNvBYFRO5G%a}BC2(~Uv+s{6g`Co-SB?{Z=Eo_Iou}Sy0NPwQMqgUzA`pd)6y_sMA+InBW+X5u}Re{bF0Db2G+kjqoLAW zcPCjXyK0DvhZee4ag-ASyr&Bl|%i$N;Wl4%ff8c)`y_f+bil@?>t*W^o%6yr)O)# zVM~O%zkjARZx@V<@>J*rUCU?a#z4z#oB)gAx64O>CuzDbKi!xlW@8&Yw>=@F<)-Eq zPPi9gJt@-6+pM|!(wSYpao@&>c3KPR$5}7S$A-zplHE-BazPu}u*h{u(3)B^o?ib%fhkCp{pDj)VzLS(#lQLWEfTRw2@RYD1?asjJvTUcy1SGwvwDb}xo7{BinF3$w0td_9khnN z);rl4A1tzDOC(I@;hr>Loqi3)|M1$N|I6SW`g#hechBo-na<|3A|tE4$(gDxLu5^@ z7hm_*14cV6ZLE|xuKAB@SdpQTapw0eeUz-_Z+K;;TA#k*pN}JNO=O(kXTlm;w9Dtg zdWuiCnPOH|kGwN8c662Uv)0Q2pS2$&Q9rhEkr?oI24#gc6HHV0R(oq}@_`sM$^ox_ z0qZDS+irb$U|Mi!;wmaM-&rFLqCxLFC=42Eke&VoVFsPIB~vPCy>d_#5*j$xxr41i zK+2*28v9cZVTW3HNVZtDOMx1M{QsFtTk5F-jvS(Dk@jXxB3Sv%vPhViwTP*wk3TOh zt$l16Z%zp|q_b{N#9JXlS8a(@MSS|Ex3a%ggJb7ynWw;%!|uxVJB*c`cevqySaZ)| ztn8t~-U1GU2IK54(^LVmZ+Q#IiMe!eqFQ!NeCy~<^ys!?B0~Z%?-(uxwp}lGHheSu zQ5sAd)qN-yucLbmTR>YYj-ayJj(828WBqfa26UUKx7!Cz>*>Q`<w&3f%oRQEJRR`;7`Ymt1x9zxvbYqY0qdJx3QLo7GdH*PG;6UEaYO^m^y~ zf7T#03dhddQC}%G>R8$U_Z;0fRD;V~5+oR$pSK?MM;Wjq3G=fYu7~itGXM|?3gK1S@PuCPwL z+fMJ1&Fu(ZLtd5b^I0w43+U!DtMdIcURggfhF_oHt5?4Iy$+0N*75f@vk2?%6P;KO zYtM<^y3xXl`zWbA?gL%yqJbx>06SU>U@PUr^a0ri*ZCo!@kd2#+z?*zIyAX|VGJ12 zj6gKPmLXTk77P=sv+pb~4clY;rFxI;kq-^`M&TITB)0w5cON#67IiarmB)Q_ErYR+ z1(e|a)*7GGtJG&r{a84*kDKfE|Ezr()j*cdu=8=^%KP#X7 zsjlli&sx(?c4UUN^W;mhSzQV)!hT^SCVsva5^H|(NBrRL{l0EK*g3{^B$J!nJ}dFm zB;8(QEjZN?TJY6VJ)#bMTe5B8w^ohQE%k-xtoEnZ=ysA-dHNCEtYeM)vZHSAvC6(| zt=nH)C%zocwDR1qCNXA|KYpgSuG@{RvtNG*<-PRHd`Ro`?aoNOG!_&~v7*j5)a`{< z=J|9er}z0z0sCoT%qZXMejjv!B5WyhSH)I{*%tad$nD&ab7e8LMDu1k>V5C;80r86t-DxfK z1v9_!$WJ*}YZV30!Ih|mKS+^=)#;~lsKJGw_CV#Vja7*WZ)}O!R>~r__GA$mht!ri z+!#1ob**lel_&i?k;U3e$|E1sGBQ_b)|mI|S!KU;h4FCem(6-<$MOZgrht8ZD&KPP z7}MW)m(PufY-4Tzqa`-n$A5H(LK<9}g(l^!cuU7l6BF&C1&-=^gi=_EZVDuKl zHfC`>xo|daf*qn7VmnLZGY9*{cBea^-3Rhr9m;19&YwA+&F4~qf%)TMpF|26fCWcn zvB;1zMv+*1%j^B+_1B`quHO)L{d(A6iw;xhx{@pwu3$fF=EXW0k(=tlc4b9w6q}&y zrL*{>HCXz!2j_y4HF%!57y*I)x9Z$uf1LCZ7vmljW_rh%Hg;t%ZvI7U^jIW=+--=-+FyYusK#R^k{hs>NPU zF}^Cu(qLukTb%FP1j=fWR&|S-r+Hp&wounT=9L*NiC5NUvATUT&l}7d@YFi220OFn zDpp^&Z{kIDSh}vA;>J}hN4E!sA)oSaec5J%I14!-nhTvpg=2P1lY5P)6N+o^OwX0*#g;Q;JzGD^pr3E3;P@ zJ8FAHtL20;MwxrUO3YFvJ|#*_xASC7_QAas@fvKomEKbBdj>6|%YJTe;b*UgLbWG& zTwT^8T6X>w{F=I~A4}&e>#|gq#`o3*!x(G$(Yov@-A=BU?Pn8xx{+0JHiDmMQbR*V)UC%E!f?~Ay_;qbqa)yRI*F04K zrh+@R$*L1YiB2T08OQjb6m0R&_}ml*p7<@kE(HXbAMsrotV?v2SbaRit1?)lXpuvE zm#3worpLIEiMDCS_cn*_w=xyFpYax7naLWb3er9#n`-q;Xr3qwH!fwF2l>fVEaMGc zmC54k$i!z0Vi=5#C5hY^%Np?xX{@ns{4Y$l_7XSKSW1ref)d*T%#y)RqlRXyU{Rqo zV;V1-#p0#b##VkdjqQ%IcUbykiP)u*_}<2BU|0JIOWfL7Jx3YomY|WOvUZuX(?UgX z1PYza72HUNQJ_7}&2%uH_82b{pPbv`b2UGm&YH2ys!@u=8)Z4!C{_RB9CE*El%;%G z1~$rUY>XbPOIS15#n=p4(ISI3AKRiC`$n2;S{5{gb{{rHlaA&rRe|?|6%#EX^4T-h zwTG*(VE`j#&cN0I_i-z)mBnBZy)#U>F^QL@vIa4A6?+FS%VJI0yZmq#=xdJS-(|t@ zum|$fO`&sZqj*shw9iOBtqF)UhNE3_Vzt+m?elqM7E6eQIVc8hx5YfxK^5JDpAJAn zU1|y*Ew?GFqig-S(G(?JuO#*3bDOeezH(^xfDoeFy?9j?_O7;~@D$sCYq{=vD!mK2 zk&Oy<5en(rR=zkJ9K=->+q2nlrrYV#wVKnIPg>ectH{n_-I;FGLfyct#`2ZT*!PJ= zVtW1^CU~5mVDTcpU*s#Bqd~qy+oiJKc%}GymRG^o+ErqIU69(36%AW3e`M`s2)0#j zZ71*CitX0zRTbx3u|F95iJ#49x9Rp2>_;iOF_%wn!|JDKlU!X1ZU}&k)1oWgfqkX{ zf3*#Z*3EnPu30dS<&_!SE((6prt`SAEIrnqstolYuLRMt=AA*qiSIhJ`&{634H~>H zxDE3*ez-0A{n5O0J66A|d9xqJq-xcef&_3oQ471|!z3$r&$JRXPGRig4b{~#;2P>m zRbif5)sBryv2XNNr?#q&Hju{^uwJ@(Js(!UQqs+S|IONcty&!u`LqtK9^X~Ka#GBm z=!g7~(8VHGfueB7##c)TwtMisH-f_yrm?#ThZPGNE?qm+Um6P_I4^NcGk9Kmc5Axb zL6zJEhmNXEi?G@h@O|xJNQ~qs+hcFc=a<^EYwO!Bl>yKv!m=?~F{1?^*@3mzwH&^( z1FK)($fh~F2|v&Q<_#@lO-CFDjd@x}mY!~>px;BSl~z5Q#-Mm zVr|q34HCoSI>Qpk?!>OrwJ0RgQ|t&V0jp6VC-=TMxhrWf!FR?P^Iv{lXYBo##fl*& zQ(gXxuk6fLuwQvv7uGh~5cAged}J5!oADK8U0C_mjVhI{rOMmY70p_S<3u~kr}bwE zx_N}xDuRx0yiidarlSQ9sSafK$0_dsKi?mVeqBJi_KfUZaIp^WSHv3V=F9x{A|T8c zC1LCcBi;le#oiY*aJgL3)y1fqOC`$J3}A3q`x({ta9>W?GgDr+_XN}BeK>oP>-$94 z_d8tQZ+Cs4;QD@>P_3D-RLp@`xY}f&0)Mv+>W#*e>DrzAzyMqVY~fX)xNbbbYYjwy zzkwGG#P91wdX%}=|6rFy9yb|!VA()4LWn}e`c_wse{nNmHm2D=kvgyAeR&g3Tsv3a_E zC;xaT^apzqKYcU!P4f;OHxO1g`v=47#vG4kijS5##wy|#X{Wuzpigxgf_>^{oM{?K z%ori3#8pGs5ZxHW&ksRw3|?_4>z-m?@9N;75jZ#@U%QS^8w!($*;8s{!rXc@toXZ0 zg*ptwv|C$#au^QYeA#Y7veAm~9S)0SGlws}3A8b?We)o$)+EKu z^r}>Cq;wuRoZYIM4f*ZEF=PEOsT!=$P^xh?KRpu1TpcO3Xax2j2(U(A#bbCGe%euT zMR#%p8xm_@2^Ptx4aau+NA=ubuNDqQwbS3S6z!rcMf-Kl&Cr4EpH#D*SB>%mTB#x5 zax=E&H(^%NzLtdjl~fP9cMYC43NQ?}Mxkye!)j%Iisg0Y2S$NkG~UO>OtNa&ccp;5 z(KxNXvt~MUj54vb-BdASG`j&7BhOVF7{gwN=wxlh;#=9LkTRFUA88c}#xXc^ViZ)o zd^_u}vktu0By6NOo;`^j)3x9DrAbg6ED7=^vk!Ic46kt~e!swtJJ}&!d!N^sg5N>m zDX@r);FG7YmP3qB)R?HAs@0%>FE~~#Ifdh-m&x}EFZy9Hk76HjeSer&O<{@bD6Wqa zdFoVLlvMI*ba;d)4Qj5AN~gHKH*$S%$UEP|8jK$r?x0jwhy(EC;p$-DjFIWu;9$D^ zZYQ|D#|OV#a&!)moH>BM3`I5SAG};47g)(+fhFv#-4N{dvW5eAUK?~mqTylHI}7{l z4H#2HP}rGI#!syiFKYmCV3ah!(FX$z@XNh;C4R!HT1;J1MmL@`8;5Ek?~I>X7d~b- zc7jfP?rfIQ-RKbX+j2!++*<}wMmszwrLHYj*RGY<%r@d6rzTc=t@z2=tU=q>c+^SZ z%M}jWTcQi)iHJ+!cJr{T&3W^CA#01UtgBSkAu1~zBglfIfGEap8kV&wp9@(7*?1UG zmAY1C9jUT5ktYg8)^u(I&NBE(_()C<2{lu~s75^QKA=)~bNI+=6h^_xPB6?dFtMckKhI;98xZZ?pni-Ax0%`9cfEd`U8-z%T=e?Qd%73{iRW`qZZ`t zhbmCcLLczBLKW;Xc>|#5_aGxuZb=#M$r}Yd&-;B%s;*cdM8fux;01(HxDry#=gwjE zbL{yArKsq^Jwh3=k7XQH1)K{NpxwmnIjkukyBqxDqIs-##cy*U5YWw?JZ~OrT~~{T z(;k|*^(yQF%a|FEuG?{Z`#jc;ejFg@7!(7aUH1a|`c0 zpIw_Cc2f>-BT4-p#hZ!pzN6WipDtkuyuQhH){(n&rHNy&T$!Mi9InVKW)oTcH{OAh z$?$+dPl&~QVB07yakGxkNR;t?53qrt8s2t}XaWywBt&WWw?8V1Hz;AP{n;O_8>>gv zDA@+x3e@vQFWStZIfP5+8F*mIFj!xg)P&6*DPci0Hh;O z93l491yDMIw_nIQu|N2Xg)Ap0`$c%rB0HlA-09p}bB|TJ|Ids}_`BzyuUMs7YckT| z@A12Cwn{&^zz;8Eg)o)XSOklWy?okH)`s7{h^^6$CTkW$r~jKbT+Gs$j~6axnYa9I zEm#mccHuP*GO`D-j2xzAG>89N4qy>Rv$BY-HP`!NYH4F(?BURbex#3`yE-Fd`_6SR zCyP!lZq2L|POP(hj6u^yhc?l0b`?Lc7*~{uylOE^yy?8P0PoK-9kR>2Is((ql?1xM znOdfgT>wQKi>Xf)pYQ9y#!g?IEQ*IQgZE0gEV>mRvjnPpmM>evGIGC)2y}y63yh78 z0%^Ts>IS7*sxlT-CciYm#@@HOPR4fr#S)ebvGS!QtTlZKf)_4j2@SHht%F;$V2L=i z1QZX`qAWg*Pg}}vO(DC^_p&#`s;Fuydn91gg8Lrz!J?U0eSWbV}f!9qRB(me&#{_B(rW zb@8E7K>XF!ETLs~Pn9P=04htTEb^GQhw@Y(r$$5M@D^)W4RP`?Di%&1mg#V}cydHm zwIivZe`r^K{?;wA24J&A9 zGzrR!$b_?F39{*7qT4Bs?j`aTkFvO!`}U8kz!u!jb2z)Mr93?2DSXMekj3Wh5RaW@ zWM{4C<{Ad);`#*(3Ogsok8_sLD!VjzDl^p|RVhzpN(=Q4<)IWyf*#ZBQI_|gP3Sm_ zqRs#Zn^2ty!_F+5uv4h8>ho0m_@gW#)a&-cDYDby3Kmr7A$nbl$5_(*?EUM;E|2MD z`A)NpvKO?BCju;E%M0ST1D>sja2>AlN8S-K;(c4xDYl@2d@25@F=6E!Evn0Rv|Jm_ zY8wypjGpwvee(L&b(nwPI~} zTMm8|-K&`OWm`4~$M)ppBZ0MNX*y&GQCG8a)>F&B4mqT^09_cW^ zI#xFm@3V|GikZH@Mui+^f30KYtu9wyCML62EZ@oqJ`MlY*29Vb4ls+=!8-UGp7Rnn z1L63t3H#Ns7!%iEZ_a1K&H!Gs2aAbO=6{Tv!}S37ZD7~Kegse2$y($aNNMX}f{-`H z<@d+^j9t!Xd9|L=yjaI&Ff0@x9ur4<;`zP}Y*xb)!8+onyZL%=gj?s^`F$JNV0MI8 zZiIb(s&*y^%_Ehjt#CavxWA~j`5@dN*X4r8w|s)BY4Y!bW#aFlqc>WMhK?>jcu}iJ z96s7wG~tE(UcYM})iT|9)AF&aI=rNp$q0Od|&ki`$FgfY$2YnzF?dWT`igjK$M2oY6!Nirki!tE&((`b{C+i$*i}#Q~7Jz>e;3dBI zJlyHk_^ESHobj_4(Rk{4)*pzesF3j;MeI4xdg!n_EELjCdlCB!snGR5f>^c8uR-l_} zxcw`H*T;Tl&2{6EHNUb}(W05{<-E-=>;~Ol!p)y?AAKQ$U82NA=q0~k=6SsRufUl1 z@|71^0e|&ZY=*l)NIPcmPQSrExp46p6P!)mcK=fe~2^-r!GYXcM*#i)(;nI2;P5 zQkO>j33qQaKL1Zv@ZXN89m}rJ|6+S0qfH!caO3j%e{o-KA3ymoj7X8Fy}~d5i^mFH z;^VF`h_LyJE3Ce}W8CQl#uH-K zDD3?b7Vf^}iECqclCEEyU>wWHWHqpOEC^J@y6wToTRZCJ2)++Ko*1tTNH>#O8pwWZw^IQBGXrLnHLf&|m(J(EE2a?gTn2n3IcK+GI$J3Fee( zHr$4F7px8EwIcL%W>mn5+k6HlIOWqjbuo${d#xa@MD~ZYI?iJ3>w`sv>H^9|=^63H zwP0VE<3x#3N(5gKrOyGqYewrgCTOtjQQQCw6^|{VbnM7yMC+|}vw&}p2BX>e{A{$| zRkw3_W(~a~=r_8CK9y+|$7|^4biC#Da!oxaMLP>(I{0y|Z==n%pM}exCS3WC6_K^{ ztDgl=gajKp^REItL_VG{{blP~m6XbszJ`&6U zM1F%eOc41C6ZDS)a8TD53F3>}39E=Aj6!M4VmKuZmJ(?iFH97+d?``CF-L0!N1LG! z6l2Fygq;iD#nBQx_AGOmEqVJSy<@=6fop|O3id3;n*rpVX$F5hNpBjkv*1!YxD+Pd z%!IT;%pMYN@NqoNYT)5U_m0cRLpJ=Oyfq9p21fn>veLp zB$XIeEZ$fUnhV*gR`L9BGS=#9buBZjR&h#3SQ@lueLW*VtBseOD%v&qxcYj>91Zx(ZHy8PAJXv@x%4?CM_{)6l#U@;9@+y=3m+=aZN)#JxBXjWx)|2Y_rQM zOIYi}BKGzMz#D&BzT$ki9#({QN%46hmF(a7QK(+_Z*U2lI1D#__2MuwHPABx_63F4 z4QXTkr0_6p4BoGyo{^)SgG<;Wl0vxsJs|>?q)^#-;~T}J?NntoejG$4*k7qjVRkUT zYY*&v3k|H3LD`F{R|GK>hpB_eSWr)7}cFp#HgMRA8@9hSJl;1VqnISBZ!|% z(fjGjv#R)Nwa&lcuNZ<}N-gO}|#RpX6K8^w#m_7RZ7{h-si&L&%b&ZGuZJ;8Iv0 zvp0Hia|3VR80`unba4{!j?$+##?l|yPj)j#M1XIZg0;ANTx2h+GnH~32# zdZ&On9q@R#jGZMyUAhZ#NS93@a9FoyVpqHqF2TeQj+>LcIA{oXj&_H_W&e>1!4V=M zU3w0Y24@1F&(xbFXyfo2Di0HyQWOr8{+6ky2h1@jOI*VfDzXxzt9kUJO4GtD?7Aa} zVuthCS$f9=dk9>Eejz6GD47k`ZHKc^g&W}-)=;`%sqz3G*#uhD?2p%^dLcV@YNB_F zH(^e7XEXSNO>|sv?P;PfN-(&72!sy9e5 z3y5q@_{&Z8^j=z<>TK2RYPYs(!TO+9Xgwef^hndR^2##OP*z4g=-5FGs;$dMWa}jf z8q6kc#SOpAl}6=i7C^mWCUNJoYbm|!d$ZX|{@Rf#{>aG2kWVhOa1ki=PV~w$qNE1? zkfu+y;jh;;-iDz2i;r`^*o9hSm?YV1s730{zE|jjaopM~KVS z28DG^GktF`hwuh|@>{>0lf*C%$$Cj2)-Yz^9$#xcaljtPkZGxPoifAIkS1oTkPvehr1b$V%*_}(AuY5Xl)A3v zW*)d*boP1r4FUTJV7f!Ta94z0elnzm+k-b~1<{8IXA@iM&Ew!APTaxP24CJvAD*D$ z!5N&5!)y02k8F*8eg)5lPpD--tR2L*P`lgAC6EK>8lk4Fp0QX-fqoOTk+ulZIs+Hp zl%2&4Zp_6eueoau|~!ZMy6aFv3KdhHGd^@Ct+DCHyNt6zK zp^e_ZzA?s%Erz|&;yywr9FQ{SDBh+m>NJuMgHOQcwAJ(DwV_^t27jY1Ot-k0zAU9YJJv8v?#e*PC_5oSK^^i6k(qtbHY36m1HU`q5x1TYcue=X7{Z6#gN6j~K!?rjex`pXjmeK_>MhY8< zGx{QPb4a_}nPxPDv@8p@J0U$v719CHnn4<}D$QsQX%Lizr)dTL`M%-;XQJH}z%I@- zvkj#6aHbjgkj5Y_3kp%S(^^9s_~zn*P#Qdk6{%@fOkAWD8K+g$WEwob^Bz{(U$gXH zIK`(AZ)pS|-vm?^8Xxw`s~f#3q~8hh!YkK=Ki?iAP&1v6>7;k^rC7`6B=U8g^gMoh z2R$bNrW9W>`ehiAFsn+dC-Utbz~8_Ew*$tOb$L-|J!3wOY1BT-s#)Aco`DyOr>j5$ z_+e3tph;^(T7SWcv+~FpwII!9daWj;VeMfg!)~%{%D*tpLiT}3?QS@F0^h-Md~HX) zmTpG#?H%=jEe#z~r44Ep*S4xlv5{7DN_Bm%@a#@{JE+fSFaeB($2;jm6YO7rbl3c6 zUZb-ZF3q6EkfA?T-2TB*HTTCr&8zKXe2)^~ny7))Ui%Kx#OxEYC(L!e;#;tmkUu(< zZoph8>)@|doGN^ouz-CA(nEDne(9@VC33rnN=)j4mG}VAxgZ+0-Gkl0Ji$NiA}aBB z7Z})DB{pCBMEe~pSc_P!MG!ZRVrg(KycTamnivjZ2_Ut43({o!S6je53~8?RgV}0V zS12BOPgfmxaZ?L%@`li*P$)H`5a%$6Rtojj3FdQzfUW#!p$@kyp5?z4>bG^rolj9n zU4JAF7nsDQLQg@uGE*?k+yQAy@nDC7Kw_Pt=j51MEf}i7JgT#8@$#m{s|*NO?K0qd zIC*oUmxq1R&fWC%`Wimi4{N6IA#ShrGZu{wtPB67h2D&x?xr`6HpIr-Llrf;>#hIe znS9>AhrR}O8NcbFXU6FEyA`#r*I$G)$_M%38+3TK@rj2Aca?}|jnPaU9V#MeB2we1Y zdw`zA>kY)nbTMBwP+thL8r-N4jkWKC>vJIU99~tVCvxjXy*FI@>_$B|*??e3oT~I! z4`o{nd7d#y&)3b#eApnpWlIyv7EdQdi?IM(UR+?>?I3olN-LCU_HBIMAl$)%t;xaq z15I3adrsr);*6#RgV8(q4$IR7#%tUjtPj!6BAzrvY+g+rB8JLN_|V~G{&z$4>7et7 zp?Xtz&uu(eAO_0B6RC3!}Q)_ z1uqvm!hy-0wfM-J!~mFo6XvMPf4fQV6>or_#2rO75z3nL{=@a{>_>iSxc)(On%M8F zsyH!1kE)Bdy%R_HF>n~LMrFcie6N_<-r;?w=-WVv3sdyM9PL$D;a&#_4u%Mc*#Cp? zBOo1DzA6o#q8T<7wg|Kr;TrfG2md_5SMcq?CusZe8n%z{Q9=c~oVT9__pxhF)8iB1 z-3X<)7FNq{spD=0x&}-brJ^wDUc@y6MyXIPtWFx=I8ATb)!eGYz(9hvoy1{~3SDKy zE7G*hkcM>&*J%@vybGh?jh2iz#C0WO1E`2*6b?hCfqTCTE;D#}Mp$B2F@T)M~dF?2-1_E_x2%|(3sbUnSNQEJ72 z0ysaE!s`&xkqdEl3FZMgVLF=+_+!~EkOs$gfJZMb?ZNBZ4I#F1zgR`7fQOf1Z_z47 z->ol%H#>^0<^C1tXX@`V`OR#_56lvg#kpBJ*X;mbFdGJtk;%vW0gqE8-K+cAHF%V8 zX2qs^^)1QKXa2<-`1kVbEFEs#+{+hO`oIKp2Ix5fbdu{1Qw;sPc_oWz#uHcRbpqy8 z1<3Z6z!XTsiiBl?23e(d$}#Rxcx|jB7r1u27Y83vv=!2A0#u`w|Fyw zL%~cPk}YiXYWem^l|4C>W{&V?hi7a>nNP09dJR#TL}SP@jltebu&KTp>jg_|VJ9(* zs(QiF+HD57AtuV0x(4fYt;*Caq!_+D!kx*4W8GMg>$~F&f8u6)3z*s0^*07q{EUGOj=wu;s5Z^$2CcEq_nF;4KGOufCSE zUO6he9OFVoyaV9QZe+_c-+UD7m8mj`rKxJK3~wfI?vG--9FA+Sh0bHF%dqMFy-@E#x zv5(-(1s^c?5d3a}=WwvBlMWB>Vt2$HCec6!PVcVb#Pse`&)%f?4Ftd5Tb%v4;vXe= zPVlQ04=Z7hJ`WT83dJuY_y-AoiQ*R$d?~?~@V#&9)m|fYGkT4AYqrCwi;K5lqh%W~` zS1Qw!z^{QcmkEp>Ja09OXOYP)L=z;ku3*G=Ic7(%2m|61w+O90;sM-WavL4@mpnMX z@+7*8mIU5{z?(~DvI!h^mORp%NIadu8xwe%#2XTL0|Kuv@dN^oC-8cR2h2DEuS4Lx z@G0~}v7#gDb`4RO;q&I!BE7k7UE)^={9gjUEb%`H{1SoxF7aOp{1*bR3L9D4kFrAM zIgn8h_|7W=_oCb_X?`u}uL$}yL7x)zNrL{Apg$4xhXj3spx@^!pNeP~B^=suSr_9N zNPublh*yO9mRE#vSmFl={0#zs9q~;26$1aC6X&BYRJ(}h3B1CEzY@ZqCGcllcuG~Z z^j!qL(}m9q;oAs&s|)`EaOJPc2z;Xx7we}DYyKDX*ydX4t{xM%HCKBj7^}PzG)v+u z2z)t#KP2%b1iqNS7fHN?z#ky+Vm_@LUBvwkevGKUEv{$3IG^~m zFU9{(@D~aBzbW1sq)PoS5d2SycSfm_|DNE#6MVotOXzck;Q5u8(Q$mC9LGsn9KI$b zY>g+Y`mr~={h{LDCwPoZCs-gy>@5fxHoO)D&1<|v@EDo8`6G&dli&{#`~k%~V^pcX zGe(vAyrOt#j4F9&j4Ju(#a4>!!rFdmG_xFq6a@Bqb+nyvsE}bkE%B!ae7mi92IdDSah@uaLMiM3wkb0$(EWg@iH-2)ty? zCU7T3Vz~xy+<7UH6EH{D4fk&ml#mnfE%R6!8ra5d{jLLEz3XwTS;4!lw}Uoi6F4 z;LZO^`t1Zh!G*s9c&^m_Rsz4piHnuP80k@ER&s9#9%T?xL6QojSiw`|61^w_Ll_j3|otM z%i7fg`!fP}#;sEQPr?WG2XbJakSdy$UKz%5uZr3+#UCN~w+Q~Q;tvq~8w3vz(u$Gl z3|^)F&fry~X)i1Oc|yK3dX@Zhig$*uQob{MmHb}82k@w&$C2$M^yl*{(GzS_o?weC z&e-J5u3^v`TAGOB>T2CkC-QSm{I`lfOYmnPE#!VB|0TM+PP`C0mTsQJ%msl@ zym{@9ym`$JCH_8vzf0hi5`Txl-zM-Q5`UAx4-)tRiN8kRuM+qxSZ{c?^F`UOj2AFF zIH3LB{N_GyexqFRdkB6v!9OkdOnV2xZ+G&1cUrYW*-YS1xbUkQSL5pme4PuQ62duw zuW{kWLioc3zS4!aOov69>{<^J_);e>yxS6G%2I;I8Q0Zi;h=xn8EmTg4n7ZMnKo!Ey4Fud{2VE zhTyx)U23TS&xQ8U%`PaTAkfh(!fx*s0Z(cRybXc3Ch%4gZ%N?I3A~xavkANjfoDlP zoxsxwJXPWi3A{dmCrdnm!0QpXU*d5Deieb&=BN9>W{_wLc%BS9B!40&B0oo_M0&-T z5iT+ON=`((T*?1S@c+1Ye5&9wY6(O762bpL@V_hm7lQwp;HwmmA!}%nB6Kv*5&RE) zOj^(k<~PD;u&<>I^GmM`!x^dyx$wql={20Os<>u+>Mc|IMDZUG@=p-_`-;by)m10s z7{R}zc#K)y{9%HBQ}6-v4T682;CY=3=*9l0yx2>!IOBP5cCEsj-QKVGX9@lpg5RTf zXP7EYzmwp1D1I9ue=EUnRy@Y6E^}!c34Xoe*Ao0=1P?!hgLiSH!mFgw%tug2LBJWS z3Iv~+cF%0)GKnwo7HKac@P!gDA@E`XH@R^Ml)2x5r->+bjsq8I=6w>MMc^|De1^pD zBJimMK826@6CMMY$n!3POM0XYxFo5{c&`9+oJ#<|&<0$RM_|>1NaqToOjB zq4t+m9Y*j&6_3%Xn;%H<0~C+Zs++%#;QJ}QH^KKJ_@06fz|XaKA&n^NKLPmH1h2iTElG zw}s(V976gR1b&jhKa=>!1pXm`e<1Pq2)vTOk4yY0fgd68w?zCQO>t2AudljR`!Cxo z#dHR&Y5(xT!iaXt-@QoiFSttO8$-68tR$KbpsV3dfP8LHKB21h|diD5D@S)GNXs z>=j`SlDIQ;m9_0p;5SIz8M#WlFM;=wcuzu^9t7T9;)Mj>g}^&YyaRz35O_O@=M#7< z0?!l1jh2;b&d2y7;QgS@PzDUrrd}at6R!{>OYm8CV}eg}@jSOLh?eCwAo%)jeg*Kk zl8-0&dM+NFj9;F%7MaXCSgAx_2>m6;jP*(|V!RTx8qxx$GjbIIjR=C*74M8(CI1h> zUsk*`a+Ula1pm9@e}QYEsaf(r6MU88&l9{eauqVP9|RvTzajXq3Hkg~Ep(BmWrua$t!M~^Y;{@*vT1A=mQN_PS@XnxB@`n`v2EjXnR>|9n z{~y7>3~6qc{i2-3q(LgA(ailQq#*FDSBAaUE5n4B=_0<1z@H-U9TMM0;9CfMv&72? zd;@{67n^U&Z9FC_#GfdJ)rqvvDz6yRa*5$rUW-WQH^)XK=h({${vj8S1A7^2365zo z!7n2Cg^GWG;EM^~k0lkg72rQ+neBf5j;PhfS#!v8Vh#C3uSReXK!|`lQ+8!Ka-0s zWV9prwgjKAcxMDFP2-GUMVj40@i~NiX9z3#ri#xb_zXgy#<&HEFB>g{zJfmk2-PVF zBztq)iQe31g2epx|NxU|J*Cg;*iANK-kH8}(?u=fgRjv^Dzj7rbfxkra^GE*H z^K)d%MQ^F*Z!R(X!h_KElD|OkKe_q-%V2FH`R@t-I~R{G>|3lAxR^5p?+jsuTzJ2_ zA(=?r4EfB5m6tMz}EknfCQr9Q{;$y9hH@Y~WG9g*sphrHR1 zgI@Kt1B!RXuTu1@1pkWSo$;&Wo$;$k)1FuSK0=>zLO%RLkMO3u3I1t<=cCimy=+(R zWt%L{*zC=&J>ku6mnnWd!LK9uwTkBi?+jf<_3c%Pf0*D`67rWT9^+V7ZxL^@2rXo! z{Kasx3AUf5txKg5%n}p=kIOh@R9%MNZqIX+DbmdQ`QE00JHuCr&nEC$5}!dxpHAR+ zNqh={PbTn5GE|VoPvB+EA`177(FT_DHI_ZDfiCUE#UTo9jQwjlWC1m8^Y&Hz@b(}du&6z>dRCGQMi zMVgkXs@s6j#~Hv%p05a?*N7MWOSk>9I3v!RU900&&#tX_XY?vX#}It9;v)(95d_Z^ z?~Gohd}s73((J#*povm-+Xx*%H-ASN1%Y3^McU2)Rpc_OB>p3TJL6M{{~+;i3H)ns zh0L=O|B}E@5%?G3PT*7N1Rkjk(TuF_2VODe36~gtp*D0-$sZ^9V{X3xRn`1k1n-Pe zt1k0BA^r`5f88y=P92!qr9RFmRT}hV7mow`CA1nWO)3ca&k_87#Xm#vdkKDz;&&3f zGlUg7!n-0?25_mdRr;7MGP~)FQ6;+3TO9mix^xZTe4MiCRfk9po zwlg*rx!?zV1%3m8J3~{6_mg-Z0(VBH67MPT?gVZ?T4<>y@j{7rCh(2~4)4>$g8?G1 z-IlLx3k#XA62XVblsvB(GuI`C7bZamlY9=r2i*Kd;BzJKj88?Hnc?Em$E0Jez{jKz z@*5F+L&YZ%yfcCoWf}>JuS@V(6Y}E}UyI;t5`3)SGwmpX_c?j~#Z%Dtq|0U&fO*C% z!uZN70)9*Y#$S&4If0)f@Xusxm>&`RhXntDQs-TQuOxV$+ZA2v+hTa=_FJ+z!x_Aa z3Tp?w+3hzJZ+nZ=UM2YdDgH%*cLuMrmsBWzAHkOs@}E)sZi0WB;CJ%8t}vl$+hzUD zZJ56xu-Tj4-sH`0mPvd)fj>^*YbDMJd^LfulK8^}zJkD)OZ-6sUqaxEC0k# z+$b&6pTKeMb>r7dyf1;{-0Q}B<6%@-Huk_~OXOF2p$F>f&1`h>X4X23vP_IwT{WqG z)1kcAFKVo{lQ_n#ZoCyCJx}5ovbynR1fGLjGPxV3XmL|KaogxY|oH43Y zyS_KKoh0#iuWnjB0LWZe?icn3;I)n{+OUY67&gz zevhEv4flfYC@**vM1U7O?3H1@>6Kv|k~qevu0AYYW#}Hfw!~j1@RtbbFG?JvQ@8Z} z1inw=dkK6Gf$v5<%f{H$Eq#Xz=Nrr5Sd(;vTL^x$o4*p`HxN8dvf;Mjqc`d8l$(8& z;Bl4>=W(sQMjl5OO2HXn^oHzVVFB?1V^@{L`6ibL?LmoScxfxJ#!|(&mhF#t@x<~KZW4$6nwzEgWzu`c)n*) zL?`~s7Tq5$6tr)V1sbEg0<@dG0&I9$1XjoxM({%k9$pq9_<;mJfZ+Qp{yKv1NAP_W z-;3aT5lI<=dqtS7C7w&*EeO21!~+E0 zl)#%vJcGa+6L^}$8xc6px~~3f)|U@G%f6Dp&7rucj7J&ZPp|e05pOhf2{GyjKFh}7 zG&CfIOmVs?oaZZ^!n2lQ5$hxPNSBiQLWsxc)GhyCH{X9}wR{Xu-TWmtzX$kSsSn1d zZXRdfaQ)GV!K);MeK0_E^Em&y`E%0gNrQZgMowh#C=SXnF+z38FuwH4&`t|JU}A{s z=078NKL2K1czr0F)P`3@h+*-rH@oJHN~I~_RS|-Jo8XUli?iWX5rRKR@COJUUKJsD z3{hRx(Ow~VcvXbpF+_Fq&l5bnDnjrWqPqEK2_9Y*A$SZ?-TW?se@gLB68tuT-y%=V z2;*v-WTTiHQAj~xomU3@PKT!(nU6_)4S}yBa7*GV34A$$KP2&`1iqNS7s)$rvbU7T z3ch zNp60Ah`){C$GiDcAs)lkP_L2o9qr}|_v`IiN_{Y1b@Mm5cyu)U@$oQ-;iz!hWQZCs zjK`Hpe{WvH8KH_YwCkm9&AtTR$6J=xTk$;zzB|EpQ+yYK?@aKW6kkB_?FhcD;#(1X z9>M1-z8S&i5PU%J0W*u>GYOtwxE&p8Dz*h2;%X#|Gcas*HKms9&2A?u9^+Ow?m>f0d6;%f8D~p}*_q zPbi}xaLy|Ne;YS!nw2B&JBfcy;AaT@D~X>X@XrbSq{KfV@Q(=mLy5mn;5Y}nJfT@B z@plLur(ib@N1V_yZxZ-H0*4b$h`&bQI03t*!vQD6Um|dvf898oZ$cb{TUSrAar$-R zaJ&gd65A~YlJPX=hKP2DH@msrm7VWNgXu;3(9Hz@gqyF^xSC&2@Hq2^tH-B?cuw#* z^*Z?DA^u^4U+Ly^)8X!v)c-+($H_NbKF$H~mVP{ME4z59mlS}Efx}xRKzxqttrAk5I|&}%Dk1pW3HcKU z{x+rltptAy!SmFa=&DEZs#)l&;jI!_oH5j!-St)pp|TBcl@R;@f-mwGXTw`11mBO~ zuO)bRtAyZt68tp;-(B&A1mBh5I}5(Gcw@h-`Ly-~ADn$h@Tz+wTH~*H%|h=Bua5YHy?CIk+zmOwn6z|#mEUM+!mLjuPcI5cQP6Poa93B(f!94BBm z4zC`@cSXqNuOqq*?+)*Z2*{LJuNX7NDTZ&zf$}7dA*{>pu2)Nx@qYo&l{iMQZu}po zbTP2u%@WvcTyK^TGR!{+9^Nb=c#L4(@_#0Hc(a7yF@kmTI0d_mX8fS|ZwUTtfK=5h_>6+lx5}4ohY6)4_3U7XVwS?d?gmu|VdxqfQ)e?fo z5Z2A_BzSnWgy1oRb@N*Z9$qaW_%eduNbvA#3Bj)=_{RvI3%<2@o4;Ehi{Nn*#(pYY znXbWEVw?i-^%Ce0mcV6~7}x71WbcI6OCVlC;Kiy0dB;uSCO^Fh@cSM3O0mT?$AOD9 zc)f(cXA$^J0-quAy9gY2kwe2$N}nR%`Y4N^$g7sYp&NY3L_nsD_lj}7WMU=%sSP+M ziH|1mQQlJF9TQL|a85T7{4jzas`wiTejvdQQ2g}-e;vX1Q+#iN??v!E72l2E4T3LJ zd?$kMNbnuxk7vmyg3xvu#Pg@1)8x3`Ga&%idnQDh)>4+}deMaB1Ktv~Y{g?N8|w3t z&mj18#itN_BZ6K7L)TOwHt0j7{ZpX^v42)%6)xqDLbPoeN zQt^!7HG=xuL%33SA_YQ#6KqR4+;DOiN8nSl>~lV;ztSm2!X#P@k0cDfWY67xJ}@% z5cvNj{vv@tPv8|Y1{21GUz!y@RX5;?44JaqE5>}*iMz{3^v`SnK9j5d3n*V_56vaVmCAUB==tGn)|OLMLYM zqjMIn5HYL`$uPx=c%DOsNYmg+9^eDw#r|%7Ho@~f7J6X}Yu)&C0*6O=ggO}3y7|cj zKS}Wz*1GxI2!6a${}zHDL-0IzHG0Vryo_V0dy_0qyw=}UoHp2--M&%r7}mP^{se!$ z;xVjs^L+`vx8gCZb@M$4zMJB^5_}he?<5ac%ckcWIeNWzD5D^d?-gOU@``|05evKp zfj1-Y9Emq2@GJt)lz3wTPbKgai8mndWCBl;cszmo3B0bv>kxQt0omyBVAX|uyGD{pHciNg2!3dRVm|h^{cp8DHCE_=)de^DMLKXT1-z!6V zPw^Pey7_kq{;1+HoOSbW68s^>V>s*PUn6*1@h=nnO9cO-;-4e<{RF>H@p}n=55ezN z{8I$KgW$IdK45Mk_{{{*uauz&-k?12I$4}}n#W}>?NM)bdyV2PZ*kfq1iw=84-xz_ zf?ulmMFhW);1?*qnBYwZKTQn9c|2|h?qJMu@Zy?wAHmPYUsS}G0UY0q&iZc54nL#n z&23Nd<~Hw?_(TG~oxmqZd>nz_O5nFhd=!C?B=8XuA4cFq2z;=_2NF0=zaifsjA!`uiT7}*$jczsiY0B1hdd9!RU$wf-}YN)m5T+hSpW0 z(O&Rbb{m4n$v2$mSKfr1@lv0b1dp??gCBhuPUT2Go8WQ!4d?MjNfY@TxX5ItqZtx; z9q3#+CWf!B8W|0}60`==0w#v9Za#tF;}wtLtDBD__&S0Qm^BGLmf+#66uK7p?R02T z-HwpO8Jah{cEy|B{zvf`zPi-Y{v`N66p!JnoBx&Ie^&fY1pgz!pHuvI1ph6;f35hh z2>wfgKc)DS1pgVqe@Hcz08g22085%zJf2=kc4-zM<42>h_b4-)tr z1pd0jUnTJW5%|jze}TZAd&zQ$JQp@z>}RFhs5=HW3gxhS+ABuDfk@e+Q}tSA8kr358S85^Yb4l>70K^P0I3$?J~^a4slEk z30D4lKh+w5i`_CDE{>_8@KL$f;bOB4hl^usC>$?jgVId~a5W5$7qU7$*XuKYi(_ht zbZxD+bL%0jw6GVlnoGi7$ZBnNK6p?aq2l9o!dnUQC5=7TA-2k}!Pw8=s80GpSLYC0 zWjOwf0iHiTB(jXyDZ}BX4B%e{%n>_fIQ|O*{O1AuF#~*?0sgN6yx2y=<%_dxn0KYW z1n^=X4aXlfz`q~Bzh{6KXV-A~?*#B-Ck>Z>$N+y(!}oKDtu!3J&j8OKzm3_pH|uLd z@$S_1*_&?Uml|*6_r4y$i%m34pS0NkUl+iOO*9-|Yk=Pnz>7^Z9RCLcJO}V%6Aj0U z!)us-y{iNG-y7gxGQh9YHex-aNGk$fb5sc_;csH~tW$BL5C`7Gz7P2SbkaFl%XGi( z1lQWcn^*xCyJ*Ldbof&SaJ-2XaIuSq!{-~oAJ^gY4B&GO;B$2NECYDC0eq(ZKP$Sm z5ApO5#RD{Wn7O*&iaDhS#u|)9}}@x_1h0lptQi z3XNf}VRd{z13X^CYIw1!h6Rn?YJkUUSPh?MfbU~~$7@&(pJ;&ZZGgvXSm487!|L{n zb8OfQiZ8FhGk9r|Ih&bfevrE(Kg3n1NeJ7 zyz?Pbm;ROk{7nJx=k0vR)ZzOL;N18zP8awfy0+B(AB&~7<3`Ku+i&ERnl#I_e*z9) zIa>|jTXgs)1L+$L;BFnh-T?lZ0sN0Te60a|jRE{s0q^IiHh{lu0O!$&55@jFJwUuG zG-Y<@joi}m8@avD13s|8uHBR_>%^nANzZlS(b~LALwJ@L@H}I{^K=N$lLkEE$k`G4 zx}F7sXPj=^V+K5r8u0uEZ8KaXM`#BQjn^@kSG0-eo3r?EoBEvMeUM9!sdpxcUF{Oa zye8g770DfVB&TEI_;)uSJ*JM0x8D&<6^j9}ghJAft0M;3v2R_M5Yp|vIlz+L!Q#ME z*5m4cdpXcK{Zg6W5p@?KA?l;%Z;q>fRvdkK*Jo;Onl}qp;D)2C#22*>5DhGP z$|Qov9jAC(+47Z|kRZO69X@vP zwd|AXC_OUCu9saceLY~-M_w4Z%_6jcU~Xk%#MEiyNRZA zQ4qop@ZSabB1DBpwvlaVmx~$hu3t0??$6@5;4hD(e zKCSkS7mwI9?`T0ATmV0uR*T@r^sm+4X%3tRg4SMI=5ns-*&)Qcil=<7-l^at)tHvv za#e5!{9miN5!KpqdDc_-jrxj`Aik-gY0`}-)SgOA;ntIC5qCX<+Y>vdoDsJyw{yuE z_0DAb#16d``rK(e-kXGyVG(*|9DjR8?We19jP%6)L#9w|LqzC_NjJQe*Pl}d@YtW!xZ#eEV5kTpJs;|Z;_e~n_Q1U9j30!w z;|mk#)Uk^9Ft`1rj_+aj#)>Sa`5iyRm~%lLpg0ckvZD|xayz7l zI(H{$UDV$8{raLhNO!Bf-m~taxdnfQ@bfAARilKV{xT0CJ`KVZy0<&` zW0co4uibx5o!aNRloS`x*O!7O3CaOc92YpJUCl&n+|n+B`3IiUuHK32K~&Qm-v-o- z4hV=B>H?;G%@6q0N%Bc<@~J8O>tECn!|i_y;Q9)jwg>5EBTGh0->hi*Iw(&wTkKJK ze;c>`B8K&`i@F83m|-2dFf8bRRrd>xc5XyXakTK9U(`Xv?eG2N{Pd^I{u z>01G%2cQ(Mj5JIqrL}&jvF{V(yj`(3i-9I9_$Gy}w&}m9-4;uQLhZi)qPAhpt0ttN z*=xQxB+G|>K1up6sVi^hOs zR|eX(ak;32?YD|)>L4#}_KdXJD?71?El{7Q3SO$1@Npj1l#t|D+KE|!qV=3KUo~N+ zEzz*OW1XgME@(mcX%nD>kc(8)RK+`pN19Cgdf6?iO_nQdV`OgCR#5udKg)40_t4z# zw4pq~BzeBWEyQx-No2~Db9f<{vhr+h(W=&WLNxBC!;;4=b#qlENaYugnLKA~lC{Bg zbMeS7&MuzK5L4xh@kE+UHFCVoT`VNz3JF~#aUI)*_+W%7P0sOr5n-Am_wss*1rLSr zPKh#&&6LZS`_2 zWa=Uh@w|Pn>HcW+ru@cK7m4!ig{Gf-LCS8Ysg9Hu*)wgWDLEM(Pi{6f611c@n!ZH; zwMNr>5dy#4H2bb7>ME>qnTZP`sDFOhHNEP@srU&g)?6X6BuRLRu2{2VNetTMr2iCe z5iH~Rg$U{k!8;>pM6T0q-9m0_J-N%1&5}OU7Ksb};u-vJwe%JxgWKu$#6{8(Mb7km z*@cRgC|D}|QdPz&-DzrWi(Achx_8goCzbz>GT|7$!L{Eui#k8i1|?B}d0 z`mUc`ocMMCaHcN1FqDPF#J>+%kCfn=c8dJkNV<=s5 zzQnCD^r;-hb-ie+(vrgMy(lxGB{h~xe_@L@B{vIAn2s(yIF<%vv|O>~?rGP?nYX9i znrZS`2h_J)Ehe9^%td7$tmMA3(o(`raWpd+@HP?fqz60^TjOaE7S%oRWIV%2$NCTNCL{2&+w` z-Ty`FpRdY&czF`V$L4&tzFZ=c)v{L#3{U2!BuX~60{8I_{BNIT#WMari5|&#q1I}t zziiFibJ?18__8Z9QL;Amt}P!MY4-dBb9yv_=O@!$Fz3Bw1Y1ikUr9zVwcuw~QYcet zxx!OWilL`a-$C!z7JqM(DsxtBh*e`H>yDWelN-?7CMc)lc5=umtD0XHsb&M)}}M-wM6PLyUWeyKzgy80wM#X!F&8L4VO4UmqIJAeX9J%Ci45XRzaDB(B z%)$a*Ytk05%S4T_2*_Axsq7)_drqXLr}ye+~sS{k#!EfXDF5QD0_FlE9_+eV1#{T<2 zy$dIfrfg4_V)~mb;;n?Niu05wau}Uc#9asctEK1V-bO0K6 zJ40?d+K(yvO$R?Wk_Lx5_0UNA-(KFes_pPEl{OfthshdO^k?%pViZk{alF{M&%yIY zVV|O|*4+9)N_Uv(=(PLk$uEON?K^gn#+2|Iw3=kp+5#>#K$@# zC70*N36!KHl*Pn4aYvzRU#v@N>CLIPP;x)PeZ6myN3&M9ETDN(Kr{dP7U~@jQQ{_A z7quYRwel89fn&DbLPPGGvN1zy2Q`2WgBF0=Hf2Z`L8ow?QCsCT>7##IP?IEVI9mJnsIRzek*4$ZyJ@yu?}@($ znN{}klBx7q#Gn}i%Znc#$Ujb{am%h$W=M$vw#4PIDWv}W2#X}z3g_6QLT83_D`;dz zhU7rG0%nAoGNH}VslHUyL63s>R$!-qQc)Mzg7@KBPnIv7yMT92BiphZ7!V0s3a5y_ zV7&wm6>Y7;0647#^e9MNF9nG|!6$ri(b2iyin?g)Hdi+w5{3)og9d~czf5Yvs6!g0 zRj6xi0p`P~hca81VI~8Lm*YCLz7%!Qwj8|sQJw%r!w_+8LD~L1q9ug4{dsf*8-mQ< z0P{2`4rN|Z3q!#yMtvUFq4jT37j5m}wYW2+QqVIXalHcMt;vuELwPA^GRO@QZF@4G zLrjBOLBYmU2+9MMfY8RpFHnC^&3%+>lB+x)JVZ~*vYUT3oj#U5p6)Yfsw%rZvmT~O zS+3`^v#6HbjW$W<8Bb9bH$Or}rs>%hJaL^zDc9q#%WQhQd#Kmz**TjY3if->&8E+l zV2wZg4XqAVJTvFf_~fX+)#fB?SmGNtj0FH_Ir(psA| z5s-RN49E)#wr#?7caX3o*!CK(qa^$yMwmF8e3av>sTjp=)zr6>rpSPaQ+Q)F-O;J5 z%VV=1o4;@gM(`>5StOYtQ!Dpz!Rl1LTNG3HB^QpTK}D8) zi#B-RrTtK@qO@p#U4{pz=n#MBqN1qt=#EFX?8$hQb}P$<)!U?-LHB~@fSv`d1Tn}m z+a|eDHiGto-UWRG`W*Bf=rSmBvrS3><$+2-)lb=^aVT#EO$E&aEde<}t3mtGUx%_8 z^yX&U0O=!Kd<8lO`Zq|yjd^!aFVMnSvmRfxaK__{EOQ^9yGWAea0TPI;oxIT`WnT{fuzopvlB3(C-Xf~a$!jZ{1^*nA&gVz~wDyHU>w zsW+mI;eyS%5tdBj=8cptKfs@eVm)6HMJmT^!d&^O(jJxx74izDw3|q`+V0v7(o52>`LzZtD>11SwB@DqsCr7^>YZeY5+f-EXgybK zrj#fPFmuqfpMMnUR^d|Om^wBl!t&*$qB@m{-?PdQ>4U z<1(-LQ~A;+2%UmzH|sTj4rlDA-n2;c@>Kw79WLRsdSu%DxV)HkjW6t`B>I~Md7_?* z%=UYI{zx<5zL~PQwVop7IR3mIesS~FdMZ#)%<$K=lT3`{NoO|)4m0=m-ECeSQ&Zz#1?=Od9^6= zxOoe(s}}nFdo(Yxdk>^7!i$4M?!Fa>LeAex1;{lIZl(V8{nI}GQJ#SgZrZ8|-79+k z#ouj(ag#Zz0V7|(%;%rRGW-$cHA_+(suQ#-okF#pmjI-8tMKto_`__8K-#b1HyS97 z?8|+A3pa10Siaamkz{xJ{44Z&^y{cMRQcfP=G~C&2HP%Fr|Xivs9xlIUx)gUFZle0 zI!Nr#x1!p>r}trYEU32e0f1x+e=e|(zUcE`3@F%!@r>l8ZD@XYr7-yt^pF=ktN7k+ z7+y8Mgid)sZx_WC{>wJ9LeM2qE8&<%6pMIZBm8;Zjk2P}%_vpXQq&E0pR_C4qCM1siUdr_k~ z$A#y$2*4VSr0UOn{x&hNbjraxAIa|su$_P03Hga%Y4UI15*SlG5O)66E{ti#8J~Xv z-?kYsEA6`X`262W!X;@`56~R`RWo|$@Po~m?Hpb$YIbfG z#R~pJFD{8<7svdGtn~05e*Y9L(s=Tp;J9_D>w(V;P=~sw{shDG?($=z$J8ULMPA}v z0xKFr5>qK|XWV=eQsEGJH*~Dx3{kZ67*SO73{f<2#cqs0k++LlH2*~u@P;U+arZq` zMAE~4EDEtk=x8tDj~RQ=`2bh!fdiuXb=1i8h#v_|TSt?{y$Y&XJf@jq*Y1VSO|$)e zI9jZjYV=yT-(K)cnB(`K*GDlOD8$v=y^#0}uSPFC(kzOj{0SQAnR$K@@4^O0oFr9q z(mr(7^Dq_>rl-H*O+d4{N6PC@Y jpp7>igbPJi1)qKcT_+Aww0sBuD4G|(LDEFN1djg)wic4I delta 70768 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 diff --git a/aptos/aptos-programs/artifacts/inclusion-program b/aptos/aptos-programs/artifacts/inclusion-program index b0c219ac8a3dbd75a2fd3d4e091f6adf1a412c4f..7eb3fa78bb06f3b42834cae00947eced09858c31 100755 GIT binary patch delta 23297 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 delta 23335 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 O>_W)KcOX58r~e-mn)2WP diff --git a/aptos/programs/benchmarks/signature-verification/Cargo.lock b/aptos/programs/benchmarks/signature-verification/Cargo.lock index 03c1353b..8ad1d04e 100644 --- a/aptos/programs/benchmarks/signature-verification/Cargo.lock +++ b/aptos/programs/benchmarks/signature-verification/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "anyhow" @@ -26,18 +26,6 @@ dependencies = [ "tiny-keccak", ] -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - [[package]] name = "bcs" version = "0.1.4" @@ -89,7 +77,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#132f6244b430c5c079d60691e0ed55fc9797be8e" +source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" dependencies = [ "cfg-if", "digest 0.9.0", @@ -97,7 +85,8 @@ dependencies = [ "group", "pairing", "rand_core", - "sphinx-precompiles", + "sphinx-lib", + "sphinx-zkvm", "subtle", ] @@ -122,12 +111,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - [[package]] name = "cpufeatures" version = "0.2.13" @@ -143,18 +126,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - [[package]] name = "crypto-common" version = "0.1.6" @@ -165,16 +136,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - [[package]] name = "digest" version = "0.9.0" @@ -191,43 +152,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", - "const-oid", "crypto-common", - "subtle", -] - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "tap", - "zeroize", ] [[package]] @@ -255,7 +180,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -298,15 +222,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "hybrid-array" version = "0.2.0-rc.9" @@ -316,20 +231,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "k256" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2 0.10.8", - "signature", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -369,16 +270,6 @@ dependencies = [ "group", ] -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "ppv-lite86" version = "0.2.20" @@ -466,30 +357,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - [[package]] name = "serde" version = "1.0.208" @@ -542,16 +409,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core", -] - [[package]] name = "signature-verification-program" version = "0.1.0" @@ -564,7 +421,7 @@ dependencies = [ [[package]] name = "sphinx-derive" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "proc-macro2", "quote", @@ -572,44 +429,33 @@ dependencies = [ ] [[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-zkvm" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "cfg-if", "getrandom", - "k256", "lazy_static", "libm", "once_cell", "rand", + "serde", "sha2 0.10.8", - "sphinx-precompiles", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", + "sphinx-lib", ] [[package]] @@ -728,9 +574,3 @@ dependencies = [ "quote", "syn 2.0.75", ] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/aptos/programs/benchmarks/signature-verification/src/main.rs b/aptos/programs/benchmarks/signature-verification/src/main.rs index 0b6a7810..c702d83b 100644 --- a/aptos/programs/benchmarks/signature-verification/src/main.rs +++ b/aptos/programs/benchmarks/signature-verification/src/main.rs @@ -22,13 +22,13 @@ pub fn main() { .verifier; let agg_sig = ledger_info_with_sig.signatures(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: verify_multi_signatures"); } validator_verifier .verify_multi_signatures(&ledger_info, &agg_sig) .expect("verify_multi_signatures: could not verify multi signatures"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: verify_multi_signatures"); } sphinx_zkvm::io::commit(&true); diff --git a/aptos/programs/epoch-change/Cargo.lock b/aptos/programs/epoch-change/Cargo.lock index 9d9d12ad..722472d8 100644 --- a/aptos/programs/epoch-change/Cargo.lock +++ b/aptos/programs/epoch-change/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "anyhow" @@ -26,18 +26,6 @@ dependencies = [ "tiny-keccak", ] -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - [[package]] name = "bcs" version = "0.1.4" @@ -89,7 +77,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#132f6244b430c5c079d60691e0ed55fc9797be8e" +source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" dependencies = [ "cfg-if", "digest 0.9.0", @@ -97,7 +85,8 @@ dependencies = [ "group", "pairing", "rand_core", - "sphinx-precompiles", + "sphinx-lib", + "sphinx-zkvm", "subtle", ] @@ -122,12 +111,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - [[package]] name = "cpufeatures" version = "0.2.13" @@ -143,18 +126,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - [[package]] name = "crypto-common" version = "0.1.6" @@ -165,16 +136,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - [[package]] name = "digest" version = "0.9.0" @@ -191,43 +152,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", - "const-oid", "crypto-common", - "subtle", -] - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "tap", - "zeroize", ] [[package]] @@ -263,7 +188,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -306,15 +230,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "hybrid-array" version = "0.2.0-rc.9" @@ -324,20 +239,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "k256" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2 0.10.8", - "signature", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -377,16 +278,6 @@ dependencies = [ "group", ] -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "ppv-lite86" version = "0.2.20" @@ -474,30 +365,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - [[package]] name = "serde" version = "1.0.208" @@ -551,54 +418,33 @@ dependencies = [ ] [[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core", -] - -[[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-zkvm" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "cfg-if", "getrandom", - "k256", "lazy_static", "libm", "once_cell", "rand", + "serde", "sha2 0.10.8", - "sphinx-precompiles", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", + "sphinx-lib", ] [[package]] @@ -717,9 +563,3 @@ dependencies = [ "quote", "syn 2.0.75", ] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/aptos/programs/epoch-change/src/main.rs b/aptos/programs/epoch-change/src/main.rs index 3a11a7dd..8778e1a2 100644 --- a/aptos/programs/epoch-change/src/main.rs +++ b/aptos/programs/epoch-change/src/main.rs @@ -9,46 +9,46 @@ use aptos_lc_core::types::trusted_state::{EpochChangeProof, TrustedState, Truste sphinx_zkvm::entrypoint!(main); pub fn main() { - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: read_inputs"); } let trusted_state_bytes = sphinx_zkvm::io::read::>(); let epoch_change_proof = sphinx_zkvm::io::read::>(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: read_inputs"); } // Deserialize Rust structures - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: deserialize_trusted_state"); } let trusted_state = TrustedState::from_bytes(&trusted_state_bytes) .expect("TrustedState::from_bytes: could not create trusted state"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: deserialize_trusted_state"); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: deserialize_epoch_change_proof"); } let epoch_change_proof = EpochChangeProof::from_bytes(&epoch_change_proof) .expect("EpochChangeProof::from_bytes: could not create epoch change proof"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: deserialize_epoch_change_proof"); } // Verify and ratchet the trusted state - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: verify_and_ratchet"); } let trusted_state_change = trusted_state .verify_and_ratchet_inner(&epoch_change_proof) .expect("TrustedState::verify_and_ratchet_inner: could not ratchet"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: verify_and_ratchet"); } // Extract new trusted state - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: validator_verifier_hash"); } let validator_verifier_hash = match trusted_state_change { @@ -63,12 +63,12 @@ pub fn main() { .hash(), _ => panic!("Expected epoch change"), }; - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: validator_verifier_hash"); } // Compute previous epoch validator verifier hash and commit it - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: hash_prev_validator"); } let prev_epoch_validator_verifier_hash = match &trusted_state { @@ -76,7 +76,7 @@ pub fn main() { _ => panic!("Expected epoch change for current trusted state"), }; sphinx_zkvm::io::commit(prev_epoch_validator_verifier_hash.as_ref()); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: hash_prev_validator"); } diff --git a/aptos/programs/inclusion/Cargo.lock b/aptos/programs/inclusion/Cargo.lock index 9309e322..79e23fe0 100644 --- a/aptos/programs/inclusion/Cargo.lock +++ b/aptos/programs/inclusion/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "anyhow" @@ -26,18 +26,6 @@ dependencies = [ "tiny-keccak", ] -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - [[package]] name = "bcs" version = "0.1.4" @@ -89,7 +77,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#132f6244b430c5c079d60691e0ed55fc9797be8e" +source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" dependencies = [ "cfg-if", "digest 0.9.0", @@ -97,7 +85,8 @@ dependencies = [ "group", "pairing", "rand_core", - "sphinx-precompiles", + "sphinx-lib", + "sphinx-zkvm", "subtle", ] @@ -122,12 +111,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - [[package]] name = "cpufeatures" version = "0.2.13" @@ -143,18 +126,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - [[package]] name = "crypto-common" version = "0.1.6" @@ -165,16 +136,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - [[package]] name = "digest" version = "0.9.0" @@ -191,43 +152,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", - "const-oid", "crypto-common", - "subtle", -] - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "tap", - "zeroize", ] [[package]] @@ -255,7 +180,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -298,15 +222,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "hybrid-array" version = "0.2.0-rc.9" @@ -324,20 +239,6 @@ dependencies = [ "sphinx-zkvm", ] -[[package]] -name = "k256" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2 0.10.8", - "signature", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -377,16 +278,6 @@ dependencies = [ "group", ] -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "ppv-lite86" version = "0.2.20" @@ -474,30 +365,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - [[package]] name = "serde" version = "1.0.208" @@ -551,54 +418,33 @@ dependencies = [ ] [[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core", -] - -[[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-zkvm" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "cfg-if", "getrandom", - "k256", "lazy_static", "libm", "once_cell", "rand", + "serde", "sha2 0.10.8", - "sphinx-precompiles", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", + "sphinx-lib", ] [[package]] @@ -717,9 +563,3 @@ dependencies = [ "quote", "syn 2.0.75", ] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/aptos/programs/inclusion/src/main.rs b/aptos/programs/inclusion/src/main.rs index 0133f941..fe66fa97 100644 --- a/aptos/programs/inclusion/src/main.rs +++ b/aptos/programs/inclusion/src/main.rs @@ -13,7 +13,7 @@ use aptos_lc_core::types::validator::ValidatorVerifier; sphinx_zkvm::entrypoint!(main); pub fn main() { - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: read_inputs"); } // Get inputs for account inclusion @@ -30,7 +30,7 @@ pub fn main() { // Latest verified validator verifier & hash let verified_validator_verifier = sphinx_zkvm::io::read::>(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: read_inputs"); } @@ -47,7 +47,7 @@ pub fn main() { let latest_li = LedgerInfoWithSignatures::from_bytes(&ledger_info_bytes) .expect("from_bytes: could not deserialize LedgerInfo"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: verify_transaction_inclusion"); } @@ -56,25 +56,25 @@ pub fn main() { transaction_proof .verify(expected_root_hash, transaction_hash, transaction_index) .expect("verify: could not verify proof"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: verify_transaction_inclusion"); } // Check signature - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: verify_signature"); } latest_li .verify_signatures(&validator_verifier) .expect("verify_signatures: could not verify signatures"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: verify_signature"); } // Verify account inclusion in the SparseMerkleTree let sparse_merkle_proof = SparseMerkleProof::from_bytes(&sparse_merkle_proof_bytes) .expect("from_bytes: could not deserialize SparseMerkleProof"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: verify_merkle_proof"); } let sparse_expected_root_hash = transaction @@ -88,7 +88,7 @@ pub fn main() { .expect("leaf_value_hash: could not use input to create HashValue"), ) .expect("verify_by_hash: could not verify proof"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: verify_merkle_proof"); } diff --git a/aptos/solidity/contracts/lib/forge-std b/aptos/solidity/contracts/lib/forge-std index 1de6eecf..1eea5bae 160000 --- a/aptos/solidity/contracts/lib/forge-std +++ b/aptos/solidity/contracts/lib/forge-std @@ -1 +1 @@ -Subproject commit 1de6eecf821de7fe2c908cc48d3ab3dced20717f +Subproject commit 1eea5bae12ae557d589f9f0f0edae2faa47cb262 diff --git a/aptos/solidity/contracts/lib/openzeppelin-contracts b/aptos/solidity/contracts/lib/openzeppelin-contracts index fe6249ec..3da7a869 160000 --- a/aptos/solidity/contracts/lib/openzeppelin-contracts +++ b/aptos/solidity/contracts/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit fe6249ec2c2dcdbb05e2b6a0d0d3e229f6ffbb37 +Subproject commit 3da7a869aad95a3390e173f59558181329b0871f diff --git a/aptos/solidity/contracts/lib/sphinx-contracts b/aptos/solidity/contracts/lib/sphinx-contracts index 207d1dd7..20d0ee36 160000 --- a/aptos/solidity/contracts/lib/sphinx-contracts +++ b/aptos/solidity/contracts/lib/sphinx-contracts @@ -1 +1 @@ -Subproject commit 207d1dd701369603a46b6b8601c596996ff125ae +Subproject commit 20d0ee36565cf9058f5f3cb2dddaf225c84919c6 diff --git a/aptos/solidity/contracts/src/plonk_fixtures/epoch_change_fixture.json b/aptos/solidity/contracts/src/plonk_fixtures/epoch_change_fixture.json index 56a67d88..6b2e2794 100644 --- a/aptos/solidity/contracts/src/plonk_fixtures/epoch_change_fixture.json +++ b/aptos/solidity/contracts/src/plonk_fixtures/epoch_change_fixture.json @@ -1,5 +1,5 @@ { - "vkey": "0x0072b60af92b70d22263ea319349c33af704baf7a4bc11cbac41265e34e8381e", + "vkey": "0x00749738cdd87d0179d124a1c20f0cb28de2355faf4b00c5f994b3bfa0cfdf48", "publicValues": "0x205829098a4c0273312e8bc4fdbde28fc12abdc540c88bdd9abeef0a85d706ecc071f215064bfe6f1c24295135199ce6f6dec2974115fad50989e666915453ad", - "proof": "0x7f8918df1abea79a7dad78d2889bf34a2eca42cc44e9ac350ed3fa7267154717fcd5750f216976d8595327f6ff99c18cc1321714ec0f7ca6cf39f53379e2440191444c381426c5be6b6fd61037089ab261b00ff785a3e27d387740604d586e25d46a37f522a3f5ca9e3f14713685c7a4b10d7ca89c4add75e5a18934b8d2f6b5a48a26f61eb9be4fbd66549382667f953f91faba31417d93bd2524ea4d6ea71713c0ab64247f5c10942c7b665371a406bd59f93cb633d27beb4433a3398ed47828df97cd1dc8525e37c6f7b29e1f5cc4157895052cc538a8bf42552e8b2004ad85935d7422ce23d3676e1f1f772fbe0ebf9f4e7f9808e0ae087597af15417f50731878762622896497aabcd32998b33278aff53487832ab72625dc70976dfe24436748fb27db4d2a6f0115d19880acd482c4fc8dff9f5e229b93e00ffe7045a1524e6197099386c066388cdea4d88cf963ca042f4932a4e65eb1d829ad21d4c57c79565320c668418e5db9bb9887c917b1f9d0fa9962ecaae3cf128deacce488a1527a342ec6facad13f8168a35ee75cb043f26e9974f24910c0e1af745e824b0ffa69a2080462e6421ea7b229fef55bb20de10237a9359d1e5407cd6705344f711de2fa1065862ac4d12f3d951264b3a8cf08daca0b9cf785acf9f6f1e381e2b8e12f710e6c27789bda5c0701aafaa22c484d03f76f255a0bca57574d9884ea9505865d28afcb22e1f59e45509c544993ebf115a23d3f734827fcf935fb3cf8a685e21c092df595e267fbc86ef9e0074ace50b6b2c587144e2ddd82649ad0f4f973450c24cca1251c47af07374b1c1b3aa5e0741ad7cd811e7f509ce62aec612aabfe4a138725dc4c3004e8c1d997c82aa9dedc3951c1896c68e955dfd3708725c8124716290aeae3126b6cb642109f3a15e2e52ca9e900913f2c249a3835c78bb5a0fe2155e4be15bf2ff63fbe74711641365938b7e08e4f44ee6e436397f624b806011e25b9b9d12a5fc1b46a043c80fc3e7182276dde5798da8396d57fac5975037e08d6c3de0db2cd7273c9cd14d3deac9795cd42dcd3aa04b18d887c0b4408f209111992ddb7fbe8ab264275a7e22fed4e835ca9f510564ef2112856a3fc6b743603968daa0bbf52bf7fe33aeb0bf0c8809e406eb685891670a42299202cb1aeba168afcc4326704798e753916d6acb5411c7aa13cc60a8b3a76b1664d5761a005" + "proof": "0xcabf0c67195e490a464fa63abd819268297c4b36d8e9ddc171a42196efa662f23e9f450702a3b2350970652f9e9eee22690829311438ef5a3cd64a37bbcec915343402810c223e66cb8f150d6941483b898aeeeb5f8417de9fbf73cefb47269ea5530ddd0f532eba833d11118358ac34262702267fd55a120a71156f422a6c018eabf5cd0feb9b3c1d33360ee012dde8cc7623b6c1a63abf5aad75d68236498a4cef6b6519d7b51bb557dd969fdbbdd0005f16089fc1725839596d7e641b30342c77656c167e01a4f514f6b9e6cae20b34166135f3bf55e5605a1682cdeb91be6415227300d131fb7813ab6bb313118dcce21398876b07d5429e8678e6da67f1e11803710f317fd9deff8a3ad76351344267d6b5714289eda51ecaaa2c6d5e4aece9056511bdab51253320dac8d55598358d0592d221ba08c3795bf7396b67a2c7db12f207305642eda349086c556a080313e443e606b9d12a78b8dc66d8127e88176361055437bd749e6ff5ab4c3afbb94a529dff043783bcc553ff5874410b6ef024b10fbf0d398d5d2449421f7d11cf8d1dbebe2eb2ae8009414c057aee941b6e276205407598799a96de610912b2091e89c0a97ca7a38dd1cc7c16fb215f145aea671f5a3b4b00ec014b24151e0472bfa03b47406567e7a351ac5717838f75cc55fe2273dc90c059c6560663c90d18bf07bc40c415e25726d8378c24bcde7d1fe5ec00f4f20f21a81f703281bba9c5b08e2ab1efc8dce0e565b55139d17e86baefaa040aae3e0514233fe62aa23a208a4cd3f682fdc157e9fd33595b4240d3998e561381a4416aa720982aaabc93433705c41ee3a3362e8db0a4df070ada93596fae0f20629d4a75b0c456f5068442cb718341945d502391ce9600012243439f3cd82eb9675811b1d6e3d0e6dec77916978885fc3d34e4eb242e692a84ac3d1dae4a292962020e3b7507bcbd69db34f781281373e03e4e0c43f30f0deed26df938421cb18747440604fb42da9d493fabe71713ceb4f46a8567d673a18f49eeacd21d18cc2863acc37a56bc8de7cb5d9d36841fb66d71ae721ec96682abcb1017d90107475ae19ec7b6384579cce237716f1d50fca15350a4dbcffea197d7a7f2228325f5ac90460098641f24d38debcf101d887acce6cc56a8d92be84ea430d98e4918008930216100e282dcf711528c8b56603b659f85031f080a2b62ec31130c89" } \ No newline at end of file diff --git a/aptos/solidity/contracts/src/plonk_fixtures/inclusion_fixture.json b/aptos/solidity/contracts/src/plonk_fixtures/inclusion_fixture.json index c55a1be1..a5d0ec7d 100644 --- a/aptos/solidity/contracts/src/plonk_fixtures/inclusion_fixture.json +++ b/aptos/solidity/contracts/src/plonk_fixtures/inclusion_fixture.json @@ -1,5 +1,5 @@ { - "vkey": "0x00952ef4ec4d22d6bcc5ecae9bfdf5b445d9597a9aa9c7675c53d6bfb1b1b840", - "publicValues": "0x205829098a4c0273312e8bc4fdbde28fc12abdc540c88bdd9abeef0a85d706ec7cd40be3349afc5dd819c11c425ddbcd7ec89cda075a1b9c247c880d79c8ff0b020202020202020202020202020202020202020202020202020202020202020244fa02feb400a383b1824df6198c7e30cbf60a21838efa46fedf35f760fdf25839d1a3ec2b5d09aee31c1c0c380eef28744673ea3ab7e9d065baccc8d1874ca1", - "proof": "0x7f8918df140aa276bca6d9f6ddae746aa0e187fc1bf7ff16ba46e50109f3e7c6883b9370129296d1059f0128ac75bf5846d60dac07372d178492b9a31f937f14dd6cb20c1bdd9865711319780b87d38e6a5e584b173435cf7b69803cf62022716f81fead0e4291f5866c579e422ca4e46858c179423741d17c507297f87c9c404da59bc51c2ed84f511889eb5251564b2e547767280ed2d3635d915ac160ac4c0e5aad562115776b959c20cfedd2a241d602b6289ce73cc318d8bffb12c234cd31f4f27b16b5aeee1be26c14b69eb48a4a84ab376a54e621df933d38c325a6ae5fe15a09188a88c72ecbc43636b45da876722a4aefac0ba1808d62aa4e1c3512d805ecc31dd79e225e24246c2c95f991cc1f43b052fa6e32453b04f3741a87fa58f0523c0affe06290b59bea1c2fce2c9d97f5dba18610f94eeca1401f7479d61fcd0c8f1da3ad19a4e6a1e3ce246a65c3c930bf025735920076a00476c131ec1d63fd6e09f3f31fb7b313697bb3693da0257c378970f5a13b51adc0fde84e2fef5919ad0045e0ea853da12c82d610c2ca86b6b1588b9c1ad3f9887aceddff1ab671201319a5f61f1272daeb041187a1d0f31a7014c2e88a8a192a553bbe2de87bcd45220ebfe22a160839a328d277db2907570bbe92aa3e5fbb6a433309624b6f4f84ae04a8d6e4602c6722e7512f57d5b2bc9e8a9822bba1778eddc4f76440d4280cc61fdb36d0a492f1fe72ca48af33830f36c826ef11aad759bb9fc92c9bca595e8c0c35522494de82d38c126d7551251629ceb9765de4bdd06dfacf19fdb32ff6b01268e914673d31b5a6a3f2baa7610e89e580b65bce288b9d5eb25712f1e612980c5a9f5aab749da683a40a7264bfda035a72726d57fbf48498331367df8bd19902420104e97462fc05afdeff680a402d6b1c9b78d5dfa145b3977e63c94462b10863d0d1c665123be2c61541fa2388352a0985e0139c453bee06466cd7c081112b2024c08cfcdbfb2e45aa2525f5452c14923e09c2e975809b9bb4fafc2821a204a5b942b8ed619022804bd7ab22d4307edcf3d7c91e5178b5616e0db5ab385c03deba6eed623f4759d2043285420445423c56fa0d88314d6e8560679f6ec9ab147200c980c9df1a59c9a78fc0e3a2e2998e01485d0dd57f464af3ba3d8ff63909dfaf31e2913ee0d8c8b6bac10860129189c05d14348131ed2de9711893e3d2" + "vkey": "0x0011762f50a83396c88be6119d62ef89e5f87bd504dd66537697a05f3c3c1fa7", + "publicValues": "0x205829098a4c0273312e8bc4fdbde28fc12abdc540c88bdd9abeef0a85d706ecaecc914e255b451da24793d35c81899d8d9f2d82ca8124259daa0d66d9cfd93b020202020202020202020202020202020202020202020202020202020202020244fa02feb400a383b1824df6198c7e30cbf60a21838efa46fedf35f760fdf25839d1a3ec2b5d09aee31c1c0c380eef28744673ea3ab7e9d065baccc8d1874ca1", + "proof": "0xcabf0c67134379d95dce716f82ad09af1e5a9c5acb24d0a717b0a211aaea95e3497b31b31d07a8b7823841635eb88514a35bbb0fec9d56fcae8f23801ad37d0b46977af803281a5b3c293088cb3bdc66ff16b37ff6a6834b815a5432cd29f8fe29359b761b7650186e504cb7ad61c9c6560c86c50636548705843d637746f747e0985eae0e8388d08140154d2b51f0c813cfb08954dc8012e88b2d21dd09351e89216fcc2cb5072bb5f38433c4d06cc8a705904c4708aaae9355cdeb2bff88a45e2a67aa1a21ffd14e5b6f821ba2fda3d9637883fd1a0218d6ea96c3483458f72253bd500232e807fcd88c8c19050ef98a56d0598bbc2837362e02b6b1a65f9eea5150762af236d25c96464bb9b95ed9e192e8386b003777166a7aed9d5005618101021718e8c99ef7f66a5ef75000218960556e8861058e9a10e69bf40449d86a39327f3049657429ed5dba8ce50406fb7483ef916b751171ddf9e03ad8cb5e156cba912a1c944582f9d3778d6238a0b0b95d0b3117b2802019b475c4dfaf6c5d116dc02adb5a2dcc80d47a7a2c377f08136c659a901e8d2a783220165938f9eefda7c1251f0119f81e2f2d29af6f77b2a3c5dde184a93ec7539437b4567e2f80d51f312361423a5690b3c2c2b3646ba01c1fe4c2d2fb6d25e3ac915745b042313ecddc25efab7b3aadbce80a9d279db2acaa47f90c057b3bb2c00ab2341ee48820763004450430c01a2b949cf0d516ea82082740be3df33397f223a6ab2be7c02e993c0a4d0819cacf08499dc075c318478d9f1a2ad6badaab82fd77439f005c0b61d61bfef0608ea1574d383ee2cb65c272fc5dbeb8f638e5f5ca2eeec5ccd314d324130972060696e5b0284939bb84d0790481d2bd0f1e99651b5e88a3ca6bfd490d2f3c370b9c283e7b4a4e3af52b2d643240fcc2e1bac281c7ccf6c3392fb2d1ca223779feaa0427b031705efd3726eb135ca7215ff46ebcab57a2d55062b5201b04376977faf2e65d1247eaaa6b8084daa059ec28d771b8c93468bc853ef056f51f0fe842b7ece9710646a814d04a7a588de2fef2d323ac441f855e7fa71f1e052ba9a8ea5285ba5717f40686ab786d5217aa1aa6d13ddd6347986b4501cf8e1f11da039c7d12fc3593c4848912b254321b6f43cf317e75315f0254127234628928065dab2b6f825cdd0e3f935c4d9979399e52844ea6b17f881c0850635a4cfa" } \ No newline at end of file diff --git a/ethereum/Cargo.lock b/ethereum/Cargo.lock index 0af3b6d8..32aca1e3 100644 --- a/ethereum/Cargo.lock +++ b/ethereum/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -696,7 +696,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a96eccde19bf861b0d1707b61b2ab15e294b154" +source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" dependencies = [ "cfg-if", "digest 0.9.0", @@ -704,7 +704,8 @@ dependencies = [ "group 0.13.0", "pairing 0.23.0", "rand_core", - "sphinx-precompiles", + "sphinx-lib", + "sphinx-zkvm", "subtle", ] @@ -1298,7 +1299,6 @@ dependencies = [ "rand_core", "sec1", "subtle", - "tap", "zeroize", ] @@ -2399,7 +2399,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -2815,6 +2815,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -3696,6 +3705,15 @@ dependencies = [ "syn 2.0.79", ] +[[package]] +name = "psm" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +dependencies = [ + "cc", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -4618,7 +4636,7 @@ dependencies = [ [[package]] name = "sphinx-core" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "arrayref", @@ -4680,7 +4698,7 @@ dependencies = [ [[package]] name = "sphinx-derive" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "proc-macro2", "quote", @@ -4690,30 +4708,29 @@ dependencies = [ [[package]] name = "sphinx-helper" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "cargo_metadata", "chrono", ] [[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-primitives" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "itertools 0.12.1", "lazy_static", @@ -4726,7 +4743,7 @@ dependencies = [ [[package]] name = "sphinx-prover" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "backtrace", @@ -4768,7 +4785,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-circuit" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "itertools 0.12.1", @@ -4791,7 +4808,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-compiler" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "backtrace", "hashbrown 0.14.5", @@ -4817,7 +4834,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-core" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "arrayref", "backtrace", @@ -4851,7 +4868,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-derive" version = "0.1.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "proc-macro2", "quote", @@ -4861,7 +4878,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-gnark-ffi" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", @@ -4885,7 +4902,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-program" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "itertools 0.12.1", "p3-air", @@ -4907,13 +4924,14 @@ dependencies = [ "sphinx-primitives", "sphinx-recursion-compiler", "sphinx-recursion-core", + "stacker", "tracing", ] [[package]] name = "sphinx-sdk" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "alloy-sol-types", "anyhow", @@ -4944,6 +4962,7 @@ dependencies = [ "sphinx-prover", "strum", "strum_macros", + "sysinfo", "tempfile", "thiserror", "tokio", @@ -4952,6 +4971,23 @@ dependencies = [ "vergen", ] +[[package]] +name = "sphinx-zkvm" +version = "1.0.0" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" +dependencies = [ + "bincode", + "cfg-if", + "getrandom", + "lazy_static", + "libm", + "once_cell", + "rand", + "serde", + "sha2 0.10.8", + "sphinx-lib", +] + [[package]] name = "spin" version = "0.5.2" @@ -4992,6 +5028,19 @@ dependencies = [ "typenum", ] +[[package]] +name = "stacker" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.59.0", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -5096,6 +5145,20 @@ dependencies = [ "futures-core", ] +[[package]] +name = "sysinfo" +version = "0.31.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" +dependencies = [ + "core-foundation-sys", + "libc", + "memchr", + "ntapi", + "rayon", + "windows", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5834,6 +5897,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -5843,17 +5916,60 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + [[package]] name = "windows-registry" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-strings", "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.2.0" @@ -5869,7 +5985,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] diff --git a/ethereum/ethereum-programs/artifacts/committee-change-program b/ethereum/ethereum-programs/artifacts/committee-change-program index e74b49c27d92dca86b504804f6bbaa02d5dc6c7d..3cf88a295e9562ebda2e297a25a1e81ebc63e39d 100755 GIT binary patch delta 72757 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 D;~KIS delta 73247 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
    }3yVkJS7Wx^aZf(~nq7la8{j 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 od3&Df0*!V#c@HkKmeLOnWZiP|Xx*#yK# = x"00c55464e91190f7548e4355c11cc43c1187f73cb1547a37aba0e6a1760a11d0"; + const EpochChangeVk: vector = x"00de53d6fe5e4e43f950fbc1f6b2c0f9c172097ad7263ab913241267b29d03f2"; const EpochChangePublicValues: vector = x"e0e58f00000000005d32119aae2ee9f88867d5787af5c4df68884a4bf8fff525ff8c408e8f98805085382a0c8b1b38485a3d816f31ab5b23a0eae94d86c90086cd4e7b6e8c5c46825ebd1cf9ea54ce88af740aad4d7e95e742157209f36867ff5d7d490afa91c6bf"; - const EpochChangeProof: vector = x"7f8918df0301eab6bcabf49c2710a694a0cd215be9254bd774d54b6ec8fa8328525e5f5500f376ef87a1f736abcad7df13173e2f16f40a4fc382b4d847b5139cb85314792ce8edd0b1f61b1fff0f462261e452c03e2ae8de4c32a5b236c74847fcedef540c2cb2dc48b8598c6ec7f4a9a859cb2eb04a192771b57cfa4a1c470480d1faf012bc6bc7f4fd470fef2c41d7d831be5c3929bd0a2cc990d0498d0202624d2f0310f67be711829525766ba5bf26501ea299c6237c199066b95fd7239c538561c51ccb2ec4b2ab47d23333a891f917f3b1eae3b71dd87b9e9476498a1a5d41aab32d4b07a99c9ce3a42eb155ec0d419c3785f3393b4063e7888c59223ebeed84940f7aaa1d96b7415ff23b93af83934b460ebf651f9670560c2f9a7880daefce591526584e6950fcf7308923cb8217ab6442c46899bf6c87183283718be871213411ab2a8e4ac7b19552fb0ebe62970f54a426abcddd7d86e4d2768ce9eda3c942243891b5faa8cf8f38a075bac4f757b83549009bdc4434ac293ea7b3f4361aa90ad2d9830cb5e782efb157ee68ee0cac6cca3b938d2304da7b5aef0baff459562c8b23d4a79499b0a26a3304042212e14834774e891a1587be696838dadcddc6211daee2da80ca803b6911c9a8fb8b127400df3ee50b04a5c3a232784ae04aae040258000e77f9b6658b1c23724a881635c4b4b4d149b01820940d1eff9690ea11498998f965dede6ad1e169b0f1bcdf2aa2c05f98df5bf5270454a37d8621db1c61ae47bfef2e39732498d36577072434d8a8fecd20b997d0625788450ad3ae0e3737ceaa1ccd33f234b7eb184692f49be0779481fffef3dfc89293c85cfd630289c5b6fa639dc45b1eb45908caa996553ae40af0d17f6040306edc6cd3dc7312e300eb5498eea2ee12d7fb4c3571d3cce970335e8960479b5b542273a664f62c069a37d137340deea79f6ac988f5f27b34f7e2fc2bd1b632107aa4a14d2f5b0339b2fbb492fb569cc47b6244df5a4c50df506e3efce434f8fdaf4bd8d3207928b1b0bc5ab666e34eac14dd8cf061401487550c0f2afd285595c4e02c518db616a6a8f10e9210df423c9e0cbdeaf0155d1d001326592dd26e920d2e0f1479ca0c9b74114622d19aee57ed2e56a2c57a099105843c8fce2ae43d19f80c22494911089ea61cab1a4141b265013cf0a0688f311f2c235e5213dac7fb969a381ef4"; + const EpochChangeProof: vector = x"cabf0c6723c9292510933fcf2bf8068ac7a7df0022f5f4de8d5d2547a0ffa1e09c965506035bdd8906864ea3ee70f6cd44d7726c1975c17ac26a744a26100f54aecf87691fbd062b17c8786fd01afcab4809ca01ec97bedabfb2c0c3dffa6e8b6926bfbf00ddc730f359bbfede7c778a19994db0dcca79ffefb97ca8ae7ccd391661818802eeb6a8a839ac6339f52a5d503c945bd1923a63162cb5e5d193a3bd3d93885317e5383a852de3602b59cc1626a210c2c17831227bf04d036618c4bd998549fc257d696d0c245f9ddfeae21bfef158f5ce3307ca53915cd2d3c5ca194207610222b636714862f4c75e8ee084a2b435e86f0924736b09db0332bc67aa7386d5b812f789e02e1383510307505163a74529a8e72242585f4a2a5e512a17248920f12fe57ebf790f8a0c076abe5d978534510b1a5c3006d484fde8f916aeb631f2b603cab349b7b75da20b80e732d758636fbb7bd5371a22bc23ce4509ef46a5839d2d981fbbccb49552c991e35751d9f5fe38eddba89c1d24d1147c02ea50ac3e4f193252b93c2dfa0d5008ab9016ec37fdde3f6e12ce731c9a46973e96be177bb824b78f5c7dc98df27c67b58e4fd7e328516be7a59680cc8d1cbf0d6f04837b841269739001457c3e39f54a963a7b389bfa9916002ef7343fb2666b0559a3f28d14739992620afec9540e3bea43dbcc23c52ab340891ef46f54fb279326ee14de1e38f5bfb70078175fb00b265f6c65448a117446a59ec0c8e98d2e9ba87e63651903a3c4fddb86c20966fd401cc2fded97f0b952beb52eb139cdae175a216dcf0e127c7d4a0db0d81f53e7ada46bc252cb683ba15497e2b8b85ae4924d547db40f66b78c215b2e821135a29bd7d8e17568a895af9629941d9af2bd13fbb15cff111517037995be761c82b822884c74388640bc9bda86619c1cafa15f750074bb0d03a4defc4d4ff6879d5644a35823304f118e4dcf254b1bdf4160b58abf20a20c5f1bc02ac2533d24925a522a89e81dc88299b4ed6a49b5cede98f460483acc27b7d95459c480261c9d4a770b5bbed6258568688b2e939d6efc0ef578150abf1d1dac6f4293d97b7d9e5f06aee3059804a21573415eb2d2af7e32716d410b1711a8174dc28da7738268e83470e506ed7078ad33cf41617176e3d711834ce19b07d0f2865631b0870bd1a2107fc9a3f491ad7792c93d329e4992a95deb75722d"; // From inclusion fixture const ValidSignerSyncCommitteeHashInclusion: u256 = 0x0969ed235cf75d25800ea6845c2584af013c1f9617ad2de87202d7e9b93739c9; - const InclusionVk: vector = x"00d6b0922b33f4a88cac7a71b76e025fa0dfb9b3a2e74e009bd511db5688bd3d"; + const InclusionVk: vector = x"00deddfe90263f93c03e88dc9c33603f3ea0493b2af5da7e37d515794958bbb7"; const InclusionPublicValues: vector = x"e0fc9100000000000969ed235cf75d25800ea6845c2584af013c1f9617ad2de87202d7e9b93739c95c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f22002fe30a172d0a479f6add89c63b29dce29b6071b3c7e486b0fb4bc431f88501000000000000002000000000000000290decd9548b62a8ef0d3e6ac11e2d7b95a49e22ecf57fc6044b6f007ca2b2ba010000000000000080"; - const InclusionProof: vector = x"7f8918df1f7ecf988279a5903ac9186fb441f8abf319dbc712ba375bd1350f6dd736c0ad26f4cdacce1b7ce64c04dc674cf60bb9eda8326fb54e944a6b98dac5a12d521c04156edcd07860aa0c7b240459141c19a368051977db8d513308f66127854b15167aa4584770ee7eb2f766d96517f3b141ecfe09bb5510bf707561bc47b8ecf41ac1d57ae6e6229d283c3bdf95e25f6b372f378b2ab1f948692d0411043993420f1a18502cb0df01d70f294a82fb6a884520c2e2ebe1f51161f0d5b46a6ab6a22d68d5a26eae9c2c3a3927420ebe5a5b9529860a3cd77c58cabb984b829203c806c0ae08e03d61ead010b2158da38b2313b9f52d257b29f3fd3cce9181439140071f3d100c2eacb14bf3d5929e0fa3622f2c0ece50e3c9095fd0d666e0ebab782bece4c9dd1146e717f38c16f323b656720205c79bd38ae8d6e0f0d00c042efa07cce994d9a484ee91c09f215c06fa149857fff143dcaeda634f770552e5a4c81975107909f7fe9a094f1d6d2e6dd1e9120874c82206d72b851c78d913121ef4006aeaad4699c3821523f6abfb7a8ff583307dec352b55b3d8d6181925002ff928c495ddf12f534ba4cb7e8f1240a7de18ec9b9ceff3131857176026bcb49b06109a66a659d4303674a21a364110de8561ebef7905982c4c791c0b1dac8234dc248eaacdc575b851a09f27b6f8753378a2545c90c113349476b0fb9b3677196928866f5d9ca003194f6ef3560e5a65c56050f899252b0b56cc43b074b35b07f80d8fcaaaecd2e7b3488671c9ce056335ac03cf1584308115f23594c9aee05c3b03553c766c492ed69b3bd874b1f2ece4fe79926cdbe69c1d07536c5aea7a081603cbfae18394e5ddc62be42f1d39c1abaade0bc16540b2ef07fb7bb5a36a417a12810f6188da9dab867f6f3795d252dc7ff240c889775f2b807aa121961b038a28bf1cbf5e98cdba898bc588e60d8639f5ab36e6bdab91287d1af0901cf611811782bc1e8d5fe824d1fc1075957de324ab9c84b11a9835630d63e9b10f0ce46a224be3538237a5d9725bef0ebc17ad2df709e150a1a40ce7de3bc980282d74071664e1222b21cba25edb7f70f3c5be309f702dbaa6fc2595c5141fae3dbd3d2f0181e63e6be01cf1912ae550a42229f16cc7b61784f45f47bddc991c13b4153d0562e4fc958aa71586d68cbcf6cfc2889b3fcd25854ff02b5446111d2f0624e4"; + const InclusionProof: vector = x"cabf0c6721224ac1ac5a130cc326c41365b45cd128c3d654320d66300d570401398387ee06a1883d411348de9cb889b2439f8d5bb8fe7252dda0ec1342b208c74d6783e00a982e057234595ba3e66618f58e312c63c9a2b53c197319c72c8480528c1f3b22b7671457e9b013035ebed779192d6d007a7333a5762290dda0badb66dbae3b2e49a0c0f9a5f504ba31bbe9f1fba14dc69c943154da49e2170660311ea156c41f2a027a8fa0f210bafda129a58b306bf53e31286c2ecec107019331b41f14e52bdce00d06fe127cef320ccd063cbdd4a1d3ad036899f02667c5ba9d10b6bd752a9f53e421b93bb9f0f80e10b7fe362f761661fe3c7e2b8b625d6827556825e21f608575f42c5094b3a2ed03e913fd91ed512bcf39a5d9c3dddba17051ac1ce82ddcf610c2937820e7f104f07c7fb7e05ea516aff6d5d24e46fd396c521d9e1110336f7730e7e37aeadc7c93bd7a3ca3b6f190ba0d8588a49c38dc2b62ff4ec31e4edaa29d58bbc50d543d5e1d58fc7308e2f6b7ec203e688b5e59910ceaa51d0248380467789392d41f5fdcfb00947840ff00f79eb7ebe35fedb8adc0dad7dd20bb8f0747f7701e6f789ae3e5053b97f757a71ca7578d8cc715bdf4160751602ae64905f56a120354cc3eff70b49f703d0e764926a27a39cb6981c3890e9d5b0cb95deebda31b28072a611222e141f23a963aabd12ab31448f1cc9fe2861ce107a4dce46daf29257099902577cd1dc782051f6e11ff04e7debf636235be4e242bb29c35ee6907aa1b68b16c9fb1e5b2af65463427ba47b30db86f39e45fbc480b56aa0dd1e42dfc6309e962e7dd45cea5fe90a10ca29e64e588bec89e500236255fb7365df1d946791c0891b6f46dd996ca5d671ba502ebb1bb01ac22537f2c099859056da147894372ed9089044439554609b483a998870ce6f9ae2a4a8e0f2d06cf1765d93db97996692eedf3e328700ccf6f906bd1cf81d759d9272794a21e5a190210a1af8375c39061cbf21331457607c363f15fad135eb809d8cd0d0d2f78a000ee3d0c26bcab428e0cfee27cd34795b0f1208b2168d22fa0fdf66f6021c66812b90051c63e956852c9d6b4ccfd1f6fd5167d9850fa5ba6b97e9351ab226e273b644776e1721fe603921dff31a5763231a49039c3b87c50512dad2598237d23c41b6eaac6bac791f9e4498bfb491180dca9e1fd06f866d89505a59807"; } diff --git a/ethereum/pact/fixtures/epoch_change_fixture.json b/ethereum/pact/fixtures/epoch_change_fixture.json index 8c026dc2..ed045e5c 100644 --- a/ethereum/pact/fixtures/epoch_change_fixture.json +++ b/ethereum/pact/fixtures/epoch_change_fixture.json @@ -1,5 +1,5 @@ { - "vkey": "0x00c55464e91190f7548e4355c11cc43c1187f73cb1547a37aba0e6a1760a11d0", + "vkey": "0x00de53d6fe5e4e43f950fbc1f6b2c0f9c172097ad7263ab913241267b29d03f2", "publicValues": "0xe0e58f00000000005d32119aae2ee9f88867d5787af5c4df68884a4bf8fff525ff8c408e8f98805085382a0c8b1b38485a3d816f31ab5b23a0eae94d86c90086cd4e7b6e8c5c46825ebd1cf9ea54ce88af740aad4d7e95e742157209f36867ff5d7d490afa91c6bf", - "proof": "0x29f3c2107d2a9d4d65a0cf74042825086a470682ad4bccf8ab2073fd547efc1f28d26b2b0e8764edbf3ae34e973a4290709fd8efcbedf976b795106d24fd262d27d834384b35b8ce4d0ad3b1be196031b67ab2435e6178b944ba1537a5d650a91ca9448385cda6bdfa11a0cde1125d65716905d4b559cdbe198291098f6e475c21e680ca19077fbd1432a45f1ee5e177fd56ddf1a45a1de1485e66ba1db5da1b22ec0b545dbb7b66a376a6abcdcef0e23e2f64b1226e0a7452951699f29058782866b1de38f677e24b4973b1347e4463e6b9121f1fead57cf6658b15b5ad6e972115bf285e8fc79621870c0ee381cebe90145497aea03ec3897f52a04e9ab1ff05a4e230c61eaac280b49859aad788e035b21c8e77794a939e7f564002cf5575117822afcf70cd2869c78b1083ddde25e59a03d294c15fa4ff68575922763cfc2c973883271a98421a8577b5d88d51dc0bfb4316ca496328f64ff5bb35553e3728ed478908ec0835e8adde1f8551aa004dab15250df8ec1c8daea5cf7d1f62a80cfaf1e6616e8924b48846bb748b44bbda618d4dd00ac23bc8dc98dba83eea0b0b3a643c0847df7617ca181b22e87a1f7440e8cea8fbffbbc188631923be247a0a8050843cddcd3700eb82d65a9f7644775ccfd32486c3ae96a9aca7dd150aa924e7bdd968fe26dd28935d15e749f62b580ee0bb0fa1bcb1f5182d7a89d8b34e000000070fcae73be2857b62e06171db709a1bc13dd63697cb1c500f8686c866ace2c2a0006db78514ecfbead285e503f3517485c57d4849dbcf7e5e38024ca2f03d513e2e535521129d4ed4e82752ae6b851d946c3c6022c55f4a976ac70c5017df55af2272b785b36f5deedc17a82252b7a1a354d43bedab9b0ae01e4743dd137d0b1a20a8094a2f975c4e9c4e8665b3fbe4bdfdeb05642686d51b3696c890e344901a0231e99039e612bb0bbd02ba6c5171c43aa2057249a271f0f33874ac89384da60e25abfc70d703fc02765706609d6143628c6cefd3219a71955d3ece42a8b94d2bebbc12824e0ee4d7053bf24af355a17f6453148b64269bf2559c2c3e96cdea1dda9131fd277225fd3b641b936f2a6fb9419816e14b0f188564acf399be517203c8b4a7c2641295d95801c57e5153a5a683db8638945b8070b2a6ad497206880000000118ed6d853845a64ad4830e1535dd6d1b3053a4b4241fe77c33ba9410dc9ccbe82406e9242ea8653dbc125683dd4bccc6fad68c88c98356db1f2aca2e84701c39" + "proof": "0x08f34708fcf7220efa7f92b247dd0845d87a8f6c9c4241a565cc9700a0d25cf40d169d9ed1ef23501ba7af506149fe3ffc799347cda34a2161cbd6ec21e70d580a21e07b0ba894dbc8c41c1f1b82095038ea0f280d9fed085fcedb4773120c672eb050701e99ac2038ddd8b6bfb3d38bdf03eda1c4ee4397ec412392c407b2131fb2b6e1d5a09595bcd46324b933b814aeaede074058aaed109736f9712a6eb00dc21eae36034423fba3f1dc93978a1b1d03965f9eea7eddc9b96dad539025542b9c657579ef3c15b19f29942508f6284a8b116f7d85b88bc0b2f2e80256c5561013b5d5ccb027cd7280facf27c0aa09a8a900a8a1de5e15a22e6b584fa4c4e41589ea2fdd6b8842b93f165901e7f6542dfd0916f5de105cf695ab8f607b4e6b0fcddf8540d0789082b88306f8848b920a8ed36d190589ab34d965d47d12469b1522a0f17a78fae2cc3005b760011d4daf8daba412e5bd625cdf447055b8a1c71c2bcfe1bb2419defc9f26493996693e3a657cd08189744ccce45794f1d97eba0a650823bd257796e4fe46c01c464c9c6934518af55cca1d781b823608d21be21c93ba81ec0c71d40fae191d60ecb559eb63ec8983bfb98abbf54717be5349a2139dd001d19f5e53c96c84c0e5fe1cedb847ffbd3d0f9f691410d045e95c3ad703d8cbdb08717dfb49d8bf47f4d6709f920b51cede7b9ac2741ec68265bd3b410000000721bfd94a7452d7a6e0510ac6e5c0d8588256595b577a02eb3b1169e86437ea80251c199f4f85567d970b053dd0a9a4c0ba7359ca75386d2f65ffa6bb4d8602c70222eb2f82f83f96134066b8aabdaa04f46ee39f3111312e83b885875e57a4ce18eb7bf49b915a5c30e94c350e27b5f40972755d186fb7aef47b0a070f55f1631c6a1bb224be34a0c0b90de37bde8e0667afd14cd0fec024455c7bebe0c3dcee0f0812cde68d38ca7efb388d0d5d87121e8e199a7ba1b98f970c8a6a3763fa982a9e91b9a1e9d9d37b7a5afd4c13d644a6acdc103254e6d55d2487044a0cc1742799663505fe98c8c0eaf0d2f53a1f328c265243ef82814af7f75ca9084c77c210198fe1751fe15e8d792d7da9f3bb39d3099aedcf1e6e69015be377989817bd132986a8dbc0e10902010bff9cdc8e7e99cee97a971dfd3d70e992413f376c6c000000011d7edb9ff220715881ebef1eb24285612dd2cf3b1914cee923540d6676be555c21259d9879e7a3e8c886c4745bd5a9b562fcfa31f81ed234148c5f0bb12c205b" } \ No newline at end of file diff --git a/ethereum/pact/fixtures/inclusion_fixture.json b/ethereum/pact/fixtures/inclusion_fixture.json index 651e366a..50a75335 100644 --- a/ethereum/pact/fixtures/inclusion_fixture.json +++ b/ethereum/pact/fixtures/inclusion_fixture.json @@ -1,5 +1,5 @@ { - "vkey": "0x00d6b0922b33f4a88cac7a71b76e025fa0dfb9b3a2e74e009bd511db5688bd3d", + "vkey": "0x00deddfe90263f93c03e88dc9c33603f3ea0493b2af5da7e37d515794958bbb7", "publicValues": "0xe0fc9100000000000969ed235cf75d25800ea6845c2584af013c1f9617ad2de87202d7e9b93739c95c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f22002fe30a172d0a479f6add89c63b29dce29b6071b3c7e486b0fb4bc431f88501000000000000002000000000000000290decd9548b62a8ef0d3e6ac11e2d7b95a49e22ecf57fc6044b6f007ca2b2ba010000000000000080", - "proof": "0x1a072bba0026c92222216935ac77a08cdd663e05448613322e6171914b98141702bcc77a2e49e7f546fdd78572365c5ba1e6528310d50a749a7d3635e3173d010c8c53c94f4b7c669e0f44abe91930356533165dfb73ea94279b15a7ce1b85491b4659583877c2360faa6c43ace46112f2a8dd18dc3d8c44be9088ece59116860e734b09301ab51535dd0f70d125db584390a63bff9d547cff1cad52c2807a2e2f84a143371157e2fd5dee1721531b3590328abb48d247b839f3b392b0a5fc1b2b73cb29acf2038326393219fe3da6afef1155e10fbd08bcae29815618e383ed24830f002ce2bbb95120a82927a31dc21cbe79b9a2f79ddbbfd67c01269165f403f6adddadf1302811ac089b06155ca6cce4e236bf59f14e1e3fe1be167d330e2f2a414255f554e5b6f609735464ded826a4e3d81d4f5a99a3299c07bb800ff01f721a807c33f5acd1d5f2b61eba3099b37300d67a3afbe7a07dacc0a3ad86540d7d832430bd0a7ae3b71c03c1e569a2f5d380a6e45490c458e55ffb81b93b4e28766a46b08bdc65a54e4f86a948b7f01c08393829af5da3288df76a2ddc9d7a13aa05a5376eb2f486d513eb78ab31abe42f9735c72c45aa769af78da0bb1f87066190c16436d94d78335c8f5c3a2f81a52fc680af5afd8cb8eb0c655d60be932164a8ab284427dc735638c7bed6c425885194d97c109ad58ad2a05a820f395600000007093606329e0d6f305cf2e7a875fe13e1218299c2ebc4ef63053b947ad01ef54b26b31dfd7cc1e26d9546d9f614b86af264277e24ae74d2e97d94e9254f986a5615c3e84d470a52723c37752c3c5c18c8ab5624a81c4a2d81f83f907827fc3b3c1edbd80b1c3ea92be9104ec9f9b4947699d472d540f702a669346f5ee6585bea26218b10a0077c947308e0b046e357cc2daa07a8ae157d69bb8d9215ddccde790e3e814dd5d4d258d524a1671ca48afc50353cdcd714fc5746440a05de3ec3512078c3a7cf1859a3940ea195f5145511c2de5086f21bbc3b5e1d314e268e89bf288326f770eb89d453af26d404a326dd1009b0fb45a85f3a34218485688cf31b22acad23cf78c393a10a57e39c7f8fd46d2e5ec977be789591089faa0a7f83cb1d33f3c4508dc715a6fa19677d87bd2eafbc091e1daab9d27bbedae941ccc1a000000001107a0f979dc431bf5c6f9962c49655a7623dd2d2e56f441278893887ffcdd82c07dce2e436b3a8c4518f8a63ad063ce7838b45d01b66ecc13476eb5fff8d6fd5" + "proof": "0x05d01218ecfca52c5082484baae35c29ce926cc46b856fb7e3f70b04d65f960a2db6cbc8ba328d1f1765a7b83d4c424b5ed3175a9e08b7b01efa7d9b96aa03cb0c3ca6862730abecc31675930756528537eaf714fd726b57b01f611413755df61ff90836f9d51a8edcd5c61a21dee2fec168d838f56125d5e20f8bcccf6007f82ac19911d0b1849254e959bad157b7896455895ed603b2e0c7d689ed3e9a8a6f1c88b5419c799aaebc5c5cce6e8f753762535181b58fc65a1d8092e80b0ab8ab1bdb4f20a1e0c25cd9b2184af98fd08796249d2a83401504464cf33eb1760e2202c514dcca4c29a775a1478bc914bfc77181898f820a704ce895caf506ff46d51d17a4a78994d4b9589d7823fd6ccf238aa6f778caab0cccf85740661ada3ce9177fb28569a185f08b35b14099816b1055527efbca3b93b3f5905e1223bfb1c11fddf65b06418d3b5061f2cc4cd6139aa1a22af11d81ff81ea7ab365a2a6808c061fe8c72db2532ed6114a805382229385c5bdbdf27b14baea139a0bea3ea8e112186819fca5c9f561ce3d62e094c02c128bc54661dd8183e9521e696089512b23f1a514c72c9cd3db6e94c48e06520c8f2bb8e56bbf8598a3bf0c6f3865129c005f3686cb630576a9f884c6ea684ce0f2240c2f32063ff8225d0853a5a9acbd2e8f004628a0338eeb0bc849a9aac913794292bf01db99b3ae17023e265cc0920000000709ffd4af3b57fa6f98cac4a0ac127c8dde22e65ae17f9f35a72095d725ac0cfc2f64584f6912db7aa50e5815e754e7ff92ce65a28786dcb17df13fdbcb01940003575e7037f735f85f52d0d3534a73458c6c03a4f9a7fa9359e2d46770c30ea6167a8830daa4b1c5f01a894bf7beb6cc6d6b12de1829db04b61fc62f870f07be0d8304ba1b84b014ddf80277f768ea312eeeb7066a06292a8afceb84319adc3b1c93dfc923dd41b6ff164f80840b1f5338764bd597a81ed9e17c946e767386401e347d7575e09e102ff525ec5bf7cffbc60f86951041f1399534bc3a51de025507fcf4b896dd993e4c2b89243d19297e7ba11c30a6d4336a320d1a92d100e6fe0007468c8a9b37cc5b1f99e905326aa86f37828e65616abf6830f76edb9fa53f1c222a4c6dadc86b1a5e6e20238a40f2f1b7e5a6dfb13c754aa8686d31b1855e000000011d780989bba9550d4a8bab5ac6aeb31ac6974c1f42a04ab0c3c8e97ed71badbf03aff33aa242c183ca2ebab34820837bf38a5c154fe89927556033b888587355" } \ No newline at end of file diff --git a/ethereum/programs/committee-change/Cargo.lock b/ethereum/programs/committee-change/Cargo.lock index 251ba08f..1663b2d3 100644 --- a/ethereum/programs/committee-change/Cargo.lock +++ b/ethereum/programs/committee-change/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aho-corasick" @@ -100,7 +100,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/lurk-lab/bls12_381.git?branch=zkvm#2a96eccde19bf861b0d1707b61b2ab15e294b154" +source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" dependencies = [ "cfg-if", "digest 0.9.0", @@ -108,7 +108,8 @@ dependencies = [ "group", "pairing", "rand_core", - "sphinx-precompiles", + "sphinx-lib", + "sphinx-zkvm", "subtle", ] @@ -284,7 +285,6 @@ dependencies = [ "rand_core", "sec1", "subtle", - "tap", "zeroize", ] @@ -575,7 +575,6 @@ dependencies = [ "elliptic-curve", "once_cell", "sha2 0.10.8", - "signature", ] [[package]] @@ -1071,34 +1070,33 @@ dependencies = [ ] [[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-zkvm" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "cfg-if", "getrandom", - "k256", "lazy_static", "libm", "once_cell", "rand", + "serde", "sha2 0.10.8", - "sphinx-precompiles", + "sphinx-lib", ] [[package]] diff --git a/ethereum/programs/committee-change/src/main.rs b/ethereum/programs/committee-change/src/main.rs index 7f7074e2..f2af9dc4 100644 --- a/ethereum/programs/committee-change/src/main.rs +++ b/ethereum/programs/committee-change/src/main.rs @@ -10,79 +10,79 @@ use ethereum_lc_core::types::update::Update; sphinx_zkvm::entrypoint!(main); pub fn main() { - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: read_inputs"); } let store_bytes = sphinx_zkvm::io::read::>(); let update_bytes = sphinx_zkvm::io::read::>(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: read_inputs"); } // Deserialize data structure - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: deserialize_light_client_store"); } let mut store = LightClientStore::from_ssz_bytes(&store_bytes) .expect("LightClientStore::from_ssz_bytes: could not create store"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: deserialize_light_client_store"); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: deserialize_update"); } let update = Update::from_ssz_bytes(&update_bytes) .expect("Update::from_ssz_bytes: could not create update"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: deserialize_update"); } // Hash current sync committee - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: old_sync_committee_ssz_ser"); } let signer_committee_bytes = store.current_sync_committee().to_ssz_bytes(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: old_sync_committee_ssz_ser"); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: hash_current_sync_committee"); } let signer_sync_committee_hash = keccak256_hash(&signer_committee_bytes) .expect("LightClientStore::current_sync_committee: could not hash committee"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: hash_current_sync_committee"); } // Process update - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: process_update"); } store .process_light_client_update(&update) .expect("LightClientStore::process_light_client_update: could not process update"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: process_update"); } // Hash updated sync committee - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: new_sync_committee_ssz_ser"); } let new_sync_committee_bytes = store.current_sync_committee().to_ssz_bytes(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: new_sync_committee_ssz_ser"); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: hash_new_sync_committee"); } let updated_sync_committee_hash = keccak256_hash(&new_sync_committee_bytes) .expect("LightClientStore::current_sync_committee: could not hash committee after processing update"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: hash_new_sync_committee"); } let next_sync_committee_hash = keccak256_hash(&store.next_sync_committee().as_ref().expect("Store should have a next sync committee after processing update").to_ssz_bytes()) .expect("LightClientStore::current_sync_committee: could not hash committee after processing update"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: hash_new_sync_committee"); } // Commit the signer hash, the current and next sync committee hashes, and the block height diff --git a/ethereum/programs/inclusion/Cargo.lock b/ethereum/programs/inclusion/Cargo.lock index bc40f9b1..31a8bfc5 100644 --- a/ethereum/programs/inclusion/Cargo.lock +++ b/ethereum/programs/inclusion/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aho-corasick" @@ -100,7 +100,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/lurk-lab/bls12_381.git?branch=zkvm#2a96eccde19bf861b0d1707b61b2ab15e294b154" +source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" dependencies = [ "cfg-if", "digest 0.9.0", @@ -108,7 +108,8 @@ dependencies = [ "group", "pairing", "rand_core", - "sphinx-precompiles", + "sphinx-lib", + "sphinx-zkvm", "subtle", ] @@ -276,7 +277,6 @@ dependencies = [ "rand_core", "sec1", "subtle", - "tap", "zeroize", ] @@ -575,7 +575,6 @@ dependencies = [ "elliptic-curve", "once_cell", "sha2 0.10.8", - "signature", ] [[package]] @@ -1071,34 +1070,33 @@ dependencies = [ ] [[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-zkvm" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#3103411f2782f0834d033e029119e07d9f2b129c" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "cfg-if", "getrandom", - "k256", "lazy_static", "libm", "once_cell", "rand", + "serde", "sha2 0.10.8", - "sphinx-precompiles", + "sphinx-lib", ] [[package]] diff --git a/ethereum/programs/inclusion/src/main.rs b/ethereum/programs/inclusion/src/main.rs index 2d96ddb8..92b3eabf 100644 --- a/ethereum/programs/inclusion/src/main.rs +++ b/ethereum/programs/inclusion/src/main.rs @@ -11,17 +11,17 @@ use ethereum_lc_core::types::update::CompactUpdate; sphinx_zkvm::entrypoint!(main); pub fn main() { - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: read_inputs"); } let compact_store_bytes = sphinx_zkvm::io::read::>(); let compact_update_bytes = sphinx_zkvm::io::read::>(); let eip1186_proof_bytes = sphinx_zkvm::io::read::>(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: read_inputs"); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: deserialize_inputs"); } let compact_store = CompactStore::from_ssz_bytes(&compact_store_bytes) @@ -30,23 +30,23 @@ pub fn main() { .expect("CompactUpdate::from_ssz_bytes: could not create update"); let eip1186_proof = EIP1186Proof::from_ssz_bytes(&eip1186_proof_bytes) .expect("EIP1186Proof::from_ssz_bytes: could not create proof"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: deserialize_inputs"); } // Validate the received update - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: validate_update"); } compact_store .validate_compact_update(&compact_update) .expect("validate_light_client_update: could not validate update"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: validate_update"); } // Check execution inclusion in the beacon header - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: check_execution_inclusion"); } let is_valid = compact_update @@ -56,23 +56,23 @@ pub fn main() { is_valid, "is_execution_payload_proof_valid: proof is invalid" ); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: check_execution_inclusion"); } // Verify proof against finalized state root - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: verify_proof"); } eip1186_proof .verify(compact_update.finalized_execution_state_root()) .expect("verify: could not verify proof"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: verify_proof"); } // Output the signers sync committee hash, the attested block number, the hash of address + storage keys - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: output"); } let sync_committee_hash = keccak256_hash(&compact_store.sync_committee().to_ssz_bytes()) @@ -98,7 +98,7 @@ pub fn main() { sphinx_zkvm::io::commit(&storage_proof.value); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: output"); } } diff --git a/fixture-generator/Cargo.lock b/fixture-generator/Cargo.lock index ab9938db..08e8aafa 100644 --- a/fixture-generator/Cargo.lock +++ b/fixture-generator/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -1212,7 +1212,7 @@ dependencies = [ "once_cell", "procfs", "prometheus", - "sysinfo", + "sysinfo 0.28.4", ] [[package]] @@ -2562,7 +2562,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a96eccde19bf861b0d1707b61b2ab15e294b154" +source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" dependencies = [ "cfg-if", "digest 0.9.0", @@ -2570,7 +2570,8 @@ dependencies = [ "group 0.13.0", "pairing 0.23.0", "rand_core 0.6.4", - "sphinx-precompiles", + "sphinx-lib", + "sphinx-zkvm", "subtle", ] @@ -3808,7 +3809,6 @@ dependencies = [ "rand_core 0.6.4", "sec1", "subtle", - "tap", "zeroize", ] @@ -5289,7 +5289,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -8279,6 +8279,15 @@ version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" +[[package]] +name = "psm" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +dependencies = [ + "cc", +] + [[package]] name = "publicsuffix" version = "2.2.3" @@ -9769,7 +9778,7 @@ dependencies = [ [[package]] name = "sphinx-core" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "arrayref", @@ -9831,7 +9840,7 @@ dependencies = [ [[package]] name = "sphinx-derive" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "proc-macro2", "quote", @@ -9841,30 +9850,29 @@ dependencies = [ [[package]] name = "sphinx-helper" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "cargo_metadata 0.18.1", "chrono", ] [[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom 0.2.14", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-primitives" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "itertools 0.12.1", "lazy_static", @@ -9877,7 +9885,7 @@ dependencies = [ [[package]] name = "sphinx-prover" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "backtrace", @@ -9919,7 +9927,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-circuit" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "itertools 0.12.1", @@ -9942,7 +9950,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-compiler" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "backtrace", "hashbrown 0.14.5", @@ -9968,7 +9976,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-core" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "arrayref", "backtrace", @@ -10002,7 +10010,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-derive" version = "0.1.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "proc-macro2", "quote", @@ -10012,7 +10020,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-gnark-ffi" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", @@ -10036,7 +10044,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-program" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "itertools 0.12.1", "p3-air", @@ -10058,13 +10066,14 @@ dependencies = [ "sphinx-primitives", "sphinx-recursion-compiler", "sphinx-recursion-core", + "stacker", "tracing", ] [[package]] name = "sphinx-sdk" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "alloy-sol-types", "anyhow", @@ -10095,6 +10104,7 @@ dependencies = [ "sphinx-prover", "strum 0.26.3", "strum_macros 0.26.4", + "sysinfo 0.31.4", "tempfile", "thiserror", "tokio", @@ -10103,6 +10113,23 @@ dependencies = [ "vergen", ] +[[package]] +name = "sphinx-zkvm" +version = "1.0.0" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" +dependencies = [ + "bincode", + "cfg-if", + "getrandom 0.2.14", + "lazy_static", + "libm", + "once_cell", + "rand 0.8.5", + "serde", + "sha2 0.10.8", + "sphinx-lib", +] + [[package]] name = "spin" version = "0.5.2" @@ -10131,6 +10158,19 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "stacker" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.59.0", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -10343,6 +10383,20 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "sysinfo" +version = "0.31.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" +dependencies = [ + "core-foundation-sys", + "libc", + "memchr", + "ntapi", + "rayon", + "windows", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -11570,6 +11624,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -11579,17 +11643,60 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + [[package]] name = "windows-registry" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-strings", "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.2.0" @@ -11605,7 +11712,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] diff --git a/fixture-generator/src/bin/main.rs b/fixture-generator/src/bin/main.rs index 740062c3..b57a5cdf 100644 --- a/fixture-generator/src/bin/main.rs +++ b/fixture-generator/src/bin/main.rs @@ -187,7 +187,7 @@ fn generate_fixture_inclusion_aptos_lc() { // save fixture let fixture = BaseFixture { vkey: vk.bytes32().to_string(), - public_values: proof.public_values.bytes().to_string(), + public_values: proof.public_values.raw().to_string(), proof: proof_bytes(&proof), }; @@ -235,7 +235,7 @@ fn generate_fixture_inclusion_ethereum_lc(remote: &str) { MoveArg { // public values type_: String::from("hex"), - value: proof.public_values.bytes().to_string(), + value: proof.public_values.raw().to_string(), }, MoveArg { // proof @@ -252,7 +252,7 @@ fn generate_fixture_inclusion_ethereum_lc(remote: &str) { println!("// From inclusion fixture"); println!( "const ValidSignerSyncCommitteeHashInclusion: u256 = 0x{};", - &proof.public_values.bytes().to_string().as_str()[2 + 16..2 + 16 + 64] + &proof.public_values.raw().to_string().as_str()[2 + 16..2 + 16 + 64] ); println!( "const InclusionVk: vector = x\"{}\";", @@ -260,7 +260,7 @@ fn generate_fixture_inclusion_ethereum_lc(remote: &str) { ); println!( "const InclusionPublicValues: vector = x\"{}\";", - &proof.public_values.bytes().to_string().as_str()[2..] + &proof.public_values.raw().to_string().as_str()[2..] ); println!( "const InclusionProof: vector = x\"{}\";", @@ -279,7 +279,7 @@ fn generate_fixture_inclusion_ethereum_lc(remote: &str) { PACT => { let fixture = BaseFixture { vkey: prover.get_vk().bytes32().to_string(), - public_values: proof.public_values.bytes().to_string(), + public_values: proof.public_values.raw().to_string(), proof: raw_proof_bytes(&proof), }; @@ -315,14 +315,13 @@ fn generate_fixture_epoch_change_aptos_lc() { // save fixture let fixture = BaseFixture { vkey: vk.bytes32().to_string(), - public_values: proof.public_values.bytes().to_string(), + public_values: proof.public_values.raw().to_string(), proof: proof_bytes(&proof), }; - let signer_hash_string = - proof.public_values.bytes().to_string().as_str()[2..2 + 64].to_string(); + let signer_hash_string = proof.public_values.raw().to_string().as_str()[2..2 + 64].to_string(); let updated_signer_hash_string = - proof.public_values.bytes().to_string().as_str()[2 + 64..2 + 64 * 2].to_string(); + proof.public_values.raw().to_string().as_str()[2 + 64..2 + 64 * 2].to_string(); println!("Copy paste to aptos/solidity/contracts/test/test_lc_proof.sol (in case of the new Sphinx version):"); println!(); @@ -387,7 +386,7 @@ fn generate_fixture_epoch_change_ethereum_lc(remote: &str) { MoveArg { // public values type_: String::from("hex"), - value: proof.public_values.bytes().to_string(), + value: proof.public_values.raw().to_string(), }, MoveArg { // proof @@ -404,15 +403,15 @@ fn generate_fixture_epoch_change_ethereum_lc(remote: &str) { println!( "const SignerSyncCommitteeHashH29: u256 = 0x{};", - &proof.public_values.bytes().to_string().as_str()[2 + 16..2 + 16 + 64] + &proof.public_values.raw().to_string().as_str()[2 + 16..2 + 16 + 64] ); println!( "const UpdatedSyncCommitteeHashH30: u256 = 0x{};", - &proof.public_values.bytes().to_string().as_str()[2 + 16 + 64..2 + 16 + 64 * 2] + &proof.public_values.raw().to_string().as_str()[2 + 16 + 64..2 + 16 + 64 * 2] ); println!( "const NextSyncCommitteeHashH31: u256 = 0x{};", - &proof.public_values.bytes().to_string().as_str()[2 + 16 + 64 * 2..2 + 16 + 64 * 3] + &proof.public_values.raw().to_string().as_str()[2 + 16 + 64 * 2..2 + 16 + 64 * 3] ); println!( @@ -421,7 +420,7 @@ fn generate_fixture_epoch_change_ethereum_lc(remote: &str) { ); println!( "const EpochChangePublicValues: vector = x\"{}\";", - &proof.public_values.bytes().to_string().as_str()[2..] + &proof.public_values.raw().to_string().as_str()[2..] ); println!( "const EpochChangeProof: vector = x\"{}\";", @@ -440,7 +439,7 @@ fn generate_fixture_epoch_change_ethereum_lc(remote: &str) { PACT => { let fixture = BaseFixture { vkey: prover.get_vk().bytes32().to_string(), - public_values: proof.public_values.bytes().to_string(), + public_values: proof.public_values.raw().to_string(), proof: raw_proof_bytes(&proof), }; @@ -480,11 +479,11 @@ fn generate_fixture_longest_chain() { // save fixture let fixture = BaseFixture { vkey: prover.get_vk().bytes32().to_string(), - public_values: proof.public_values.bytes().to_string(), + public_values: proof.public_values.raw().to_string(), proof: proof_bytes(&proof), }; - let confirmation_work = proof.public_values.bytes().to_string().as_str()[2..2 + 64].to_string(); + let confirmation_work = proof.public_values.raw().to_string().as_str()[2..2 + 64].to_string(); println!("Copy paste to kadena/solidity/contracts/test/test_lc_proof.sol (in case of the new Sphinx version):"); println!(); println!("// Value taken from either spv or longest_chain fixtures located in src/plonk_fixtures/ (first 32 bytes)"); @@ -527,11 +526,11 @@ fn generate_fixture_spv() { // save fixture let fixture = BaseFixture { vkey: prover.get_vk().bytes32().to_string(), - public_values: proof.public_values.bytes().to_string(), + public_values: proof.public_values.raw().to_string(), proof: proof_bytes(&proof), }; - let confirmation_work = proof.public_values.bytes().to_string().as_str()[2..2 + 64].to_string(); + let confirmation_work = proof.public_values.raw().to_string().as_str()[2..2 + 64].to_string(); println!("Copy paste to kadena/solidity/contracts/test/test_lc_proof.sol (in case of the new Sphinx version):"); println!(); println!("// Value taken from either spv or longest_chain fixtures located in src/plonk_fixtures/ (first 32 bytes)"); diff --git a/kadena/Cargo.lock b/kadena/Cargo.lock index c409aa09..567e6a33 100644 --- a/kadena/Cargo.lock +++ b/kadena/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -678,14 +678,15 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a96eccde19bf861b0d1707b61b2ab15e294b154" +source = "git+https://github.com/argumentcomputer/bls12_381.git?branch=zkvm#2a1c7d1b4827a4d42eb4a68f8cb78c2da10f4787" dependencies = [ "cfg-if", "ff 0.13.0", "group 0.13.0", "pairing 0.23.0", "rand_core", - "sphinx-precompiles", + "sphinx-lib", + "sphinx-zkvm", "subtle", ] @@ -1235,7 +1236,6 @@ dependencies = [ "rand_core", "sec1", "subtle", - "tap", "zeroize", ] @@ -2235,7 +2235,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -2700,6 +2700,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -3575,6 +3584,15 @@ dependencies = [ "syn 2.0.79", ] +[[package]] +name = "psm" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +dependencies = [ + "cc", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -4485,7 +4503,7 @@ dependencies = [ [[package]] name = "sphinx-core" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "arrayref", @@ -4547,7 +4565,7 @@ dependencies = [ [[package]] name = "sphinx-derive" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "proc-macro2", "quote", @@ -4557,30 +4575,29 @@ dependencies = [ [[package]] name = "sphinx-helper" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "cargo_metadata", "chrono", ] [[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-primitives" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "itertools 0.12.1", "lazy_static", @@ -4593,7 +4610,7 @@ dependencies = [ [[package]] name = "sphinx-prover" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "backtrace", @@ -4635,7 +4652,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-circuit" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "itertools 0.12.1", @@ -4658,7 +4675,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-compiler" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "backtrace", "hashbrown 0.14.5", @@ -4684,7 +4701,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-core" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "arrayref", "backtrace", @@ -4718,7 +4735,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-derive" version = "0.1.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "proc-macro2", "quote", @@ -4728,7 +4745,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-gnark-ffi" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", @@ -4752,7 +4769,7 @@ dependencies = [ [[package]] name = "sphinx-recursion-program" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "itertools 0.12.1", "p3-air", @@ -4774,13 +4791,14 @@ dependencies = [ "sphinx-primitives", "sphinx-recursion-compiler", "sphinx-recursion-core", + "stacker", "tracing", ] [[package]] name = "sphinx-sdk" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "alloy-sol-types", "anyhow", @@ -4811,6 +4829,7 @@ dependencies = [ "sphinx-prover", "strum", "strum_macros", + "sysinfo", "tempfile", "thiserror", "tokio", @@ -4819,6 +4838,23 @@ dependencies = [ "vergen", ] +[[package]] +name = "sphinx-zkvm" +version = "1.0.0" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" +dependencies = [ + "bincode", + "cfg-if", + "getrandom", + "lazy_static", + "libm", + "once_cell", + "rand", + "serde", + "sha2", + "sphinx-lib", +] + [[package]] name = "spin" version = "0.5.2" @@ -4841,6 +4877,19 @@ dependencies = [ "der", ] +[[package]] +name = "stacker" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.59.0", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -4939,6 +4988,20 @@ dependencies = [ "futures-core", ] +[[package]] +name = "sysinfo" +version = "0.31.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" +dependencies = [ + "core-foundation-sys", + "libc", + "memchr", + "ntapi", + "rayon", + "windows", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5655,6 +5718,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -5664,17 +5737,60 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + [[package]] name = "windows-registry" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-strings", "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.2.0" @@ -5690,7 +5806,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] diff --git a/kadena/kadena-programs/artifacts/benchmarks/block-header-hashing-program b/kadena/kadena-programs/artifacts/benchmarks/block-header-hashing-program index 917996ed7d2ceeb1cd3676733f7b65f8321083c5..1eede3b70f9f65bb8b75c3383b524116d5cbb522 100755 GIT binary patch delta 11792 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%0DJiorXCk-R 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 delta 14920 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 DH*ofE diff --git a/kadena/kadena-programs/artifacts/longest-chain-program b/kadena/kadena-programs/artifacts/longest-chain-program index 584900302aeadbdfc6467e523e63c505c9843f83..0f0a409602c60e6c8a9505b3d8b5ab819adfaea3 100755 GIT binary patch delta 12411 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 delta 12074 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 delta 15922 zcmb7r3tUvi8u)x?_bdx40?Yfk>@En1NT7o6qqvA@ii+ATE4u5eG$BQ^^2#bKTE3ff z>~WP0UukKry1ug2L@lk0_o}^2Ew!@fMx|zo@c(Ac@)EuO|DWG)cFxRvGw1u}d(Jn9 z%b)6NKGm-<{PQCOu&RiaNW}mXsaSa^1FpXJ*PSRhME{H)7qnqW zhSfwgagJDVTdNKtQGzxHECTf zyLp#nklln;6aL;;GB`eRReyn3c~v%*D

    d^MjqdMQcnkY;+L>Q%8EJmj=jW@=-Rm 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 - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: read_inputs"); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: deserialize_inputs"); } let header = KadenaHeaderRaw::from_base64(&header_bytes_base64).expect("Failed to deserialize header"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: deserialize_inputs"); } let actual = header.header_root().expect("Failed to hash header"); diff --git a/kadena/programs/benchmarks/sha512-caller/Cargo.lock b/kadena/programs/benchmarks/sha512-caller/Cargo.lock index 93c68424..c9351f37 100644 --- a/kadena/programs/benchmarks/sha512-caller/Cargo.lock +++ b/kadena/programs/benchmarks/sha512-caller/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "anyhow" @@ -8,18 +8,6 @@ version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - [[package]] name = "bincode" version = "1.3.3" @@ -29,18 +17,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - [[package]] name = "blake2" version = "0.10.6" @@ -71,12 +47,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - [[package]] name = "cpufeatures" version = "0.2.14" @@ -86,18 +56,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - [[package]] name = "crypto-common" version = "0.1.6" @@ -108,16 +66,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - [[package]] name = "digest" version = "0.10.7" @@ -125,62 +73,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", - "const-oid", "crypto-common", "subtle", ] -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "tap", - "zeroize", -] - -[[package]] -name = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "bitvec", - "rand_core", - "subtle", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - [[package]] name = "generic-array" version = "0.14.7" @@ -189,7 +85,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -203,26 +98,6 @@ dependencies = [ "wasi", ] -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core", - "subtle", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] - [[package]] name = "hybrid-array" version = "0.2.0-rc.10" @@ -232,20 +107,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", - "signature", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -273,16 +134,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "portable-atomic" version = "1.9.0" @@ -316,12 +167,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - [[package]] name = "rand" version = "0.8.5" @@ -352,30 +197,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - [[package]] name = "serde" version = "1.0.210" @@ -407,16 +228,6 @@ dependencies = [ "digest", ] -[[package]] -name = "sha2" -version = "0.10.8" -source = "git+https://github.com/sp1-patches/RustCrypto-hashes?branch=patch-v0.10.8#1f224388fdede7cef649bce0d63876d1a9e3f515" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2" version = "0.10.8" @@ -437,54 +248,33 @@ dependencies = [ ] [[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest", - "rand_core", -] - -[[package]] -name = "sphinx-precompiles" +name = "sphinx-lib" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "anyhow", "bincode", "cfg-if", "getrandom", "hybrid-array", - "k256", "serde", ] [[package]] name = "sphinx-zkvm" version = "1.0.0" -source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#75d6e85d47e00fd921fefc94ce6c3725b15bd2c2" +source = "git+https://github.com/argumentcomputer/sphinx?branch=dev#8a39b951e3ea520e295b693ad38bff6b43a2630c" dependencies = [ "bincode", "cfg-if", "getrandom", - "k256", "lazy_static", "libm", "once_cell", "rand", - "sha2 0.10.8 (git+https://github.com/sp1-patches/RustCrypto-hashes?branch=patch-v0.10.8)", - "sphinx-precompiles", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", + "serde", + "sha2 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sphinx-lib", ] [[package]] @@ -504,12 +294,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "typenum" version = "1.17.0" @@ -534,15 +318,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - [[package]] name = "zerocopy" version = "0.7.35" @@ -563,9 +338,3 @@ dependencies = [ "quote", "syn", ] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/kadena/programs/benchmarks/sha512-caller/src/main.rs b/kadena/programs/benchmarks/sha512-caller/src/main.rs index d3a68645..84050f51 100644 --- a/kadena/programs/benchmarks/sha512-caller/src/main.rs +++ b/kadena/programs/benchmarks/sha512-caller/src/main.rs @@ -7,21 +7,21 @@ sphinx_zkvm::entrypoint!(main); use sha2::{Digest, Sha512_256}; pub fn main() { - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: read_inputs"); } let preimage = sphinx_zkvm::io::read::>(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: read_inputs"); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: hashing"); } let hash = Sha512_256::digest(preimage); let mut ret = [0u8; 32]; ret.copy_from_slice(&hash); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: hashing"); } diff --git a/kadena/programs/longest-chain/src/main.rs b/kadena/programs/longest-chain/src/main.rs index 8dc2f477..5d60d8f8 100644 --- a/kadena/programs/longest-chain/src/main.rs +++ b/kadena/programs/longest-chain/src/main.rs @@ -8,19 +8,19 @@ use kadena_lc_core::types::header::layer::ChainwebLayerHeader; sphinx_zkvm::entrypoint!(main); pub fn main() { - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: read_inputs"); } let layer_headers_bytes = sphinx_zkvm::io::read::>(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: read_inputs"); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: deserialize_inputs"); } let layer_headers = ChainwebLayerHeader::deserialize_list(&layer_headers_bytes) .expect("Failed to deserialize layer headers"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: deserialize_inputs"); } diff --git a/kadena/programs/spv/src/main.rs b/kadena/programs/spv/src/main.rs index 131e6ada..28f76fb2 100644 --- a/kadena/programs/spv/src/main.rs +++ b/kadena/programs/spv/src/main.rs @@ -10,16 +10,16 @@ use kadena_lc_core::types::header::layer::ChainwebLayerHeader; sphinx_zkvm::entrypoint!(main); pub fn main() { - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: read_inputs"); } let layer_headers_bytes = sphinx_zkvm::io::read::>(); let spv_bytes = sphinx_zkvm::io::read::>(); let expected_root_bytes = sphinx_zkvm::io::read::>(); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: read_inputs"); } - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-start: deserialize_inputs"); } let layer_headers = ChainwebLayerHeader::deserialize_list(&layer_headers_bytes) @@ -27,7 +27,7 @@ pub fn main() { let spv = Spv::from_bytes(&spv_bytes).expect("Failed to deserialize SPV proof"); let expected_root = HashValue::from_slice(&expected_root_bytes).expect("Failed to deserialize expected root"); - sphinx_zkvm::precompiles::unconstrained! { + sphinx_zkvm::lib::unconstrained! { println!("cycle-tracker-end: deserialize_inputs"); } diff --git a/kadena/solidity/contracts/lib/forge-std b/kadena/solidity/contracts/lib/forge-std index 1de6eecf..1eea5bae 160000 --- a/kadena/solidity/contracts/lib/forge-std +++ b/kadena/solidity/contracts/lib/forge-std @@ -1 +1 @@ -Subproject commit 1de6eecf821de7fe2c908cc48d3ab3dced20717f +Subproject commit 1eea5bae12ae557d589f9f0f0edae2faa47cb262 diff --git a/kadena/solidity/contracts/lib/openzeppelin-contracts b/kadena/solidity/contracts/lib/openzeppelin-contracts index fe6249ec..3da7a869 160000 --- a/kadena/solidity/contracts/lib/openzeppelin-contracts +++ b/kadena/solidity/contracts/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit fe6249ec2c2dcdbb05e2b6a0d0d3e229f6ffbb37 +Subproject commit 3da7a869aad95a3390e173f59558181329b0871f diff --git a/kadena/solidity/contracts/lib/sphinx-contracts b/kadena/solidity/contracts/lib/sphinx-contracts index f972956e..20d0ee36 160000 --- a/kadena/solidity/contracts/lib/sphinx-contracts +++ b/kadena/solidity/contracts/lib/sphinx-contracts @@ -1 +1 @@ -Subproject commit f972956ef1e79d37268346a770020bf20a740ed9 +Subproject commit 20d0ee36565cf9058f5f3cb2dddaf225c84919c6 diff --git a/kadena/solidity/contracts/src/plonk_fixtures/longest_chain_fixture.json b/kadena/solidity/contracts/src/plonk_fixtures/longest_chain_fixture.json index 5b99bf5a..5ac56953 100644 --- a/kadena/solidity/contracts/src/plonk_fixtures/longest_chain_fixture.json +++ b/kadena/solidity/contracts/src/plonk_fixtures/longest_chain_fixture.json @@ -1,5 +1,5 @@ { - "vkey": "0x00c9f93ac78c984785ef4cd5fac972ac36bc214c0f2d0f887903dd660eb1fc39", + "vkey": "0x00b35a3df67c07d7095db4e5744a9f3f93b6c7526c5b380b1d380b1cf5f5f4a8", "publicValues": "0x596e6483a7e9188e289af6012de83766283712e3ad57bf03dd03000000000000edfa019daa9db11cec1717de7ba62a4da4f4c9c9a4f5d46881621bf13ea0822992c16685d93d6618e4ce9a405f3bba30f5f148bca9103329309eb932e3b68226", - "proof": "0x7f8918df19cc2fd6d8b0f34f1cf5187616886af2084075f730ae56d7310c60592535ed562aade079c03a180bb9dca749b0173449f0923f2e16cc8aa2c19987e77fa74ade03516c8db61315a797e6f68da54aa9379e6896586b86a0cb999fd4520a7e4ff320dc2b6c7d0f937353742a051183cfc11a43cde9ef698285505a80fdcce9a1081f0fff4c352e3ff5979a22659832a6370cc36bb9a64037edd397863cd29fa91224423abdc96217789bde44e03949a71172cfda3fee1195698071fb993ed041ad136f85f6673439731551f8a85cc43a11c577ccac6f8496a7c55c063ea89ae38326d4f368209aedf6f35dd299cc351d4d78878d71cf7648037f5b91bbe9c6a9cd1ad399684c1ac6b309cfc8b2c75139dd3ce0995b1b3ad278a7fce075bd24932f1b91ba055cfb313f261b8993dc7052f1378c4801b12274cb661960ba7f01ffca212e9abc596364e93a49f6840036cb101e0ca6b74a966a3a6c05952c02015fb70305af4a3df0708ab744db86d6d33afde562e74c3fae870f56317e7d2565de4107ffdad0f06eddeabb1fefd01a5a220ad85f1762ee19a47ccb9051a664b648c7080833188d5c6ea51e509922592f5879fcc8c0dccf5bca5a06f34475447d10bd2f7e2ec09892472a1ea9781ada03d7413b4af117217a3bd784a3abe08341b8fa003992262e29feb43f0d219007733dbd244f186f4d8c66681d03da04d3a0514b000b3b2d0fc6c204c665c1081fefc9c476658a453eed5d2bff519ede74ddfea21c38c5699e1791b1fa61507b57afabbac4dd87d5d1e9aa0b49822c1a0e522e7603aa975969925860e81f6cb88d502f6f730477fa95ba9169e64ace3f96e169590e3fe485f1bd7c7dfeb803f7305df2720307b913a7e8b29964ca08022643657110ba49ec504f7a2b9bff763ae688e8ed641f1a39394838333b1bfdb63a624cfa1d54c0df25f49d8c46793576c6afe71de3b6c798462ab935118c8cb5a900bc17202677ac5a06dc7a82a5ba0225d42094f77c3a10584b364c567e4379c503cf2e22739a06212c26cae472d8d5e5ecfb9cd5ed76c2a2487612759766430c02c6ef22742e640445699a7357efaa8a229637bc1b77a29e6ff6871d8c4a283ec94080017ab83314dd670abfb68818c0886262fae68b20f26b7fcaa22d23006a81a509067e41342d9ab02261059c8a5e86d44a141979ad4807d9e980407b8fa4cc6708" + "proof": "0xcabf0c671b6e87b9adf93569e10e7edf4ad61c01fbe34278f76c47df36797ef1692678bd01f6e14212c126fcecbf0ba48474fc1e4273bdc686f10f10e621e51e7a127a170d2e370e4c476602db0a40cdc6873654f0e3b94fcdb225f9e9e26fba02c126a40223edd8f26711c58e60097e8800ea76e345e52ef4fae4c2df51d88c04d4ce95182b6446c56325323d6efa6f34fae2063cdb473f6ada2d4ebe8ac8fb289a6c7a01b85eb2a272b276cf60e1f921434af48352f7f4f2f6fe13c4a9a208bb79ee3e28a0ce24f74522b323af0a968c9b99b761b3500db27509cebd8c74654ae452ce03f6b27e87c573b76461e0d29d940c9356f159cd72dfdce3cb389444dd401a7e27a7cb34a22f247ad5ac8d8f41388a9cadeed90b9eb9dbc68378f5bd16a9db3e2d77502b6959cbca0c96303c44ae2d7a6768133ebb1a0f855304e2c9642cad0b0492812b3555188fda3cb1b5b9551d5aa1d561e69311e73e46a5b91d547787111001de76f77f1e75b458c23f4a2c8abc3d2c133d5f3a615ba2bd703be5cc6b5c2928d7919e7f809c8b51de1a5716db4a0869ca06d14a2f42aa4887b2a0d437ab149448f4337f86f2b8a7ede267adc83d930c60b9bb236818c4dc34c551b8376420eb4ce5c76dc5e11cee12e5829d05916088e33a331d44d674ef3339b453e9ee02b5ecd929123ffac2879e5b9338500e1950e24030a5123175130723ac37cc3601fd8c7e8fead407ee07013d3333eca02fbf0f33693a9aa22664cf787388f5fb16b6f2f304047e424916ecd9e3c48d8198e4eca17a7a81019f891e1af32e6b4e11e85cb1bbbf61e6b5e7bc3fbf172065b7d25e2624097dc03f0c8ecde3b2e14726a96c2a6eb81b9df9575723a3f3fe7a278ec51039a5597295542ca5019f25cb09faae002063ed4f032923fcb8cc7def0e578c1cb031c21bbe65e0c5c1e84597114f68edd1508dbf9daeb1f5a36280593872834b7506bbf2561493c06d63cb5d0f196c36cec1865625ca0e06b7fff2183b9dd12d5c5b30370dc5820f8f57c8ed13c535c65b64a0a73284f5481b8516984870e307da83de2d4c5f33e3483521b716c1d18dec167c879f5a242e32a2d6373b372bef1131d21f90628aed917381a40bfe0158f1a589ba45648dde25d4657a064886284c5b64b05f8a198808473cc3091ef28cad14ffe5f1c8c6d423060baf948408ab64f8f9920bd6fd00a43a655f" } \ No newline at end of file diff --git a/kadena/solidity/contracts/src/plonk_fixtures/spv_fixture.json b/kadena/solidity/contracts/src/plonk_fixtures/spv_fixture.json index f19ddc27..83e75a9d 100644 --- a/kadena/solidity/contracts/src/plonk_fixtures/spv_fixture.json +++ b/kadena/solidity/contracts/src/plonk_fixtures/spv_fixture.json @@ -1,5 +1,5 @@ { - "vkey": "0x008e034af6eda82af08a33ff3748c4085b9c9775d79abf10c6fc524ea17ac04f", + "vkey": "0x0056c9dcde9d2c9465f5f310944248f4fa9b7797158165598f35a80f3d3a8411", "publicValues": "0x596e6483a7e9188e289af6012de83766283712e3ad57bf03dd03000000000000edfa019daa9db11cec1717de7ba62a4da4f4c9c9a4f5d46881621bf13ea0822992c16685d93d6618e4ce9a405f3bba30f5f148bca9103329309eb932e3b68226256348dcc4564a102e6c913bf04b8dc6bc1e8325a8bbc71b49808a49bca7340a", - "proof": "0x7f8918df0e877da99ff8e6551daa1c8bade60db35bfec0d609a91b10094639509bbd7d180cc112bac9879d5f30d8d06a65dfe588a011354ce20f468d9c8a9921e35e59ff232391db8d9fcf0f32d4631223401394d8419aa3b2a6daa7cfd67ab46e7682b10af5fa7e80b7da3d9577817af60e10472517f0d12b9e18b2d357f3a7ce1005500cba6461a0466b2ace27d1cb8678d7c001446a361ac87ab53185751e09eb11dd210fdbc19c6546d95a2660d2893ec3e87762cb8f8ced658dbe5f04d3947c1d7712be126ad8c5e159183b75b531ca3fb3ae156578e0058967eb1ee25f665e0d1803be007d463e7fb7f2315df5b75cef3a57a51819692675fce215b8ffab5d6ded2864626061aa04ad376ff6082b5170ca3e376d9e6fc0df86298e95e5757c3fbd176ebbe9af97fb443327a5cc5a4f135d6e07990fc2fc17084c5ff6487c044b9408b71fafab1a3eb38d21e35d18ecf0921f0eb9a5904c332c2d961441316aac8820379e330f589b9e409ae66e376256058bf4a56df66fb36dcfbb507f51a480591152824ba58cad832eebb003084f1bcc3a88ca9e9c3c19cdf5a3a21aadf5c0292ea0459b269beae5b2d4a358db5a02f31003e8f8728284b20dc9ceec7c2461d007a3de6db80b331977b62222d69de90c555260d20d7ccdd97945506fc1898dca2237fd35245030175bbbbc02e53feb2c724196271bdd61d5fc0b85069dae17a70524e453e50e728d2a147a06e23b35015dff5dc367f28c3403de40c681b82808095ea34f7a5bc82a18969cc69bc133d8067ff5666841eb0fa641599052c4c8230be35e00c883ae87539907137dd92311ff98986081fe77f74b1e5af2de617a210bb87057868264508294b9e98253791418d85b861f731a702c1171df3564986e3056d081b0a802ef32169a1969a53e2345be2724a670249fafa6f498e9f55fa12301ed14c34afab4710c19e7bb258c686feeb5c17460ad06bf3860081b1a3f010123416b4209afe3235395fef820cbccba23307f197338ec69f8ae751309d0bb0d344ad4c97cded78e8bdc6491d6e6cd69c154fd972a7ccf6a78d94e1e720abe2ed0424e0b9f19aeb4752800484cac88788db2061f1a3bf950818503159d9acc17b558f97fe80cd88678e44387039fda9aa541cec035852ec30ebf9f14734c5b256ef0a6c013074cd1edf288a0808ca5894fb23567987ec7cf03dfd4ee12f403" + "proof": "0xcabf0c671d5730a54e60bbc7f52af84a04b8c33fd2425a2a733a42582f71ae33688debe52bb6c10fafc0655e8ce21b3aba50160c66c17ad255be5c014dfdd87469e390920de34f383327d597d53e0c39906f100062d704fb7817576a6900e76c292d2c2513efaf1548e903b0360b25c4c6448c843e150a028aadaab65de5a896f74db2e226bd5d2655b83bb940cf51cda2973b6c8f1b2d2a1b98d4ebf1e7f81ab303ed350b20306191224b4d43b4bc183001479b7ec72e02f677950ccb03e33154733ee8210979350b0aa7f3f330f6fee031af51303e9af56675d3cd813bdea6f789b1222ab07e19a5c501e16ec9dbf29c86f8541582f624a72544c35285a99a5fba3df31f804ea6d9537f6bcfae555e62de535bae9299bfc352e165f05386aa69d7c2c129ca2dfe6f89f16713069ca48315b1ae4a31806afe0cc4511565d900fd75f6211f8984e42b4d8dfd2d1522319968bafe994362afcae92557fba402782c579ac51130be08b4f5317a06c601f29bb1caf4c3b6b77ec0c97beb5080af8d206dd95300bdb27a4fc7f504b32abb73b90e24e4a844bd537046ae70f5ed90bc6eacd2b522b6d9e9702f24f274edd5932029612b0a362222027ac2090409502055f2c05428ff2d9b3277184adf9f789c6f82834687289169784c472ce3370294da1d3da026159fee0c77e9c0c302797bb5d6c6bc86de5eb3b6fc5d796908b6b8031973ef23239c6a328ec512b57c03f47a33902bedb7d8868bd61564c961b3f9e3e8d3c92a8f2079b2d500b08493e674dbb6d53bb1f0053b07c67f70db1575fd0977209f19cc92750e6935f79a8013be581e619fbd732e4774a492992d07661bf1e92d2a137b8913f7b36773cbcd7ddfd35c5c820edacf67201d2b785850b39497f975f41adffa9e081d483a9dac653221d17b7000786b94e33e112c657087f69993e94c159d3534ccaddadbfba41342663c29852823255bce6c097b6fcd2e9086f82b0e07f0c2d1f4e27fbf85be2d30c99750370ccc38aaf339dda4beff3390dd9084d7162e0cd9f9812263290a75bdd495e601b22b176b30f0d4a298f011782c96d21b1ecbfe4e0d96b57cc53a1001bf77cfd5672849d06c50ca0f6d6ce7ef933978ff1ac71cf9184f59536d5025ea6d73939cbf1ec3938848fb128c67d37158628e9830097b1754b55792cbbeb883fb08a0c655a8b54087862370c700e83dafe90c0e" } \ No newline at end of file