diff --git a/Cargo.lock b/Cargo.lock index 23e554f25..8d6834125 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "ab_glyph" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e074464580a518d16a7126262fffaaa47af89d4099d4cb403f8ed938ba12ee7d" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -94,8 +94,8 @@ dependencies = [ "accesskit_consumer", "hashbrown 0.15.5", "static_assertions", - "windows", - "windows-core", + "windows 0.61.3", + "windows-core 0.61.2", ] [[package]] @@ -112,15 +112,6 @@ dependencies = [ "winit", ] -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - [[package]] name = "adler2" version = "2.0.1" @@ -134,7 +125,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "crypto-common", - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -169,7 +160,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "serde", "version_check", @@ -198,7 +189,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.9.1", + "bitflags 2.10.0", "cc", "cesu8", "jni", @@ -207,8 +198,8 @@ dependencies = [ "log", "ndk", "ndk-context", - "ndk-sys", - "num_enum 0.7.4", + "ndk-sys 0.6.0+11769913", + "num_enum 0.7.5", "thiserror 1.0.69", ] @@ -218,12 +209,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -235,9 +220,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -250,9 +235,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -285,36 +270,36 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" dependencies = [ "derive_arbitrary", ] [[package]] name = "arboard" -version = "3.6.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55f533f8e0af236ffe5eb979b99381df3258853f00ba2e44b6e1955292c75227" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" dependencies = [ "clipboard-win", "image", "log", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "parking_lot", "percent-encoding", - "windows-sys 0.59.0", + "windows-sys 0.60.2", "x11rb", ] @@ -336,6 +321,70 @@ dependencies = [ "password-hash", ] +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std", + "digest", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + [[package]] name = "arrayref" version = "0.3.9" @@ -360,6 +409,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading", +] + [[package]] name = "ashpd" version = "0.10.3" @@ -437,9 +495,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" dependencies = [ "async-task", "concurrent-queue", @@ -451,9 +509,9 @@ dependencies = [ [[package]] name = "async-fs" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f7e37c0ed80b2a977691c47dae8625cfb21e205827106c64f7c588766b2e50" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" dependencies = [ "async-lock", "blocking", @@ -477,20 +535,20 @@ dependencies = [ [[package]] name = "async-io" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", "polling", - "rustix 1.0.8", + "rustix 1.1.2", "slab", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -517,9 +575,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ "async-channel 2.5.0", "async-io", @@ -530,7 +588,7 @@ dependencies = [ "cfg-if", "event-listener 5.4.1", "futures-lite", - "rustix 1.0.8", + "rustix 1.1.2", ] [[package]] @@ -541,14 +599,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] name = "async-signal" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" dependencies = [ "async-io", "async-lock", @@ -556,17 +614,17 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.0.8", + "rustix 1.1.2", "signal-hook-registry", "slab", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "async-std" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" dependencies = [ "async-channel 1.9.0", "async-global-executor", @@ -596,13 +654,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -682,29 +740,14 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backon" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592277618714fbcecda9a02ba7a8781f319d26532a88553bbacc77ba5d2b3a8d" +checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef" dependencies = [ "fastrand", "tokio", ] -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - [[package]] name = "base16ct" version = "0.2.0" @@ -754,6 +797,15 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bincode" version = "2.0.0-rc.3" @@ -773,6 +825,24 @@ dependencies = [ "virtue 0.0.13", ] +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.10.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn 2.0.107", +] + [[package]] name = "bip37-bloom-filter" version = "0.1.0" @@ -873,11 +943,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -914,13 +984,19 @@ dependencies = [ "constant_time_eq", ] +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + [[package]] name = "block-buffer" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -934,11 +1010,11 @@ dependencies = [ [[package]] name = "block2" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2 0.6.1", + "objc2 0.6.3", ] [[package]] @@ -956,8 +1032,34 @@ dependencies = [ [[package]] name = "blsful" -version = "3.0.0-pre8" -source = "git+https://github.com/dashpay/agora-blsful?rev=be108b2cf6ac64eedbe04f91c63731533c8956bc#be108b2cf6ac64eedbe04f91c63731533c8956bc" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d267776bf4742935d219fcdbdf590bed0f7e5fccdf5bd168fb30b2543a0b2b24" +dependencies = [ + "anyhow", + "blstrs_plus", + "hex", + "hkdf", + "merlin", + "pairing", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", + "serde_bare", + "sha2", + "sha3", + "subtle", + "thiserror 2.0.17", + "uint-zigzag", + "vsss-rs 5.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize", +] + +[[package]] +name = "blsful" +version = "3.0.0" +source = "git+https://github.com/dashpay/agora-blsful?rev=0c34a7a488a0bd1c9a9a2196e793b303ad35c900#0c34a7a488a0bd1c9a9a2196e793b303ad35c900" dependencies = [ "anyhow", "blstrs_plus", @@ -973,9 +1075,9 @@ dependencies = [ "sha2", "sha3", "subtle", - "thiserror 2.0.14", + "thiserror 2.0.17", "uint-zigzag", - "vsss-rs", + "vsss-rs 5.1.0 (git+https://github.com/dashpay/vsss-rs?branch=main)", "zeroize", ] @@ -1026,22 +1128,22 @@ checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -1065,13 +1167,23 @@ dependencies = [ "serde", ] +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + [[package]] name = "calloop" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "log", "polling", "rustix 0.38.44", @@ -1093,10 +1205,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.32" +version = "1.2.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e" +checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -1108,6 +1221,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom 7.1.3", +] + [[package]] name = "cfg-expr" version = "0.15.8" @@ -1120,9 +1242,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -1141,17 +1263,16 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -1222,6 +1343,17 @@ dependencies = [ "inout", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clipboard-win" version = "5.4.1" @@ -1248,6 +1380,15 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "colored" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "combine" version = "4.6.7" @@ -1424,7 +1565,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", "rand_core 0.6.4", "serdect", "subtle", @@ -1437,7 +1578,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", "rand_core 0.6.4", "typenum", ] @@ -1481,36 +1622,64 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", +] + +[[package]] +name = "dapi-grpc" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "dapi-grpc-macros 2.0.1", + "futures-core", + "getrandom 0.2.16", + "platform-version 2.0.1", + "prost 0.13.5", + "serde", + "serde_bytes", + "serde_json", + "tenderdash-proto 1.4.0", + "tonic 0.13.1", + "tonic-build 0.13.1", ] [[package]] name = "dapi-grpc" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "dapi-grpc-macros", + "dapi-grpc-macros 2.1.0-rc.1", "futures-core", "getrandom 0.2.16", - "platform-version", - "prost", + "platform-version 2.1.0-rc.1", + "prost 0.14.1", "serde", "serde_bytes", "serde_json", - "tenderdash-proto", - "tonic", + "tenderdash-proto 1.5.0-dev.2", + "tonic 0.14.2", "tonic-prost", "tonic-prost-build", ] [[package]] name = "dapi-grpc-macros" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "heck", + "quote", + "syn 2.0.107", +] + +[[package]] +name = "dapi-grpc-macros" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ "heck", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -1548,7 +1717,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -1559,16 +1728,16 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] name = "dash-context-provider" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "dpp", - "drive", + "dpp 2.1.0-rc.1", + "drive 2.1.0-rc.1", "hex", "serde", "serde_json", @@ -1583,17 +1752,18 @@ dependencies = [ "arboard", "argon2", "base64 0.22.1", - "bincode", + "bincode 2.0.0-rc.3", "bip39", - "bitflags 2.9.1", + "bitflags 2.10.0", "chrono", "chrono-humanize", "crossbeam-channel", "dark-light", - "dash-sdk", + "dash-sdk 2.1.0-rc.1", "derive_more 2.0.1", "directories", "dotenvy", + "ed25519-dalek", "eframe", "egui", "egui_commonmark", @@ -1602,6 +1772,7 @@ dependencies = [ "enum-iterator", "envy", "futures", + "grovestark", "hex", "humantime", "image", @@ -1612,6 +1783,7 @@ dependencies = [ "qrcode", "rand 0.8.5", "raw-cpuid", + "rayon", "regex", "rfd", "rusqlite", @@ -1621,7 +1793,7 @@ dependencies = [ "serde_yaml", "sha2", "tempfile", - "thiserror 2.0.14", + "thiserror 2.0.17", "tokio", "tokio-util", "tracing", @@ -1637,9 +1809,9 @@ dependencies = [ [[package]] name = "dash-network" version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=befd0356bebfcd0d06d1028d8a03bfa4c78bd219#befd0356bebfcd0d06d1028d8a03bfa4c78bd219" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.40.0#c877c1a74d145e2003d549619698511513db925c" dependencies = [ - "bincode", + "bincode 2.0.0-rc.3", "bincode_derive", "hex", "serde", @@ -1647,8 +1819,43 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "arc-swap", + "async-trait", + "backon", + "bip37-bloom-filter", + "chrono", + "ciborium", + "dapi-grpc 2.0.1", + "dapi-grpc-macros 2.0.1", + "dashcore-rpc 0.39.6", + "derive_more 1.0.0", + "dotenvy", + "dpp 2.0.1", + "drive 2.0.1", + "drive-proof-verifier 2.0.1", + "envy", + "futures", + "hex", + "http", + "lru", + "rs-dapi-client 2.0.1", + "rustls-pemfile", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tokio-util", + "tracing", + "zeroize", +] + +[[package]] +name = "dash-sdk" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ "arc-swap", "async-trait", @@ -1656,47 +1863,69 @@ dependencies = [ "bip37-bloom-filter", "chrono", "ciborium", - "dapi-grpc", - "dapi-grpc-macros", + "dapi-grpc 2.1.0-rc.1", + "dapi-grpc-macros 2.1.0-rc.1", "dash-context-provider", "derive_more 1.0.0", "dotenvy", - "dpp", - "drive", - "drive-proof-verifier", + "dpp 2.1.0-rc.1", + "drive 2.1.0-rc.1", + "drive-proof-verifier 2.1.0-rc.1", "envy", "futures", "hex", "http", "js-sys", "lru", - "rs-dapi-client", + "rs-dapi-client 2.1.0-rc.1", "rustls-pemfile", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.17", "tokio", "tokio-util", "tracing", "zeroize", ] +[[package]] +name = "dashcore" +version = "0.39.6" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.39.6#51df58f5d5d499f5ee80ab17076ff70b5347c7db" +dependencies = [ + "anyhow", + "base64-compat", + "bech32", + "bitflags 2.10.0", + "blake3", + "blsful 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "dashcore-private 0.39.6", + "dashcore_hashes 0.39.6", + "ed25519-dalek", + "hex", + "hex_lit", + "rustversion", + "secp256k1", + "serde", + "thiserror 2.0.17", +] + [[package]] name = "dashcore" version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=befd0356bebfcd0d06d1028d8a03bfa4c78bd219#befd0356bebfcd0d06d1028d8a03bfa4c78bd219" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.40.0#c877c1a74d145e2003d549619698511513db925c" dependencies = [ "anyhow", "base64-compat", "bech32", - "bincode", + "bincode 2.0.0-rc.3", "bincode_derive", "bitvec", "blake3", - "blsful", + "blsful 3.0.0 (git+https://github.com/dashpay/agora-blsful?rev=0c34a7a488a0bd1c9a9a2196e793b303ad35c900)", "dash-network", - "dashcore-private", - "dashcore_hashes", + "dashcore-private 0.40.0", + "dashcore_hashes 0.40.0", "ed25519-dalek", "hex", "hex_lit", @@ -1704,20 +1933,38 @@ dependencies = [ "rustversion", "secp256k1", "serde", - "thiserror 2.0.14", + "thiserror 2.0.17", ] +[[package]] +name = "dashcore-private" +version = "0.39.6" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.39.6#51df58f5d5d499f5ee80ab17076ff70b5347c7db" + [[package]] name = "dashcore-private" version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=befd0356bebfcd0d06d1028d8a03bfa4c78bd219#befd0356bebfcd0d06d1028d8a03bfa4c78bd219" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.40.0#c877c1a74d145e2003d549619698511513db925c" + +[[package]] +name = "dashcore-rpc" +version = "0.39.6" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.39.6#51df58f5d5d499f5ee80ab17076ff70b5347c7db" +dependencies = [ + "dashcore-rpc-json 0.39.6", + "hex", + "jsonrpc", + "log", + "serde", + "serde_json", +] [[package]] name = "dashcore-rpc" version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=befd0356bebfcd0d06d1028d8a03bfa4c78bd219#befd0356bebfcd0d06d1028d8a03bfa4c78bd219" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.40.0#c877c1a74d145e2003d549619698511513db925c" dependencies = [ - "dashcore-rpc-json", + "dashcore-rpc-json 0.40.0", "hex", "jsonrpc", "log", @@ -1725,13 +1972,27 @@ dependencies = [ "serde_json", ] +[[package]] +name = "dashcore-rpc-json" +version = "0.39.6" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.39.6#51df58f5d5d499f5ee80ab17076ff70b5347c7db" +dependencies = [ + "bincode 2.0.0-rc.3", + "dashcore 0.39.6", + "hex", + "serde", + "serde_json", + "serde_repr", + "serde_with", +] + [[package]] name = "dashcore-rpc-json" version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=befd0356bebfcd0d06d1028d8a03bfa4c78bd219#befd0356bebfcd0d06d1028d8a03bfa4c78bd219" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.40.0#c877c1a74d145e2003d549619698511513db925c" dependencies = [ - "bincode", - "dashcore", + "bincode 2.0.0-rc.3", + "dashcore 0.40.0", "hex", "key-wallet", "serde", @@ -1742,18 +2003,28 @@ dependencies = [ [[package]] name = "dashcore_hashes" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=befd0356bebfcd0d06d1028d8a03bfa4c78bd219#befd0356bebfcd0d06d1028d8a03bfa4c78bd219" +version = "0.39.6" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.39.6#51df58f5d5d499f5ee80ab17076ff70b5347c7db" dependencies = [ - "bincode", - "dashcore-private", + "dashcore-private 0.39.6", "secp256k1", "serde", ] [[package]] -name = "dashmap" -version = "5.5.3" +name = "dashcore_hashes" +version = "0.40.0" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.40.0#c877c1a74d145e2003d549619698511513db925c" +dependencies = [ + "bincode 2.0.0-rc.3", + "dashcore-private 0.40.0", + "secp256k1", + "serde", +] + +[[package]] +name = "dashmap" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ @@ -1766,32 +2037,62 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "platform-value 2.0.1", + "platform-version 2.0.1", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "dashpay-contract" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "platform-value", - "platform-version", + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "data-contracts" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "dashpay-contract 2.0.1", + "dpns-contract 2.0.1", + "feature-flags-contract 2.0.1", + "keyword-search-contract 2.0.1", + "masternode-reward-shares-contract 2.0.1", + "platform-value 2.0.1", + "platform-version 2.0.1", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.17", + "token-history-contract 2.0.1", + "wallet-utils-contract 2.0.1", + "withdrawals-contract 2.0.1", ] [[package]] name = "data-contracts" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" -dependencies = [ - "dashpay-contract", - "dpns-contract", - "feature-flags-contract", - "keyword-search-contract", - "masternode-reward-shares-contract", - "platform-value", - "platform-version", +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" +dependencies = [ + "dashpay-contract 2.1.0-rc.1", + "dpns-contract 2.1.0-rc.1", + "feature-flags-contract 2.1.0-rc.1", + "keyword-search-contract 2.1.0-rc.1", + "masternode-reward-shares-contract 2.1.0-rc.1", + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", "serde_json", - "thiserror 2.0.14", - "token-history-contract", - "wallet-utils-contract", - "withdrawals-contract", + "thiserror 2.0.17", + "token-history-contract 2.1.0-rc.1", + "wallet-utils-contract 2.1.0-rc.1", + "withdrawals-contract 2.1.0-rc.1", ] [[package]] @@ -1806,23 +2107,34 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", - "serde", + "serde_core", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] name = "derive_arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -1843,7 +2155,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -1853,7 +2165,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -1882,7 +2194,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "unicode-xid", ] @@ -1894,7 +2206,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -1946,7 +2258,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1961,10 +2273,10 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", + "bitflags 2.10.0", + "block2 0.6.2", "libc", - "objc2 0.6.1", + "objc2 0.6.3", ] [[package]] @@ -1975,7 +2287,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -2016,113 +2328,213 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "dpns-contract" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "platform-value 2.0.1", + "platform-version 2.0.1", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "dpns-contract" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" +dependencies = [ + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "dpp" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" dependencies = [ - "platform-value", - "platform-version", + "anyhow", + "async-trait", + "base64 0.22.1", + "bincode 2.0.0-rc.3", + "bincode_derive", + "bs58", + "byteorder", + "chrono", + "chrono-tz", + "ciborium", + "dashcore 0.39.6", + "data-contracts 2.0.1", + "derive_more 1.0.0", + "env_logger", + "getrandom 0.2.16", + "hex", + "indexmap 2.12.0", + "integer-encoding", + "itertools 0.13.0", + "lazy_static", + "nohash-hasher", + "num_enum 0.7.5", + "once_cell", + "platform-serialization 2.0.1", + "platform-serialization-derive 2.0.1", + "platform-value 2.0.1", + "platform-version 2.0.1", + "platform-versioning 2.0.1", + "rand 0.8.5", + "regex", + "serde", "serde_json", - "thiserror 2.0.14", + "serde_repr", + "sha2", + "strum 0.26.3", + "thiserror 2.0.17", ] [[package]] name = "dpp" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ "anyhow", "async-trait", "base64 0.22.1", - "bincode", + "bincode 2.0.0-rc.3", "bincode_derive", "bs58", "byteorder", "chrono", "chrono-tz", "ciborium", - "dashcore", - "dashcore-rpc", - "data-contracts", + "dashcore 0.40.0", + "dashcore-rpc 0.40.0", + "data-contracts 2.1.0-rc.1", "derive_more 1.0.0", "env_logger", "getrandom 0.2.16", "hex", - "indexmap 2.10.0", + "indexmap 2.12.0", "integer-encoding", "itertools 0.13.0", "key-wallet", "lazy_static", "nohash-hasher", - "num_enum 0.7.4", + "num_enum 0.7.5", "once_cell", - "platform-serialization", - "platform-serialization-derive", - "platform-value", - "platform-version", - "platform-versioning", + "platform-serialization 2.1.0-rc.1", + "platform-serialization-derive 2.1.0-rc.1", + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", + "platform-versioning 2.1.0-rc.1", "rand 0.8.5", "regex", "serde", "serde_json", "serde_repr", "sha2", - "strum", - "thiserror 2.0.14", + "strum 0.26.3", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "drive" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "bincode 2.0.0-rc.3", + "byteorder", + "derive_more 1.0.0", + "dpp 2.0.1", + "grovedb", + "grovedb-costs", + "grovedb-epoch-based-storage-flags", + "grovedb-path", + "grovedb-version", + "hex", + "indexmap 2.12.0", + "integer-encoding", + "nohash-hasher", + "platform-version 2.0.1", + "serde", + "sqlparser", + "thiserror 2.0.17", "tracing", ] [[package]] name = "drive" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "bincode", + "bincode 2.0.0-rc.3", "byteorder", "derive_more 1.0.0", - "dpp", + "dpp 2.1.0-rc.1", "grovedb", "grovedb-costs", "grovedb-epoch-based-storage-flags", "grovedb-path", "grovedb-version", "hex", - "indexmap 2.10.0", + "indexmap 2.12.0", "integer-encoding", "nohash-hasher", - "platform-version", + "platform-version 2.1.0-rc.1", "serde", "sqlparser", - "thiserror 2.0.14", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "drive-proof-verifier" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "bincode 2.0.0-rc.3", + "dapi-grpc 2.0.1", + "derive_more 1.0.0", + "dpp 2.0.1", + "drive 2.0.1", + "hex", + "indexmap 2.12.0", + "platform-serialization 2.0.1", + "platform-serialization-derive 2.0.1", + "serde", + "serde_json", + "tenderdash-abci 1.4.0", + "thiserror 2.0.17", "tracing", ] [[package]] name = "drive-proof-verifier" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "bincode", - "dapi-grpc", + "bincode 2.0.0-rc.3", + "dapi-grpc 2.1.0-rc.1", "dash-context-provider", "derive_more 1.0.0", - "dpp", - "drive", + "dpp 2.1.0-rc.1", + "drive 2.1.0-rc.1", "hex", - "indexmap 2.10.0", - "platform-serialization", - "platform-serialization-derive", + "indexmap 2.12.0", + "platform-serialization 2.1.0-rc.1", + "platform-serialization-derive 2.1.0-rc.1", "serde", "serde_json", - "tenderdash-abci", - "thiserror 2.0.14", + "tenderdash-abci 1.5.0-dev.2", + "thiserror 2.0.17", "tracing", ] [[package]] name = "ecolor" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a631732d995184114016fab22fc7e3faf73d6841c2d7650395fe251fbcd9285" +checksum = "94bdf37f8d5bd9aa7f753573fdda9cf7343afa73dd28d7bfe9593bd9798fc07e" dependencies = [ "bytemuck", "emath", @@ -2157,6 +2569,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8", + "serde", "signature", ] @@ -2168,6 +2581,7 @@ checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", + "merlin", "rand_core 0.6.4", "serde", "sha2", @@ -2177,9 +2591,9 @@ dependencies = [ [[package]] name = "eframe" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790ccfbb3dd556588342463454b2b2b13909e5fdce5bc2a1432a8aa69c8b7a" +checksum = "14d1c15e7bd136b309bd3487e6ffe5f668b354cd9768636a836dd738ac90eb0b" dependencies = [ "ahash", "bytemuck", @@ -2216,13 +2630,13 @@ dependencies = [ [[package]] name = "egui" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8470210c95a42cc985d9ffebfd5067eea55bdb1c3f7611484907db9639675e28" +checksum = "5d5d0306cd61ca75e29682926d71f2390160247f135965242e904a636f51c0dc" dependencies = [ "accesskit", "ahash", - "bitflags 2.9.1", + "bitflags 2.10.0", "emath", "epaint", "log", @@ -2236,9 +2650,9 @@ dependencies = [ [[package]] name = "egui-wgpu" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14de9942d8b9e99e2d830403c208ab1a6e052e925a7456a4f6f66d567d90de1d" +checksum = "c12eca13293f8eba27a32aaaa1c765bfbf31acd43e8d30d5881dcbe5e99ca0c7" dependencies = [ "ahash", "bytemuck", @@ -2256,9 +2670,9 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c490804a035cec9c826082894a3e1ecf4198accd3817deb10f7919108ebafab0" +checksum = "f95d0a91f9cb0dc2e732d49c2d521ac8948e1f0b758f306fb7b14d6f5db3927f" dependencies = [ "accesskit_winit", "ahash", @@ -2300,9 +2714,9 @@ dependencies = [ [[package]] name = "egui_extras" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f791a5937f518249016b276b3639ad2aa3824048b6f2161ec2b431ab325880a" +checksum = "dddbceddf39805fc6c62b1f7f9c05e23590b40844dc9ed89c6dc6dbc886e3e3b" dependencies = [ "ahash", "egui", @@ -2315,9 +2729,9 @@ dependencies = [ [[package]] name = "egui_glow" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d44f3fd4fdc5f960c9e9ef7327c26647edc3141abf96102980647129d49358e6" +checksum = "cc7037813341727937f9e22f78d912f3e29bc3c46e2f40a9e82bb51cbf5e4cfb" dependencies = [ "ahash", "bytemuck", @@ -2333,9 +2747,9 @@ dependencies = [ [[package]] name = "egui_kittest" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dacd0e777f0557aebde97346a8c534e76607ce1e4f4a6e10a82d95ec5d5bca8" +checksum = "5bb00f16e00af09092c117515246732adba4ca4649463bdbc2ab6114a2944765" dependencies = [ "eframe", "egui", @@ -2358,7 +2772,7 @@ dependencies = [ "crypto-bigint", "digest", "ff", - "generic-array 0.14.7", + "generic-array 0.14.9", "group", "hkdf", "pkcs8", @@ -2372,8 +2786,21 @@ dependencies = [ [[package]] name = "elliptic-curve-tools" version = "0.1.2" +source = "git+https://github.com/mikelodder7/elliptic-curve-tools?rev=c989865fa71503d2cbf5c5795c4ebcf4a2f3221c#c989865fa71503d2cbf5c5795c4ebcf4a2f3221c" +dependencies = [ + "elliptic-curve", + "heapless", + "hex", + "multiexp", + "serde", + "zeroize", +] + +[[package]] +name = "elliptic-curve-tools" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48843edfbd0a370b3dd14cdbb4e446e9a8855311e6b2b57bf9a1fd1367bc317" +checksum = "1de2b6fae800f08032a6ea32995b52925b1d451bff9d445c8ab2932323277faf" dependencies = [ "elliptic-curve", "heapless", @@ -2385,9 +2812,9 @@ dependencies = [ [[package]] name = "emath" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45f057b141e7e46340c321400be74b793543b1b213036f0f989c35d35957c32e" +checksum = "45fd7bc25f769a3c198fe1cf183124bf4de3bd62ef7b4f1eaf6b08711a3af8db" dependencies = [ "bytemuck", "serde", @@ -2410,22 +2837,22 @@ checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" [[package]] name = "enum-iterator" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c280b9e6b3ae19e152d8e31cf47f18389781e119d4013a2a2bb0180e5facc635" +checksum = "a4549325971814bda7a44061bf3fe7e487d447cba01e4220a4b454d630d7a016" dependencies = [ "enum-iterator-derive", ] [[package]] name = "enum-iterator-derive" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" +checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -2445,7 +2872,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -2466,7 +2893,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -2477,14 +2904,14 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -2520,9 +2947,9 @@ dependencies = [ [[package]] name = "epaint" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94cca02195f0552c17cabdc02f39aa9ab6fbd815dac60ab1cd3d5b0aa6f9551c" +checksum = "63adcea970b7a13094fe97a36ab9307c35a750f9e24bf00bb7ef3de573e0fddb" dependencies = [ "ab_glyph", "ahash", @@ -2539,9 +2966,9 @@ dependencies = [ [[package]] name = "epaint_default_fonts" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8495e11ed527dff39663b8c36b6c2b2799d7e4287fb90556e455d72eca0b4d3" +checksum = "1537accc50c9cab5a272c39300bdd0dd5dca210f6e5e8d70be048df9596e7ca2" [[package]] name = "equivalent" @@ -2551,12 +2978,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -2611,8 +3038,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" dependencies = [ "bit-set 0.5.3", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] @@ -2621,6 +3048,26 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "fax" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" +dependencies = [ + "fax_derive", +] + +[[package]] +name = "fax_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.107", +] + [[package]] name = "fdeflate" version = "0.3.7" @@ -2632,13 +3079,24 @@ dependencies = [ [[package]] name = "feature-flags-contract" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "platform-value 2.0.1", + "platform-version 2.0.1", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "feature-flags-contract" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "platform-value", - "platform-version", + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.17", ] [[package]] @@ -2658,6 +3116,12 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + [[package]] name = "fixedbitset" version = "0.5.7" @@ -2666,15 +3130,24 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" dependencies = [ "crc32fast", "libz-rs-sys", "miniz_oxide", ] +[[package]] +name = "flex-error" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" +dependencies = [ + "paste", +] + [[package]] name = "fnv" version = "1.0.7" @@ -2687,6 +3160,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "foreign-types" version = "0.3.2" @@ -2714,7 +3193,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -2731,9 +3210,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -2825,7 +3304,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -2860,9 +3339,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -2871,22 +3350,23 @@ dependencies = [ [[package]] name = "generic-array" -version = "1.2.0" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c8444bc9d71b935156cc0ccab7f622180808af7867b1daae6547d773591703" +checksum = "985a5578ebdb02351d484a77fb27e7cb79272f1ba9bc24692d8243c3cfe40660" dependencies = [ - "serde", + "rustversion", + "serde_core", "typenum", ] [[package]] name = "gethostname" -version = "0.4.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "libc", - "windows-targets 0.48.5", + "rustix 1.1.2", + "windows-link 0.2.1", ] [[package]] @@ -2898,20 +3378,20 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasip2", ] [[package]] @@ -2924,12 +3404,6 @@ dependencies = [ "polyval", ] -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - [[package]] name = "gl_generator" version = "0.14.0" @@ -2977,7 +3451,7 @@ version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg_aliases", "cgl", "dispatch2", @@ -2985,10 +3459,10 @@ dependencies = [ "glutin_glx_sys", "glutin_wgl_sys", "libloading", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "once_cell", "raw-window-handle", "wayland-sys", @@ -3037,6 +3511,57 @@ dependencies = [ "gl_generator", ] +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.10.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "gpu-allocator" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" +dependencies = [ + "log", + "presser", + "thiserror 1.0.69", + "windows 0.58.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" +dependencies = [ + "bitflags 2.10.0", + "gpu-descriptor-types", + "hashbrown 0.15.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.10.0", +] + [[package]] name = "group" version = "0.13.0" @@ -3052,93 +3577,166 @@ dependencies = [ [[package]] name = "grovedb" -version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=1ecedf530fbc5b5e12edf1bc607bd288c187ddde#1ecedf530fbc5b5e12edf1bc607bd288c187ddde" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f12b2378c5eda5b7cadceb34fc6e0a8fd87fe03fc04841a7d32a74ff73ccef71" dependencies = [ - "bincode", + "bincode 2.0.0-rc.3", "bincode_derive", "blake3", "grovedb-costs", "grovedb-merk", "grovedb-path", + "grovedb-storage", "grovedb-version", + "grovedb-visualize", "hex", "hex-literal", - "indexmap 2.10.0", + "indexmap 2.12.0", "integer-encoding", + "intmap", + "itertools 0.14.0", "reqwest", "sha2", - "thiserror 2.0.14", + "tempfile", + "thiserror 2.0.17", ] [[package]] name = "grovedb-costs" -version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=1ecedf530fbc5b5e12edf1bc607bd288c187ddde#1ecedf530fbc5b5e12edf1bc607bd288c187ddde" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e74fafe53bf5ae27128799856e557ef5cb2d7109f1f7bc7f4440bbd0f97c7072" dependencies = [ "integer-encoding", "intmap", - "thiserror 2.0.14", + "thiserror 2.0.17", ] [[package]] name = "grovedb-epoch-based-storage-flags" -version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=1ecedf530fbc5b5e12edf1bc607bd288c187ddde#1ecedf530fbc5b5e12edf1bc607bd288c187ddde" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6bdc033cc229b17cd02ee9d5c5a5a344788ed0e69ad7468b0d34d94b021fc4" dependencies = [ "grovedb-costs", "hex", "integer-encoding", "intmap", - "thiserror 2.0.14", + "thiserror 2.0.17", ] [[package]] name = "grovedb-merk" -version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=1ecedf530fbc5b5e12edf1bc607bd288c187ddde#1ecedf530fbc5b5e12edf1bc607bd288c187ddde" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6dd6f733e9d5c15c98e05b68a2028e00b7f177baa51e8d8c1541102942a72b7" dependencies = [ - "bincode", + "bincode 2.0.0-rc.3", "bincode_derive", "blake3", "byteorder", + "colored", "ed", "grovedb-costs", "grovedb-path", + "grovedb-storage", "grovedb-version", "grovedb-visualize", "hex", - "indexmap 2.10.0", + "indexmap 2.12.0", "integer-encoding", - "thiserror 2.0.14", + "num_cpus", + "rand 0.8.5", + "thiserror 2.0.17", ] [[package]] name = "grovedb-path" -version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=1ecedf530fbc5b5e12edf1bc607bd288c187ddde#1ecedf530fbc5b5e12edf1bc607bd288c187ddde" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01f716520d6c6b0f25dc4a68bc7dded645826ed57d38a06a80716a487c09d23c" dependencies = [ "hex", ] [[package]] -name = "grovedb-version" -version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=1ecedf530fbc5b5e12edf1bc607bd288c187ddde#1ecedf530fbc5b5e12edf1bc607bd288c187ddde" +name = "grovedb-storage" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52d04f3831fe210543a7246f2a60ae068f23eac5f9d53200d5a82785750f68fd" dependencies = [ - "thiserror 2.0.14", - "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake3", + "grovedb-costs", + "grovedb-path", + "grovedb-visualize", + "hex", + "integer-encoding", + "lazy_static", + "num_cpus", + "rocksdb", + "strum 0.27.2", + "tempfile", + "thiserror 2.0.17", ] [[package]] -name = "grovedb-visualize" -version = "3.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=1ecedf530fbc5b5e12edf1bc607bd288c187ddde#1ecedf530fbc5b5e12edf1bc607bd288c187ddde" +name = "grovedb-version" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc855662f05f41b10dd022226cb78e345a33f35c390e25338d21dedd45966ae" +dependencies = [ + "thiserror 2.0.17", + "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "grovedb-visualize" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34fa6f41c110d1d141bf912175f187ef51ac5d2a8f163dfd229be007461a548f" dependencies = [ "hex", "itertools 0.14.0", ] +[[package]] +name = "grovestark" +version = "0.1.0" +dependencies = [ + "ark-ff", + "base64 0.22.1", + "bincode 1.3.3", + "bincode 2.0.0-rc.3", + "blake3", + "bs58", + "curve25519-dalek", + "dash-sdk 2.0.1", + "ed25519-dalek", + "env_logger", + "grovedb", + "grovedb-costs", + "grovedb-merk", + "hex", + "log", + "num-bigint", + "num-traits", + "num_cpus", + "once_cell", + "rand 0.8.5", + "rayon", + "serde", + "serde_json", + "sha2", + "subtle", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-subscriber", + "winterfell", + "zeroize", +] + [[package]] name = "h2" version = "0.4.12" @@ -3151,7 +3749,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.10.0", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -3160,13 +3758,14 @@ dependencies = [ [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", "num-traits", + "zerocopy", ] [[package]] @@ -3189,10 +3788,6 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] [[package]] name = "hashbrown" @@ -3202,7 +3797,16 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "foldhash 0.2.0", ] [[package]] @@ -3363,19 +3967,20 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "hyper" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "h2", "http", "http-body", @@ -3383,6 +3988,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -3435,9 +4041,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64 0.22.1", "bytes", @@ -3451,7 +4057,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -3461,9 +4067,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -3471,7 +4077,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.2", ] [[package]] @@ -3577,9 +4183,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -3598,12 +4204,13 @@ dependencies = [ [[package]] name = "image" -version = "0.25.6" +version = "0.25.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" dependencies = [ "bytemuck", "byteorder-lite", + "moxcms", "num-traits", "png", "tiff", @@ -3622,13 +4229,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] @@ -3637,7 +4245,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -3655,17 +4263,6 @@ dependencies = [ "serde", ] -[[package]] -name = "io-uring" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" -dependencies = [ - "bitflags 2.9.1", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -3684,9 +4281,18 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] [[package]] name = "itertools" @@ -3733,7 +4339,7 @@ checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -3760,25 +4366,19 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] -[[package]] -name = "jpeg-decoder" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" - [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -3817,15 +4417,15 @@ dependencies = [ [[package]] name = "key-wallet" version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=befd0356bebfcd0d06d1028d8a03bfa4c78bd219#befd0356bebfcd0d06d1028d8a03bfa4c78bd219" +source = "git+https://github.com/dashpay/rust-dashcore?tag=v0.40.0#c877c1a74d145e2003d549619698511513db925c" dependencies = [ "base58ck", "bip39", - "bitflags 2.9.1", + "bitflags 2.10.0", "dash-network", - "dashcore", - "dashcore-private", - "dashcore_hashes", + "dashcore 0.40.0", + "dashcore-private 0.40.0", + "dashcore_hashes 0.40.0", "getrandom 0.2.16", "hex", "hkdf", @@ -3834,18 +4434,41 @@ dependencies = [ "serde", "serde_json", "sha2", + "tracing", "zeroize", ] [[package]] name = "keyword-search-contract" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "platform-value 2.0.1", + "platform-version 2.0.1", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "keyword-search-contract" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "platform-value", - "platform-version", + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.17", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading", + "pkg-config", ] [[package]] @@ -3888,18 +4511,18 @@ checksum = "744a4c881f502e98c2241d2e5f50040ac73b30194d64452bb6260393b53f0dc9" [[package]] name = "libc" -version = "0.2.175" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.3", + "windows-link 0.2.1", ] [[package]] @@ -3910,13 +4533,28 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", + "libc", + "redox_syscall 0.5.18", +] + +[[package]] +name = "librocksdb-sys" +version = "0.17.3+10.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef2a00ee60fe526157c9023edab23943fae1ce2ab6f4abb2a807c1746835de9" +dependencies = [ + "bindgen", + "bzip2-sys", + "cc", "libc", - "redox_syscall 0.5.17", + "libz-sys", + "lz4-sys", + "zstd-sys", ] [[package]] @@ -3939,6 +4577,17 @@ dependencies = [ "zlib-rs", ] +[[package]] +name = "libz-sys" +version = "1.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -3947,9 +4596,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" @@ -3965,19 +4614,18 @@ checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ "value-bag", ] @@ -3991,37 +4639,67 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lz4-sys" +version = "1.11.1+lz4-1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "masternode-reward-shares-contract" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "platform-value 2.0.1", + "platform-version 2.0.1", + "serde_json", + "thiserror 2.0.17", +] + [[package]] name = "masternode-reward-shares-contract" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "platform-value", - "platform-version", + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.17", ] [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" -version = "0.9.7" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -4047,6 +4725,21 @@ dependencies = [ "zeroize", ] +[[package]] +name = "metal" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" +dependencies = [ + "bitflags 2.10.0", + "block", + "core-graphics-types", + "foreign-types 0.5.0", + "log", + "objc", + "paste", +] + [[package]] name = "mime" version = "0.3.17" @@ -4065,6 +4758,12 @@ dependencies = [ "unicase", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -4077,23 +4776,34 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "moxcms" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c588e11a3082784af229e23e8e4ecf5bcc6fbe4f69101e0421ce8d79da7f0b40" +dependencies = [ + "num-traits", + "pxfm", ] [[package]] name = "multiexp" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a383da1ae933078ddb1e4141f1dd617b512b4183779d6977e6451b0e644806" +checksum = "7ec2ce93a6f06ac6cae04c1da3f2a6a24fcfc1f0eb0b4e0f3d302f0df45326cb" dependencies = [ "ff", "group", + "rand_core 0.6.4", "rustversion", "std-shims", "zeroize", @@ -4119,40 +4829,41 @@ checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" dependencies = [ "arrayvec", "bit-set 0.8.0", - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg_aliases", "codespan-reporting", "half", "hashbrown 0.15.5", "hexf-parse", - "indexmap 2.10.0", + "indexmap 2.12.0", "log", "num-traits", "once_cell", "rustc-hash 1.1.0", - "strum", - "thiserror 2.0.14", + "spirv", + "strum 0.26.3", + "thiserror 2.0.17", "unicode-ident", ] [[package]] name = "native-dialog" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f006431cea71a83e6668378cb5abc2d52af299cbac6dca1780c6eeca90822df" +checksum = "1657b63bf0e60ee0eca886b5df70269240b6197b6ee46ec37da9a7d28d8e8e24" dependencies = [ "ascii", - "block2 0.6.1", + "block2 0.6.2", "dirs", "dispatch2", "formatx", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "raw-window-handle", - "thiserror 2.0.14", + "thiserror 2.0.17", "versions", "wfd", "which 7.0.3", @@ -4182,11 +4893,11 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "jni-sys", "log", - "ndk-sys", - "num_enum 0.7.4", + "ndk-sys 0.6.0+11769913", + "num_enum 0.7.5", "raw-window-handle", "thiserror 1.0.69", ] @@ -4197,6 +4908,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + [[package]] name = "ndk-sys" version = "0.6.0+11769913" @@ -4212,7 +4932,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "libc", @@ -4225,6 +4945,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "nom" version = "8.0.0" @@ -4236,12 +4966,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "overload", - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -4295,7 +5024,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -4361,11 +5090,11 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ - "num_enum_derive 0.7.4", + "num_enum_derive 0.7.5", "rustversion", ] @@ -4383,14 +5112,23 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", ] [[package]] @@ -4411,9 +5149,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" dependencies = [ "objc2-encode", ] @@ -4424,33 +5162,28 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "libc", "objc2 0.5.2", - "objc2-core-data 0.2.2", - "objc2-core-image 0.2.2", + "objc2-core-data", + "objc2-core-image", "objc2-foundation 0.2.2", - "objc2-quartz-core 0.2.2", + "objc2-quartz-core", ] [[package]] name = "objc2-app-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", - "libc", - "objc2 0.6.1", - "objc2-cloud-kit 0.3.1", - "objc2-core-data 0.3.1", + "bitflags 2.10.0", + "block2 0.6.2", + "objc2 0.6.3", "objc2-core-foundation", "objc2-core-graphics", - "objc2-core-image 0.3.1", - "objc2-foundation 0.3.1", - "objc2-quartz-core 0.3.1", + "objc2-foundation 0.3.2", ] [[package]] @@ -4459,24 +5192,13 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-cloud-kit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", -] - [[package]] name = "objc2-contacts" version = "0.2.2" @@ -4494,50 +5216,34 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-core-data" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", -] - [[package]] name = "objc2-core-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", + "bitflags 2.10.0", "dispatch2", - "libc", - "objc2 0.6.1", + "objc2 0.6.3", ] [[package]] name = "objc2-core-graphics" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", + "bitflags 2.10.0", "dispatch2", - "libc", - "objc2 0.6.1", + "objc2 0.6.3", "objc2-core-foundation", "objc2-io-surface", - "objc2-metal 0.3.1", ] [[package]] @@ -4549,17 +5255,7 @@ dependencies = [ "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", - "objc2-metal 0.2.2", -] - -[[package]] -name = "objc2-core-image" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e" -dependencies = [ - "objc2 0.6.1", - "objc2-foundation 0.3.1", + "objc2-metal", ] [[package]] @@ -4586,7 +5282,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "dispatch", "libc", @@ -4595,25 +5291,23 @@ dependencies = [ [[package]] name = "objc2-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", - "libc", - "objc2 0.6.1", + "bitflags 2.10.0", + "objc2 0.6.3", "objc2-core-foundation", ] [[package]] name = "objc2-io-surface" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", + "bitflags 2.10.0", + "objc2 0.6.3", "objc2-core-foundation", ] @@ -4635,45 +5329,23 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-metal" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f246c183239540aab1782457b35ab2040d4259175bd1d0c58e46ada7b47a874" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", -] - [[package]] name = "objc2-quartz-core" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", - "objc2-metal 0.2.2", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", + "objc2-metal", ] [[package]] @@ -4692,16 +5364,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-cloud-kit 0.2.2", - "objc2-core-data 0.2.2", - "objc2-core-image 0.2.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", "objc2-core-location", "objc2-foundation 0.2.2", "objc2-link-presentation", - "objc2-quartz-core 0.2.2", + "objc2-quartz-core", "objc2-symbols", "objc2-uniform-type-identifiers", "objc2-user-notifications", @@ -4724,22 +5396,13 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", "objc2-foundation 0.2.2", ] -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" version = "1.21.3" @@ -4748,9 +5411,9 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "opaque-debug" @@ -4760,11 +5423,11 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -4781,7 +5444,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -4792,9 +5455,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" dependencies = [ "cc", "libc", @@ -4817,6 +5480,15 @@ dependencies = [ "libredox", ] +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + [[package]] name = "ordered-stream" version = "0.2.0" @@ -4827,12 +5499,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "owned_ttf_parser" version = "0.25.1" @@ -4859,9 +5525,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -4869,15 +5535,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.17", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -4900,11 +5566,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "petgraph" @@ -4913,7 +5585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.10.0", + "indexmap 2.12.0", ] [[package]] @@ -4956,7 +5628,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "unicase", ] @@ -4987,7 +5659,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -5031,73 +5703,135 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "platform-serialization" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" dependencies = [ - "bincode", - "platform-version", + "bincode 2.0.0-rc.3", + "platform-version 2.0.1", +] + +[[package]] +name = "platform-serialization" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" +dependencies = [ + "bincode 2.0.0-rc.3", + "platform-version 2.1.0-rc.1", +] + +[[package]] +name = "platform-serialization-derive" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.107", + "virtue 0.0.17", ] [[package]] name = "platform-serialization-derive" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "virtue 0.0.17", ] [[package]] name = "platform-value" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "base64 0.22.1", + "bincode 2.0.0-rc.3", + "bs58", + "ciborium", + "hex", + "indexmap 2.12.0", + "platform-serialization 2.0.1", + "platform-version 2.0.1", + "rand 0.8.5", + "serde", + "serde_json", + "thiserror 2.0.17", + "treediff", +] + +[[package]] +name = "platform-value" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ "base64 0.22.1", - "bincode", + "bincode 2.0.0-rc.3", "bs58", "ciborium", "hex", - "indexmap 2.10.0", - "platform-serialization", - "platform-version", + "indexmap 2.12.0", + "platform-serialization 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", "rand 0.8.5", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.17", "treediff", ] [[package]] name = "platform-version" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "bincode 2.0.0-rc.3", + "grovedb-version", + "once_cell", + "thiserror 2.0.17", + "versioned-feature-core 1.0.0 (git+https://github.com/dashpay/versioned-feature-core)", +] + +[[package]] +name = "platform-version" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "bincode", + "bincode 2.0.0-rc.3", "grovedb-version", "once_cell", - "thiserror 2.0.14", + "thiserror 2.0.17", "versioned-feature-core 1.0.0 (git+https://github.com/dashpay/versioned-feature-core)", ] [[package]] name = "platform-versioning" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", +] + +[[package]] +name = "platform-versioning" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.107", ] [[package]] name = "png" -version = "0.17.16" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.10.0", "crc32fast", "fdeflate", "flate2", @@ -5106,16 +5840,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.10.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.0.8", - "windows-sys 0.60.2", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -5153,9 +5887,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -5175,14 +5909,20 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + [[package]] name = "prettyplease" -version = "0.2.36" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -5197,18 +5937,18 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.22.27", + "toml_edit 0.23.7", ] [[package]] name = "proc-macro2" -version = "1.0.97" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] @@ -5219,6 +5959,16 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive 0.13.5", +] + [[package]] name = "prost" version = "0.14.1" @@ -5226,7 +5976,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.14.1", +] + +[[package]] +name = "prost-build" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +dependencies = [ + "heck", + "itertools 0.14.0", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost 0.13.5", + "prost-types 0.13.5", + "regex", + "syn 2.0.107", + "tempfile", ] [[package]] @@ -5236,21 +6006,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac6c3320f9abac597dcbc668774ef006702672474aad53c6d596b62e487b40b1" dependencies = [ "heck", - "itertools 0.13.0", + "itertools 0.14.0", "log", "multimap", "once_cell", "petgraph", "prettyplease", - "prost", - "prost-types", + "prost 0.14.1", + "prost-types 0.14.1", "pulldown-cmark", "pulldown-cmark-to-cmark", "regex", - "syn 2.0.104", + "syn 2.0.107", "tempfile", ] +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.107", +] + [[package]] name = "prost-derive" version = "0.14.1" @@ -5258,10 +6041,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", +] + +[[package]] +name = "prost-types" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +dependencies = [ + "prost 0.13.5", ] [[package]] @@ -5270,7 +6062,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9b4db3d6da204ed77bb26ba83b6122a73aeb2e87e25fbf7ad2e84c4ccbf8f72" dependencies = [ - "prost", + "prost 0.14.1", ] [[package]] @@ -5279,7 +6071,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "memchr", "unicase", ] @@ -5293,6 +6085,15 @@ dependencies = [ "pulldown-cmark", ] +[[package]] +name = "pxfm" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84" +dependencies = [ + "num-traits", +] + [[package]] name = "qrcode" version = "0.14.1" @@ -5302,6 +6103,12 @@ dependencies = [ "image", ] +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + [[package]] name = "quick-xml" version = "0.36.2" @@ -5323,9 +6130,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] @@ -5398,7 +6205,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", ] [[package]] @@ -5410,13 +6217,19 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "range-alloc" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" + [[package]] name = "raw-cpuid" -version = "11.5.0" +version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] @@ -5427,9 +6240,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -5437,9 +6250,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -5456,11 +6269,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.17" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] @@ -5471,52 +6284,37 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.14", + "thiserror 2.0.17", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "renderdoc-sys" @@ -5526,9 +6324,9 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -5573,14 +6371,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" dependencies = [ "ashpd 0.11.0", - "block2 0.6.1", + "block2 0.6.2", "dispatch2", "js-sys", "log", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "pollster", "raw-window-handle", "urlencoding", @@ -5604,6 +6402,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rocksdb" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddb7af00d2b17dbd07d82c0063e25411959748ff03e8d4f96134c2ff41fce34f" +dependencies = [ + "libc", + "librocksdb-sys", +] + [[package]] name = "ron" version = "0.10.1" @@ -5611,7 +6419,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" dependencies = [ "base64 0.22.1", - "bitflags 2.9.1", + "bitflags 2.10.0", "serde", "serde_derive", "unicode-ident", @@ -5619,12 +6427,38 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "backon", + "chrono", + "dapi-grpc 2.0.1", + "futures", + "getrandom 0.2.16", + "gloo-timers", + "hex", + "http", + "http-serde", + "lru", + "rand 0.8.5", + "serde", + "serde_json", + "sha2", + "thiserror 2.0.17", + "tokio", + "tonic-web-wasm-client 0.7.1", + "tracing", + "wasm-bindgen-futures", +] + +[[package]] +name = "rs-dapi-client" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ "backon", "chrono", - "dapi-grpc", + "dapi-grpc 2.1.0-rc.1", "futures", "getrandom 0.2.16", "gloo-timers", @@ -5637,9 +6471,9 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror 2.0.14", + "thiserror 2.0.17", "tokio", - "tonic-web-wasm-client", + "tonic-web-wasm-client 0.8.0", "tower-service", "tracing", "wasm-bindgen-futures", @@ -5651,7 +6485,7 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -5661,9 +6495,9 @@ dependencies = [ [[package]] name = "rust-embed" -version = "8.7.2" +version = "8.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025908b8682a26ba8d12f6f2d66b987584a4a87bc024abc5bbc12553a8cd178a" +checksum = "fb44e1917075637ee8c7bcb865cf8830e3a92b5b1189e44e3a0ab5a0d5be314b" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -5672,33 +6506,27 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.7.2" +version = "8.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6065f1a4392b71819ec1ea1df1120673418bf386f50de1d6f54204d836d4349c" +checksum = "382499b49db77a7c19abd2a574f85ada7e9dbe125d5d1160fa5cad7c4cf71fc9" dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.104", + "syn 2.0.107", "walkdir", ] [[package]] name = "rust-embed-utils" -version = "8.7.2" +version = "8.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6cc0c81648b20b70c491ff8cce00c1c3b223bb8ed2b5d41f0e54c6c4c0a3594" +checksum = "21fcbee55c2458836bcdbfffb6ec9ba74bbc23ca7aa6816015a3dd2c4d8fc185" dependencies = [ "sha2", "walkdir", ] -[[package]] -name = "rustc-demangle" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" - [[package]] name = "rustc-hash" version = "1.1.0" @@ -5726,7 +6554,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -5735,22 +6563,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.60.2", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.31" +version = "0.23.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" dependencies = [ "log", "once_cell", @@ -5763,14 +6591,14 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", + "security-framework 3.5.1", ] [[package]] @@ -5793,9 +6621,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" dependencies = [ "ring", "rustls-pki-types", @@ -5825,11 +6653,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5865,7 +6693,7 @@ checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct", "der", - "generic-array 0.14.7", + "generic-array 0.14.9", "pkcs8", "subtle", "zeroize", @@ -5898,7 +6726,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -5907,11 +6735,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.3.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -5920,9 +6748,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -5930,16 +6758,17 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -5954,35 +6783,46 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.17" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] name = "serde_json" -version = "1.0.142" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.12.0", "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -5993,7 +6833,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -6042,7 +6882,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -6051,7 +6891,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.12.0", "itoa", "ryu", "serde", @@ -6161,7 +7001,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "calloop", "calloop-wayland-source", "cursor-icon", @@ -6202,21 +7042,37 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", ] [[package]] name = "spin" -version = "0.9.8" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "lock_api", + "bitflags 2.10.0", ] [[package]] @@ -6240,9 +7096,9 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -6252,11 +7108,12 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "std-shims" -version = "0.1.1" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e49360f31b0b75a6a82a5205c6103ea07a79a60808d44f5cc879d303337926" +checksum = "227c4f8561598188d0df96dbe749824576174bba278b5b6bb2eacff1066067d0" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.16.0", + "rustversion", "spin", ] @@ -6278,7 +7135,16 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", ] [[package]] @@ -6291,7 +7157,19 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.104", + "syn 2.0.107", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.107", ] [[package]] @@ -6322,9 +7200,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" dependencies = [ "proc-macro2", "quote", @@ -6348,7 +7226,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -6357,7 +7235,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -6399,15 +7277,30 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", - "rustix 1.0.8", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tenderdash-abci" +version = "1.4.0" +source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.4.0#e2dd15f39246081e7d569e585ab78ff5340116ac" +dependencies = [ + "bytes", + "hex", + "lhash", + "semver", + "tenderdash-proto 1.4.0", + "thiserror 2.0.17", + "tracing", + "url", ] [[package]] @@ -6419,12 +7312,30 @@ dependencies = [ "hex", "lhash", "semver", - "tenderdash-proto", - "thiserror 2.0.14", + "tenderdash-proto 1.5.0-dev.2", + "thiserror 2.0.17", "tracing", "url", ] +[[package]] +name = "tenderdash-proto" +version = "1.4.0" +source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.4.0#e2dd15f39246081e7d569e585ab78ff5340116ac" +dependencies = [ + "bytes", + "chrono", + "derive_more 2.0.1", + "flex-error", + "num-derive", + "num-traits", + "prost 0.13.5", + "serde", + "subtle-encoding", + "tenderdash-proto-compiler 1.4.0", + "time", +] + [[package]] name = "tenderdash-proto" version = "1.5.0-dev.2" @@ -6435,26 +7346,40 @@ dependencies = [ "derive_more 2.0.1", "num-derive", "num-traits", - "prost", + "prost 0.14.1", "serde", "subtle-encoding", - "tenderdash-proto-compiler", - "thiserror 2.0.14", + "tenderdash-proto-compiler 1.5.0-dev.2", + "thiserror 2.0.17", "time", ] +[[package]] +name = "tenderdash-proto-compiler" +version = "1.4.0" +source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.4.0#e2dd15f39246081e7d569e585ab78ff5340116ac" +dependencies = [ + "fs_extra", + "prost-build 0.13.5", + "regex", + "tempfile", + "ureq", + "walkdir", + "zip 2.4.2", +] + [[package]] name = "tenderdash-proto-compiler" version = "1.5.0-dev.2" source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.5.0-dev.2#3f6ac716c42125a01caceb42cc5997efa41c88fc" dependencies = [ "fs_extra", - "prost-build", + "prost-build 0.14.1", "regex", "tempfile", "ureq", "walkdir", - "zip", + "zip 5.1.1", ] [[package]] @@ -6477,11 +7402,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.14" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.14", + "thiserror-impl 2.0.17", ] [[package]] @@ -6492,18 +7417,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] name = "thiserror-impl" -version = "2.0.14" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -6526,20 +7451,23 @@ dependencies = [ [[package]] name = "tiff" -version = "0.9.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" dependencies = [ + "fax", "flate2", - "jpeg-decoder", + "half", + "quick-error", "weezl", + "zune-jpeg", ] [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -6552,15 +7480,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -6603,9 +7531,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -6618,44 +7546,52 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-history-contract" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "platform-value 2.0.1", + "platform-version 2.0.1", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "token-history-contract" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "platform-value", - "platform-version", + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.17", ] [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -6670,9 +7606,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", "tokio", @@ -6711,7 +7647,7 @@ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", "toml_edit 0.22.27", ] @@ -6724,14 +7660,23 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.10.0", - "toml_datetime", + "indexmap 2.12.0", + "toml_datetime 0.6.11", "winnow 0.5.40", ] @@ -6741,11 +7686,63 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.12.0", "serde", "serde_spanned", - "toml_datetime", - "winnow 0.7.12", + "toml_datetime 0.6.11", + "winnow 0.7.13", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap 2.12.0", + "toml_datetime 0.7.3", + "toml_parser", + "winnow 0.7.13", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow 0.7.13", +] + +[[package]] +name = "tonic" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost 0.13.5", + "rustls-native-certs", + "socket2 0.5.10", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", + "webpki-roots 0.26.11", ] [[package]] @@ -6767,7 +7764,7 @@ dependencies = [ "percent-encoding", "pin-project", "rustls-native-certs", - "socket2", + "socket2 0.6.1", "sync_wrapper", "tokio", "tokio-rustls", @@ -6776,7 +7773,21 @@ dependencies = [ "tower-layer", "tower-service", "tracing", - "webpki-roots 1.0.2", + "webpki-roots 1.0.3", +] + +[[package]] +name = "tonic-build" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac6f67be712d12f0b41328db3137e0d0757645d8904b4cb7d51cd9c2279e847" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build 0.13.5", + "prost-types 0.13.5", + "quote", + "syn 2.0.107", ] [[package]] @@ -6788,7 +7799,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -6798,8 +7809,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" dependencies = [ "bytes", - "prost", - "tonic", + "prost 0.14.1", + "tonic 0.14.2", ] [[package]] @@ -6810,12 +7821,37 @@ checksum = "b4a16cba4043dc3ff43fcb3f96b4c5c154c64cbd18ca8dce2ab2c6a451d058a2" dependencies = [ "prettyplease", "proc-macro2", - "prost-build", - "prost-types", + "prost-build 0.14.1", + "prost-types 0.14.1", "quote", - "syn 2.0.104", + "syn 2.0.107", "tempfile", - "tonic-build", + "tonic-build 0.14.2", +] + +[[package]] +name = "tonic-web-wasm-client" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66e3bb7acca55e6790354be650f4042d418fcf8e2bc42ac382348f2b6bf057e5" +dependencies = [ + "base64 0.22.1", + "byteorder", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "httparse", + "js-sys", + "pin-project", + "thiserror 2.0.17", + "tonic 0.13.1", + "tower-service", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", ] [[package]] @@ -6834,8 +7870,8 @@ dependencies = [ "httparse", "js-sys", "pin-project", - "thiserror 2.0.14", - "tonic", + "thiserror 2.0.17", + "tonic 0.14.2", "tower-service", "wasm-bindgen", "wasm-bindgen-futures", @@ -6851,7 +7887,7 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.10.0", + "indexmap 2.12.0", "pin-project-lite", "slab", "sync_wrapper", @@ -6868,7 +7904,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "bytes", "futures-util", "http", @@ -6911,7 +7947,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -6937,14 +7973,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -6982,15 +8018,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "tz-rs" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1450bf2b99397e72070e7935c89facaa80092ac812502200375f1f7d33c71a1" +checksum = "14eff19b8dc1ace5bf7e4d920b2628ae3837f422ff42210cb1567cbf68b5accf" [[package]] name = "uds_windows" @@ -7020,9 +8056,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" [[package]] name = "unicode-normalization" @@ -7041,9 +8077,9 @@ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -7075,9 +8111,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "3.0.12" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f0fde9bc91026e381155f8c67cb354bcd35260b2f4a29bcc84639f762760c39" +checksum = "99ba1025f18a4a3fc3e9b48c868e9beb4f24f4b4b1a325bada26bd4119f46537" dependencies = [ "base64 0.22.1", "flate2", @@ -7088,14 +8124,14 @@ dependencies = [ "rustls-pki-types", "ureq-proto", "utf-8", - "webpki-roots 0.26.11", + "webpki-roots 1.0.3", ] [[package]] name = "ureq-proto" -version = "0.4.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59db78ad1923f2b1be62b6da81fe80b173605ca0d57f85da2e005382adf693f7" +checksum = "60b4531c118335662134346048ddb0e54cc86bd7e81866757873055f0e38f5d2" dependencies = [ "base64 0.22.1", "http", @@ -7105,9 +8141,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -7141,12 +8177,13 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.18.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", + "serde", "wasm-bindgen", ] @@ -7198,7 +8235,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80a7e511ce1795821207a837b7b1c8d8aca0c648810966ad200446ae58f6667f" dependencies = [ "itertools 0.14.0", - "nom", + "nom 8.0.0", ] [[package]] @@ -7221,8 +8258,26 @@ checksum = "fec4ebcc5594130c31b49594d55c0583fe80621f252f570b222ca4845cafd3cf" dependencies = [ "crypto-bigint", "elliptic-curve", - "elliptic-curve-tools", - "generic-array 1.2.0", + "elliptic-curve-tools 0.1.2", + "generic-array 1.3.4", + "hex", + "num", + "rand_core 0.6.4", + "serde", + "sha3", + "subtle", + "zeroize", +] + +[[package]] +name = "vsss-rs" +version = "5.1.0" +source = "git+https://github.com/dashpay/vsss-rs?branch=main#668f1406bf25a4b9a95cd97c9069f7a1632897c3" +dependencies = [ + "crypto-bigint", + "elliptic-curve", + "elliptic-curve-tools 0.2.0", + "generic-array 1.3.4", "hex", "num", "rand_core 0.6.4", @@ -7244,13 +8299,24 @@ dependencies = [ [[package]] name = "wallet-utils-contract" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" +dependencies = [ + "platform-value 2.0.1", + "platform-version 2.0.1", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "wallet-utils-contract" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ - "platform-value", - "platform-version", + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.17", ] [[package]] @@ -7269,45 +8335,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -7318,9 +8385,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7328,22 +8395,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] @@ -7369,7 +8436,7 @@ checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" dependencies = [ "cc", "downcast-rs", - "rustix 1.0.8", + "rustix 1.1.2", "scoped-tls", "smallvec", "wayland-sys", @@ -7381,8 +8448,8 @@ version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" dependencies = [ - "bitflags 2.9.1", - "rustix 1.0.8", + "bitflags 2.10.0", + "rustix 1.1.2", "wayland-backend", "wayland-scanner", ] @@ -7393,7 +8460,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "cursor-icon", "wayland-backend", ] @@ -7404,7 +8471,7 @@ version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" dependencies = [ - "rustix 1.0.8", + "rustix 1.1.2", "wayland-client", "xcursor", ] @@ -7415,7 +8482,7 @@ version = "0.32.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -7427,7 +8494,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7440,7 +8507,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7472,9 +8539,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -7492,16 +8559,16 @@ dependencies = [ [[package]] name = "webbrowser" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf4f3c0ba838e82b4e5ccc4157003fb8c324ee24c058470ffb82820becbde98" +checksum = "00f1243ef785213e3a32fa0396093424a3a6ea566f9948497e5a2309261a4c97" dependencies = [ "core-foundation 0.10.1", "jni", "log", "ndk-context", - "objc2 0.6.1", - "objc2-foundation 0.3.1", + "objc2 0.6.3", + "objc2-foundation 0.3.2", "url", "web-sys", ] @@ -7512,14 +8579,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.2", + "webpki-roots 1.0.3", ] [[package]] name = "webpki-roots" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ "rustls-pki-types", ] @@ -7532,9 +8599,9 @@ checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" [[package]] name = "wfd" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e713040b67aae5bf1a0ae3e1ebba8cc29ab2b90da9aa1bff6e09031a8a41d7a8" +checksum = "0c17bbfb155305bcb79144f568c3b796275ba4db5d5856597bc85acefe29b819" dependencies = [ "libc", "winapi", @@ -7547,12 +8614,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec8fb398f119472be4d80bc3647339f56eb63b2a331f6a3d16e25d8144197dd9" dependencies = [ "arrayvec", - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg_aliases", "document-features", "hashbrown 0.15.5", "js-sys", "log", + "naga", "parking_lot", "portable-atomic", "profiling", @@ -7560,6 +8628,7 @@ dependencies = [ "smallvec", "static_assertions", "wasm-bindgen", + "wasm-bindgen-futures", "web-sys", "wgpu-core", "wgpu-hal", @@ -7575,11 +8644,11 @@ dependencies = [ "arrayvec", "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg_aliases", "document-features", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.12.0", "log", "naga", "once_cell", @@ -7589,12 +8658,32 @@ dependencies = [ "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.14", + "thiserror 2.0.17", + "wgpu-core-deps-apple", + "wgpu-core-deps-emscripten", "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-types", ] +[[package]] +name = "wgpu-core-deps-apple" +version = "25.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd488b3239b6b7b185c3b045c39ca6bf8af34467a4c5de4e0b1a564135d093d" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "25.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f09ad7aceb3818e52539acc679f049d3475775586f3f4e311c30165cf2c00445" +dependencies = [ + "wgpu-hal", +] + [[package]] name = "wgpu-core-deps-windows-linux-android" version = "25.0.0" @@ -7610,17 +8699,45 @@ version = "25.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f968767fe4d3d33747bbd1473ccd55bf0f6451f55d733b5597e67b5deab4ad17" dependencies = [ - "bitflags 2.9.1", + "android_system_properties", + "arrayvec", + "ash", + "bit-set 0.8.0", + "bitflags 2.10.0", + "block", + "bytemuck", + "cfg-if", "cfg_aliases", + "core-graphics-types", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hashbrown 0.15.5", + "js-sys", + "khronos-egl", + "libc", "libloading", "log", + "metal", "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "ordered-float", "parking_lot", "portable-atomic", + "profiling", + "range-alloc", "raw-window-handle", "renderdoc-sys", - "thiserror 2.0.14", + "smallvec", + "thiserror 2.0.17", + "wasm-bindgen", + "web-sys", "wgpu-types", + "windows 0.58.0", + "windows-core 0.58.0", ] [[package]] @@ -7629,11 +8746,11 @@ version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2aa49460c2a8ee8edba3fca54325540d904dd85b2e086ada762767e17d06e8bc" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "bytemuck", "js-sys", "log", - "thiserror 2.0.14", + "thiserror 2.0.17", "web-sys", ] @@ -7645,7 +8762,7 @@ checksum = "24d643ce3fd3e5b54854602a080f34fb10ab75e0b813ee32d00ca2b44fa74762" dependencies = [ "either", "env_home", - "rustix 1.0.8", + "rustix 1.1.2", "winsafe", ] @@ -7656,7 +8773,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" dependencies = [ "env_home", - "rustix 1.0.8", + "rustix 1.1.2", "winsafe", ] @@ -7678,11 +8795,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -7691,6 +8808,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.61.3" @@ -7698,9 +8825,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core", + "windows-core 0.61.2", "windows-future", - "windows-link", + "windows-link 0.1.3", "windows-numerics", ] @@ -7710,7 +8837,20 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", ] [[package]] @@ -7719,11 +8859,24 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] @@ -7732,31 +8885,53 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", "windows-threading", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.107", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.107", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -7765,14 +8940,20 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", ] [[package]] @@ -7781,9 +8962,18 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -7792,7 +8982,26 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", ] [[package]] @@ -7801,7 +9010,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -7846,7 +9064,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.3", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -7897,19 +9124,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.3" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -7918,7 +9145,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -7941,9 +9168,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -7965,9 +9192,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -7989,9 +9216,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -8001,9 +9228,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -8025,9 +9252,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -8049,9 +9276,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -8073,9 +9300,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -8097,9 +9324,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" @@ -8110,7 +9337,7 @@ dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.9.1", + "bitflags 2.10.0", "block2 0.5.1", "bytemuck", "calloop", @@ -8164,9 +9391,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -8188,26 +9415,140 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "winter-air" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef01227f23c7c331710f43b877a8333f5f8d539631eea763600f1a74bf018c7c" +dependencies = [ + "libm", + "winter-crypto", + "winter-fri", + "winter-math", + "winter-utils", +] + +[[package]] +name = "winter-crypto" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb247bc142438798edb04067ab72a22cf815f57abbd7b78a6fa986fc101db8" +dependencies = [ + "blake3", + "sha3", + "winter-math", + "winter-utils", +] + +[[package]] +name = "winter-fri" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd592b943f9d65545683868aaf1b601eb66e52bfd67175347362efff09101d3a" +dependencies = [ + "winter-crypto", + "winter-math", + "winter-utils", +] + +[[package]] +name = "winter-math" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aecfb48ee6a8b4746392c8ff31e33e62df8528a3b5628c5af27b92b14aef1ea" +dependencies = [ + "winter-utils", +] + +[[package]] +name = "winter-maybe-async" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d31a19dae58475d019850e25b0170e94b16d382fbf6afee9c0e80fdc935e73e" +dependencies = [ + "quote", + "syn 2.0.107", +] + +[[package]] +name = "winter-prover" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84cc631ed56cd39b78ef932c1ec4060cc6a44d114474291216c32f56655b3048" +dependencies = [ + "tracing", + "winter-air", + "winter-crypto", + "winter-fri", + "winter-math", + "winter-maybe-async", + "winter-utils", +] + +[[package]] +name = "winter-utils" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9951263ef5317740cd0f49e618db00c72fabb70b75756ea26c4d5efe462c04dd" +dependencies = [ + "rayon", +] + +[[package]] +name = "winter-verifier" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0425ea81f8f703a1021810216da12003175c7974a584660856224df04b2e2fdb" +dependencies = [ + "winter-air", + "winter-crypto", + "winter-fri", + "winter-math", + "winter-utils", +] + +[[package]] +name = "winterfell" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f824ddd5aec8ca6a54307f20c115485a8a919ea94dd26d496d856ca6185f4f" +dependencies = [ + "winter-air", + "winter-prover", + "winter-verifier", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "withdrawals-contract" +version = "2.0.1" +source = "git+https://github.com/dashpay/platform?tag=v2.0.1#5f93c70720a1ea09f91c9142668e17f314986f03" dependencies = [ - "bitflags 2.9.1", + "num_enum 0.5.11", + "platform-value 2.0.1", + "platform-version 2.0.1", + "serde", + "serde_json", + "serde_repr", + "thiserror 2.0.17", ] [[package]] name = "withdrawals-contract" -version = "2.1.0-dev.8" -source = "git+https://github.com/dashpay/platform?rev=d6f9d9e74b885fbac27948bce6bae60b0cbd7135#d6f9d9e74b885fbac27948bce6bae60b0cbd7135" +version = "2.1.0-rc.1" +source = "git+https://www.github.com/dashpay/platform?rev=68f77c085643edb9a46afd4ff51c9d20b4ce2912#68f77c085643edb9a46afd4ff51c9d20b4ce2912" dependencies = [ "num_enum 0.5.11", - "platform-value", - "platform-version", + "platform-value 2.1.0-rc.1", + "platform-version 2.1.0-rc.1", "serde", "serde_json", "serde_repr", - "thiserror 2.0.14", + "thiserror 2.0.17", ] [[package]] @@ -8238,24 +9579,24 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", "libloading", "once_cell", - "rustix 0.38.44", + "rustix 1.1.2", "x11rb-protocol", ] [[package]] name = "x11rb-protocol" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" [[package]] name = "xcursor" @@ -8269,7 +9610,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "dlib", "log", "once_cell", @@ -8308,15 +9649,15 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "synstructure", ] [[package]] name = "zbus" -version = "5.9.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb4f9a464286d42851d18a605f7193b8febaf5b0919d71c6399b7b26e5b0aad" +checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91" dependencies = [ "async-broadcast", "async-executor", @@ -8338,8 +9679,9 @@ dependencies = [ "serde_repr", "tracing", "uds_windows", - "windows-sys 0.59.0", - "winnow 0.7.12", + "uuid", + "windows-sys 0.61.2", + "winnow 0.7.13", "zbus_macros", "zbus_names", "zvariant", @@ -8363,7 +9705,7 @@ checksum = "dc6821851fa840b708b4cbbaf6241868cabc85a2dc22f426361b0292bfc0b836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "zbus-lockstep", "zbus_xml", "zvariant", @@ -8371,14 +9713,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.9.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef9859f68ee0c4ee2e8cde84737c78e3f4c54f946f2a38645d0d4c7a95327659" +checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "zbus_names", "zvariant", "zvariant_utils", @@ -8392,7 +9734,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" dependencies = [ "serde", "static_assertions", - "winnow 0.7.12", + "winnow 0.7.13", "zvariant", ] @@ -8411,22 +9753,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -8446,15 +9788,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "serde", "zeroize_derive", @@ -8468,7 +9810,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", ] [[package]] @@ -8538,7 +9880,24 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", +] + +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.12.0", + "memchr", + "thiserror 2.0.17", + "zopfli", ] [[package]] @@ -8550,7 +9909,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.10.0", + "indexmap 2.12.0", "memchr", "zopfli", ] @@ -8595,46 +9954,70 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-jpeg" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +dependencies = [ + "zune-core", +] + [[package]] name = "zvariant" -version = "5.6.0" +version = "5.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f" +checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c" dependencies = [ "endi", "enumflags2", "serde", "url", - "winnow 0.7.12", + "winnow 0.7.13", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.6.0" +version = "5.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208" +checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.107", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599" dependencies = [ "proc-macro2", "quote", "serde", - "static_assertions", - "syn 2.0.104", - "winnow 0.7.12", + "syn 2.0.107", + "winnow 0.7.13", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index cb80ea5b6..765460965 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,9 @@ qrcode = "0.14.1" nix = { version = "0.30.1", features = ["signal"] } eframe = { version = "0.32.0", features = ["persistence"] } base64 = "0.22.1" -dash-sdk = { git = "https://github.com/dashpay/platform", features = ["core_key_wallet", "core_bincode", "core_quorum-validation", "core_verification", "core_rpc_client"], rev = "d6f9d9e74b885fbac27948bce6bae60b0cbd7135" } +dash-sdk = { git = "https://www.github.com/dashpay/platform", rev = "68f77c085643edb9a46afd4ff51c9d20b4ce2912", features = ["core_key_wallet", "core_bincode", "core_quorum-validation", "core_verification", "core_rpc_client"] } +grovestark = { path = "../grovestark" } +rayon = "1.8" thiserror = "2.0.12" serde = "1.0.219" serde_json = "1.0.140" @@ -37,6 +39,7 @@ envy = "0.4.2" chrono = "0.4.41" chrono-humanize = "0.2.3" sha2 = "0.10.9" +ed25519-dalek = "2.1" arboard = { version = "3.6.0", default-features = false, features = [ "windows-sys", ] } @@ -68,9 +71,11 @@ native-dialog = "0.9.0" raw-cpuid = "11.5.0" [dev-dependencies] - tempfile = { version = "3.20.0" } egui_kittest = { version = "0.32.0", features = ["eframe"] } [lints.clippy] uninlined_format_args = "allow" + +[patch.crates-io] +elliptic-curve-tools = { git = "https://github.com/mikelodder7/elliptic-curve-tools", rev = "c989865fa71503d2cbf5c5795c4ebcf4a2f3221c" } diff --git a/src/app.rs b/src/app.rs index 0608c3fb0..40e42d086 100644 --- a/src/app.rs +++ b/src/app.rs @@ -11,7 +11,7 @@ use crate::database::Database; use crate::logging::initialize_logger; use crate::model::settings::Settings; use crate::ui::contracts_documents::contracts_documents_screen::DocumentQueryScreen; -use crate::ui::contracts_documents::dashpay_coming_soon_screen::DashPayComingSoonScreen; +use crate::ui::contracts_documents::dashpay_coming_soon_screen::DashpayScreen; use crate::ui::dpns::dpns_contested_names_screen::{ DPNSScreen, DPNSSubscreen, ScheduledVoteCastingStatus, }; @@ -21,6 +21,7 @@ use crate::ui::theme::ThemeMode; use crate::ui::tokens::tokens_screen::{TokensScreen, TokensSubscreen}; use crate::ui::tools::contract_visualizer_screen::ContractVisualizerScreen; use crate::ui::tools::document_visualizer_screen::DocumentVisualizerScreen; +use crate::ui::tools::grovestark_screen::GroveSTARKScreen; use crate::ui::tools::masternode_list_diff_screen::MasternodeListDiffScreen; use crate::ui::tools::platform_info_screen::PlatformInfoScreen; use crate::ui::tools::proof_log_screen::ProofLogScreen; @@ -220,6 +221,7 @@ impl AppState { let mut contract_visualizer_screen = ContractVisualizerScreen::new(&mainnet_app_context); let mut proof_log_screen = ProofLogScreen::new(&mainnet_app_context); let mut platform_info_screen = PlatformInfoScreen::new(&mainnet_app_context); + let mut grovestark_screen = GroveSTARKScreen::new(&mainnet_app_context); let mut document_query_screen = DocumentQueryScreen::new(&mainnet_app_context); let mut tokens_balances_screen = TokensScreen::new(&mainnet_app_context, TokensSubscreen::MyTokens); @@ -227,7 +229,7 @@ impl AppState { TokensScreen::new(&mainnet_app_context, TokensSubscreen::SearchTokens); let mut token_creator_screen = TokensScreen::new(&mainnet_app_context, TokensSubscreen::TokenCreator); - let mut contracts_dashpay_screen = DashPayComingSoonScreen::new(&mainnet_app_context); + let mut contracts_dashpay_screen = DashpayScreen::new(&mainnet_app_context); let mut network_chooser_screen = NetworkChooserScreen::new( &mainnet_app_context, @@ -261,11 +263,12 @@ impl AppState { document_visualizer_screen = DocumentVisualizerScreen::new(testnet_app_context); contract_visualizer_screen = ContractVisualizerScreen::new(testnet_app_context); document_query_screen = DocumentQueryScreen::new(testnet_app_context); + grovestark_screen = GroveSTARKScreen::new(testnet_app_context); wallets_balances_screen = WalletsBalancesScreen::new(testnet_app_context); proof_log_screen = ProofLogScreen::new(testnet_app_context); platform_info_screen = PlatformInfoScreen::new(testnet_app_context); masternode_list_diff_screen = MasternodeListDiffScreen::new(testnet_app_context); - contracts_dashpay_screen = DashPayComingSoonScreen::new(testnet_app_context); + contracts_dashpay_screen = DashpayScreen::new(testnet_app_context); tokens_balances_screen = TokensScreen::new(testnet_app_context, TokensSubscreen::MyTokens); token_search_screen = @@ -288,6 +291,7 @@ impl AppState { document_query_screen = DocumentQueryScreen::new(devnet_app_context); masternode_list_diff_screen = MasternodeListDiffScreen::new(devnet_app_context); contract_visualizer_screen = ContractVisualizerScreen::new(devnet_app_context); + grovestark_screen = GroveSTARKScreen::new(devnet_app_context); wallets_balances_screen = WalletsBalancesScreen::new(devnet_app_context); proof_log_screen = ProofLogScreen::new(devnet_app_context); platform_info_screen = PlatformInfoScreen::new(devnet_app_context); @@ -311,11 +315,12 @@ impl AppState { document_visualizer_screen = DocumentVisualizerScreen::new(local_app_context); contract_visualizer_screen = ContractVisualizerScreen::new(local_app_context); document_query_screen = DocumentQueryScreen::new(local_app_context); + grovestark_screen = GroveSTARKScreen::new(local_app_context); wallets_balances_screen = WalletsBalancesScreen::new(local_app_context); masternode_list_diff_screen = MasternodeListDiffScreen::new(local_app_context); proof_log_screen = ProofLogScreen::new(local_app_context); platform_info_screen = PlatformInfoScreen::new(local_app_context); - contracts_dashpay_screen = DashPayComingSoonScreen::new(local_app_context); + contracts_dashpay_screen = DashpayScreen::new(local_app_context); tokens_balances_screen = TokensScreen::new(local_app_context, TokensSubscreen::MyTokens); token_search_screen = @@ -445,13 +450,17 @@ impl AppState { RootScreenType::RootScreenToolsPlatformInfoScreen, Screen::PlatformInfoScreen(platform_info_screen), ), + ( + RootScreenType::RootScreenToolsGroveSTARKScreen, + Screen::GroveSTARKScreen(grovestark_screen), + ), ( RootScreenType::RootScreenDocumentQuery, Screen::DocumentQueryScreen(document_query_screen), ), ( - RootScreenType::RootScreenContractsDashPay, - Screen::DashPayComingSoonScreen(contracts_dashpay_screen), + RootScreenType::RootScreenDashpay, + Screen::DashpayScreen(contracts_dashpay_screen), ), ( RootScreenType::RootScreenNetworkChooser, diff --git a/src/backend_task/grovestark.rs b/src/backend_task/grovestark.rs new file mode 100644 index 000000000..3a2487ee0 --- /dev/null +++ b/src/backend_task/grovestark.rs @@ -0,0 +1,65 @@ +use crate::backend_task::BackendTaskSuccessResult; +use crate::model::grovestark_prover::{GroveSTARKProver, ProofDataOutput}; +use dash_sdk::Sdk; + +pub async fn run_grovestark_task( + task: GroveSTARKTask, + sdk: &Sdk, +) -> Result { + match task { + GroveSTARKTask::GenerateProof { + identity_id, + contract_id, + document_type, + document_id, + key_id, + private_key, + public_key, + } => { + let prover = GroveSTARKProver::new(); + + match prover + .generate_proof( + sdk, + &identity_id, + &contract_id, + &document_type, + &document_id, + key_id, + &private_key, + &public_key, + ) + .await + { + Ok(proof_data) => Ok(BackendTaskSuccessResult::GeneratedZKProof(proof_data)), + Err(e) => Err(format!("Failed to generate proof: {}", e)), + } + } + GroveSTARKTask::VerifyProof { proof_data } => { + let prover = GroveSTARKProver::new(); + + match prover.verify_proof(&proof_data) { + Ok(is_valid) => Ok(BackendTaskSuccessResult::VerifiedZKProof( + is_valid, proof_data, + )), + Err(e) => Err(format!("Failed to verify proof: {}", e)), + } + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum GroveSTARKTask { + GenerateProof { + identity_id: String, + contract_id: String, + document_type: String, + document_id: String, + key_id: u32, + private_key: [u8; 32], + public_key: [u8; 32], + }, + VerifyProof { + proof_data: ProofDataOutput, + }, +} diff --git a/src/backend_task/mod.rs b/src/backend_task/mod.rs index 773dcfbe3..32b801e36 100644 --- a/src/backend_task/mod.rs +++ b/src/backend_task/mod.rs @@ -7,17 +7,23 @@ use crate::backend_task::identity::IdentityTask; use crate::backend_task::platform_info::{PlatformInfoTaskRequestType, PlatformInfoTaskResult}; use crate::backend_task::system_task::SystemTask; use crate::context::AppContext; +use dash_sdk::dpp::dashcore::bls_sig_utils::BLSSignature; +use dash_sdk::dpp::dashcore::network::message_qrinfo::QRInfo; +use dash_sdk::dpp::dashcore::BlockHash; use crate::model::qualified_identity::QualifiedIdentity; +use crate::model::grovestark_prover::ProofDataOutput; use crate::ui::tokens::tokens_screen::{ ContractDescriptionInfo, IdentityTokenIdentifier, TokenInfo, }; use crate::utils::egui_mpsc::SenderAsync; use contested_names::ScheduledDPNSVote; use dash_sdk::dpp::balances::credits::TokenAmount; +use dash_sdk::dpp::dashcore::network::message_sml::MnListDiff; use dash_sdk::dpp::data_contract::associated_token::token_perpetual_distribution::distribution_function::evaluate_interval::IntervalEvaluationExplanation; use dash_sdk::dpp::group::group_action::GroupAction; use dash_sdk::dpp::prelude::DataContract; use dash_sdk::dpp::state_transition::StateTransition; +use dash_sdk::dpp::tokens::token_pricing_schedule::TokenPricingSchedule; use dash_sdk::dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice; use dash_sdk::dpp::voting::votes::Vote; use dash_sdk::platform::proto::get_documents_request::get_documents_request_v0::Start; @@ -27,12 +33,14 @@ use futures::future::join_all; use std::collections::BTreeMap; use std::sync::Arc; use tokens::TokenTask; +use grovestark::GroveSTARKTask; pub mod broadcast_state_transition; pub mod contested_names; pub mod contract; pub mod core; pub mod document; +pub mod grovestark; pub mod identity; pub mod mnlist; pub mod platform_info; @@ -56,6 +64,7 @@ pub enum BackendTask { SystemTask(SystemTask), MnListTask(mnlist::MnListTask), PlatformInfo(PlatformInfoTaskRequestType), + GroveSTARKTask(GroveSTARKTask), None, } @@ -97,30 +106,26 @@ pub enum BackendTaskSuccessResult { ActiveGroupActions(IndexMap), TokenPricing { token_id: Identifier, - prices: Option, + prices: Option, }, UpdatedThemePreference(crate::ui::theme::ThemeMode), PlatformInfo(PlatformInfoTaskResult), + GeneratedZKProof(ProofDataOutput), + VerifiedZKProof(bool, ProofDataOutput), // MNList-specific results MnListFetchedDiff { base_height: u32, height: u32, - diff: dash_sdk::dpp::dashcore::network::message_sml::MnListDiff, + diff: MnListDiff, }, MnListFetchedQrInfo { - qr_info: dash_sdk::dpp::dashcore::network::message_qrinfo::QRInfo, + qr_info: QRInfo, }, MnListChainLockSigs { - entries: Vec<( - (u32, dash_sdk::dpp::dashcore::BlockHash), - Option, - )>, + entries: Vec<((u32, BlockHash), Option)>, }, MnListFetchedDiffs { - items: Vec<( - (u32, u32), - dash_sdk::dpp::dashcore::network::message_sml::MnListDiff, - )>, + items: Vec<((u32, u32), MnListDiff)>, }, } @@ -200,6 +205,9 @@ impl AppContext { BackendTask::PlatformInfo(platform_info_task) => { self.run_platform_info_task(platform_info_task).await } + BackendTask::GroveSTARKTask(grovestark_task) => { + grovestark::run_grovestark_task(grovestark_task, &sdk).await + } BackendTask::None => Ok(BackendTaskSuccessResult::None), } } diff --git a/src/context.rs b/src/context.rs index e8132edac..dc0d35288 100644 --- a/src/context.rs +++ b/src/context.rs @@ -156,7 +156,9 @@ impl AppContext { .map(|w| (w.seed_hash(), Arc::new(RwLock::new(w)))) .collect(); - let animate = match config.developer_mode.unwrap_or(false) { + let developer_mode_enabled = config.developer_mode.unwrap_or(false); + + let animate = match developer_mode_enabled { true => { tracing::debug!("developer_mode is enabled, disabling animations"); AtomicBool::new(false) @@ -166,7 +168,7 @@ impl AppContext { let app_context = AppContext { network, - developer_mode: AtomicBool::new(config.developer_mode.unwrap_or(false)), + developer_mode: AtomicBool::new(developer_mode_enabled), devnet_name: None, db, sdk: sdk.into(), diff --git a/src/model/grovestark_prover.rs b/src/model/grovestark_prover.rs new file mode 100644 index 000000000..7ce95a826 --- /dev/null +++ b/src/model/grovestark_prover.rs @@ -0,0 +1,530 @@ +use dash_sdk::Sdk; +use dash_sdk::dpp::document::DocumentV0Getters; +use dash_sdk::dpp::identifier::Identifier; +use dash_sdk::dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; +use dash_sdk::dpp::identity::{KeyID, KeyType}; +use dash_sdk::dpp::platform_value::string_encoding::Encoding; +use dash_sdk::platform::documents::document_query::DocumentQuery; +use dash_sdk::platform::{ + Document, DriveDocumentQuery, Fetch, FetchMany, IdentityKeysQuery, IdentityPublicKey, +}; +use ed25519_dalek::{Signer, SigningKey}; +use grovestark::{ + GroveSTARK, PublicInputs, STARKConfig, STARKProof, create_witness_from_platform_proofs, +}; +use serde::{Deserialize, Serialize}; +use std::time::Instant; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ProofDataOutput { + pub proof: Vec, // Serialized STARK proof + pub public_inputs: PublicInputsData, + pub metadata: ProofMetadata, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct PublicInputsData { + pub state_root: [u8; 32], + pub contract_id: [u8; 32], + pub message_hash: [u8; 32], + pub timestamp: u64, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ProofMetadata { + pub created_at: u64, + pub proof_size: usize, + pub generation_time_ms: u64, + pub security_level: u32, +} + +pub struct GroveSTARKProver { + prover: GroveSTARK, +} + +impl Default for GroveSTARKProver { + fn default() -> Self { + Self::new() + } +} + +impl GroveSTARKProver { + pub fn new() -> Self { + // Use GroveSTARK's default config + let config = STARKConfig::default(); + + Self { + prover: GroveSTARK::with_config(config), + } + } + + /// Generate a proof for document ownership + #[allow(clippy::too_many_arguments)] + pub async fn generate_proof( + &self, + sdk: &Sdk, + identity_id: &str, + contract_id: &str, + document_type: &str, + document_id: &str, + key_id: u32, + private_key: &[u8; 32], + public_key: &[u8; 32], + ) -> Result { + if cfg!(debug_assertions) { + return Err(GroveSTARKError::UnsupportedBuild( + "GroveSTARK proof generation requires a release build (cargo run --release)" + .to_string(), + )); + } + + let start_time = Instant::now(); + + tracing::info!("Starting ZK proof generation"); + tracing::info!("Identity ID: {}", identity_id); + tracing::info!("Contract ID: {}", contract_id); + tracing::info!("Document Type: {}", document_type); + tracing::info!("Document ID: {}", document_id); + + // Step 1: Parse identifiers + tracing::debug!("Parsing identifiers..."); + let identity_identifier = + Identifier::from_string(identity_id, Encoding::Base58).map_err(|e| { + tracing::error!("Failed to parse identity ID: {}", e); + GroveSTARKError::InvalidIdentityId(e.to_string()) + })?; + let contract_identifier = Identifier::from_string(contract_id, Encoding::Base58) + .map_err(|e| GroveSTARKError::InvalidContractId(e.to_string()))?; + + // Step 2: Fetch specific key with proof using new SDK API + tracing::info!("Fetching specific key {} with proof...", key_id); + + // Create a query for the specific key + let specific_key_ids: Vec = vec![key_id]; + let keys_query = IdentityKeysQuery::new(identity_identifier, specific_key_ids); + + // Fetch only the specified key with proof + let (specific_keys, _metadata, key_proof) = + IdentityPublicKey::fetch_many_with_metadata_and_proof(sdk, keys_query, None) + .await + .map_err(|e| { + tracing::error!("Failed to fetch key with proof: {}", e); + GroveSTARKError::Platform(e.to_string()) + })?; + + // Verify the key exists in the identity + let identity_key = specific_keys + .get(&key_id) + .and_then(|maybe_key| maybe_key.as_ref()) + .ok_or_else(|| { + tracing::error!("Key {} not found for identity", key_id); + GroveSTARKError::PrivateKeyNotAvailable + })?; + + // Verify it's an EdDSA key + if identity_key.key_type() != KeyType::EDDSA_25519_HASH160 { + return Err(GroveSTARKError::InvalidProof( + "Key is not EdDSA type required for ZK proofs".to_string(), + )); + } + + // Use the public key passed from the UI (derived from private key) + let public_key_bytes = *public_key; + + // 3. KEY PROOF (Raw bytes) + tracing::info!("=== 3. KEY PROOF (Raw bytes) ==="); + tracing::info!("Key proof size: {} bytes", key_proof.grovedb_proof.len()); + tracing::info!("Key proof hex: {}", hex::encode(&key_proof.grovedb_proof)); + + // Additional key details + tracing::info!("Key ID: {}", key_id); + tracing::info!("Key type: {:?}", identity_key.key_type()); + tracing::info!("Key purpose: {:?}", identity_key.purpose()); + tracing::info!( + "Identity key data (hash160): {} bytes - {}", + identity_key.data().len(), + hex::encode(identity_key.data().to_vec()) + ); + + // Step 3: Fetch contract and create DocumentQuery + tracing::info!("Fetching contract..."); + let contract = dash_sdk::platform::DataContract::fetch(sdk, contract_identifier) + .await + .map_err(|e| { + tracing::error!("Failed to fetch contract: {}", e); + GroveSTARKError::Platform(e.to_string()) + })? + .ok_or_else(|| { + tracing::error!("Contract not found for ID: {}", contract_id); + GroveSTARKError::InvalidContractId("Contract not found".to_string()) + })?; + + let document_id_identifier = Identifier::from_string( + document_id, + dash_sdk::dpp::platform_value::string_encoding::Encoding::Base58, + ) + .map_err(|e| GroveSTARKError::Platform(e.to_string()))?; + + let query = DocumentQuery::new(contract, document_type) + .map_err(|e| GroveSTARKError::Platform(e.to_string()))? + .with_document_id(&document_id_identifier); + + tracing::info!("Fetching document with proof..."); + let (document_opt, _metadata, proof) = + Document::fetch_with_metadata_and_proof(sdk, query.clone(), None) + .await + .map_err(|e| { + tracing::error!("Failed to fetch document with proof: {}", e); + GroveSTARKError::Platform(e.to_string()) + })?; + + let document = document_opt.ok_or_else(|| { + tracing::error!("Document not found for ID: {}", document_id); + GroveSTARKError::DocumentNotFound + })?; + + // COMPREHENSIVE LOGGING FOR DEBUGGING + + // 1. REAL DOCUMENT (JSON format) + tracing::info!("=== 1. REAL DOCUMENT (JSON FORMAT) ==="); + if let Ok(json_value) = serde_json::to_value(&document) { + let json_pretty = serde_json::to_string_pretty(&json_value).unwrap_or_default(); + tracing::info!( + "Full JSON document as returned by Platform:\n{}", + json_pretty + ); + + // Also log specific fields we care about + if let Some(owner_id_value) = json_value.get("$ownerId") { + tracing::info!("$ownerId field in document: {}", owner_id_value); + } + if let Some(id_value) = json_value.get("$id") { + tracing::info!("$id field in document: {}", id_value); + } + if let Some(revision_value) = json_value.get("$revision") { + tracing::info!("$revision field in document: {}", revision_value); + } + } + + // For witness creation, we need proper serialization + let document_cbor = serde_json::to_vec(&document).map_err(|e| { + GroveSTARKError::SerializationError(format!("Failed to encode document: {}", e)) + })?; + + // 5. EXPECTED VALUES FOR VERIFICATION + let document_owner_id = document.owner_id(); + tracing::info!("=== 5. EXPECTED VALUES FOR VERIFICATION ==="); + tracing::info!( + "Document owner_id (base58): {}", + document_owner_id + .to_string(dash_sdk::dpp::platform_value::string_encoding::Encoding::Base58) + ); + tracing::info!( + "Document owner_id (hex): {}", + hex::encode(document_owner_id.to_buffer()) + ); + tracing::info!( + "Document owner_id (raw bytes): {:?}", + document_owner_id.to_buffer() + ); + + tracing::info!( + "Identity_id we're proving for (base58): {}", + identity_identifier + .to_string(dash_sdk::dpp::platform_value::string_encoding::Encoding::Base58) + ); + tracing::info!( + "Identity_id we're proving for (hex): {}", + hex::encode(identity_identifier.to_buffer()) + ); + tracing::info!( + "Identity_id we're proving for (raw bytes): {:?}", + identity_identifier.to_buffer() + ); + + // Ownership verification status + if document_owner_id == identity_identifier { + tracing::info!( + "✅ OWNER MATCH: Document owner matches proving identity - proof should succeed" + ); + } else { + tracing::warn!( + "⚠️ OWNER MISMATCH: Document owner does NOT match proving identity - proof should fail!" + ); + } + + // 2. DOCUMENT PROOF (Raw bytes) + tracing::info!("=== 2. DOCUMENT PROOF (Raw bytes) ==="); + tracing::info!("Document proof size: {} bytes", proof.grovedb_proof.len()); + tracing::info!("Document proof hex: {}", hex::encode(&proof.grovedb_proof)); + + // Step 4: Get current state root by verifying document proof + let drive_document_query: DriveDocumentQuery = (&query) + .try_into() + .map_err(|e: dash_sdk::error::Error| GroveSTARKError::Platform(e.to_string()))?; + let (state_root, _documents) = drive_document_query + .verify_proof(&proof.grovedb_proof, sdk.version()) + .map_err(|e| { + tracing::error!("Failed to verify document proof: {}", e); + GroveSTARKError::InvalidProof(e.to_string()) + })?; + + tracing::info!( + "Document proof root hash (hex): {}", + hex::encode(state_root) + ); + tracing::info!("Document proof root hash (raw bytes): {:?}", state_root); + + // Step 5: Create signing challenge + let challenge = create_challenge(&state_root, contract_id, document_id); + + // Step 6: Sign the challenge with Ed25519 (we don't use this signature in the new approach) + // The witness creation will handle the signing internally + + // Step 7: Log proof information + tracing::info!( + "Using separate proofs - key: {} bytes, document: {} bytes", + key_proof.grovedb_proof.len(), + proof.grovedb_proof.len() + ); + + // 6. OPTIONAL BUT HELPFUL + tracing::info!("=== 6. OPTIONAL BUT HELPFUL ==="); + tracing::info!("Contract ID (base58): {}", contract_id); + tracing::info!( + "Contract ID (hex): {}", + hex::encode(contract_identifier.to_buffer()) + ); + tracing::info!("Document Type: {}", document_type); + tracing::info!("Document ID (base58): {}", document_id); + tracing::info!( + "Document ID (hex): {}", + hex::encode(document_id_identifier.to_buffer()) + ); + tracing::info!("State root (hex): {}", hex::encode(state_root)); + tracing::info!("State root (raw bytes): {:?}", state_root); + + // Document CBOR details + tracing::info!("Document CBOR size: {} bytes", document_cbor.len()); + if document_cbor.len() <= 500 { + tracing::info!("Document CBOR (hex): {}", hex::encode(&document_cbor)); + } else { + tracing::info!( + "Document CBOR (first 500 bytes hex): {}", + hex::encode(&document_cbor[..500]) + ); + } + + // 4. EdDSA SIGNATURE COMPONENTS + tracing::info!("=== 4. EdDSA SIGNATURE COMPONENTS ==="); + + // Sign the challenge message + let signing_key = SigningKey::from_bytes(private_key); + let signature = signing_key.sign(&challenge); + let sig_bytes = signature.to_bytes(); + let mut signature_r = [0u8; 32]; + let mut signature_s = [0u8; 32]; + signature_r.copy_from_slice(&sig_bytes[0..32]); + signature_s.copy_from_slice(&sig_bytes[32..64]); + + tracing::info!("Signature R (hex): {}", hex::encode(signature_r)); + tracing::info!("Signature R (raw bytes): {:?}", signature_r); + tracing::info!("Signature S (hex): {}", hex::encode(signature_s)); + tracing::info!("Signature S (raw bytes): {:?}", signature_s); + tracing::info!("Public key (hex): {}", hex::encode(public_key_bytes)); + tracing::info!("Public key (raw bytes): {:?}", public_key_bytes); + tracing::info!("Message/Challenge (hex): {}", hex::encode(challenge)); + tracing::info!("Message/Challenge (raw bytes): {:?}", challenge); + + // Step 8: Use GroveSTARK's new platform proofs V2 API + tracing::info!("Creating witness with GroveSTARK platform proofs V2..."); + + let witness = create_witness_from_platform_proofs( + &proof.grovedb_proof, // Raw document proof from SDK + &key_proof.grovedb_proof, // Raw key proof from SDK + document_cbor.clone(), // Use the proper CBOR we created above + &public_key_bytes, // Public key bytes + &signature_r, // Signature R component + &signature_s, // Signature s component + &challenge, // Message to sign + ) + .map_err(|e| { + tracing::error!("GroveSTARK witness creation failed: {:?}", e); + GroveSTARKError::ProofGenerationFailed(format!( + "GroveSTARK witness creation failed: {:?}", + e + )) + })?; + + tracing::info!("Witness created successfully"); + + // Step 8: Prepare public inputs + let public_inputs = PublicInputs { + state_root, + contract_id: contract_identifier.to_buffer(), + message_hash: challenge, + timestamp: std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .map_err(|e| GroveSTARKError::TimeError(e.to_string()))? + .as_secs(), + }; + + // Step 9: Generate the STARK proof + tracing::info!("Generating STARK proof (this normally takes around 10 seconds)..."); + eprintln!("Rayon thread pool size: {}", rayon::current_num_threads()); + let proof = self + .prover + .prove(witness, public_inputs.clone()) + .map_err(|e| { + tracing::error!("STARK proof generation failed: {}", e); + GroveSTARKError::ProofGenerationFailed(e.to_string()) + })?; + + tracing::info!("STARK proof generated successfully"); + + // Step 10: Serialize the proof + let serialized_proof = serde_json::to_vec(&proof) + .map_err(|e| GroveSTARKError::SerializationError(e.to_string()))?; + + let generation_time = start_time.elapsed(); + tracing::info!( + "Total proof generation time: {:.2}s", + generation_time.as_secs_f32() + ); + + Ok(ProofDataOutput { + proof: serialized_proof.clone(), + public_inputs: PublicInputsData { + state_root: public_inputs.state_root, + contract_id: public_inputs.contract_id, + message_hash: public_inputs.message_hash, + timestamp: public_inputs.timestamp, + }, + metadata: ProofMetadata { + created_at: public_inputs.timestamp, + proof_size: serialized_proof.len(), + generation_time_ms: generation_time.as_millis() as u64, + security_level: 128, // Default security level + }, + }) + } + + /// Verify a proof + pub fn verify_proof(&self, proof_data: &ProofDataOutput) -> Result { + if cfg!(debug_assertions) { + tracing::warn!("GroveSTARK proof verification attempted in debug build; aborting"); + return Err(GroveSTARKError::UnsupportedBuild( + "GroveSTARK proof verification requires a release build (cargo run --release)" + .to_string(), + )); + } + + // Step 1: Deserialize the proof + let stark_proof: STARKProof = serde_json::from_slice(&proof_data.proof) + .map_err(|e| GroveSTARKError::DeserializationError(e.to_string()))?; + + // Step 2: Reconstruct public inputs + let public_inputs = PublicInputs { + state_root: proof_data.public_inputs.state_root, + contract_id: proof_data.public_inputs.contract_id, + message_hash: proof_data.public_inputs.message_hash, + timestamp: proof_data.public_inputs.timestamp, + }; + + // Step 3: Verify the proof using GroveSTARK's verify method + self.prover + .verify(&stark_proof, &public_inputs) + .map_err(|e| GroveSTARKError::VerificationFailed(e.to_string())) + } +} + +impl ProofDataOutput { + /// Serialize the proof to JSON string + pub fn to_json_string(&self) -> Result { + serde_json::to_string(self).map_err(|e| GroveSTARKError::SerializationError(e.to_string())) + } + + /// Serialize the proof to base64-encoded JSON + pub fn to_base64(&self) -> Result { + use base64::{Engine as _, engine::general_purpose}; + let json_bytes = serde_json::to_vec(self) + .map_err(|e| GroveSTARKError::SerializationError(e.to_string()))?; + Ok(general_purpose::STANDARD.encode(json_bytes)) + } + + /// Deserialize from base64-encoded JSON + pub fn from_base64(base64_str: &str) -> Result { + use base64::{Engine as _, engine::general_purpose}; + let bytes = general_purpose::STANDARD.decode(base64_str).map_err(|e| { + GroveSTARKError::DeserializationError(format!("Base64 decode error: {}", e)) + })?; + serde_json::from_slice(&bytes) + .map_err(|e| GroveSTARKError::DeserializationError(e.to_string())) + } + + /// Deserialize from JSON string + pub fn from_json_string(json_str: &str) -> Result { + serde_json::from_str(json_str) + .map_err(|e| GroveSTARKError::DeserializationError(e.to_string())) + } +} + +/// Create a challenge message for signing +fn create_challenge(state_root: &[u8; 32], contract_id: &str, document_id: &str) -> [u8; 32] { + use sha2::{Digest, Sha256}; + + let mut hasher = Sha256::new(); + hasher.update(state_root); + hasher.update(contract_id.as_bytes()); + hasher.update(document_id.as_bytes()); + + let result = hasher.finalize(); + let mut hash = [0u8; 32]; + hash.copy_from_slice(&result); + hash +} + +#[derive(Debug, thiserror::Error)] +pub enum GroveSTARKError { + #[error("Platform error: {0}")] + Platform(String), + + #[error("Invalid identity ID: {0}")] + InvalidIdentityId(String), + + #[error("Invalid contract ID: {0}")] + InvalidContractId(String), + + #[error("Identity not found")] + IdentityNotFound, + + #[error("Document not found")] + DocumentNotFound, + + #[error("Private key not available")] + PrivateKeyNotAvailable, + + #[error("Proof generation failed: {0}")] + ProofGenerationFailed(String), + + #[error("Proof verification failed: {0}")] + VerificationFailed(String), + + #[error("Serialization error: {0}")] + SerializationError(String), + + #[error("Deserialization error: {0}")] + DeserializationError(String), + + #[error("Signing failed: {0}")] + SigningFailed(String), + + #[error("Invalid proof: {0}")] + InvalidProof(String), + + #[error("Time error: {0}")] + TimeError(String), + + #[error("{0}")] + UnsupportedBuild(String), +} diff --git a/src/model/mod.rs b/src/model/mod.rs index b04309945..ef4ce0794 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -1,5 +1,6 @@ pub mod amount; pub mod contested_name; +pub mod grovestark_prover; pub mod password_info; pub mod proof_log_item; pub mod qualified_contract; diff --git a/src/model/wallet/encryption.rs b/src/model/wallet/encryption.rs index 0630945be..6a75a7ca0 100644 --- a/src/model/wallet/encryption.rs +++ b/src/model/wallet/encryption.rs @@ -1,5 +1,5 @@ use aes_gcm::aead::Aead; -use aes_gcm::{Aes256Gcm, KeyInit, Nonce}; +use aes_gcm::{Aes256Gcm, KeyInit}; use argon2::{self, Argon2}; use bip39::rand::{RngCore, rngs::OsRng}; @@ -50,7 +50,7 @@ pub fn encrypt_message( // Encrypt the seed let encrypted_seed = cipher - .encrypt(Nonce::from_slice(&nonce), message) + .encrypt(nonce.as_slice().into(), message) .map_err(|e| e.to_string())?; Ok((encrypted_seed, salt, nonce)) @@ -85,10 +85,7 @@ impl ClosedKeyItem { // Decrypt the seed let seed = cipher - .decrypt( - Nonce::from_slice(&self.nonce), - self.encrypted_seed.as_slice(), - ) + .decrypt(self.nonce.as_slice().into(), self.encrypted_seed.as_slice()) .map_err(|e| e.to_string())?; let sized_seed = seed.try_into().map_err(|e: Vec| { diff --git a/src/ui/components/contracts_subscreen_chooser_panel.rs b/src/ui/components/contracts_subscreen_chooser_panel.rs index 9921bc191..8b6768932 100644 --- a/src/ui/components/contracts_subscreen_chooser_panel.rs +++ b/src/ui/components/contracts_subscreen_chooser_panel.rs @@ -8,7 +8,7 @@ use egui::{Context, Frame, Margin, RichText, SidePanel}; pub enum ContractsSubscreen { Contracts, DPNS, - DashPay, + Dashpay, } impl ContractsSubscreen { @@ -16,7 +16,7 @@ impl ContractsSubscreen { match self { ContractsSubscreen::Contracts => "All Contracts", ContractsSubscreen::DPNS => "DPNS", - ContractsSubscreen::DashPay => "DashPay", + ContractsSubscreen::Dashpay => "Dashpay", } } } @@ -27,7 +27,7 @@ pub fn add_contracts_subscreen_chooser_panel(ctx: &Context, app_context: &AppCon let subscreens = vec![ ContractsSubscreen::Contracts, ContractsSubscreen::DPNS, - ContractsSubscreen::DashPay, + ContractsSubscreen::Dashpay, ]; // Determine active selection from settings; default to Contracts @@ -38,7 +38,7 @@ pub fn add_contracts_subscreen_chooser_panel(ctx: &Context, app_context: &AppCon | ui::RootScreenType::RootScreenDPNSPastContests | ui::RootScreenType::RootScreenDPNSOwnedNames | ui::RootScreenType::RootScreenDPNSScheduledVotes => ContractsSubscreen::DPNS, - ui::RootScreenType::RootScreenContractsDashPay => ContractsSubscreen::DashPay, + ui::RootScreenType::RootScreenDashpay => ContractsSubscreen::Dashpay, _ => ContractsSubscreen::Contracts, }, _ => ContractsSubscreen::Contracts, @@ -110,9 +110,9 @@ pub fn add_contracts_subscreen_chooser_panel(ctx: &Context, app_context: &AppCon RootScreenType::RootScreenDPNSActiveContests, ) } - ContractsSubscreen::DashPay => { + ContractsSubscreen::Dashpay => { AppAction::SetMainScreenThenGoToMainScreen( - RootScreenType::RootScreenContractsDashPay, + RootScreenType::RootScreenDashpay, ) } }; diff --git a/src/ui/components/tools_subscreen_chooser_panel.rs b/src/ui/components/tools_subscreen_chooser_panel.rs index 79aa2f9f5..05a9db9b6 100644 --- a/src/ui/components/tools_subscreen_chooser_panel.rs +++ b/src/ui/components/tools_subscreen_chooser_panel.rs @@ -12,6 +12,7 @@ pub enum ToolsSubscreen { DocumentViewer, ProofViewer, ContractViewer, + GroveSTARK, MasternodeListDiff, } @@ -24,6 +25,7 @@ impl ToolsSubscreen { Self::ProofViewer => "Proof deserializer", Self::DocumentViewer => "Document deserializer", Self::ContractViewer => "Contract deserializer", + Self::GroveSTARK => "ZK Proofs", Self::MasternodeListDiff => "Masternode list diff inspector", } } @@ -40,6 +42,7 @@ pub fn add_tools_subscreen_chooser_panel(ctx: &Context, app_context: &AppContext ToolsSubscreen::TransactionViewer, ToolsSubscreen::DocumentViewer, ToolsSubscreen::ContractViewer, + ToolsSubscreen::GroveSTARK, ToolsSubscreen::MasternodeListDiff, ]; @@ -60,6 +63,7 @@ pub fn add_tools_subscreen_chooser_panel(ctx: &Context, app_context: &AppContext ui::RootScreenType::RootScreenToolsMasternodeListDiffScreen => { ToolsSubscreen::MasternodeListDiff } + ui::RootScreenType::RootScreenToolsGroveSTARKScreen => ToolsSubscreen::GroveSTARK, _ => ToolsSubscreen::PlatformInfo, }, _ => ToolsSubscreen::PlatformInfo, // Fallback to Active screen if settings unavailable @@ -154,12 +158,16 @@ pub fn add_tools_subscreen_chooser_panel(ctx: &Context, app_context: &AppContext action = AppAction::SetMainScreen( RootScreenType::RootScreenToolsMasternodeListDiffScreen) } + ToolsSubscreen::GroveSTARK => { + action = AppAction::SetMainScreen( + RootScreenType::RootScreenToolsGroveSTARKScreen) + } } } ui.add_space(Spacing::SM); } }); - }); // Close the island frame + }); }); action diff --git a/src/ui/contracts_documents/contracts_documents_screen.rs b/src/ui/contracts_documents/contracts_documents_screen.rs index 14cfcd51e..f293b8621 100644 --- a/src/ui/contracts_documents/contracts_documents_screen.rs +++ b/src/ui/contracts_documents/contracts_documents_screen.rs @@ -685,7 +685,7 @@ impl ScreenLike for DocumentQueryScreen { RootScreenType::RootScreenDocumentQuery, ); - // Contracts sub-left panel: DPNS / DashPay / Contracts (default) + // Contracts sub-left panel: DPNS / Dashpay / Contracts (default) action |= crate::ui::components::contracts_subscreen_chooser_panel::add_contracts_subscreen_chooser_panel( ctx, &self.app_context, diff --git a/src/ui/contracts_documents/dashpay_coming_soon_screen.rs b/src/ui/contracts_documents/dashpay_coming_soon_screen.rs index 80b786b82..d561ede58 100644 --- a/src/ui/contracts_documents/dashpay_coming_soon_screen.rs +++ b/src/ui/contracts_documents/dashpay_coming_soon_screen.rs @@ -9,11 +9,11 @@ use crate::ui::components::styled::island_central_panel; use crate::ui::components::top_panel::add_top_panel; use crate::ui::{RootScreenType, ScreenLike}; -pub struct DashPayComingSoonScreen { +pub struct DashpayScreen { pub app_context: Arc, } -impl DashPayComingSoonScreen { +impl DashpayScreen { pub fn new(app_context: &Arc) -> Self { Self { app_context: app_context.clone(), @@ -21,14 +21,14 @@ impl DashPayComingSoonScreen { } } -impl ScreenLike for DashPayComingSoonScreen { +impl ScreenLike for DashpayScreen { fn ui(&mut self, ctx: &Context) -> AppAction { let mut action = add_top_panel( ctx, &self.app_context, vec![ ("Contracts", AppAction::GoToMainScreen), - ("DashPay", AppAction::None), + ("Dashpay", AppAction::None), ], vec![], ); diff --git a/src/ui/dpns/dpns_contested_names_screen.rs b/src/ui/dpns/dpns_contested_names_screen.rs index 8d57232c3..0a6d66804 100644 --- a/src/ui/dpns/dpns_contested_names_screen.rs +++ b/src/ui/dpns/dpns_contested_names_screen.rs @@ -2018,7 +2018,7 @@ impl ScreenLike for DPNSScreen { } } - // Contracts area chooser (DPNS / DashPay / Contracts) + // Contracts area chooser (DPNS / Dashpay / Contracts) action |= add_contracts_subscreen_chooser_panel(ctx, self.app_context.as_ref()); // DPNS subscreen chooser diff --git a/src/ui/mod.rs b/src/ui/mod.rs index 3a5ee7903..abc3b0910 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -23,6 +23,7 @@ use crate::ui::tokens::transfer_tokens_screen::TransferTokensScreen; use crate::ui::tokens::view_token_claims_screen::ViewTokenClaimsScreen; use crate::ui::tools::contract_visualizer_screen::ContractVisualizerScreen; use crate::ui::tools::document_visualizer_screen::DocumentVisualizerScreen; +use crate::ui::tools::grovestark_screen::GroveSTARKScreen; use crate::ui::tools::masternode_list_diff_screen::MasternodeListDiffScreen; use crate::ui::tools::platform_info_screen::PlatformInfoScreen; use crate::ui::tools::proof_log_screen::ProofLogScreen; @@ -30,7 +31,7 @@ use crate::ui::tools::proof_visualizer_screen::ProofVisualizerScreen; use crate::ui::wallets::import_wallet_screen::ImportWalletScreen; use crate::ui::wallets::wallets_screen::WalletsBalancesScreen; use contracts_documents::add_contracts_screen::AddContractsScreen; -use contracts_documents::dashpay_coming_soon_screen::DashPayComingSoonScreen; +use contracts_documents::dashpay_coming_soon_screen::DashpayScreen; use contracts_documents::group_actions_screen::GroupActionsScreen; use contracts_documents::register_contract_screen::RegisterDataContractScreen; use contracts_documents::update_contract_screen::UpdateDataContractScreen; @@ -92,7 +93,8 @@ pub enum RootScreenType { RootScreenToolsMasternodeListDiffScreen, RootScreenToolsContractVisualizerScreen, RootScreenToolsPlatformInfoScreen, - RootScreenContractsDashPay, + RootScreenToolsGroveSTARKScreen, + RootScreenDashpay, } impl RootScreenType { @@ -118,7 +120,8 @@ impl RootScreenType { RootScreenType::RootScreenToolsContractVisualizerScreen => 16, RootScreenType::RootScreenToolsPlatformInfoScreen => 17, RootScreenType::RootScreenToolsMasternodeListDiffScreen => 18, - RootScreenType::RootScreenContractsDashPay => 19, + RootScreenType::RootScreenDashpay => 19, + RootScreenType::RootScreenToolsGroveSTARKScreen => 20, } } @@ -144,7 +147,8 @@ impl RootScreenType { 16 => Some(RootScreenType::RootScreenToolsContractVisualizerScreen), 17 => Some(RootScreenType::RootScreenToolsPlatformInfoScreen), 18 => Some(RootScreenType::RootScreenToolsMasternodeListDiffScreen), - 19 => Some(RootScreenType::RootScreenContractsDashPay), + 19 => Some(RootScreenType::RootScreenDashpay), + 20 => Some(RootScreenType::RootScreenToolsGroveSTARKScreen), _ => None, } } @@ -179,7 +183,8 @@ impl From for ScreenType { ScreenType::ContractsVisualizer } RootScreenType::RootScreenToolsPlatformInfoScreen => ScreenType::PlatformInfo, - RootScreenType::RootScreenContractsDashPay => ScreenType::ContractsDashPayComingSoon, + RootScreenType::RootScreenToolsGroveSTARKScreen => ScreenType::GroveSTARK, + RootScreenType::RootScreenDashpay => ScreenType::Dashpay, } } } @@ -220,7 +225,8 @@ pub enum ScreenType { DocumentsVisualizer, ContractsVisualizer, PlatformInfo, - ContractsDashPayComingSoon, + GroveSTARK, + Dashpay, CreateDocument, DeleteDocument, ReplaceDocument, @@ -337,9 +343,8 @@ impl ScreenType { ScreenType::PlatformInfo => { Screen::PlatformInfoScreen(PlatformInfoScreen::new(app_context)) } - ScreenType::ContractsDashPayComingSoon => { - Screen::DashPayComingSoonScreen(DashPayComingSoonScreen::new(app_context)) - } + ScreenType::GroveSTARK => Screen::GroveSTARKScreen(GroveSTARKScreen::new(app_context)), + ScreenType::Dashpay => Screen::DashpayScreen(DashpayScreen::new(app_context)), ScreenType::CreateDocument => Screen::DocumentActionScreen(DocumentActionScreen::new( app_context.clone(), None, @@ -441,7 +446,7 @@ pub enum Screen { IdentitiesScreen(IdentitiesScreen), DPNSScreen(DPNSScreen), DocumentQueryScreen(DocumentQueryScreen), - DashPayComingSoonScreen(DashPayComingSoonScreen), + DashpayScreen(DashpayScreen), AddNewWalletScreen(AddNewWalletScreen), ImportWalletScreen(ImportWalletScreen), AddNewIdentityScreen(AddNewIdentityScreen), @@ -467,6 +472,7 @@ pub enum Screen { ProofVisualizerScreen(ProofVisualizerScreen), MasternodeListDiffScreen(MasternodeListDiffScreen), PlatformInfoScreen(PlatformInfoScreen), + GroveSTARKScreen(GroveSTARKScreen), // Token Screens TokensScreen(Box), @@ -491,7 +497,7 @@ impl Screen { match self { Screen::IdentitiesScreen(screen) => screen.app_context = app_context, Screen::DPNSScreen(screen) => screen.app_context = app_context, - Screen::DashPayComingSoonScreen(screen) => screen.app_context = app_context, + Screen::DashpayScreen(screen) => screen.app_context = app_context, Screen::AddExistingIdentityScreen(screen) => screen.app_context = app_context, Screen::KeyInfoScreen(screen) => screen.app_context = app_context, Screen::KeysScreen(screen) => screen.app_context = app_context, @@ -527,6 +533,7 @@ impl Screen { } Screen::DocumentVisualizerScreen(screen) => screen.app_context = app_context, Screen::PlatformInfoScreen(screen) => screen.app_context = app_context, + Screen::GroveSTARKScreen(screen) => screen.app_context = app_context, // Token Screens Screen::TokensScreen(screen) => screen.app_context = app_context, @@ -610,7 +617,7 @@ impl Screen { dpns_subscreen: DPNSSubscreen::ScheduledVotes, .. }) => ScreenType::ScheduledVotes, - Screen::DashPayComingSoonScreen(_) => ScreenType::ContractsDashPayComingSoon, + Screen::DashpayScreen(_) => ScreenType::Dashpay, Screen::TransitionVisualizerScreen(_) => ScreenType::TransitionVisualizer, Screen::ContractVisualizerScreen(_) => ScreenType::ContractsVisualizer, Screen::WithdrawalScreen(screen) => { @@ -644,6 +651,7 @@ impl Screen { Screen::MasternodeListDiffScreen(_) => ScreenType::MasternodeListDiff, Screen::DocumentVisualizerScreen(_) => ScreenType::DocumentsVisualizer, Screen::PlatformInfoScreen(_) => ScreenType::PlatformInfo, + Screen::GroveSTARKScreen(_) => ScreenType::GroveSTARK, // Token Screens Screen::TokensScreen(screen) @@ -716,7 +724,7 @@ impl ScreenLike for Screen { Screen::IdentitiesScreen(screen) => screen.refresh(), Screen::DPNSScreen(screen) => screen.refresh(), Screen::DocumentQueryScreen(screen) => screen.refresh(), - Screen::DashPayComingSoonScreen(screen) => screen.refresh(), + Screen::DashpayScreen(screen) => screen.refresh(), Screen::AddNewWalletScreen(screen) => screen.refresh(), Screen::ImportWalletScreen(screen) => screen.refresh(), Screen::AddNewIdentityScreen(screen) => screen.refresh(), @@ -742,6 +750,7 @@ impl ScreenLike for Screen { Screen::DocumentVisualizerScreen(screen) => screen.refresh(), Screen::ContractVisualizerScreen(screen) => screen.refresh(), Screen::PlatformInfoScreen(screen) => screen.refresh(), + Screen::GroveSTARKScreen(screen) => screen.refresh(), // Token Screens Screen::TokensScreen(screen) => screen.refresh(), @@ -767,7 +776,7 @@ impl ScreenLike for Screen { Screen::IdentitiesScreen(screen) => screen.refresh_on_arrival(), Screen::DPNSScreen(screen) => screen.refresh_on_arrival(), Screen::DocumentQueryScreen(screen) => screen.refresh_on_arrival(), - Screen::DashPayComingSoonScreen(screen) => screen.refresh_on_arrival(), + Screen::DashpayScreen(screen) => screen.refresh_on_arrival(), Screen::AddNewWalletScreen(screen) => screen.refresh_on_arrival(), Screen::ImportWalletScreen(screen) => screen.refresh_on_arrival(), Screen::AddNewIdentityScreen(screen) => screen.refresh_on_arrival(), @@ -793,6 +802,7 @@ impl ScreenLike for Screen { Screen::DocumentVisualizerScreen(screen) => screen.refresh_on_arrival(), Screen::ContractVisualizerScreen(screen) => screen.refresh_on_arrival(), Screen::PlatformInfoScreen(screen) => screen.refresh_on_arrival(), + Screen::GroveSTARKScreen(screen) => screen.refresh_on_arrival(), // Token Screens Screen::TokensScreen(screen) => screen.refresh_on_arrival(), @@ -818,7 +828,7 @@ impl ScreenLike for Screen { Screen::IdentitiesScreen(screen) => screen.ui(ctx), Screen::DPNSScreen(screen) => screen.ui(ctx), Screen::DocumentQueryScreen(screen) => screen.ui(ctx), - Screen::DashPayComingSoonScreen(screen) => screen.ui(ctx), + Screen::DashpayScreen(screen) => screen.ui(ctx), Screen::AddNewWalletScreen(screen) => screen.ui(ctx), Screen::ImportWalletScreen(screen) => screen.ui(ctx), Screen::AddNewIdentityScreen(screen) => screen.ui(ctx), @@ -844,6 +854,7 @@ impl ScreenLike for Screen { Screen::DocumentVisualizerScreen(screen) => screen.ui(ctx), Screen::ContractVisualizerScreen(screen) => screen.ui(ctx), Screen::PlatformInfoScreen(screen) => screen.ui(ctx), + Screen::GroveSTARKScreen(screen) => screen.ui(ctx), // Token Screens Screen::TokensScreen(screen) => screen.ui(ctx), @@ -869,9 +880,7 @@ impl ScreenLike for Screen { Screen::IdentitiesScreen(screen) => screen.display_message(message, message_type), Screen::DPNSScreen(screen) => screen.display_message(message, message_type), Screen::DocumentQueryScreen(screen) => screen.display_message(message, message_type), - Screen::DashPayComingSoonScreen(screen) => { - screen.display_message(message, message_type) - } + Screen::DashpayScreen(screen) => screen.display_message(message, message_type), Screen::AddNewWalletScreen(screen) => screen.display_message(message, message_type), Screen::ImportWalletScreen(screen) => screen.display_message(message, message_type), Screen::AddNewIdentityScreen(screen) => screen.display_message(message, message_type), @@ -911,6 +920,7 @@ impl ScreenLike for Screen { screen.display_message(message, message_type) } Screen::PlatformInfoScreen(screen) => screen.display_message(message, message_type), + Screen::GroveSTARKScreen(screen) => screen.display_message(message, message_type), // Token Screens Screen::TokensScreen(screen) => screen.display_message(message, message_type), @@ -944,7 +954,7 @@ impl ScreenLike for Screen { Screen::DocumentQueryScreen(screen) => { screen.display_task_result(backend_task_success_result) } - Screen::DashPayComingSoonScreen(screen) => { + Screen::DashpayScreen(screen) => { screen.display_task_result(backend_task_success_result) } Screen::AddNewWalletScreen(screen) => { @@ -1018,6 +1028,9 @@ impl ScreenLike for Screen { Screen::PlatformInfoScreen(screen) => { screen.display_task_result(backend_task_success_result) } + Screen::GroveSTARKScreen(screen) => { + screen.display_task_result(backend_task_success_result) + } // Token Screens Screen::TokensScreen(screen) => screen.display_task_result(backend_task_success_result), @@ -1069,7 +1082,7 @@ impl ScreenLike for Screen { Screen::IdentitiesScreen(screen) => screen.pop_on_success(), Screen::DPNSScreen(screen) => screen.pop_on_success(), Screen::DocumentQueryScreen(screen) => screen.pop_on_success(), - Screen::DashPayComingSoonScreen(screen) => screen.pop_on_success(), + Screen::DashpayScreen(screen) => screen.pop_on_success(), Screen::AddNewWalletScreen(screen) => screen.pop_on_success(), Screen::ImportWalletScreen(screen) => screen.pop_on_success(), Screen::AddNewIdentityScreen(screen) => screen.pop_on_success(), @@ -1095,6 +1108,7 @@ impl ScreenLike for Screen { Screen::DocumentVisualizerScreen(screen) => screen.pop_on_success(), Screen::ContractVisualizerScreen(screen) => screen.pop_on_success(), Screen::PlatformInfoScreen(screen) => screen.pop_on_success(), + Screen::GroveSTARKScreen(screen) => screen.pop_on_success(), // Token Screens Screen::TokensScreen(screen) => screen.pop_on_success(), diff --git a/src/ui/tokens/tokens_screen/distributions.rs b/src/ui/tokens/tokens_screen/distributions.rs index 5cc810ce2..907517af8 100644 --- a/src/ui/tokens/tokens_screen/distributions.rs +++ b/src/ui/tokens/tokens_screen/distributions.rs @@ -379,7 +379,10 @@ Emits tokens in fixed amounts for specific intervals. sanitize_u64(&mut self.step_count_input); } if !self.step_count_input.is_empty() - && let Ok((perpetual_dist_interval_input, step_count_input)) = self.perpetual_dist_interval_input.parse::().and_then(|perpetual_dist_interval_input| self.step_count_input.parse::().map(|step_count_input| (perpetual_dist_interval_input, step_count_input))) { + && let Ok((perpetual_dist_interval_input, step_count_input)) = self + .perpetual_dist_interval_input + .parse::() + .and_then(|perpetual_dist_interval_input| self.step_count_input.parse::().map(|step_count_input| (perpetual_dist_interval_input, step_count_input))) { let text = match self.perpetual_dist_type { PerpetualDistributionIntervalTypeUI::None => "".to_string(), PerpetualDistributionIntervalTypeUI::BlockBased => { diff --git a/src/ui/tools/grovestark_screen.rs b/src/ui/tools/grovestark_screen.rs new file mode 100644 index 000000000..e6f95532d --- /dev/null +++ b/src/ui/tools/grovestark_screen.rs @@ -0,0 +1,1183 @@ +use crate::app::AppAction; +use crate::backend_task::BackendTask; +use crate::backend_task::grovestark::GroveSTARKTask; +use crate::context::AppContext; +use crate::model::qualified_identity::{PrivateKeyTarget, QualifiedIdentity}; +use crate::ui::RootScreenType; +use crate::ui::ScreenLike; +use crate::ui::components::left_panel::add_left_panel; +use crate::ui::components::styled::island_central_panel; +use crate::ui::components::tools_subscreen_chooser_panel::add_tools_subscreen_chooser_panel; +use crate::ui::components::top_panel::add_top_panel; +use crate::ui::theme::{DashColors, Shape, Spacing, Typography}; +use dash_sdk::dpp::data_contract::accessors::v0::DataContractV0Getters; +use dash_sdk::dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; +use dash_sdk::dpp::identity::{ + Identity, IdentityPublicKey, KeyType, Purpose, accessors::IdentityGettersV0, +}; +use dash_sdk::dpp::platform_value::string_encoding::Encoding; +use egui::{Button, ComboBox, Context, Frame, Grid, Margin, RichText, ScrollArea, TextEdit, Ui}; +use std::sync::Arc; +use std::time::Duration; + +#[derive(Clone, PartialEq)] +pub enum ProofMode { + Generate, + Verify, +} + +#[derive(Clone)] +pub struct VerificationResult { + pub is_valid: bool, + pub verified_at: u64, + pub contract_id: String, + pub security_level: u32, + pub error_message: Option, + pub technical_details: String, +} + +#[derive(Clone)] +pub struct ProofData { + pub full_proof: crate::model::grovestark_prover::ProofDataOutput, + pub hash: String, + pub size: usize, + pub generation_time: Duration, +} + +pub struct GroveSTARKScreen { + pub(crate) app_context: Arc, + mode: ProofMode, + + // Generation fields + selected_identity: Option, + selected_key: Option, + selected_contract: Option, + selected_document_type: Option, + available_document_types: Vec, // Document types for selected contract + selected_document: Option, + available_identities: Vec, + qualified_identities: Vec, // Store full qualified identities for key access + available_contracts: Vec<(String, String)>, // (id, name) + // Documents will be entered directly via text input + is_generating: bool, + generated_proof: Option, + proof_size: Option, + generation_time: Option, + security_level: u32, + + // Verification fields + proof_text: String, + is_verifying: bool, + verification_result: Option, + + // Error handling + gen_error_message: Option, + verify_error_message: Option, +} + +impl GroveSTARKScreen { + pub fn new(app_context: &Arc) -> Self { + // Load initial qualified identities + let qualified_identities = app_context + .load_local_qualified_identities() + .unwrap_or_default(); + + let available_identities = qualified_identities + .iter() + .map(|qualified_identity| qualified_identity.identity.clone()) + .collect(); + + tracing::info!( + "ZK Proofs screen loaded {} identities", + qualified_identities.len() + ); + + // Load initial contracts (exclude system contracts) + let excluded_aliases = ["dpns", "keyword_search", "token_history", "withdrawals"]; + let all_contracts = app_context.get_contracts(None, None).unwrap_or_default(); + + tracing::info!( + "ZK Proofs screen found {} total contracts", + all_contracts.len() + ); + + let available_contracts: Vec<(String, String)> = all_contracts + .into_iter() + .filter(|c| match &c.alias { + Some(alias) => { + let is_system = excluded_aliases.contains(&alias.as_str()); + if is_system { + tracing::debug!("Excluding system contract: {}", alias); + } + !is_system + } + None => true, + }) + .map(|qualified_contract| { + let id = qualified_contract + .contract + .id() + .to_string(dash_sdk::dpp::platform_value::string_encoding::Encoding::Base58); + let name = qualified_contract + .alias + .unwrap_or_else(|| format!("Contract {}", &id[..8])); + tracing::debug!("Including contract: {} ({})", name, id); + (id, name) + }) + .collect(); + + tracing::info!( + "ZK Proofs screen loaded {} user contracts after filtering", + available_contracts.len() + ); + + Self { + app_context: app_context.clone(), + mode: ProofMode::Generate, + selected_identity: None, + selected_key: None, + selected_contract: None, + selected_document_type: None, + available_document_types: Vec::new(), + selected_document: None, + available_identities, + qualified_identities, + available_contracts, + is_generating: false, + generated_proof: None, + proof_size: None, + generation_time: None, + security_level: 128, + proof_text: String::new(), + is_verifying: false, + verification_result: None, + gen_error_message: None, + verify_error_message: None, + } + } + + fn refresh_identities(&mut self, app_context: &AppContext) { + let all_qualified_identities = app_context + .load_local_qualified_identities() + .unwrap_or_default(); + + // Filter identities to only show those with EdDSA keys + self.qualified_identities = all_qualified_identities + .into_iter() + .filter(|qi| self.has_eddsa_keys(&qi.identity)) + .collect(); + + self.available_identities = self + .qualified_identities + .iter() + .map(|qualified_identity| qualified_identity.identity.clone()) + .collect(); + } + + fn get_qualified_identity(&self, identity_id_str: &str) -> Option<&QualifiedIdentity> { + self.qualified_identities + .iter() + .find(|qi| qi.identity.id().to_string(Encoding::Base58) == identity_id_str) + } + + /// Check if an identity has any EdDSA keys suitable for ZK proofs + fn has_eddsa_keys(&self, identity: &Identity) -> bool { + identity.public_keys().iter().any(|(_, key)| { + matches!(key.key_type(), KeyType::EDDSA_25519_HASH160) + && (key.purpose() == Purpose::AUTHENTICATION || key.purpose() == Purpose::TRANSFER) + }) + } + + fn get_available_keys(&self, identity_id_str: &str) -> Vec<&IdentityPublicKey> { + if let Some(qualified_identity) = self.get_qualified_identity(identity_id_str) { + qualified_identity + .private_keys + .identity_public_keys() + .into_iter() + .filter(|(target, _)| **target == PrivateKeyTarget::PrivateKeyOnMainIdentity) + .map(|(_, key_ref)| &key_ref.identity_public_key) + .filter(|key| { + // Only show EdDSA keys suitable for signing + matches!(key.key_type(), KeyType::EDDSA_25519_HASH160) + && (key.purpose() == Purpose::AUTHENTICATION + || key.purpose() == Purpose::TRANSFER) + }) + .collect() + } else { + Vec::new() + } + } + + fn refresh_contracts(&mut self, app_context: &AppContext) { + let excluded_aliases = ["dpns", "keyword_search", "token_history", "withdrawals"]; + let all_contracts = app_context.get_contracts(None, None).unwrap_or_default(); + + self.available_contracts = all_contracts + .into_iter() + .filter(|c| match &c.alias { + Some(alias) => !excluded_aliases.contains(&alias.as_str()), + None => true, + }) + .map(|qualified_contract| { + let id = qualified_contract + .contract + .id() + .to_string(dash_sdk::dpp::platform_value::string_encoding::Encoding::Base58); + let name = qualified_contract + .alias + .unwrap_or_else(|| format!("Contract {}", &id[..8])); + (id, name) + }) + .collect(); + + tracing::info!( + "Refreshed contracts: found {} user contracts", + self.available_contracts.len() + ); + } + + fn refresh_document_types(&mut self, app_context: &AppContext, contract_id: &str) { + self.available_document_types.clear(); + self.selected_document_type = None; + + if let Ok(contracts) = app_context.get_contracts(None, None) { + for contract in contracts { + let id = contract + .contract + .id() + .to_string(dash_sdk::dpp::platform_value::string_encoding::Encoding::Base58); + + if id == contract_id { + self.available_document_types = contract + .contract + .document_types() + .keys() + .map(|s| s.to_string()) + .collect(); + + tracing::info!( + "Found {} document types for contract {}: {:?}", + self.available_document_types.len(), + &contract_id[..8], + self.available_document_types + ); + + break; + } + } + } + } + + fn generate_proof(&mut self, app_context: &AppContext) -> AppAction { + if cfg!(debug_assertions) { + self.gen_error_message = Some( + "GroveSTARK proof generation requires a release build (cargo run --release)." + .to_string(), + ); + self.is_generating = false; + return AppAction::None; + } + + // Reset any prior messages/results before starting a new generation + self.is_generating = true; + self.gen_error_message = None; + self.generated_proof = None; + self.proof_size = None; + self.generation_time = None; + + // Get the required IDs + let identity_id = match &self.selected_identity { + Some(id) => { + // Debug: Log the identity ID being used + tracing::info!( + "ZK Proof generation: Using identity ID: '{}' (length: {})", + id, + id.len() + ); + id.clone() + } + None => { + self.gen_error_message = Some("No identity selected".to_string()); + self.is_generating = false; + return AppAction::None; + } + }; + + let selected_key = match &self.selected_key { + Some(key) => key, + None => { + self.gen_error_message = Some("No key selected".to_string()); + self.is_generating = false; + return AppAction::None; + } + }; + + let contract_id = match &self.selected_contract { + Some(id) => { + tracing::info!( + "ZK Proof generation: Using contract ID: '{}' (length: {})", + id, + id.len() + ); + id.clone() + } + None => { + self.gen_error_message = Some("No contract selected".to_string()); + self.is_generating = false; + return AppAction::None; + } + }; + + let document_type = match &self.selected_document_type { + Some(doc_type) => { + tracing::info!("ZK Proof generation: Using document type: '{}'", doc_type); + doc_type.clone() + } + None => { + self.gen_error_message = Some("No document type selected".to_string()); + self.is_generating = false; + return AppAction::None; + } + }; + + let document_id = match &self.selected_document { + Some(id) => { + tracing::info!( + "ZK Proof generation: Using document ID: '{}' (length: {})", + id, + id.len() + ); + id.clone() + } + None => { + self.gen_error_message = Some("No document selected".to_string()); + self.is_generating = false; + return AppAction::None; + } + }; + + // Get the private key from the qualified identity + let private_key = match self.get_qualified_identity(&identity_id) { + Some(qualified_identity) => { + // Get the wallets for resolving encrypted keys + let wallets = app_context.wallets.read().unwrap(); + let wallet_vec: Vec<_> = wallets.values().cloned().collect(); + + // Try to get the private key + match qualified_identity.private_keys.get_resolve( + &( + PrivateKeyTarget::PrivateKeyOnMainIdentity, + selected_key.id(), + ), + &wallet_vec, + app_context.network, + ) { + Ok(Some((_, private_key_bytes))) => private_key_bytes, + Ok(None) => { + self.gen_error_message = + Some("Private key not found in storage".to_string()); + self.is_generating = false; + return AppAction::None; + } + Err(e) => { + self.gen_error_message = Some(format!("Failed to get private key: {}", e)); + self.is_generating = false; + return AppAction::None; + } + } + } + None => { + self.gen_error_message = Some("Qualified identity not found".to_string()); + self.is_generating = false; + return AppAction::None; + } + }; + + // For EDDSA_25519_HASH160, the key data is only 20 bytes (the hash) + // We need to derive the public key from the private key + let public_key = { + use ed25519_dalek::SigningKey; + let signing_key = SigningKey::from_bytes(&private_key); + let verifying_key = signing_key.verifying_key(); + *verifying_key.as_bytes() + }; + + // Use fixed parameters for simplicity and consistency + let task = BackendTask::GroveSTARKTask(GroveSTARKTask::GenerateProof { + identity_id, + contract_id, + document_type, + document_id, + key_id: selected_key.id(), + private_key, + public_key, + }); + + AppAction::BackendTask(task) + } + + fn verify_proof(&mut self, _app_context: &AppContext) -> AppAction { + if cfg!(debug_assertions) { + self.verify_error_message = Some( + "GroveSTARK proof verification requires a release build (cargo run --release)." + .to_string(), + ); + self.is_verifying = false; + return AppAction::None; + } + + self.is_verifying = true; + self.verify_error_message = None; + self.verification_result = None; // Clear any previous results + + // Parse the proof from pasted text + let proof_result = + // Try to parse from base64-encoded JSON first, then raw JSON + crate::model::grovestark_prover::ProofDataOutput::from_base64( + &self.proof_text, + ) + .or_else(|_| { + crate::model::grovestark_prover::ProofDataOutput::from_json_string( + &self.proof_text, + ) + }); + + match proof_result { + Ok(proof_data) => { + let task = BackendTask::GroveSTARKTask(GroveSTARKTask::VerifyProof { proof_data }); + AppAction::BackendTask(task) + } + Err(e) => { + self.verify_error_message = Some(format!("Failed to parse proof: {}", e)); + self.is_verifying = false; + AppAction::None + } + } + } + + fn copy_proof_to_clipboard(&self) { + if let Some(proof) = &self.generated_proof { + // Use the helper method to serialize to base64 + if let Ok(proof_base64) = proof.full_proof.to_base64() { + let _ = arboard::Clipboard::new() + .and_then(|mut clipboard| clipboard.set_text(proof_base64)); + } + } + } + + fn copy_verification_result(&self) { + if let Some(result) = &self.verification_result { + let text = format!( + "Verification Result: {}\nContract: {}\nSecurity Level: {}-bit", + if result.is_valid { "VALID" } else { "INVALID" }, + result.contract_id, + result.security_level + ); + let _ = arboard::Clipboard::new().and_then(|mut clipboard| clipboard.set_text(text)); + } + } + + fn truncate_id(id: &str) -> String { + if id.len() > 16 { + format!("{}...{}", &id[..6], &id[id.len() - 6..]) + } else { + id.to_string() + } + } + + fn format_timestamp(timestamp: u64) -> String { + chrono::DateTime::from_timestamp(timestamp as i64, 0) + .map(|dt| dt.format("%Y-%m-%d %H:%M:%S").to_string()) + .unwrap_or_else(|| "Unknown".to_string()) + } + + fn render_generation_ui(&mut self, ui: &mut Ui, app_context: &AppContext) -> Option { + let dark_mode = ui.ctx().style().visuals.dark_mode; + let debug_build = cfg!(debug_assertions); + + ui.label( + RichText::new("Contract Membership Circuit") + .size(Typography::SCALE_XL) + .strong() + .color(DashColors::text_primary(dark_mode)), + ); + ui.label( + RichText::new("Prove you own a document in a specific contract without revealing anything about your identity or the document.") + .size(Typography::SCALE_SM) + .color(DashColors::text_primary(dark_mode)) + ); + ui.add_space(Spacing::SM); + ui.separator(); + + if debug_build { + ui.colored_label( + egui::Color32::DARK_RED, + "GroveSTARK proofs require a release build (cargo run --release).", + ); + ui.add_space(Spacing::SM); + } + + // Step 1: Select Identity + Frame::new() + .inner_margin(Margin::same(Spacing::MD_I8)) + .fill(DashColors::surface(dark_mode)) + .stroke(egui::Stroke::new(1.0, DashColors::border_light(dark_mode))) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .show(ui, |ui| { + ui.label( + RichText::new("Step 1: Select Identity") + .size(Typography::SCALE_LG) + .strong() + .color(DashColors::text_primary(dark_mode)), + ); + ui.horizontal(|ui| { + ui.label("Identity:"); + let mut identity_changed = false; + ComboBox::from_id_salt("identity_selector") + .selected_text(self.selected_identity.as_deref().unwrap_or( + if self.available_identities.is_empty() { + "No identities available" + } else { + "Select..." + }, + )) + .show_ui(ui, |ui| { + if self.available_identities.is_empty() { + ui.label("No identities with EdDSA keys found."); + ui.label( + RichText::new("ZK proofs require identities with EdDSA (Ed25519) keys. Please add an EdDSA key to an identity.") + .size(Typography::SCALE_XS) + .color(DashColors::text_secondary(dark_mode)) + ); + } else { + for identity in &self.available_identities { + let id_str = identity.id().to_string(Encoding::Base58); + if ui + .selectable_value( + &mut self.selected_identity, + Some(id_str.clone()), + Self::truncate_id(&id_str), + ) + .changed() + { + identity_changed = true; + } + } + } + }); + + // Reset key selection if identity changed + if identity_changed { + self.selected_key = None; + } + }); + + if let Some(id) = &self.selected_identity { + ui.label( + RichText::new("✅ Identity selected").color(egui::Color32::DARK_GREEN), + ); + + // Key selection + ui.separator(); + ui.label( + RichText::new("Select Key for Signing:") + .color(DashColors::text_primary(dark_mode)), + ); + + let available_keys: Vec = + self.get_available_keys(id).into_iter().cloned().collect(); + + if available_keys.is_empty() { + ui.label( + RichText::new("⚠️ No EdDSA keys available for ZK proof generation") + .color(egui::Color32::DARK_RED), + ); + ui.label( + RichText::new("ZK proofs require EdDSA (Ed25519) keys. Please add an EdDSA key to this identity.") + .size(Typography::SCALE_XS) + .color(DashColors::text_secondary(dark_mode)), + ); + } else { + ComboBox::from_id_salt("key_selector") + .selected_text( + self.selected_key + .as_ref() + .map(|k| { + format!( + "EdDSA Key {} ({} - {})", + k.id(), + k.purpose(), + k.security_level() + ) + }) + .unwrap_or_else(|| "Select key...".to_string()), + ) + .show_ui(ui, |ui| { + for key in &available_keys { + let key_label = format!( + "EdDSA Key {} ({} - {})", + key.id(), + key.purpose(), + key.security_level() + ); + ui.selectable_value( + &mut self.selected_key, + Some(key.clone()), + key_label, + ); + } + }); + + if self.selected_key.is_some() { + ui.label( + RichText::new("✅ EdDSA key selected").color(egui::Color32::DARK_GREEN), + ); + } + } + } + }); + + ui.add_space(Spacing::MD); + + // Step 2: Select Contract + Frame::new() + .inner_margin(Margin::same(Spacing::MD_I8)) + .fill(DashColors::surface(dark_mode)) + .stroke(egui::Stroke::new(1.0, DashColors::border_light(dark_mode))) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .show(ui, |ui| { + ui.label( + RichText::new("Step 2: Select Contract") + .size(Typography::SCALE_LG) + .strong() + .color(DashColors::text_primary(dark_mode)), + ); + ui.horizontal(|ui| { + ui.label("Contract:"); + let mut contract_changed = false; + ComboBox::from_id_salt("contract_selector") + .selected_text(self.selected_contract.as_deref().unwrap_or( + if self.available_contracts.is_empty() { + "No contracts available" + } else { + "Select..." + }, + )) + .show_ui(ui, |ui| { + if self.available_contracts.is_empty() { + ui.label( + "No user contracts found. Please create a contract first.", + ); + } else { + for (id, name) in &self.available_contracts { + if ui + .selectable_value( + &mut self.selected_contract, + Some(id.clone()), + name, + ) + .changed() + { + contract_changed = true; + } + } + } + }); + + // If contract changed, refresh document types + if contract_changed && let Some(contract_id) = self.selected_contract.clone() { + self.refresh_document_types(app_context, &contract_id); + } + }); + + if let Some(_contract_id) = &self.selected_contract { + ui.label( + RichText::new("✅ Contract selected").color(egui::Color32::DARK_GREEN), + ); + + // Document Type selection + ui.separator(); + ui.label( + RichText::new("Select Document Type:") + .color(DashColors::text_primary(dark_mode)), + ); + + ui.horizontal(|ui| { + ui.label("Document Type:"); + ComboBox::from_id_salt("document_type_selector") + .selected_text(self.selected_document_type.as_deref().unwrap_or( + if self.available_document_types.is_empty() { + "No document types available" + } else { + "Select..." + }, + )) + .show_ui(ui, |ui| { + if self.available_document_types.is_empty() { + ui.label("No document types found for this contract."); + } else { + for doc_type in &self.available_document_types { + ui.selectable_value( + &mut self.selected_document_type, + Some(doc_type.clone()), + doc_type, + ); + } + } + }); + }); + + if self.selected_document_type.is_some() { + ui.label( + RichText::new("✅ Document type selected") + .color(egui::Color32::DARK_GREEN), + ); + } + } + }); + + ui.add_space(Spacing::MD); + + // Step 3: Select Document + Frame::new() + .inner_margin(Margin::same(Spacing::MD_I8)) + .fill(DashColors::surface(dark_mode)) + .stroke(egui::Stroke::new(1.0, DashColors::border_light(dark_mode))) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .show(ui, |ui| { + ui.label( + RichText::new("Step 3: Select Document") + .size(Typography::SCALE_LG) + .strong() + .color(DashColors::text_primary(dark_mode)), + ); + ui.horizontal(|ui| { + ui.label("Document ID:"); + let mut document_id = + self.selected_document.as_deref().unwrap_or("").to_string(); + if ui.text_edit_singleline(&mut document_id).changed() { + self.selected_document = if document_id.is_empty() { + None + } else { + Some(document_id) + }; + } + }); + + if let Some(_doc_id) = &self.selected_document { + ui.label( + RichText::new("✅ Document selected").color(egui::Color32::DARK_GREEN), + ); + } + }); + + // Advanced Options removed to reduce confusion; defaults are used. + + ui.separator(); + + // Generate Button + let can_generate = self.selected_identity.is_some() + && self.selected_key.is_some() + && self.selected_contract.is_some() + && self.selected_document_type.is_some() + && self.selected_document.is_some(); + + let mut action = None; + ui.horizontal(|ui| { + if self.is_generating { + // Use Dash blue spinner instead of default + ui.add(egui::widgets::Spinner::new().color(DashColors::DASH_BLUE)); + ui.vertical(|ui| { + ui.label("Generating ZK proof..."); + }); + } else if ui + .add_enabled( + !debug_build && can_generate, + Button::new("🔐 Generate Proof"), + ) + .clicked() + { + action = Some(self.generate_proof(app_context)); + } + }); + if action.is_some() { + return action; + } + + // Error Display + if let Some(error) = &self.gen_error_message { + ui.colored_label(egui::Color32::RED, format!("Error: {}", error)); + } + + // Success Display + if let Some(_proof) = &self.generated_proof { + ui.separator(); + Frame::new() + .inner_margin(Margin::same(Spacing::MD_I8)) + .fill(DashColors::surface(dark_mode)) + .stroke(egui::Stroke::new(1.0, egui::Color32::DARK_GREEN)) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .show(ui, |ui| { + ui.label( + RichText::new("✅ Proof Generated Successfully!") + .color(egui::Color32::DARK_GREEN) + .strong(), + ); + + if ui.button("📋 Copy Proof").clicked() { + self.copy_proof_to_clipboard(); + } + }); + } + None + } + + fn render_verification_ui( + &mut self, + ui: &mut Ui, + app_context: &AppContext, + ) -> Option { + let dark_mode = ui.ctx().style().visuals.dark_mode; + let debug_build = cfg!(debug_assertions); + + ui.label( + RichText::new("Verify Zero-Knowledge Proof") + .size(Typography::SCALE_XL) + .strong() + .color(DashColors::text_primary(dark_mode)), + ); + ui.add_space(Spacing::SM); + ui.separator(); + + // Proof Input + Frame::new() + .inner_margin(Margin::same(Spacing::MD_I8)) + .fill(DashColors::surface(dark_mode)) + .stroke(egui::Stroke::new(1.0, DashColors::border_light(dark_mode))) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .show(ui, |ui| { + ui.label( + RichText::new("Paste Proof (Base64 or JSON):") + .color(DashColors::text_primary(dark_mode)), + ); + ui.add( + TextEdit::multiline(&mut self.proof_text) + .desired_width(f32::INFINITY) + .desired_rows(6), + ); + }); + + ui.separator(); + + // Error Display (above the button) + if let Some(error) = &self.verify_error_message { + ui.colored_label(egui::Color32::RED, format!("Error: {}", error)); + } + + // Verify Button + let can_verify = !self.proof_text.is_empty(); + + let mut action = None; + ui.horizontal(|ui| { + if self.is_verifying { + // Use Dash blue spinner instead of default + ui.add(egui::widgets::Spinner::new().color(DashColors::DASH_BLUE)); + ui.label("Verifying ZK proof..."); + } else if ui + .add_enabled(!debug_build && can_verify, Button::new("✅ Verify Proof")) + .clicked() + { + action = Some(self.verify_proof(app_context)); + } + }); + if action.is_some() { + return action; + } + + // Verification Result + if let Some(result) = &self.verification_result { + ui.separator(); + + if result.is_valid { + Frame::new() + .inner_margin(Margin::same(Spacing::MD_I8)) + .fill(DashColors::surface(dark_mode)) + .stroke(egui::Stroke::new(1.0, egui::Color32::DARK_GREEN)) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .show(ui, |ui| { + ui.colored_label(egui::Color32::DARK_GREEN, "✅ PROOF IS VALID"); + + Grid::new("verification_details") + .num_columns(2) + .show(ui, |ui| { + ui.label("Verified At:"); + ui.label(Self::format_timestamp(result.verified_at)); + ui.end_row(); + + ui.label("Document Exists:"); + ui.label("Yes"); + ui.end_row(); + + ui.label("Key Control:"); + ui.label("Verified"); + ui.end_row(); + + ui.label("Contract:"); + ui.label(&result.contract_id); + ui.end_row(); + + ui.label("Security Level:"); + ui.label(format!("{}-bit", result.security_level)); + ui.end_row(); + }); + + if ui.button("📋 Copy Result").clicked() { + self.copy_verification_result(); + } + }); + } else { + Frame::new() + .inner_margin(Margin::same(Spacing::MD_I8)) + .fill(DashColors::surface(dark_mode)) + .stroke(egui::Stroke::new(1.0, egui::Color32::RED)) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .show(ui, |ui| { + ui.colored_label(egui::Color32::RED, "❌ PROOF IS INVALID"); + if let Some(reason) = &result.error_message { + ui.label(format!("Reason: {}", reason)); + } + + ui.collapsing("Technical Details", |ui| { + ui.monospace(&result.technical_details); + }); + }); + } + } + None + } +} + +impl ScreenLike for GroveSTARKScreen { + fn refresh(&mut self) { + // Refresh implementation if needed + } + + fn refresh_on_arrival(&mut self) { + self.refresh(); + // Reload data in case it changed + let app_context = self.app_context.clone(); + self.refresh_identities(&app_context); + self.refresh_contracts(&app_context); + } + + fn display_message(&mut self, message: &str, message_type: crate::ui::MessageType) { + // Only record errors and scope them to the active mode + if message_type == crate::ui::MessageType::Error { + match self.mode { + ProofMode::Generate => self.gen_error_message = Some(message.to_string()), + ProofMode::Verify => self.verify_error_message = Some(message.to_string()), + } + self.is_generating = false; + self.is_verifying = false; + } + } + + fn display_task_result( + &mut self, + backend_task_success_result: crate::backend_task::BackendTaskSuccessResult, + ) { + use crate::backend_task::BackendTaskSuccessResult; + + match backend_task_success_result { + BackendTaskSuccessResult::GeneratedZKProof(proof_data) => { + self.is_generating = false; + let proof_size = proof_data.proof.len(); + self.generated_proof = Some(ProofData { + full_proof: proof_data.clone(), + hash: hex::encode(&proof_data.public_inputs.state_root[0..8]), + size: proof_size, + generation_time: std::time::Duration::from_millis( + proof_data.metadata.generation_time_ms, + ), + }); + self.proof_size = Some(format!("{} bytes", proof_data.metadata.proof_size)); + self.generation_time = Some(std::time::Duration::from_millis( + proof_data.metadata.generation_time_ms, + )); + self.gen_error_message = None; + } + BackendTaskSuccessResult::VerifiedZKProof(is_valid, proof_data) => { + self.is_verifying = false; + // Get contract ID from the proof data itself + let contract_id = hex::encode(proof_data.public_inputs.contract_id); + self.verification_result = Some(VerificationResult { + is_valid, + verified_at: std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap_or_default() + .as_secs(), + contract_id, + security_level: self.security_level, + error_message: if !is_valid { + Some("Proof verification failed".to_string()) + } else { + None + }, + technical_details: format!( + "Verification result: {}", + if is_valid { "VALID" } else { "INVALID" } + ), + }); + self.verify_error_message = None; + } + _ => {} + } + } + + fn pop_on_success(&mut self) { + // Pop on success if needed + } + + fn ui(&mut self, ctx: &Context) -> AppAction { + let mut action = AppAction::None; + + // Add top panel with breadcrumb + action |= add_top_panel( + ctx, + &self.app_context, + vec![("Tools", AppAction::None)], + vec![], + ); + + // Add left panel + action |= add_left_panel( + ctx, + &self.app_context, + RootScreenType::RootScreenToolsGroveSTARKScreen, + ); + + // Add tools subscreen chooser panel + action |= add_tools_subscreen_chooser_panel(ctx, self.app_context.as_ref()); + + // Add central panel with the main UI + let panel_action = island_central_panel(ctx, |ui| { + ui.label( + RichText::new("GroveSTARK Zero-Knowledge Proofs") + .size(Typography::SCALE_XL) + .strong() + .color(DashColors::text_primary(ui.ctx().style().visuals.dark_mode)), + ); + ui.add_space(5.0); + + // Add research warning + ui.label( + RichText::new("WARNING: GroveSTARK is a research project. It has not been audited and may contain bugs and security flaws. This feature is NOT ready for production usage.") + .size(Typography::SCALE_XS) + .color(DashColors::text_primary(ui.ctx().style().visuals.dark_mode)) + ); + ui.add_space(Spacing::SM); + ui.separator(); + + let mut content_action = AppAction::None; + let available_height = ui.available_height(); + + // Mode Toggle at the top + ui.horizontal(|ui| { + ui.label( + RichText::new("Mode:") + .size(Typography::SCALE_LG) + .strong() + .color(DashColors::text_primary(ui.ctx().style().visuals.dark_mode)), + ); + ui.add_space(10.0); + + let dark_mode = ui.ctx().style().visuals.dark_mode; + + // Generate button + let generate_selected = self.mode == ProofMode::Generate; + let generate_button = if generate_selected { + Button::new( + RichText::new("🔐 Generate Proof") + .color(DashColors::WHITE) + .size(Typography::SCALE_SM), + ) + .fill(DashColors::DASH_BLUE) + .stroke(egui::Stroke::NONE) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .min_size(egui::Vec2::new(150.0, 28.0)) + } else { + Button::new( + RichText::new("🔐 Generate Proof") + .color(DashColors::text_primary(dark_mode)) + .size(Typography::SCALE_SM), + ) + .fill(DashColors::glass_white(dark_mode)) + .stroke(egui::Stroke::new(1.0, DashColors::border(dark_mode))) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .min_size(egui::Vec2::new(150.0, 28.0)) + }; + + if ui.add(generate_button).clicked() { + self.mode = ProofMode::Generate; + } + + ui.add_space(5.0); + + // Verify button + let verify_selected = self.mode == ProofMode::Verify; + let verify_button = if verify_selected { + Button::new( + RichText::new("✅ Verify Proof") + .color(DashColors::WHITE) + .size(Typography::SCALE_SM), + ) + .fill(DashColors::DASH_BLUE) + .stroke(egui::Stroke::NONE) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .min_size(egui::Vec2::new(150.0, 28.0)) + } else { + Button::new( + RichText::new("✅ Verify Proof") + .color(DashColors::text_primary(dark_mode)) + .size(Typography::SCALE_SM), + ) + .fill(DashColors::glass_white(dark_mode)) + .stroke(egui::Stroke::new(1.0, DashColors::border(dark_mode))) + .corner_radius(egui::CornerRadius::same(Shape::RADIUS_MD)) + .min_size(egui::Vec2::new(150.0, 28.0)) + }; + + if ui.add(verify_button).clicked() { + self.mode = ProofMode::Verify; + } + }); + + ui.separator(); + ui.add_space(Spacing::SM); + + // Main content area with scrolling + ScrollArea::vertical() + .max_height(available_height - 100.0) // Reserve space for mode toggle and margins + .show(ui, |ui| { + // Clone app_context to avoid borrowing issues + let app_context = self.app_context.clone(); + // Render the appropriate UI based on mode + let maybe_action = match self.mode { + ProofMode::Generate => self.render_generation_ui(ui, &app_context), + ProofMode::Verify => self.render_verification_ui(ui, &app_context), + }; + if let Some(ui_action) = maybe_action { + content_action |= ui_action; + } + }); + + content_action + }); + + action |= panel_action; + + // Note: Confirmation dialog handling would be done within the UI context if needed + + action + } +} diff --git a/src/ui/tools/mod.rs b/src/ui/tools/mod.rs index 3bc6af157..02e084194 100644 --- a/src/ui/tools/mod.rs +++ b/src/ui/tools/mod.rs @@ -1,5 +1,6 @@ pub mod contract_visualizer_screen; pub mod document_visualizer_screen; +pub mod grovestark_screen; pub mod masternode_list_diff_screen; pub mod platform_info_screen; pub mod proof_log_screen;