diff --git a/Cargo.lock b/Cargo.lock index 3429cde..34a664e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,14 +11,14 @@ dependencies = [ "macroific", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] @@ -105,15 +105,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.88" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -236,13 +236,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -262,9 +262,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" @@ -445,7 +445,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "syn_derive", ] @@ -506,9 +506,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] name = "cbc" @@ -521,9 +521,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.18" +version = "1.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +checksum = "58e804ac3194a48bb129643eb1d62fcc20d18c6b8c181704489353d13120bcd1" dependencies = [ "shlex", ] @@ -729,7 +729,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -740,7 +740,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -752,7 +752,7 @@ dependencies = [ "macroific", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -803,6 +803,15 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" +[[package]] +name = "equihash" +version = "0.2.0" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" +dependencies = [ + "blake2b_simd", + "byteorder", +] + [[package]] name = "equihash" version = "0.2.0" @@ -855,6 +864,14 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "f4jumble" +version = "0.1.0" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" +dependencies = [ + "blake2b_simd", +] + [[package]] name = "f4jumble" version = "0.1.0" @@ -884,7 +901,7 @@ dependencies = [ "macroific", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -912,9 +929,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide", @@ -948,9 +965,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -963,9 +980,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -973,15 +990,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -990,9 +1007,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -1009,32 +1026,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1073,9 +1090,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gloo-timers" @@ -1113,7 +1130,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -1188,6 +1205,12 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" + [[package]] name = "hashlink" version = "0.8.4" @@ -1289,9 +1312,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "hyper" @@ -1328,9 +1351,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", @@ -1341,7 +1364,6 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] @@ -1378,7 +1400,17 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "incrementalmerkletree" version = "0.6.0" -source = "git+https://github.com/ec2/incrementalmerkletree.git?rev=16eff253ad2575d48feec04f7387e6507a7dd698#16eff253ad2575d48feec04f7387e6507a7dd698" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75346da3bd8e3d8891d02508245ed2df34447ca6637e343829f8d08986e9cde2" +dependencies = [ + "either", +] + +[[package]] +name = "incrementalmerkletree" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d45063fbc4b0a37837f6bfe0445f269d13d730ad0aa3b5a7f74aa7bf27a0f4df" dependencies = [ "either", ] @@ -1413,12 +1445,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", "serde", ] @@ -1489,9 +1521,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.158" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libm" @@ -1561,7 +1593,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1572,7 +1604,7 @@ checksum = "13198c120864097a565ccb3ff947672d969932b7975ebd4085732c9f09435e55" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1585,7 +1617,7 @@ dependencies = [ "macroific_core", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1740,18 +1772,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.4" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -1774,7 +1806,38 @@ dependencies = [ "halo2_gadgets", "halo2_proofs", "hex", - "incrementalmerkletree", + "incrementalmerkletree 0.6.0", + "lazy_static", + "memuse", + "nonempty", + "pasta_curves", + "rand", + "reddsa", + "serde", + "subtle", + "tracing", + "visibility", + "zcash_note_encryption", + "zcash_spec", + "zip32", +] + +[[package]] +name = "orchard" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f18e997fa121de5c73e95cdc7e8512ae43b7de38904aeea5e5713cc48f3c0ba" +dependencies = [ + "aes", + "bitvec", + "blake2b_simd", + "ff", + "fpe", + "group", + "halo2_gadgets", + "halo2_proofs", + "hex", + "incrementalmerkletree 0.7.0", "lazy_static", "memuse", "nonempty", @@ -1860,27 +1923,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.5.0", + "indexmap 2.6.0", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1908,9 +1971,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "polling" @@ -1973,7 +2036,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2010,9 +2073,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] @@ -2028,9 +2091,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2ecbe40f08db5c006b5764a2645f7f3f141ce756412ac9e1dd6087e6d32995" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" dependencies = [ "bytes", "prost-derive", @@ -2038,9 +2101,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8650aabb6c35b860610e9cff5dc1af886c9e25073b7b1712a68972af4281302" +checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" dependencies = [ "bytes", "heck", @@ -2050,33 +2113,33 @@ dependencies = [ "once_cell", "petgraph", "prettyplease", - "prost 0.13.2", + "prost 0.13.3", "prost-types", "regex", - "syn 2.0.77", + "syn 2.0.79", "tempfile", ] [[package]] name = "prost-derive" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf0c195eebb4af52c752bec4f52f645da98b6e92077a04110c7f349477ae5ac" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" dependencies = [ "anyhow", "itertools", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "prost-types" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60caa6738c7369b940c3d49246a8d1749323674c65cb13010134f5c9bad5b519" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" dependencies = [ - "prost 0.13.2", + "prost 0.13.3", ] [[package]] @@ -2199,14 +2262,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -2220,13 +2283,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -2237,9 +2300,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rend" @@ -2364,9 +2427,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.13" +version = "0.23.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" dependencies = [ "log", "once_cell", @@ -2379,19 +2442,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-webpki" @@ -2437,7 +2499,39 @@ dependencies = [ "fpe", "group", "hex", - "incrementalmerkletree", + "incrementalmerkletree 0.6.0", + "jubjub", + "lazy_static", + "memuse", + "rand", + "rand_core", + "redjubjub", + "subtle", + "tracing", + "zcash_note_encryption", + "zcash_spec", + "zip32", +] + +[[package]] +name = "sapling-crypto" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfff8cfce16aeb38da50b8e2ed33c9018f30552beff2210c266662a021b17f38" +dependencies = [ + "aes", + "bellman", + "bitvec", + "blake2b_simd", + "blake2s_simd", + "bls12_381", + "byteorder", + "document-features", + "ff", + "fpe", + "group", + "hex", + "incrementalmerkletree 0.7.0", "jubjub", "lazy_static", "memuse", @@ -2553,7 +2647,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2570,15 +2664,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_derive", "serde_json", @@ -2588,14 +2682,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2621,11 +2715,24 @@ dependencies = [ [[package]] name = "shardtree" version = "0.4.0" -source = "git+https://github.com/ec2/incrementalmerkletree.git?rev=16eff253ad2575d48feec04f7387e6507a7dd698#16eff253ad2575d48feec04f7387e6507a7dd698" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78222845cd8bbe5eb95687407648ff17693a35de5e8abaa39a4681fb21e033f9" dependencies = [ "bitflags", "either", - "incrementalmerkletree", + "incrementalmerkletree 0.6.0", + "tracing", +] + +[[package]] +name = "shardtree" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5f2390975ebfe8838f9e861f7a588123d49a7a7a0a08568ea831d8ad53fc9b4" +dependencies = [ + "bitflags", + "either", + "incrementalmerkletree 0.7.0", "tracing", ] @@ -2637,9 +2744,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "slab" @@ -2712,9 +2819,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -2730,7 +2837,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2741,9 +2848,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -2754,22 +2861,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2853,7 +2960,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2912,7 +3019,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fef2e92c3cba6bbf5b7ee3528302c01e21bd7378795bf7cc7eff17da9ecd70" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2923,20 +3030,20 @@ checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" [[package]] name = "toml_edit" -version = "0.22.21" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b072cee73c449a636ffd6f32bd8de3a9f7119139aff882f44943ce2986dc5cf" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "toml_datetime", "winnow", ] [[package]] name = "tonic" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f6ba989e4b2c58ae83d862d3a3e27690b6e3ae630d0deb59f3697f32aa88ad" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-trait", "base64", @@ -2950,7 +3057,7 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost 0.13.2", + "prost 0.13.3", "rustls-pemfile", "tokio", "tokio-rustls", @@ -2964,15 +3071,16 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4ee8877250136bd7e3d2331632810a4df4ea5e004656990d8d66d2f5ee8a67" +checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" dependencies = [ "prettyplease", "proc-macro2", "prost-build", + "prost-types", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3051,7 +3159,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3138,9 +3246,9 @@ checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] @@ -3209,7 +3317,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3309,7 +3417,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -3343,15 +3451,16 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-rayon" -version = "1.2.1" -source = "git+https://github.com/9SMTM6/wasm-bindgen-rayon?rev=d1816e5bc2bf928ff5442355c04500a381d66a41#d1816e5bc2bf928ff5442355c04500a381d66a41" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d560adf232b44f860ada9759435f24c7446732aac10a7c17f64937c8014b1c7e" dependencies = [ "crossbeam-channel", "js-sys", @@ -3388,14 +3497,14 @@ checksum = "4b8220be1fa9e4c889b30fd207d4906657e7e90b12e0e6b0c8b8d8709f5de021" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" dependencies = [ "futures-util", "js-sys", @@ -3441,9 +3550,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ "rustls-pki-types", ] @@ -3487,12 +3596,12 @@ dependencies = [ "wasm_sync", "wasm_thread", "web-sys", - "zcash_address", - "zcash_client_backend", + "zcash_address 0.6.0", + "zcash_client_backend 0.14.0", "zcash_client_memory", "zcash_client_sqlite", - "zcash_keys", - "zcash_primitives", + "zcash_keys 0.4.0", + "zcash_primitives 0.19.0", "zcash_proofs", ] @@ -3632,9 +3741,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -3655,21 +3764,80 @@ source = "git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1e dependencies = [ "bech32", "bs58", - "f4jumble", + "f4jumble 0.1.0 (git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f)", "serde", "serde_with", - "zcash_encoding", - "zcash_protocol", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f)", + "zcash_protocol 0.3.0", +] + +[[package]] +name = "zcash_address" +version = "0.6.0" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" +dependencies = [ + "bech32", + "bs58", + "f4jumble 0.1.0 (git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be)", + "serde", + "serde_with", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be)", + "zcash_protocol 0.4.0", ] [[package]] name = "zcash_client_backend" version = "0.13.0" source = "git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f#9673cc2859e8a2528d1efd3c74795363f87ddf8f" +dependencies = [ + "base64", + "bech32", + "bls12_381", + "bs58", + "byteorder", + "crossbeam-channel", + "document-features", + "group", + "hex", + "incrementalmerkletree 0.6.0", + "memuse", + "nom", + "nonempty", + "orchard 0.9.0", + "pasta_curves", + "percent-encoding", + "prost 0.13.3", + "rand_core", + "rayon", + "sapling-crypto 0.2.0", + "secrecy", + "serde", + "serde_with", + "shardtree 0.4.0", + "subtle", + "time", + "tonic-build", + "tracing", + "which", + "zcash_address 0.5.0", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f)", + "zcash_keys 0.3.0", + "zcash_note_encryption", + "zcash_primitives 0.17.0", + "zcash_protocol 0.3.0", + "zip32", + "zip321 0.1.0", +] + +[[package]] +name = "zcash_client_backend" +version = "0.14.0" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" dependencies = [ "async-trait", "base64", "bech32", + "bip32", "bls12_381", "bs58", "byteorder", @@ -3679,69 +3847,70 @@ dependencies = [ "group", "hex", "hyper-util", - "incrementalmerkletree", + "incrementalmerkletree 0.7.0", "memuse", "nom", "nonempty", - "orchard", + "orchard 0.10.0", "pasta_curves", "percent-encoding", - "prost 0.13.2", + "prost 0.13.3", "rand_core", "rayon", - "sapling-crypto", + "sapling-crypto 0.3.0", "secrecy", "serde", "serde_with", - "shardtree", + "shardtree 0.5.0", "subtle", "time", "tonic", "tonic-build", "tracing", "which", - "zcash_address", - "zcash_encoding", - "zcash_keys", + "zcash_address 0.6.0", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be)", + "zcash_keys 0.4.0", "zcash_note_encryption", - "zcash_primitives", - "zcash_protocol", + "zcash_primitives 0.19.0", + "zcash_protocol 0.4.0", "zip32", - "zip321", + "zip321 0.2.0", ] [[package]] name = "zcash_client_memory" version = "0.1.0" -source = "git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f#9673cc2859e8a2528d1efd3c74795363f87ddf8f" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" dependencies = [ "async-trait", + "bip32", "bs58", "byteorder", "group", - "incrementalmerkletree", + "incrementalmerkletree 0.7.0", "jubjub", "nonempty", - "orchard", - "prost 0.13.2", + "orchard 0.10.0", + "prost 0.13.3", "rayon", - "sapling-crypto", + "sapling-crypto 0.3.0", "secrecy", "serde", "serde_with", - "shardtree", + "shardtree 0.5.0", "static_assertions", "subtle", "thiserror", "tokio", "tracing", "wasm_sync", - "zcash_address", - "zcash_client_backend", - "zcash_encoding", - "zcash_keys", - "zcash_primitives", - "zcash_protocol", + "zcash_address 0.6.0", + "zcash_client_backend 0.14.0", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be)", + "zcash_keys 0.4.0", + "zcash_primitives 0.19.0", + "zcash_protocol 0.4.0", "zip32", ] @@ -3754,33 +3923,42 @@ dependencies = [ "byteorder", "document-features", "group", - "incrementalmerkletree", + "incrementalmerkletree 0.6.0", "jubjub", "maybe-rayon", "nonempty", - "orchard", - "prost 0.13.2", + "orchard 0.9.0", + "prost 0.13.3", "regex", "rusqlite", - "sapling-crypto", + "sapling-crypto 0.2.0", "schemer", "schemer-rusqlite", "secrecy", - "shardtree", + "shardtree 0.4.0", "static_assertions", "subtle", "time", "tracing", "uuid", - "zcash_address", - "zcash_client_backend", - "zcash_encoding", - "zcash_keys", - "zcash_primitives", - "zcash_protocol", + "zcash_address 0.5.0", + "zcash_client_backend 0.13.0", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f)", + "zcash_keys 0.3.0", + "zcash_primitives 0.17.0", + "zcash_protocol 0.3.0", "zip32", ] +[[package]] +name = "zcash_encoding" +version = "0.2.1" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" +dependencies = [ + "byteorder", + "nonempty", +] + [[package]] name = "zcash_encoding" version = "0.2.1" @@ -3794,6 +3972,33 @@ dependencies = [ name = "zcash_keys" version = "0.3.0" source = "git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f#9673cc2859e8a2528d1efd3c74795363f87ddf8f" +dependencies = [ + "bech32", + "blake2b_simd", + "bls12_381", + "bs58", + "byteorder", + "document-features", + "group", + "memuse", + "nonempty", + "orchard 0.9.0", + "rand_core", + "sapling-crypto 0.2.0", + "secrecy", + "subtle", + "tracing", + "zcash_address 0.5.0", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f)", + "zcash_primitives 0.17.0", + "zcash_protocol 0.3.0", + "zip32", +] + +[[package]] +name = "zcash_keys" +version = "0.4.0" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" dependencies = [ "bech32", "bip32", @@ -3805,16 +4010,16 @@ dependencies = [ "group", "memuse", "nonempty", - "orchard", + "orchard 0.10.0", "rand_core", - "sapling-crypto", + "sapling-crypto 0.3.0", "secrecy", "subtle", "tracing", - "zcash_address", - "zcash_encoding", - "zcash_primitives", - "zcash_protocol", + "zcash_address 0.6.0", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be)", + "zcash_primitives 0.19.0", + "zcash_protocol 0.4.0", "zip32", ] @@ -3835,6 +4040,42 @@ dependencies = [ name = "zcash_primitives" version = "0.17.0" source = "git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f#9673cc2859e8a2528d1efd3c74795363f87ddf8f" +dependencies = [ + "aes", + "blake2b_simd", + "bs58", + "byteorder", + "document-features", + "equihash 0.2.0 (git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f)", + "ff", + "fpe", + "group", + "hex", + "incrementalmerkletree 0.6.0", + "jubjub", + "memuse", + "nonempty", + "orchard 0.9.0", + "rand", + "rand_core", + "redjubjub", + "sapling-crypto 0.2.0", + "serde", + "sha2", + "subtle", + "tracing", + "zcash_address 0.5.0", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f)", + "zcash_note_encryption", + "zcash_protocol 0.3.0", + "zcash_spec", + "zip32", +] + +[[package]] +name = "zcash_primitives" +version = "0.19.0" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" dependencies = [ "aes", "bip32", @@ -3842,38 +4083,38 @@ dependencies = [ "bs58", "byteorder", "document-features", - "equihash", + "equihash 0.2.0 (git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be)", "ff", "fpe", "group", "hex", - "incrementalmerkletree", + "incrementalmerkletree 0.7.0", "jubjub", "memuse", "nonempty", - "orchard", + "orchard 0.10.0", "rand", "rand_core", "redjubjub", "ripemd", - "sapling-crypto", + "sapling-crypto 0.3.0", "secp256k1", "serde", "sha2", "subtle", "tracing", - "zcash_address", - "zcash_encoding", + "zcash_address 0.6.0", + "zcash_encoding 0.2.1 (git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be)", "zcash_note_encryption", - "zcash_protocol", + "zcash_protocol 0.4.0", "zcash_spec", "zip32", ] [[package]] name = "zcash_proofs" -version = "0.17.0" -source = "git+https://github.com/ChainSafe/librustzcash?rev=9673cc2859e8a2528d1efd3c74795363f87ddf8f#9673cc2859e8a2528d1efd3c74795363f87ddf8f" +version = "0.19.0" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" dependencies = [ "bellman", "blake2b_simd", @@ -3884,10 +4125,10 @@ dependencies = [ "lazy_static", "rand_core", "redjubjub", - "sapling-crypto", + "sapling-crypto 0.3.0", "tracing", "wagyu-zcash-parameters", - "zcash_primitives", + "zcash_primitives 0.19.0", ] [[package]] @@ -3901,11 +4142,22 @@ dependencies = [ "serde_with", ] +[[package]] +name = "zcash_protocol" +version = "0.4.0" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" +dependencies = [ + "document-features", + "memuse", + "serde", + "serde_with", +] + [[package]] name = "zcash_spec" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a3bf58b673cb3dacd8ae09ba345998923a197ab0da70d6239d8e8838949e9b" +checksum = "1840a18eb788adab921c26e930c0aaaca509cd31090f176d1d8bbee15ddca855" dependencies = [ "blake2b_simd", ] @@ -3928,7 +4180,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3948,7 +4200,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3971,6 +4223,20 @@ dependencies = [ "percent-encoding", "serde", "serde_with", - "zcash_address", - "zcash_protocol", + "zcash_address 0.5.0", + "zcash_protocol 0.3.0", +] + +[[package]] +name = "zip321" +version = "0.2.0" +source = "git+https://github.com/ChainSafe/librustzcash?rev=5e5b30301891e2d4614951f3a99d23b980c8a9be#5e5b30301891e2d4614951f3a99d23b980c8a9be" +dependencies = [ + "base64", + "nom", + "percent-encoding", + "serde", + "serde_with", + "zcash_address 0.6.0", + "zcash_protocol 0.4.0", ] diff --git a/Cargo.toml b/Cargo.toml index 1f57d91..6d0215d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,13 +44,13 @@ no-bundler = ["wasm-bindgen-rayon?/no-bundler", "wasm_thread/no-bundler"] [dependencies] ## Web dependencies -wasm-bindgen = "0.2.93" +wasm-bindgen = "=0.2.93" ## There is something weird happening in 0.2.95 where the workerHelpers.worker.js file isnt being included js-sys = "0.3.70" wasm-bindgen-futures = "0.4.43" web-sys = { version = "0.3.70", features = [ "console", ] } -wasm-bindgen-rayon = { version = "1.2.1", optional = true } +wasm-bindgen-rayon = { version = "1.2", optional = true } # WASM specific dependencies tracing-web = { version = "0.1.3", optional = true } @@ -60,12 +60,13 @@ tokio_with_wasm = { version = "0.7.1", features = ["rt", "rt-multi-thread", "syn ## Zcash dependencies -zcash_keys = { git = "https://github.com/ChainSafe/librustzcash", rev = "9673cc2859e8a2528d1efd3c74795363f87ddf8f", features = ["transparent-inputs", "orchard", "sapling", "unstable"] } -zcash_client_backend = { git = "https://github.com/ChainSafe/librustzcash", rev = "9673cc2859e8a2528d1efd3c74795363f87ddf8f", default-features = false, features = ["sync", "lightwalletd-tonic", "wasm-bindgen", "orchard"] } -zcash_client_memory = { git = "https://github.com/ChainSafe/librustzcash", rev = "9673cc2859e8a2528d1efd3c74795363f87ddf8f", features = ["orchard"] } -zcash_primitives = { git = "https://github.com/ChainSafe/librustzcash", rev = "9673cc2859e8a2528d1efd3c74795363f87ddf8f" } -zcash_address = { git = "https://github.com/ChainSafe/librustzcash", rev = "9673cc2859e8a2528d1efd3c74795363f87ddf8f" } -zcash_proofs = { git = "https://github.com/ChainSafe/librustzcash", rev = "9673cc2859e8a2528d1efd3c74795363f87ddf8f", default-features = false, features = ["bundled-prover"] } +zcash_keys = { git = "https://github.com/ChainSafe/librustzcash", rev = "5e5b30301891e2d4614951f3a99d23b980c8a9be", features = ["transparent-inputs", "orchard", "sapling", "unstable"] } +zcash_client_backend = { git = "https://github.com/ChainSafe/librustzcash", rev = "5e5b30301891e2d4614951f3a99d23b980c8a9be", default-features = false, features = ["transparent-inputs", "sync", "lightwalletd-tonic", "wasm-bindgen", "orchard"] } +zcash_client_memory = { git = "https://github.com/ChainSafe/librustzcash", rev = "5e5b30301891e2d4614951f3a99d23b980c8a9be", features = ["orchard", "transparent-inputs"] } +zcash_primitives = { git = "https://github.com/ChainSafe/librustzcash", rev = "5e5b30301891e2d4614951f3a99d23b980c8a9be" } +zcash_address = { git = "https://github.com/ChainSafe/librustzcash", rev = "5e5b30301891e2d4614951f3a99d23b980c8a9be" } +zcash_proofs = { git = "https://github.com/ChainSafe/librustzcash", rev = "5e5b30301891e2d4614951f3a99d23b980c8a9be", default-features = false, features = ["bundled-prover"] } + ## gRPC Web dependencies prost = { version = "0.12", default-features = false } @@ -110,14 +111,6 @@ byte-unit = { version = "5.1.4", features = ["byte"] } [patch.crates-io] zip32 = { git = "https://github.com/zcash/zip32.git", branch = "diversifier_index_ord" } -# TODO: See: https://github.com/RReverser/wasm-bindgen-rayon/pull/12 -wasm-bindgen-rayon = { git = "https://github.com/9SMTM6/wasm-bindgen-rayon", rev = "d1816e5bc2bf928ff5442355c04500a381d66a41" } -# TODO: Remove these once the PRs are merged -shardtree = { git = "https://github.com/ec2/incrementalmerkletree.git", rev = "16eff253ad2575d48feec04f7387e6507a7dd698" } -incrementalmerkletree = { git = "https://github.com/ec2/incrementalmerkletree.git", rev = "16eff253ad2575d48feec04f7387e6507a7dd698" } - -# [patch.'https://github.com/WilsonGramer/wasm_thread'] -# wasm_thread = { git = "https://github.com/ec2/wasm_thread", rev = "9e432077948d927d49373d1d039c23447d3648df" } #[patch.'https://github.com/chainsafe/librustzcash'] #zcash_address = { path = "../librustzcash/components/zcash_address" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d15b4e8..f73be90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,21 +62,6 @@ importers: specifier: ^14.2.3 version: 14.2.3 - packages/e2e-tests: - devDependencies: - '@playwright/test': - specifier: ^1.47.2 - version: 1.48.0 - '@types/node': - specifier: ^22.7.4 - version: 22.7.5 - '@webzjs/webz-core': - specifier: workspace:^ - version: link:../webz-core - serve: - specifier: ^14.2.3 - version: 14.2.3 - packages/webz-core: {} packages: @@ -1659,6 +1644,7 @@ snapshots: transitivePeerDependencies: - '@parcel/core' + '@parcel/cache@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': '@parcel/cache@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) @@ -1668,6 +1654,8 @@ snapshots: lmdb: 2.8.5 transitivePeerDependencies: - '@swc/helpers' + transitivePeerDependencies: + - '@swc/helpers' '@parcel/codeframe@2.12.0': dependencies: @@ -1728,6 +1716,7 @@ snapshots: dependencies: '@mischnic/json-sourcemap': 0.1.1 '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/diagnostic': 2.12.0 '@parcel/events': 2.12.0 '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) @@ -2142,6 +2131,7 @@ snapshots: '@parcel/types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: + '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/diagnostic': 2.12.0 '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) diff --git a/src/bindgen/wallet.rs b/src/bindgen/wallet.rs index 557ac56..b6a82a5 100644 --- a/src/bindgen/wallet.rs +++ b/src/bindgen/wallet.rs @@ -10,7 +10,7 @@ use tonic_web_wasm_client::Client; use crate::error::Error; use crate::wallet::usk_from_seed_str; use crate::Network; -use crate::{bindgen::proposal::Proposal, Wallet, PRUNING_DEPTH}; +use crate::{bindgen::proposal::Proposal, BlockRange, Wallet, PRUNING_DEPTH}; use wasm_thread as thread; use zcash_address::ZcashAddress; use zcash_client_backend::data_api::{InputSource, WalletRead}; @@ -196,6 +196,10 @@ impl WebWallet { .map(|id| *id) } + pub async fn suggest_scan_ranges(&self) -> Result, Error> { + self.inner.suggest_scan_ranges().await + } + /// /// Start a background sync task which will fetch and scan blocks from the connected lighwalletd server /// @@ -204,11 +208,10 @@ impl WebWallet { /// pub async fn sync(&self) -> Result<(), Error> { assert!(!thread::is_web_worker_thread()); - let db = self.inner.clone(); let sync_handler = thread::Builder::new() - .name("sync".to_string()) + .name("sync3".to_string()) .spawn_async(|| async { assert!(thread::is_web_worker_thread()); tracing::debug!( diff --git a/src/init.rs b/src/init.rs index 917a59e..2ed486f 100644 --- a/src/init.rs +++ b/src/init.rs @@ -40,6 +40,7 @@ fn setup_tracing() { // For WASM, we must set the directives here at compile time. let filter_layer = EnvFilter::default() .add_directive(LevelFilter::INFO.into()) + .add_directive("webz_core=debug".parse().unwrap()) .add_directive("zcash_client_memory=info".parse().unwrap()) .add_directive("zcash_client_backend::scanning=debug".parse().unwrap()) .add_directive("zcash_client_backend::sync=debug".parse().unwrap()); diff --git a/src/lib.rs b/src/lib.rs index 5960efc..a9d1ca3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -23,6 +23,7 @@ pub const PRUNING_DEPTH: usize = 100; #[cfg(feature = "wasm-parallel")] pub use wasm_bindgen_rayon::init_thread_pool; + // dummy NO-OP init_thread pool to maintain the same API between features #[cfg(not(feature = "wasm-parallel"))] #[wasm_bindgen(js_name = initThreadPool)] @@ -30,3 +31,5 @@ pub fn init_thread_pool(_threads: usize) {} #[wasm_bindgen] pub struct BlockRange(pub u32, pub u32); + +pub mod sync; diff --git a/src/sync.rs b/src/sync.rs new file mode 100644 index 0000000..50ec1b8 --- /dev/null +++ b/src/sync.rs @@ -0,0 +1,240 @@ +use std::sync::Arc; +use subtle::ConditionallySelectable; +use tokio::sync::RwLock; +use tonic::codegen::{Body, Bytes, StdError}; +use tonic::{body::BoxBody, client::GrpcService}; +use tracing::{debug, info}; +use zcash_client_backend::data_api::chain::BlockCache; +use zcash_client_backend::data_api::scanning::{ScanPriority, ScanRange}; +use zcash_client_backend::data_api::{WalletCommitmentTrees, WalletRead, WalletWrite}; +use zcash_client_backend::proto::service::compact_tx_streamer_client::CompactTxStreamerClient; +use zcash_client_backend::sync::{ + download_blocks, download_chain_state, refresh_utxos, scan_blocks, update_chain_tip, + update_subtree_roots, Error, +}; +use zcash_primitives::consensus::{BlockHeight, NetworkUpgrade, Parameters}; + +/// Scans the chain until the wallet is up-to-date. +pub async fn run( + client: &mut CompactTxStreamerClient, + params: &P, + db_cache: &CaT, + db_data: Arc>, + batch_size: u32, +) -> Result<(), Error::Error, ::Error>> +where + P: Parameters + Send + 'static, + ChT: GrpcService, + ChT::Error: Into, + ChT::ResponseBody: Body + Send + 'static, + ::Error: Into + Send, + CaT: BlockCache, + CaT::Error: std::error::Error + Send + Sync + 'static, + DbT: WalletWrite + WalletCommitmentTrees, + DbT::AccountId: ConditionallySelectable + Default + Send + 'static, + ::Error: std::error::Error + Send + Sync + 'static, + ::Error: std::error::Error + Send + Sync + 'static, +{ + let wallet_birthday = db_data + .read() + .await + .get_wallet_birthday() + .map_err(Error::Wallet)? + .unwrap_or_else(|| params.activation_height(NetworkUpgrade::Sapling).unwrap()); + tracing::info!("Sync3 Run!"); + + // 1) Download note commitment tree data from lightwalletd + // 2) Pass the commitment tree data to the database. + update_subtree_roots(client, &mut *db_data.write().await).await?; + + while running( + client, + params, + db_cache, + db_data.clone(), + batch_size, + wallet_birthday, + ) + .await? + {} + + Ok(()) +} + +pub async fn running( + client: &mut CompactTxStreamerClient, + params: &P, + db_cache: &CaT, + db_data: Arc>, + batch_size: u32, + wallet_birthday: BlockHeight, +) -> Result::Error, TrErr>> +where + P: Parameters + Send + 'static, + ChT: GrpcService, + ChT::Error: Into, + ChT::ResponseBody: Body + Send + 'static, + ::Error: Into + Send, + CaT: BlockCache, + CaT::Error: std::error::Error + Send + Sync + 'static, + DbT: WalletWrite, + DbT::AccountId: ConditionallySelectable + Default + Send + 'static, + DbT::Error: std::error::Error + Send + Sync + 'static, +{ + // 3) Download chain tip metadata from lightwalletd + // 4) Notify the wallet of the updated chain tip. + update_chain_tip(client, &mut *db_data.write().await).await?; + + // Refresh UTXOs for the accounts in the wallet. We do this before we perform + // any shielded scanning, to ensure that we discover any UTXOs between the old + // fully-scanned height and the current chain tip. + let account_ids = db_data + .read() + .await + .get_account_ids() + .map_err(Error::Wallet)?; + for account_id in account_ids { + let start_height = db_data + .read() + .await + .block_fully_scanned() + .map_err(Error::Wallet)? + .map(|meta| meta.block_height()) + .unwrap_or(wallet_birthday); + info!( + "Refreshing UTXOs for {:?} from height {}", + account_id, start_height, + ); + refresh_utxos( + params, + client, + &mut *db_data.write().await, + account_id, + start_height, + ) + .await?; + } + + // 5) Get the suggested scan ranges from the wallet database + let mut scan_ranges = db_data + .read() + .await + .suggest_scan_ranges() + .map_err(Error::Wallet)?; + + // Store the handles to cached block deletions (which we spawn into separate + // tasks to allow us to continue downloading and scanning other ranges). + let mut block_deletions = vec![]; + + // 6) Run the following loop until the wallet's view of the chain tip as of + // the previous wallet session is valid. + loop { + // If there is a range of blocks that needs to be verified, it will always + // be returned as the first element of the vector of suggested ranges. + match scan_ranges.first() { + Some(scan_range) if scan_range.priority() == ScanPriority::Verify => { + // Download the blocks in `scan_range` into the block source, + // overwriting any existing blocks in this range. + download_blocks(client, db_cache, scan_range).await?; + + let chain_state = + download_chain_state(client, scan_range.block_range().start - 1).await?; + + // Scan the downloaded blocks and check for scanning errors that + // indicate the wallet's chain tip is out of sync with blockchain + // history. + let scan_ranges_updated = scan_blocks( + params, + db_cache, + &mut *db_data.write().await, + &chain_state, + scan_range, + ) + .await?; + + // Delete the now-scanned blocks, because keeping the entire chain + // in CompactBlock files on disk is horrendous for the filesystem. + block_deletions.push(db_cache.delete(scan_range.clone())); + + if scan_ranges_updated { + // The suggested scan ranges have been updated, so we re-request. + scan_ranges = db_data + .read() + .await + .suggest_scan_ranges() + .map_err(Error::Wallet)?; + } else { + // At this point, the cache and scanned data are locally + // consistent (though not necessarily consistent with the + // latest chain tip - this would be discovered the next time + // this codepath is executed after new blocks are received) so + // we can break out of the loop. + break; + } + } + _ => { + // Nothing to verify; break out of the loop + break; + } + } + } + + // 7) Loop over the remaining suggested scan ranges, retrieving the requested data + // and calling `scan_cached_blocks` on each range. + let scan_ranges = db_data + .read() + .await + .suggest_scan_ranges() + .map_err(Error::Wallet)?; + debug!("Suggested ranges: {:?}", scan_ranges); + for scan_range in scan_ranges.into_iter().flat_map(|r| { + // Limit the number of blocks we download and scan at any one time. + (0..).scan(r, |acc, _| { + if acc.is_empty() { + None + } else if let Some((cur, next)) = acc.split_at(acc.block_range().start + batch_size) { + *acc = next; + Some(cur) + } else { + let cur = acc.clone(); + let end = acc.block_range().end; + *acc = ScanRange::from_parts(end..end, acc.priority()); + Some(cur) + } + }) + }) { + // Download the blocks in `scan_range` into the block source. + download_blocks(client, db_cache, &scan_range).await?; + + let chain_state = download_chain_state(client, scan_range.block_range().start - 1).await?; + + // Scan the downloaded blocks. + let scan_ranges_updated = scan_blocks( + params, + db_cache, + &mut *db_data.write().await, + &chain_state, + &scan_range, + ) + .await?; + + // Delete the now-scanned blocks. + block_deletions.push(db_cache.delete(scan_range)); + + if scan_ranges_updated { + // The suggested scan ranges have been updated (either due to a continuity + // error or because a higher priority range has been added). + info!("Waiting for cached blocks to be deleted..."); + for deletion in block_deletions { + deletion.await.map_err(Error::Cache)?; + } + return Ok(true); + } + } + + info!("Waiting for cached blocks to be deleted..."); + for deletion in block_deletions { + deletion.await.map_err(Error::Cache)?; + } + Ok(false) +} diff --git a/src/wallet.rs b/src/wallet.rs index 755adf9..9e42219 100644 --- a/src/wallet.rs +++ b/src/wallet.rs @@ -40,7 +40,6 @@ use zcash_primitives::transaction::fees::zip317::FeeRule; use zcash_primitives::transaction::TxId; use zcash_proofs::prover::LocalTxProver; -use zcash_client_backend::sync::run; const BATCH_SIZE: u32 = 10000; /// # A Zcash wallet @@ -229,12 +228,11 @@ where // TODO: This should be held in the Wallet struct so we can download in parallel let db_cache = MemBlockCache::new(); - let mut db = self.db.write().await; - run( + crate::sync::run( &mut client, &self.network.clone(), &db_cache, - &mut *db, + self.db.clone(), BATCH_SIZE, ) .await