diff --git a/Cargo.lock b/Cargo.lock index aff1431482..0d82f46d23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,8 +35,8 @@ dependencies = [ "actix-rt", "actix-service", "actix-utils", - "ahash 0.8.3", - "base64 0.21.4", + "ahash 0.8.6", + "base64 0.21.5", "bitflags 2.4.1", "brotli", "bytes", @@ -71,7 +71,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -109,7 +109,7 @@ dependencies = [ "futures-core", "futures-util", "mio", - "socket2 0.5.4", + "socket2 0.5.5", "tokio", "tracing", ] @@ -150,7 +150,7 @@ dependencies = [ "actix-service", "actix-utils", "actix-web-codegen", - "ahash 0.8.3", + "ahash 0.8.6", "bytes", "bytestring", "cfg-if", @@ -170,7 +170,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "smallvec", - "socket2 0.5.4", + "socket2 0.5.5", "time", "url", ] @@ -184,7 +184,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -316,25 +316,26 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", - "getrandom 0.2.10", + "getrandom 0.2.11", "once_cell", "version_check", + "zerocopy", ] [[package]] @@ -386,7 +387,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c494134f746c14dc653a35a4ea5aca24ac368529da5370ecf41fe0341c35772f" dependencies = [ "android_log-sys", - "env_logger 0.10.0", + "env_logger 0.10.1", "log", "once_cell", ] @@ -428,30 +429,30 @@ checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "a3a318f1f38d2418400f8209655bfd825785afd25aa30bb7ba6cc792e4596748" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -483,9 +484,9 @@ dependencies = [ [[package]] name = "array-bytes" -version = "6.1.0" +version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b1c5a481ec30a5abd8dfbd94ab5cf1bb4e9a66be7f1b3b322f2f1170c200fd" +checksum = "6f840fb7195bcfc5e17ea40c26e5ce6d5b9ce5d584466e17703209657e459ae0" [[package]] name = "arrayref" @@ -585,7 +586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener 2.5.3", "futures-core", ] @@ -601,31 +602,32 @@ dependencies = [ [[package]] name = "async-io" -version = "1.13.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +checksum = "d6d3b15875ba253d1110c740755e246537483f152fa334f91abd7fe84c88b3ff" dependencies = [ "async-lock", - "autocfg 1.1.0", "cfg-if", "concurrent-queue", - "futures-lite", - "log", + "futures-io", + "futures-lite 2.1.0", "parking", - "polling", - "rustix 0.37.25", + "polling 3.3.1", + "rustix", "slab", - "socket2 0.4.9", - "waker-fn", + "tracing", + "windows-sys 0.52.0", ] [[package]] name = "async-lock" -version = "2.8.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" dependencies = [ - "event-listener", + "event-listener 4.0.0", + "event-listener-strategy", + "pin-project-lite 0.2.13", ] [[package]] @@ -647,7 +649,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -658,7 +660,7 @@ checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -829,9 +831,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.4" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "base64ct" @@ -995,53 +997,38 @@ dependencies = [ "ff 0.10.1", "group 0.10.0", "pairing 0.20.0", -<<<<<<< HEAD - "rand_core 0.6.4", -======= - "rand_core 0.6.3", ->>>>>>> b6a43787b (Add bilinear equations into the zk proof; the last eq passes the tests) - "subtle 2.4.1", -] - -[[package]] -name = "bls12_381" -version = "0.6.0" -<<<<<<< HEAD -======= -dependencies = [ - "digest 0.9.0", - "ff 0.11.1", - "group 0.11.0", - "pairing 0.21.0", "rand_core 0.6.4", "subtle 2.4.1", - "zeroize", ] [[package]] name = "bls12_381" version = "0.6.0" source = "git+https://github.com/jstuczyn/bls12_381?branch=gt-serialisation#10fb6f700bfda17c8475af3bfd31e3fec15f2278" ->>>>>>> d6ab65512 (issuance cli side) dependencies = [ "digest 0.9.0", -<<<<<<< HEAD "ff 0.11.1", "group 0.11.0", "pairing 0.21.0", "rand_core 0.6.4", -======= - "ff 0.11.0", - "group 0.11.0", - "pairing 0.21.0", - "rand_core 0.6.3", ->>>>>>> b6a43787b (Add bilinear equations into the zk proof; the last eq passes the tests) "subtle 2.4.1", "zeroize", ] [[package]] -<<<<<<< HEAD +name = "bls12_381" +version = "0.8.0" +dependencies = [ + "digest 0.9.0", + "ff 0.13.0", + "group 0.13.0", + "pairing 0.23.0", + "rand_core 0.6.4", + "subtle 2.4.1", + "zeroize", +] + +[[package]] name = "bnum" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1060,17 +1047,15 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", ] [[package]] -======= ->>>>>>> b6a43787b (Add bilinear equations into the zk proof; the last eq passes the tests) name = "bs58" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1130,9 +1115,9 @@ dependencies = [ [[package]] name = "bytestring" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238e4886760d98c4f899360c834fa93e62cf7f721ac3c2da375cbdf4b8679aae" +checksum = "74d80203ea6b29df88012294f62733de21cfeab47f17b41af3a38bc30a03ee72" dependencies = [ "bytes", ] @@ -1154,7 +1139,7 @@ checksum = "f769ab9e8c1652d78dd0b3ec59cdaa1e2bcb3b6b39f6681b256abcdbe101cc14" dependencies = [ "anyhow", "cargo_metadata", - "clap 4.4.7", + "clap 4.4.11", "concolor-control", "crates-index", "dirs-next", @@ -1179,9 +1164,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" dependencies = [ "serde", ] @@ -1255,18 +1240,6 @@ dependencies = [ "keystream", ] -[[package]] -name = "chacha20" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6" -dependencies = [ - "cfg-if", - "cipher 0.3.0", - "cpufeatures", - "zeroize", -] - [[package]] name = "chacha20" version = "0.9.1" @@ -1278,19 +1251,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "chacha20poly1305" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5" -dependencies = [ - "aead 0.4.3", - "chacha20 0.8.2", - "cipher 0.3.0", - "poly1305 0.7.2", - "zeroize", -] - [[package]] name = "chacha20poly1305" version = "0.10.1" @@ -1298,9 +1258,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ "aead 0.5.2", - "chacha20 0.9.1", + "chacha20", "cipher 0.4.4", - "poly1305 0.8.0", + "poly1305", "zeroize", ] @@ -1400,9 +1360,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.7" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", "clap_derive", @@ -1410,9 +1370,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.7" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", @@ -1423,20 +1383,20 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.4.3" +version = "4.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ae8ba90b9d8b007efe66e55e48fb936272f5ca00349b5b0e89877520d35ea7" +checksum = "bffe91f06a11b4b9420f62103854e90867812cd5d01557f853c5ee8e791b12ae" dependencies = [ - "clap 4.4.7", + "clap 4.4.11", ] [[package]] name = "clap_complete_fig" -version = "4.4.1" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bdbe21a263b628f83fcbeac86a4416a1d588c7669dd41473bc4149e4e7d2f1" +checksum = "87e571d70e22ec91d34e1c5317c8308035a2280d925167646bf094fc5de1737c" dependencies = [ - "clap 4.4.7", + "clap 4.4.11", "clap_complete", ] @@ -1449,7 +1409,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -1534,18 +1494,18 @@ checksum = "ad159cc964ac8f9d407cbc0aa44b02436c054b541f2b4b5f06972e1efdc54bc7" [[package]] name = "concurrent-queue" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ "crossbeam-utils", ] [[package]] name = "config" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d379af7f68bfc21714c6c7dea883544201741d2ce8274bb12fa54f89507f52a7" +checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca" dependencies = [ "async-trait", "lazy_static", @@ -1643,9 +1603,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -1653,9 +1613,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core2" @@ -1672,8 +1632,8 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32560304ab4c365791fd307282f76637213d8083c1a98490c35159cd67852237" dependencies = [ - "prost 0.12.1", - "prost-types 0.12.1", + "prost 0.12.3", + "prost-types 0.12.3", "tendermint-proto", ] @@ -1685,13 +1645,13 @@ checksum = "47126f5364df9387b9d8559dcef62e99010e1d4098f39eb3f7ee4b5c254e40ea" dependencies = [ "bip32", "cosmos-sdk-proto", - "ecdsa 0.16.8", + "ecdsa 0.16.9", "eyre", "k256", "rand_core 0.6.4", "serde", "serde_json", - "signature 2.1.0", + "signature 2.2.0", "subtle-encoding", "tendermint", "tendermint-rpc", @@ -1700,11 +1660,12 @@ dependencies = [ [[package]] name = "cosmwasm-crypto" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6fb22494cf7d23d0c348740e06e5c742070b2991fd41db77bba0bcfbae1a723" +checksum = "d8bb3c77c3b7ce472056968c745eb501c440fbc07be5004eba02782c35bfbbe3" dependencies = [ "digest 0.10.7", + "ecdsa 0.16.9", "ed25519-zebra", "k256", "rand_core 0.6.4", @@ -1713,9 +1674,9 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e199424486ea97d6b211db6387fd72e26b4a439d40cc23140b2d8305728055b" +checksum = "fea73e9162e6efde00018d55ed0061e93a108b5d6ec4548b4f8ce3c706249687" dependencies = [ "syn 1.0.109", ] @@ -1774,9 +1735,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -1817,7 +1778,7 @@ version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" dependencies = [ - "crc-catalog 2.2.0", + "crc-catalog 2.4.0", ] [[package]] @@ -1828,9 +1789,9 @@ checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403" [[package]] name = "crc-catalog" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" @@ -1842,22 +1803,6 @@ dependencies = [ ] [[package]] -<<<<<<< HEAD -======= -name = "credentials" -version = "0.1.0" -dependencies = [ - "bls12_381 0.5.0", - "coconut-interface", - "crypto", - "network-defaults", - "thiserror", - "url", - "validator-client", -] - -[[package]] ->>>>>>> b6a43787b (Add bilinear equations into the zk proof; the last eq passes the tests) name = "criterion" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2027,9 +1972,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array 0.14.7", "rand_core 0.6.4", @@ -2138,7 +2083,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "socket2 0.4.9", + "socket2 0.4.10", "winapi", ] @@ -2190,13 +2135,13 @@ dependencies = [ [[package]] name = "curve25519-dalek-derive" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2385,7 +2330,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.1", + "hashbrown 0.14.3", "lock_api", "once_cell", "parking_lot_core 0.9.9", @@ -2393,15 +2338,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "data-encoding-macro" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c904b33cc60130e1aeea4956ab803d08a3f4a0ca82d64ed757afac3891f2bb99" +checksum = "20c01c06f5f429efdf2bae21eb67c28b3df3cf85b7dd2d8ef09c0838dac5d33e" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -2409,9 +2354,9 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fdf3fce3ce863539ec1d7fd1b6dcc3c645663376b43ed376bbf887733e4f772" +checksum = "0047d07f2c89b17dd631c80450d69841a6b5d7fb17278cbc43d7e4cfcf2576f3" dependencies = [ "data-encoding", "syn 1.0.109", @@ -2422,7 +2367,7 @@ name = "defguard_wireguard_rs" version = "0.3.0" source = "git+https://github.com/neacsu/wireguard-rs.git?rev=c2cd0c1119f699f4bc43f5e6ffd6fc242caa42ed#c2cd0c1119f699f4bc43f5e6ffd6fc242caa42ed" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", "libc", "log", "netlink-packet-core 0.7.0", @@ -2487,9 +2432,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" dependencies = [ "powerfmt", "serde", @@ -2580,7 +2525,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2683,7 +2628,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2718,9 +2663,9 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "dyn-clone" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" [[package]] name = "ecdsa" @@ -2736,16 +2681,16 @@ dependencies = [ [[package]] name = "ecdsa" -version = "0.16.8" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der 0.7.8", "digest 0.10.7", - "elliptic-curve 0.13.6", + "elliptic-curve 0.13.7", "rfc6979 0.4.0", - "signature 2.1.0", - "spki 0.7.2", + "signature 2.2.0", + "spki 0.7.3", ] [[package]] @@ -2765,7 +2710,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8 0.10.2", - "signature 2.1.0", + "signature 2.2.0", ] [[package]] @@ -2798,15 +2743,16 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0" dependencies = [ "curve25519-dalek 4.1.1", "ed25519 2.2.3", "rand_core 0.6.4", "serde", "sha2 0.10.8", + "subtle 2.4.1", "zeroize", ] @@ -2855,12 +2801,12 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.6" +version = "0.13.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" +checksum = "e9775b22bc152ad86a0cf23f0f348b884b26add12bf741e7ffc4d4ab2ab4d205" dependencies = [ "base16ct 0.2.0", - "crypto-bigint 0.5.3", + "crypto-bigint 0.5.5", "digest 0.10.7", "ff 0.13.0", "generic-array 0.14.7", @@ -2910,7 +2856,7 @@ checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2928,9 +2874,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ "log", "regex", @@ -2961,7 +2907,7 @@ dependencies = [ "bytes", "cfg-if", "chrono", - "clap 4.4.7", + "clap 4.4.11", "config", "digest 0.10.7", "dirs 5.0.1", @@ -2969,7 +2915,7 @@ dependencies = [ "futures", "futures-util", "lazy_static", - "libp2p 0.51.3", + "libp2p 0.51.4", "libp2p-identity", "log", "lru 0.10.1", @@ -2992,7 +2938,7 @@ dependencies = [ "unsigned-varint", "utoipa", "utoipa-swagger-ui", - "uuid 1.5.0", + "uuid 1.6.1", ] [[package]] @@ -3003,12 +2949,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3026,16 +2972,33 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-listener" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite 0.2.13", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.0", + "pin-project-lite 0.2.13", +] + [[package]] name = "explorer-api" -<<<<<<< HEAD version = "1.1.32" -======= -version = "1.1.31" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "chrono", - "clap 4.4.7", + "clap 4.4.11", "dotenvy", "humantime-serde", "isocountry", @@ -3088,11 +3051,7 @@ dependencies = [ [[package]] name = "extension-storage" -<<<<<<< HEAD version = "1.2.4-rc.2" -======= -version = "1.2.0" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "bip39", "console_error_panic_hook", @@ -3117,9 +3076,9 @@ dependencies = [ [[package]] name = "eyre" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" +checksum = "80f656be11ddf91bd709454d15d5bd896fbaf4cc3314e69349e4d1569f5b46cd" dependencies = [ "indenter", "once_cell", @@ -3194,34 +3153,34 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.1" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" +checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" [[package]] name = "figment" -version = "0.10.11" +version = "0.10.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a014ac935975a70ad13a3bff2463b1c1b083b35ae4cb6309cfc59476aa7a181f" +checksum = "649f3e5d826594057e9a519626304d8da859ea8a0b18ce99500c586b8d45faee" dependencies = [ "atomic 0.6.0", "pear", "serde", - "toml 0.8.2", + "toml 0.8.8", "uncased", "version_check", ] [[package]] name = "filetime" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", ] [[package]] @@ -3292,9 +3251,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -3328,9 +3287,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ "futures-channel", "futures-core", @@ -3343,9 +3302,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", "futures-sink", @@ -3353,15 +3312,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -3382,9 +3341,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-lite" @@ -3402,14 +3361,24 @@ dependencies = [ ] [[package]] -name = "futures-macro" -version = "0.3.28" +name = "futures-lite" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" +dependencies = [ + "futures-core", + "pin-project-lite 0.2.13", +] + +[[package]] +name = "futures-macro" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -3425,15 +3394,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-timer" @@ -3443,9 +3412,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-channel", "futures-core", @@ -3514,9 +3483,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "js-sys", @@ -3559,20 +3528,20 @@ dependencies = [ [[package]] name = "ghost" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba330b70a5341d3bc730b8e205aaee97ddab5d9c448c4f51a7c2d924266fa8f9" +checksum = "ef81e7cedce6ab54cd5dc7b3400c442c8d132fe03200a1be0637db7ef308ff17" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "git2" @@ -3660,7 +3629,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89" dependencies = [ "byteorder", -<<<<<<< HEAD "ff 0.11.1", "rand_core 0.6.4", "subtle 2.4.1", @@ -3685,18 +3653,14 @@ checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff 0.13.0", "rand_core 0.6.4", -======= - "ff 0.11.0", - "rand_core 0.6.3", ->>>>>>> b6a43787b (Add bilinear equations into the zk proof; the last eq passes the tests) "subtle 2.4.1", ] [[package]] name = "h2" -version = "0.3.21" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -3704,7 +3668,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.1.0", "slab", "tokio", "tokio-util", @@ -3737,7 +3701,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] @@ -3746,7 +3710,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] @@ -3755,16 +3719,16 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", ] [[package]] name = "hashbrown" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "allocator-api2", ] @@ -3783,16 +3747,16 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.14.1", + "hashbrown 0.14.3", ] [[package]] name = "hdrhistogram" -version = "7.5.2" +version = "7.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" dependencies = [ - "base64 0.13.1", + "base64 0.21.5", "byteorder", "flate2", "nom", @@ -3925,9 +3889,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -4029,7 +3993,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite 0.2.13", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -4038,14 +4002,14 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http", "hyper", - "rustls 0.21.7", + "rustls 0.21.9", "tokio", "tokio-rustls 0.24.1", ] @@ -4117,9 +4081,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -4127,19 +4091,19 @@ dependencies = [ [[package]] name = "if-addrs" -version = "0.7.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" +checksum = "cabb0019d51a643781ff15c9c8a3e5dedc365c47211270f4e8f82812fedd8f0a" dependencies = [ "libc", - "winapi", + "windows-sys 0.48.0", ] [[package]] name = "if-watch" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb892e5777fe09e16f3d44de7802f4daa7267ecbe8c466f19d94e25bb0c303e" +checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e" dependencies = [ "async-io", "core-foundation", @@ -4168,7 +4132,7 @@ checksum = "bfbcff6ae46750b15cc594bfd277b188cbddcfdc1817848f97f03f26f8625b9e" dependencies = [ "cfg-if", "js-sys", - "uuid 1.5.0", + "uuid 1.6.1", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -4187,12 +4151,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.1", + "hashbrown 0.14.3", "serde", ] @@ -4287,17 +4251,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.3", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ip_network" version = "0.4.1" @@ -4310,7 +4263,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.4", + "socket2 0.5.5", "widestring", "windows-sys 0.48.0", "winreg", @@ -4318,9 +4271,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "ipnetwork" @@ -4356,7 +4309,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi 0.3.3", - "rustix 0.38.19", + "rustix", "windows-sys 0.48.0", ] @@ -4371,12 +4324,12 @@ dependencies = [ "crossbeam-utils", "curl", "curl-sys", - "event-listener", - "futures-lite", + "event-listener 2.5.3", + "futures-lite 1.13.0", "http", "log", "once_cell", - "polling", + "polling 2.8.0", "slab", "sluice", "tracing", @@ -4413,6 +4366,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.9" @@ -4452,25 +4414,25 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "3f01b677d82ef7a676aa37e099defd83a28e15687112cafdd112d60236b6115b" dependencies = [ "cfg-if", - "ecdsa 0.16.8", - "elliptic-curve 0.13.6", + "ecdsa 0.16.9", + "elliptic-curve 0.13.7", "once_cell", "sha2 0.10.8", - "signature 2.1.0", + "signature 2.2.0", ] [[package]] @@ -4570,9 +4532,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.149" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libgit2-sys" @@ -4602,7 +4564,7 @@ dependencies = [ "bytes", "futures", "futures-timer", - "getrandom 0.2.10", + "getrandom 0.2.11", "instant", "libp2p-core 0.39.0", "libp2p-dns 0.39.0 (git+https://github.com/ChainSafe/rust-libp2p.git?rev=e3440d25681df380c9f0f8cfdcfd5ecc0a4f2fb6)", @@ -4616,7 +4578,7 @@ dependencies = [ "libp2p-quic 0.7.0-alpha.2", "libp2p-swarm 0.42.0", "libp2p-tcp 0.39.0 (git+https://github.com/ChainSafe/rust-libp2p.git?rev=e3440d25681df380c9f0f8cfdcfd5ecc0a4f2fb6)", - "libp2p-webrtc 0.4.0-alpha.2", + "libp2p-webrtc", "libp2p-websocket", "libp2p-yamux 0.43.0", "multiaddr 0.17.0", @@ -4625,14 +4587,14 @@ dependencies = [ [[package]] name = "libp2p" -version = "0.51.3" +version = "0.51.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f210d259724eae82005b5c48078619b7745edb7b76de370b03f8ba59ea103097" +checksum = "f35eae38201a993ece6bdc823292d6abd1bffed1c4d0f4a3517d2bd8e1d917fe" dependencies = [ "bytes", "futures", "futures-timer", - "getrandom 0.2.10", + "getrandom 0.2.11", "instant", "libp2p-allow-block-list", "libp2p-connection-limits", @@ -4648,7 +4610,6 @@ dependencies = [ "libp2p-request-response", "libp2p-swarm 0.42.2", "libp2p-tcp 0.39.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-webrtc 0.4.0-alpha.4", "libp2p-yamux 0.43.1", "multiaddr 0.17.1", "pin-project", @@ -4773,7 +4734,7 @@ version = "0.44.0" source = "git+https://github.com/ChainSafe/rust-libp2p.git?rev=e3440d25681df380c9f0f8cfdcfd5ecc0a4f2fb6#e3440d25681df380c9f0f8cfdcfd5ecc0a4f2fb6" dependencies = [ "asynchronous-codec", - "base64 0.21.4", + "base64 0.21.5", "byteorder", "bytes", "fnv", @@ -4803,7 +4764,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70b34b6da8165c0bde35c82db8efda39b824776537e73973549e76cadb3a77c5" dependencies = [ "asynchronous-codec", - "base64 0.21.4", + "base64 0.21.5", "byteorder", "bytes", "either", @@ -4857,7 +4818,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce" dependencies = [ "bs58 0.4.0", - "ed25519-dalek 2.0.0", + "ed25519-dalek 2.1.0", "log", "multiaddr 0.17.1", "multihash", @@ -4911,7 +4872,7 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "trust-dns-proto", "void", @@ -4932,7 +4893,7 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "trust-dns-proto", "void", @@ -5173,7 +5134,7 @@ dependencies = [ "libc", "libp2p-core 0.39.2", "log", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", ] @@ -5188,7 +5149,7 @@ dependencies = [ "libc", "libp2p-core 0.39.0", "log", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", ] @@ -5258,37 +5219,6 @@ dependencies = [ "webrtc", ] -[[package]] -name = "libp2p-webrtc" -version = "0.4.0-alpha.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dba48592edbc2f60b4bc7c10d65445b0c3964c07df26fdf493b6880d33be36f8" -dependencies = [ - "async-trait", - "asynchronous-codec", - "bytes", - "futures", - "futures-timer", - "hex", - "if-watch", - "libp2p-core 0.39.2", - "libp2p-identity", - "libp2p-noise 0.42.2", - "log", - "multihash", - "quick-protobuf", - "quick-protobuf-codec", - "rand 0.8.5", - "rcgen 0.9.3", - "serde", - "stun", - "thiserror", - "tinytemplate", - "tokio", - "tokio-util", - "webrtc", -] - [[package]] name = "libp2p-websocket" version = "0.41.0" @@ -5332,6 +5262,17 @@ dependencies = [ "yamux", ] +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] + [[package]] name = "libsqlite3-sys" version = "0.24.2" @@ -5377,15 +5318,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "linux-raw-sys" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lioness" @@ -5401,9 +5336,9 @@ dependencies = [ [[package]] name = "local-channel" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a493488de5f18c8ffcba89eebb8532ffc562dc400490eb65b84893fae0b178" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" dependencies = [ "futures-core", "futures-sink", @@ -5412,9 +5347,9 @@ dependencies = [ [[package]] name = "local-waker" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e34f76eb3611940e0e7d53a9aaa4e6a3151f69541a282fd0dad5571420c53ff1" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "lock_api" @@ -5596,9 +5531,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "log", @@ -5608,11 +5543,7 @@ dependencies = [ [[package]] name = "mix-fetch-wasm" -<<<<<<< HEAD version = "1.2.4-rc.2" -======= -version = "1.2.0" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "async-trait", "futures", @@ -5923,17 +5854,6 @@ dependencies = [ "memoffset 0.9.0", ] -[[package]] -name = "nix" -version = "0.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" -dependencies = [ - "bitflags 2.4.1", - "cfg-if", - "libc", -] - [[package]] name = "no-std-compat" version = "0.4.1" @@ -6056,11 +5976,7 @@ dependencies = [ [[package]] name = "nym-api" -<<<<<<< HEAD version = "1.1.34" -======= -version = "1.1.32" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "actix-web", "anyhow", @@ -6070,7 +5986,7 @@ dependencies = [ "bs58 0.4.0", "cfg-if", "chrono", - "clap 4.4.7", + "clap 4.4.11", "console-subscriber", "cosmwasm-std", "cw-utils", @@ -6135,7 +6051,7 @@ dependencies = [ "tokio-stream", "ts-rs", "url", - "uuid 1.5.0", + "uuid 1.6.1", "zeroize", ] @@ -6150,18 +6066,7 @@ dependencies = [ "nym-coconut-interface", "nym-compact-ecash", "nym-mixnet-contract-common", -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD "nym-node-requests", -======= - "nym_compact_ecash", ->>>>>>> d6ab65512 (issuance cli side) -======= ->>>>>>> 0d6e14066 (change crate name from _ to -) -======= - "nym-node-requests", ->>>>>>> 9a1d204b7 (distribute parameters to all components) "schemars", "serde", "ts-rs", @@ -6189,7 +6094,7 @@ name = "nym-bin-common" version = "0.6.0" dependencies = [ "atty", - "clap 4.4.7", + "clap 4.4.11", "clap_complete", "clap_complete_fig", "log", @@ -6224,17 +6129,13 @@ dependencies = [ [[package]] name = "nym-cli" -<<<<<<< HEAD version = "1.1.33" -======= -version = "1.1.31" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "anyhow", "base64 0.13.1", "bip39", "bs58 0.4.0", - "clap 4.4.7", + "clap 4.4.11", "clap_complete", "clap_complete_fig", "dotenvy", @@ -6259,7 +6160,7 @@ dependencies = [ "bip39", "bs58 0.4.0", "cfg-if", - "clap 4.4.7", + "clap 4.4.11", "comfy-table", "cosmrs", "cosmwasm-std", @@ -6301,13 +6202,9 @@ dependencies = [ [[package]] name = "nym-client" -<<<<<<< HEAD version = "1.1.32" -======= -version = "1.1.31" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ - "clap 4.4.7", + "clap 4.4.11", "dirs 4.0.0", "futures", "lazy_static", @@ -6345,9 +6242,9 @@ name = "nym-client-core" version = "1.1.15" dependencies = [ "async-trait", - "base64 0.21.4", + "base64 0.21.5", "cfg-if", - "clap 4.4.7", + "clap 4.4.11", "dashmap", "dirs 4.0.0", "futures", @@ -6393,11 +6290,7 @@ dependencies = [ [[package]] name = "nym-client-wasm" -<<<<<<< HEAD version = "1.2.4-rc.2" -======= -version = "1.2.0" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "anyhow", "futures", @@ -6431,13 +6324,13 @@ dependencies = [ name = "nym-coconut" version = "0.5.0" dependencies = [ - "bls12_381 0.6.0 (git+https://github.com/jstuczyn/bls12_381?branch=gt-serialisation)", + "bls12_381 0.6.0", "bs58 0.4.0", "criterion 0.4.0", "digest 0.9.0", "doc-comment", "ff 0.11.1", - "getrandom 0.2.10", + "getrandom 0.2.11", "group 0.11.0", "itertools 0.10.5", "nym-dkg", @@ -6486,19 +6379,14 @@ dependencies = [ name = "nym-compact-ecash" version = "0.1.0" dependencies = [ - "bls12_381 0.6.0", -<<<<<<< HEAD + "bls12_381 0.8.0", "bs58 0.4.0", - "criterion 0.3.6", -======= - "bs58", "chrono", - "criterion", ->>>>>>> 4a54fd93f (Add function generating the payinfo) + "criterion 0.3.6", "digest 0.9.0", - "ff 0.11.1", + "ff 0.13.0", "getset", - "group 0.11.0", + "group 0.13.0", "itertools 0.10.5", "nym-pemstore", "rand 0.8.5", @@ -6603,29 +6491,12 @@ dependencies = [ "zeroize", ] -[[package]] -<<<<<<< HEAD -name = "nym-divisible-ecash" -version = "0.1.0" -dependencies = [ - "bls12_381 0.5.0", - "bs58 0.4.0", - "criterion 0.3.6", - "digest 0.9.0", - "ff 0.10.1", - "group 0.10.0", - "itertools 0.10.5", - "rand 0.8.5", - "sha2 0.9.9", - "thiserror", -] - [[package]] name = "nym-dkg" version = "0.1.0" dependencies = [ "bitvec", - "bls12_381 0.6.0 (git+https://github.com/jstuczyn/bls12_381?branch=gt-serialisation)", + "bls12_381 0.6.0", "bs58 0.4.0", "criterion 0.4.0", "ff 0.11.1", @@ -6699,26 +6570,16 @@ dependencies = [ ] [[package]] -======= ->>>>>>> b76eab236 (Update the structure preserving signature to work in the setup function as well) name = "nym-gateway" -<<<<<<< HEAD version = "1.1.32" -======= -version = "1.1.31" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "anyhow", "async-trait", "atty", "bip39", "bs58 0.4.0", -<<<<<<< HEAD - "clap 4.4.7", -======= "chrono", - "clap 4.4.6", ->>>>>>> 58bb333df (cleanup and payinfo check) + "clap 4.4.11", "colored", "dashmap", "defguard_wireguard_rs", @@ -6727,10 +6588,7 @@ dependencies = [ "futures", "humantime-serde", "hyper", -<<<<<<< HEAD "ipnetwork 0.16.0", -======= ->>>>>>> 9a1d204b7 (distribute parameters to all components) "lazy_static", "log", "nym-api-requests", @@ -6777,7 +6635,7 @@ name = "nym-gateway-client" version = "0.1.0" dependencies = [ "futures", - "getrandom 0.2.10", + "getrandom 0.2.11", "gloo-utils", "log", "nym-bandwidth-controller", @@ -6848,7 +6706,6 @@ dependencies = [ ] [[package]] -<<<<<<< HEAD name = "nym-ip-packet-requests" version = "0.1.0" dependencies = [ @@ -6891,21 +6748,6 @@ dependencies = [ "tokio", "tokio-tun", "url", -======= -name = "nym-ip-forwarder" -version = "0.1.0" -dependencies = [ - "futures", - "log", - "nym-client-core", - "nym-config", - "nym-sdk", - "nym-sphinx", - "nym-task", - "serde", - "serde_json", - "thiserror", ->>>>>>> 9a1d204b7 (distribute parameters to all components) ] [[package]] @@ -6943,17 +6785,13 @@ dependencies = [ [[package]] name = "nym-mixnode" -<<<<<<< HEAD version = "1.1.34" -======= -version = "1.1.32" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "anyhow", "axum", "bs58 0.4.0", "cfg-if", - "clap 4.4.7", + "clap 4.4.11", "colored", "cpu-cycles", "cupid", @@ -7067,17 +6905,13 @@ dependencies = [ [[package]] name = "nym-network-requester" -<<<<<<< HEAD version = "1.1.32" -======= -version = "1.1.31" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "anyhow", "async-file-watcher", "async-trait", "bs58 0.4.0", - "clap 4.4.7", + "clap 4.4.11", "dirs 4.0.0", "futures", "humantime-serde", @@ -7119,11 +6953,7 @@ dependencies = [ [[package]] name = "nym-network-statistics" -<<<<<<< HEAD version = "1.1.32" -======= -version = "1.1.31" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "dirs 4.0.0", "log", @@ -7150,19 +6980,13 @@ dependencies = [ "fastrand 2.0.1", "hmac 0.12.1", "hyper", -<<<<<<< HEAD "ipnetwork 0.16.0", -======= ->>>>>>> 9a1d204b7 (distribute parameters to all components) "mime", "nym-config", "nym-crypto", "nym-node-requests", "nym-task", -<<<<<<< HEAD "nym-wireguard", -======= ->>>>>>> 9a1d204b7 (distribute parameters to all components) "nym-wireguard-types", "rand 0.7.3", "serde", @@ -7183,7 +7007,7 @@ name = "nym-node-requests" version = "0.1.0" dependencies = [ "async-trait", - "base64 0.21.4", + "base64 0.21.5", "http-api-client", "nym-bin-common", "nym-crypto", @@ -7218,11 +7042,7 @@ dependencies = [ [[package]] name = "nym-node-tester-wasm" -<<<<<<< HEAD version = "1.2.4-rc.2" -======= -version = "1.2.0" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "futures", "js-sys", @@ -7255,7 +7075,7 @@ name = "nym-nr-query" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.4.7", + "clap 4.4.11", "log", "nym-bin-common", "nym-network-defaults", @@ -7279,12 +7099,12 @@ name = "nym-outfox" version = "0.1.0" dependencies = [ "blake3", - "chacha20 0.9.1", - "chacha20poly1305 0.10.1", + "chacha20", + "chacha20poly1305", "criterion 0.4.0", "curve25519-dalek 3.2.0", "fastrand 1.9.0", - "getrandom 0.2.10", + "getrandom 0.2.11", "log", "rand 0.7.3", "rayon", @@ -7379,13 +7199,9 @@ dependencies = [ [[package]] name = "nym-socks5-client" -<<<<<<< HEAD version = "1.1.32" -======= -version = "1.1.31" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ - "clap 4.4.7", + "clap 4.4.11", "lazy_static", "log", "nym-bin-common", @@ -7668,7 +7484,7 @@ dependencies = [ "aes-gcm 0.10.3", "argon2", "generic-array 0.14.7", - "getrandom 0.2.10", + "getrandom 0.2.11", "rand 0.8.5", "serde", "serde_json", @@ -7730,7 +7546,7 @@ dependencies = [ name = "nym-types" version = "1.0.0" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", "cosmrs", "cosmwasm-std", "eyre", @@ -7794,7 +7610,7 @@ dependencies = [ "nym-service-provider-directory-common", "nym-vesting-contract-common", "openssl", - "prost 0.12.1", + "prost 0.12.3", "reqwest", "serde", "serde_json", @@ -7842,65 +7658,17 @@ dependencies = [ ] [[package]] -<<<<<<< HEAD -======= -name = "nym-wasm-sdk" -version = "1.2.0" -dependencies = [ - "mix-fetch-wasm", - "nym-client-wasm", - "nym-node-tester-wasm", -] - -[[package]] ->>>>>>> 9a1d204b7 (distribute parameters to all components) name = "nym-wireguard" version = "0.1.0" dependencies = [ - "base64 0.21.4", -<<<<<<< HEAD + "base64 0.21.5", "defguard_wireguard_rs", "ip_network", -======= - "boringtun", - "bytes", - "dashmap", - "etherparse", - "futures", - "ip_network", - "ip_network_table", ->>>>>>> 9a1d204b7 (distribute parameters to all components) "log", "nym-network-defaults", "nym-task", "nym-wireguard-types", -<<<<<<< HEAD "tokio", -======= - "rand 0.8.5", - "serde", - "tap", - "thiserror", - "tokio", - "tokio-tun", -] - -[[package]] -name = "nym-wireguard-types" -version = "0.1.0" -dependencies = [ - "base64 0.21.4", - "boringtun", - "dashmap", - "hmac 0.12.1", - "nym-crypto", - "rand 0.7.3", - "serde", - "serde_json", - "sha2 0.10.8", - "thiserror", - "utoipa", ->>>>>>> 9a1d204b7 (distribute parameters to all components) "x25519-dalek 2.0.0", ] @@ -7908,7 +7676,7 @@ dependencies = [ name = "nym-wireguard-types" version = "0.1.0" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", "dashmap", "hmac 0.12.1", "log", @@ -7923,66 +7691,18 @@ dependencies = [ ] [[package]] -<<<<<<< HEAD -name = "nym_compact_ecash" -version = "0.1.0" -dependencies = [ -<<<<<<< HEAD -<<<<<<< HEAD - "bls12_381 0.5.0", -<<<<<<< HEAD -======= - "bls12_381 0.6.0", ->>>>>>> d6ab65512 (issuance cli side) - "bs58 0.4.0", - "criterion 0.3.6", -======= -======= - "bls12_381 0.6.0", ->>>>>>> 0b58e0ae2 (Small updates and code cleaning) - "bs58", - "criterion", ->>>>>>> b6a43787b (Add bilinear equations into the zk proof; the last eq passes the tests) - "digest 0.9.0", -<<<<<<< HEAD -<<<<<<< HEAD - "ff 0.10.1", - "group 0.10.0", -======= - "ff 0.11.1", - "getset", - "group 0.11.0", ->>>>>>> be4119370 (impl payment flow) - "itertools 0.10.5", -======= - "ff 0.11.0", - "group 0.11.0", - "itertools", ->>>>>>> 0b58e0ae2 (Small updates and code cleaning) - "rand 0.8.5", - "serde", - "sha2 0.9.9", - "thiserror", -] - -[[package]] -<<<<<<< HEAD -name = "nymvisor" -======= -======= ->>>>>>> 0d6e14066 (change crate name from _ to -) name = "nym_offline_divisible_ecash" version = "0.1.0" dependencies = [ - "bls12_381 0.6.0", - "bs58", - "criterion", + "bls12_381 0.8.0", + "bs58 0.4.0", + "criterion 0.3.6", "digest 0.9.0", - "ff 0.11.0", - "group 0.11.0", - "itertools", + "ff 0.13.0", + "group 0.13.0", + "itertools 0.10.5", "rand 0.8.5", - "sha2", + "sha2 0.9.9", "thiserror", ] @@ -7990,141 +7710,26 @@ dependencies = [ name = "nym_online_divisible_ecash" version = "0.1.0" dependencies = [ - "bls12_381 0.5.0", - "bs58", - "criterion", + "bls12_381 0.8.0", + "bs58 0.4.0", + "criterion 0.3.6", "digest 0.9.0", - "ff 0.10.1", - "group 0.10.0", - "itertools", + "ff 0.13.0", + "group 0.13.0", + "itertools 0.10.5", "rand 0.8.5", - "sha2", + "sha2 0.9.9", "thiserror", ] [[package]] -name = "nymcoconut" -version = "0.5.0" -dependencies = [ - "bincode", - "bls12_381 0.5.0", - "bs58", - "criterion", - "digest 0.9.0", - "doc-comment", - "ff 0.10.1", - "getrandom 0.2.5", - "group 0.10.0", - "itertools", - "rand 0.8.5", - "serde", - "serde_derive", - "sha2", - "thiserror", -] - -[[package]] -name = "nymsphinx" -version = "0.1.0" -dependencies = [ - "crypto", - "mixnet-contract-common", - "nymsphinx-acknowledgements", - "nymsphinx-addressing", - "nymsphinx-anonymous-replies", - "nymsphinx-chunking", - "nymsphinx-cover", - "nymsphinx-forwarding", - "nymsphinx-framing", - "nymsphinx-params", - "nymsphinx-types", - "rand 0.7.3", - "rand_distr", - "tokio", - "topology", -] - -[[package]] -name = "nymsphinx-acknowledgements" -version = "0.1.0" -dependencies = [ - "crypto", - "nymsphinx-addressing", - "nymsphinx-params", - "nymsphinx-types", - "pemstore", - "rand 0.7.3", - "topology", -] - -[[package]] -name = "nymsphinx-addressing" -version = "0.1.0" -dependencies = [ - "crypto", - "nymsphinx-types", - "rand 0.7.3", - "serde", -] - -[[package]] -name = "nymsphinx-anonymous-replies" -version = "0.1.0" -dependencies = [ - "bs58", - "crypto", - "nymsphinx-addressing", - "nymsphinx-params", - "nymsphinx-types", - "rand 0.7.3", - "serde", - "topology", -] - -[[package]] -name = "nymsphinx-chunking" -version = "0.1.0" -dependencies = [ - "log", - "nymsphinx-addressing", - "nymsphinx-params", - "nymsphinx-types", - "rand 0.7.3", -] - -[[package]] -name = "nymsphinx-cover" -version = "0.1.0" -dependencies = [ - "crypto", - "nymsphinx-acknowledgements", - "nymsphinx-addressing", - "nymsphinx-chunking", - "nymsphinx-forwarding", - "nymsphinx-params", - "nymsphinx-types", - "rand 0.7.3", - "topology", -] - -[[package]] -name = "nymsphinx-forwarding" -version = "0.1.0" -dependencies = [ - "nymsphinx-addressing", - "nymsphinx-params", - "nymsphinx-types", -] - -[[package]] -name = "nymsphinx-framing" ->>>>>>> b76eab236 (Update the structure preserving signature to work in the setup function as well) +name = "nymvisor" version = "0.1.0" dependencies = [ "anyhow", "async-file-watcher", "bytes", - "clap 4.4.7", + "clap 4.4.11", "dotenvy", "flate2", "futures", @@ -8212,9 +7817,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.57" +version = "0.10.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" +checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45" dependencies = [ "bitflags 2.4.1", "cfg-if", @@ -8233,7 +7838,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -8244,18 +7849,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.1.5+3.1.3" +version = "300.1.6+3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559068e4c12950d7dcaa1857a61725c0d38d4fc03ff8e070ab31a75d6e316491" +checksum = "439fac53e092cd7442a3660c85dde4643ab3b5bd39040912388dcdabf6b88085" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.93" +version = "0.9.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b" dependencies = [ "cc", "libc", @@ -8415,8 +8020,6 @@ dependencies = [ [[package]] name = "pairing" version = "0.21.0" -<<<<<<< HEAD -======= source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2e415e349a3006dd7d9482cdab1c980a845bed1377777d768cb693a44540b42" dependencies = [ @@ -8424,13 +8027,12 @@ dependencies = [ ] [[package]] -name = "parity-scale-codec" -version = "2.3.1" ->>>>>>> b6a43787b (Add bilinear equations into the zk proof; the last eq passes the tests) +name = "pairing" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2e415e349a3006dd7d9482cdab1c980a845bed1377777d768cb693a44540b42" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" dependencies = [ - "group 0.11.0", + "group 0.13.0", ] [[package]] @@ -8540,7 +8142,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -8601,15 +8203,15 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c022f1e7b65d6a24c0dbbd5fb344c66881bc01f3e5ae74a1c8100f2f985d98a4" +checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" dependencies = [ "memchr", "thiserror", @@ -8618,9 +8220,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35513f630d46400a977c4cb58f78e1bfbe01434316e60c37d27b9ad6139c66d8" +checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" dependencies = [ "pest", "pest_generator", @@ -8628,22 +8230,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9fc1b9e7057baba189b5c626e2d6f40681ae5b6eb064dc7c7834101ec8123a" +checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] name = "pest_meta" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df74e9e7ec4053ceb980e7c0c8bd3594e977fde1af91daba9c928e8e8c6708d" +checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" dependencies = [ "once_cell", "pest", @@ -8657,7 +8259,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.0.2", + "indexmap 2.1.0", ] [[package]] @@ -8677,7 +8279,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -8715,7 +8317,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der 0.7.8", - "spki 0.7.2", + "spki 0.7.3", ] [[package]] @@ -8726,9 +8328,9 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "platforms" -version = "3.1.2" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" +checksum = "14e6ab3f592e6fb464fc9712d8d6e6912de6473954635fd76a589d832cffcbb0" [[package]] name = "plotters" @@ -8775,14 +8377,17 @@ dependencies = [ ] [[package]] -name = "poly1305" -version = "0.7.2" +name = "polling" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" +checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" dependencies = [ - "cpufeatures", - "opaque-debug 0.3.0", - "universal-hash 0.4.1", + "cfg-if", + "concurrent-queue", + "pin-project-lite 0.2.13", + "rustix", + "tracing", + "windows-sys 0.52.0", ] [[package]] @@ -8888,9 +8493,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] @@ -8903,7 +8508,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", "version_check", "yansi 1.0.0-rc.1", ] @@ -8928,7 +8533,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -8943,12 +8548,12 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fdd22f3b9c31b53c060df4a0613a1c7f062d4115a2b984dd15b1858f7e340d" +checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" dependencies = [ "bytes", - "prost-derive 0.12.1", + "prost-derive 0.12.3", ] [[package]] @@ -8965,13 +8570,8 @@ dependencies = [ "multimap", "petgraph", "prettyplease", -<<<<<<< HEAD "prost 0.11.9", "prost-types 0.11.9", -======= - "prost", - "prost-types", ->>>>>>> 9a1d204b7 (distribute parameters to all components) "regex", "syn 1.0.109", "tempfile", @@ -9005,15 +8605,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "265baba7fabd416cf5078179f7d2cbeca4ce7a9041111900675ea7c4cb8a4c32" +checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" dependencies = [ "anyhow", "itertools 0.11.0", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -9027,11 +8627,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e081b29f63d83a4bc75cfc9f3fe424f9156cf92d8a4f0c9407cce9a1b67327cf" +checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" dependencies = [ - "prost 0.12.1", + "prost 0.12.3", ] [[package]] @@ -9226,7 +8826,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", ] [[package]] @@ -9391,15 +8991,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.4.1" @@ -9411,12 +9002,12 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "getrandom 0.2.10", - "redox_syscall 0.2.16", + "getrandom 0.2.11", + "libredox", "thiserror", ] @@ -9437,7 +9028,7 @@ checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -9481,7 +9072,7 @@ dependencies = [ "quote", "refinery-core", "regex", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -9534,7 +9125,7 @@ version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", "bytes", "encoding_rs", "futures-core", @@ -9553,7 +9144,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite 0.2.13", - "rustls 0.21.7", + "rustls 0.21.9", "rustls-native-certs", "rustls-pemfile", "serde", @@ -9622,12 +9213,12 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.4" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce3045ffa7c981a6ee93f640b538952e155f1ae3a1a02b84547fc7a56b7059a" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", - "getrandom 0.2.10", + "getrandom 0.2.11", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -9694,7 +9285,7 @@ dependencies = [ "proc-macro2", "quote", "rocket_http", - "syn 2.0.38", + "syn 2.0.39", "unicode-xid", ] @@ -9845,7 +9436,7 @@ dependencies = [ "quote", "rust-embed-utils", "shellexpand", - "syn 2.0.38", + "syn 2.0.39", "walkdir", ] @@ -9900,29 +9491,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.25" +version = "0.38.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4eb579851244c2c03e7c24f501c3432bed80b8f720af1d6e5b0e0f01555a035" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed" +checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" dependencies = [ "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.10", - "windows-sys 0.48.0", + "linux-raw-sys", + "windows-sys 0.52.0", ] [[package]] @@ -9946,20 +9523,20 @@ checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ "log", "ring 0.16.20", - "sct 0.7.0", + "sct 0.7.1", "webpki 0.22.4", ] [[package]] name = "rustls" -version = "0.21.7" +version = "0.21.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" dependencies = [ "log", - "ring 0.16.20", + "ring 0.17.7", "rustls-webpki", - "sct 0.7.0", + "sct 0.7.1", ] [[package]] @@ -9976,21 +9553,21 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", ] [[package]] name = "rustls-webpki" -version = "0.101.6" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -10076,9 +9653,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -10089,9 +9666,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -10123,12 +9700,12 @@ dependencies = [ [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -10137,7 +9714,7 @@ version = "0.1.0" dependencies = [ "anyhow", "cargo-edit", - "clap 4.4.7", + "clap 4.4.11", "semver 1.0.20", "serde", "serde_json", @@ -10250,9 +9827,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.189" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -10307,13 +9884,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.189" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -10335,14 +9912,14 @@ checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -10361,20 +9938,20 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" +checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" dependencies = [ "serde", ] @@ -10393,11 +9970,11 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.25" +version = "0.9.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.1.0", "itoa", "ryu", "serde", @@ -10512,9 +10089,9 @@ dependencies = [ [[package]] name = "signature" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", "rand_core 0.6.4", @@ -10548,9 +10125,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smartstring" @@ -10588,16 +10165,16 @@ dependencies = [ [[package]] name = "snow" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9d1425eb528a21de2755c75af4c9b5d57f50a0d4c3b7f1828a4cd03f8ba155" +checksum = "58021967fd0a5eeeb23b08df6cc244a4d4a5b4aec1d27c9e02fad1a58b4cd74e" dependencies = [ - "aes-gcm 0.9.4", + "aes-gcm 0.10.3", "blake2 0.10.6", - "chacha20poly1305 0.9.1", + "chacha20poly1305", "curve25519-dalek 4.1.1", "rand_core 0.6.4", - "ring 0.16.20", + "ring 0.17.7", "rustc_version 0.4.0", "sha2 0.10.8", "subtle 2.4.1", @@ -10605,9 +10182,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -10615,9 +10192,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", "windows-sys 0.48.0", @@ -10701,9 +10278,9 @@ dependencies = [ [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der 0.7.8", @@ -10722,11 +10299,11 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85" +checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" dependencies = [ - "itertools 0.11.0", + "itertools 0.12.0", "nom", "unicode_categories", ] @@ -10757,7 +10334,7 @@ version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48c61941ccf5ddcada342cd59e3e5173b007c509e1e8e990dafc830294d9dc5" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", "atoi 0.4.0", "bitflags 1.3.2", "byteorder", @@ -10766,7 +10343,7 @@ dependencies = [ "crc 2.1.0", "crossbeam-queue", "either", - "event-listener", + "event-listener 2.5.3", "flume", "futures-channel", "futures-core", @@ -10803,7 +10380,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", "atoi 1.0.0", "bitflags 1.3.2", "byteorder", @@ -10813,7 +10390,7 @@ dependencies = [ "crossbeam-queue", "dotenvy", "either", - "event-listener", + "event-listener 2.5.3", "flume", "futures-channel", "futures-core", @@ -10835,7 +10412,7 @@ dependencies = [ "rustls-pemfile", "sha2 0.10.8", "smallvec", - "sqlformat 0.2.2", + "sqlformat 0.2.3", "sqlx-rt 0.6.3", "stringprep", "thiserror", @@ -10909,7 +10486,7 @@ name = "ssl-inject" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.4.7", + "clap 4.4.11", "hex", "tokio", ] @@ -11015,7 +10592,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -11096,9 +10673,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ "proc-macro2", "quote", @@ -11178,14 +10755,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand 2.0.1", - "redox_syscall 0.3.5", - "rustix 0.38.19", + "redox_syscall 0.4.1", + "rustix", "windows-sys 0.48.0", ] @@ -11204,15 +10781,15 @@ dependencies = [ "k256", "num-traits", "once_cell", - "prost 0.12.1", - "prost-types 0.12.1", + "prost 0.12.3", + "prost-types 0.12.3", "ripemd", "serde", "serde_bytes", "serde_json", "serde_repr", "sha2 0.10.8", - "signature 2.1.0", + "signature 2.2.0", "subtle 2.4.1", "subtle-encoding", "tendermint-proto", @@ -11244,8 +10821,8 @@ dependencies = [ "flex-error", "num-derive", "num-traits", - "prost 0.12.1", - "prost-types 0.12.1", + "prost 0.12.3", + "prost-types 0.12.3", "serde", "serde_bytes", "subtle-encoding", @@ -11262,7 +10839,7 @@ dependencies = [ "bytes", "flex-error", "futures", - "getrandom 0.2.10", + "getrandom 0.2.11", "peg", "pin-project", "reqwest", @@ -11286,9 +10863,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] @@ -11299,7 +10876,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.19", + "rustix", "windows-sys 0.48.0", ] @@ -11320,22 +10897,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -11427,9 +11004,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.33.0" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" dependencies = [ "backtrace", "bytes", @@ -11439,7 +11016,7 @@ dependencies = [ "parking_lot 0.12.1", "pin-project-lite 0.2.13", "signal-hook-registry", - "socket2 0.5.4", + "socket2 0.5.5", "tokio-macros", "tracing", "windows-sys 0.48.0", @@ -11457,13 +11034,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -11504,7 +11081,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.7", + "rustls 0.21.9", "tokio", ] @@ -11547,15 +11124,9 @@ dependencies = [ [[package]] name = "tokio-tun" -<<<<<<< HEAD version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf2efaf33e86779a3a68b1f1d6e9e13a346c1c75ee3cab7a4293235c463b2668" -======= -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a67d1405a577ba1f4cd61f46608f1db2cadbb6a9549c3fc2eed7f1195393c9" ->>>>>>> 9a1d204b7 (distribute parameters to all components) dependencies = [ "libc", "nix 0.27.1", @@ -11579,16 +11150,16 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", "futures-util", - "hashbrown 0.12.3", + "hashbrown 0.14.3", "pin-project-lite 0.2.13", "slab", "tokio", @@ -11612,20 +11183,20 @@ checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" dependencies = [ "serde", "serde_spanned", - "toml_datetime 0.6.3", + "toml_datetime 0.6.5", "toml_edit 0.19.15", ] [[package]] name = "toml" -version = "0.8.2" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" dependencies = [ "serde", "serde_spanned", - "toml_datetime 0.6.3", - "toml_edit 0.20.2", + "toml_datetime 0.6.5", + "toml_edit 0.21.0", ] [[package]] @@ -11639,9 +11210,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] @@ -11666,23 +11237,23 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.1.0", "serde", "serde_spanned", - "toml_datetime 0.6.3", + "toml_datetime 0.6.5", "winnow", ] [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.1.0", "serde", "serde_spanned", - "toml_datetime 0.6.3", + "toml_datetime 0.6.5", "winnow", ] @@ -11694,7 +11265,7 @@ checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" dependencies = [ "async-trait", "axum", - "base64 0.21.4", + "base64 0.21.5", "bytes", "futures-core", "futures-util", @@ -11773,9 +11344,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.39" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2ef2af84856a50c1d430afce2fdded0a4ec7eda868db86409b4543df0797f9" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", "pin-project-lite 0.2.13", @@ -11791,7 +11362,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -11816,12 +11387,23 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" dependencies = [ - "lazy_static", "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", "tracing-core", ] @@ -11835,15 +11417,15 @@ dependencies = [ "opentelemetry", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-subscriber", ] [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -11854,7 +11436,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.2.0", ] [[package]] @@ -11865,7 +11447,7 @@ checksum = "2ec6adcab41b1391b08a308cc6302b79f8095d1673f6947c2dc65ffb028b0b2d" dependencies = [ "nu-ansi-term", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-subscriber", ] @@ -11916,7 +11498,7 @@ dependencies = [ "lazy_static", "rand 0.8.5", "smallvec", - "socket2 0.4.9", + "socket2 0.4.10", "thiserror", "tinyvec", "tokio", @@ -11984,7 +11566,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", "termcolor", ] @@ -12011,7 +11593,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals 0.28.0", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -12117,9 +11699,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" @@ -12229,27 +11811,27 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3" dependencies = [ - "base64 0.21.4", + "base64 0.21.5", "log", "native-tls", "once_cell", - "rustls 0.21.7", + "rustls 0.21.9", "rustls-webpki", "serde", "serde_json", "socks", "url", - "webpki-roots 0.25.2", + "webpki-roots 0.25.3", ] [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", - "idna 0.4.0", + "idna 0.5.0", "percent-encoding", "serde", ] @@ -12278,7 +11860,7 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d82b1bc5417102a73e8464c686eef947bdfb99fcdfc0a4f228e81afa9526470a" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.1.0", "serde", "serde_json", "utoipa-gen", @@ -12294,7 +11876,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -12322,11 +11904,11 @@ checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" [[package]] name = "uuid" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", "serde", "wasm-bindgen", ] @@ -12420,9 +12002,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -12430,24 +12012,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ "cfg-if", "js-sys", @@ -12457,9 +12039,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -12467,28 +12049,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "wasm-bindgen-test" -version = "0.3.37" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e6e302a7ea94f83a6d09e78e7dc7d9ca7b186bc2829c24a22d0753efd680671" +checksum = "2cf9242c0d27999b831eae4767b2a146feb0b27d332d553e605864acd2afd403" dependencies = [ "console_error_panic_hook", "js-sys", @@ -12500,12 +12082,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.37" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecb993dd8c836930ed130e020e77d9b2e65dd0fbab1b67c790b0f5d80b11a575" +checksum = "794645f5408c9a039fd09f4d113cdfb2e7eba5ff1956b07bcf701cf4b394fe89" dependencies = [ "proc-macro2", "quote", + "syn 2.0.39", ] [[package]] @@ -12588,7 +12171,7 @@ name = "wasm-utils" version = "0.1.0" dependencies = [ "futures", - "getrandom 0.2.10", + "getrandom 0.2.11", "gloo-net", "gloo-utils", "js-sys", @@ -12614,9 +12197,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", @@ -12638,7 +12221,7 @@ version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring 0.17.4", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -12662,9 +12245,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "webrtc" @@ -12780,7 +12363,7 @@ dependencies = [ "tokio", "turn", "url", - "uuid 1.5.0", + "uuid 1.6.1", "waitgroup", "webrtc-mdns", "webrtc-util", @@ -12793,7 +12376,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f08dfd7a6e3987e255c4dbe710dde5d94d0f0574f8a21afa95d171376c143106" dependencies = [ "log", - "socket2 0.4.9", + "socket2 0.4.10", "thiserror", "tokio", "webrtc-util", @@ -12883,7 +12466,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.19", + "rustix", ] [[package]] @@ -12969,6 +12552,15 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -12999,6 +12591,21 @@ dependencies = [ "windows_x86_64_msvc 0.48.5", ] +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -13011,6 +12618,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -13023,6 +12636,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -13035,6 +12654,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -13047,6 +12672,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -13059,6 +12690,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -13071,6 +12708,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -13084,10 +12727,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] -name = "winnow" -version = "0.5.17" +name = "windows_x86_64_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winnow" +version = "0.5.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e87b8dfbe3baffbe687eef2e164e32286eff31a5ee16463ce03d991643ec94" dependencies = [ "memchr", ] @@ -13236,17 +12885,31 @@ dependencies = [ "time", ] +[[package]] +name = "zerocopy" +version = "0.7.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d075cf85bbb114e933343e087b92f2146bac0d55b534cbb8188becf0039948e" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86cd5ca076997b97ef09d3ad65efe811fa68c9e874cb636ccb211223a813b0c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + [[package]] name = "zeroize" -<<<<<<< HEAD version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" -======= -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" ->>>>>>> b6a43787b (Add bilinear equations into the zk proof; the last eq passes the tests) dependencies = [ "zeroize_derive", ] @@ -13259,7 +12922,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 78414a8b33..be283d64e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -111,7 +111,7 @@ members = [ "tools/nymvisor", "tools/ts-rs-cli", "wasm/client", -# "wasm/full-nym-wasm", + # "wasm/full-nym-wasm", "wasm/mix-fetch", "wasm/node-tester", ] @@ -128,7 +128,15 @@ default-members = [ "explorer-api", ] -exclude = ["explorer", "contracts", "nym-wallet", "nym-connect/mobile/src-tauri", "nym-connect/desktop", "nym-vpn/ui/src-tauri", "cpu-cycles"] +exclude = [ + "explorer", + "contracts", + "nym-wallet", + "nym-connect/mobile/src-tauri", + "nym-connect/desktop", + "nym-vpn/ui/src-tauri", + "cpu-cycles", +] [workspace.package] authors = ["Nym Technologies SA"] @@ -207,6 +215,15 @@ wasm-bindgen-futures = "0.4.37" wasmtimer = "0.2.0" web-sys = "0.3.63" +bls12_381 = { path = "/Users/drazen/nym/bls12_381", default-features = false, features = [ + "alloc", + "pairings", + "experimental", + "zeroize", +] } +ff = { version = "0.13", default-features = false } +group = { version = "0.13", default-features = false } + # Profile settings for individual crates [profile.release.package.nym-socks5-listener] diff --git a/common/nym_offline_compact_ecash/Cargo.toml b/common/nym_offline_compact_ecash/Cargo.toml index d2cf09bb03..4d53d7db5c 100644 --- a/common/nym_offline_compact_ecash/Cargo.toml +++ b/common/nym_offline_compact_ecash/Cargo.toml @@ -7,18 +7,20 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -chrono = "0.4.19" -#bls12_381 = { version = "0.5", default-features = false, features = ["pairings", "alloc", "experimental"] } -bls12_381 = { path = "/Users/simon/Documents/Nym/github/andrew_bls12_381", default-features = false, features = ["alloc", "pairings", "experimental", "zeroize"] } -itertools = "0.10" -digest = "0.9" -rand = "0.8" -thiserror = "1.0" -sha2 = "0.9" +bls12_381 = { workspace = true } bs58 = "0.4.0" -serde = "1.0.189" +chrono = "0.4.19" +digest = "0.9" +ff = { workspace = true } getset = "0.1.1" -zeroize = "1.6.0" +group = { workspace = true } +itertools = "0.10" +rand = "0.8" +serde = "1.0.189" +sha2 = "0.9" +thiserror = "1.0" +zeroize = { workspace = true } + # internal nym-pemstore = { path = "../pemstore", version = "0.3.0" } @@ -26,14 +28,7 @@ nym-pemstore = { path = "../pemstore", version = "0.3.0" } [dev-dependencies] criterion = { version = "0.3", features = ["html_reports"] } -[dependencies.ff] -version = "0.11" -default-features = false - -[dependencies.group] -version = "0.11" -default-features = false [[bench]] name = "benchmarks" -harness = false \ No newline at end of file +harness = false diff --git a/common/nym_offline_compact_ecash/benches/benchmarks.rs b/common/nym_offline_compact_ecash/benches/benchmarks.rs index 3e52a7b25f..edbcb13a26 100644 --- a/common/nym_offline_compact_ecash/benches/benchmarks.rs +++ b/common/nym_offline_compact_ecash/benches/benchmarks.rs @@ -264,7 +264,7 @@ fn bench_compact_ecash(c: &mut Criterion) { .unwrap(); // SPENDING PHASE - let pay_info = PayInfo { info: [6u8; 32] }; + let pay_info = PayInfo { payinfo: [6u8; 32] }; // CLIENT BENCHMARK: spend a single coin from the wallet // group.bench_function( // &format!( @@ -320,7 +320,7 @@ fn bench_compact_ecash(c: &mut Criterion) { let current_l = aggr_wallet.l.get(); aggr_wallet.l.set(current_l - case.spend_vv); - let pay_info2 = PayInfo { info: [7u8; 32] }; + let pay_info2 = PayInfo { payinfo: [7u8; 32] }; let (payment2, _) = aggr_wallet .spend( ¶ms, diff --git a/common/nym_offline_compact_ecash/src/proofs/mod.rs b/common/nym_offline_compact_ecash/src/proofs/mod.rs index 6f42ee0f05..292848ba6a 100644 --- a/common/nym_offline_compact_ecash/src/proofs/mod.rs +++ b/common/nym_offline_compact_ecash/src/proofs/mod.rs @@ -1,8 +1,8 @@ use std::borrow::Borrow; use bls12_381::Scalar; -use digest::Digest; use digest::generic_array::typenum::Unsigned; +use digest::Digest; use sha2::Sha256; pub mod proof_spend; @@ -12,10 +12,10 @@ type ChallengeDigest = Sha256; /// Generates a Scalar [or Fp] challenge by hashing a number of elliptic curve points. fn compute_challenge(iter: I) -> Scalar - where - D: Digest, - I: Iterator, - B: AsRef<[u8]>, +where + D: Digest, + I: Iterator, + B: AsRef<[u8]>, { let mut h = D::new(); for point_representation in iter { @@ -43,8 +43,8 @@ fn produce_response(witness_replacement: &Scalar, challenge: &Scalar, secret: &S // note: it's caller's responsibility to ensure witnesses.len() = secrets.len() fn produce_responses(witnesses: &[Scalar], challenge: &Scalar, secrets: &[S]) -> Vec - where - S: Borrow, +where + S: Borrow, { debug_assert_eq!(witnesses.len(), secrets.len()); diff --git a/common/nym_offline_compact_ecash/src/scheme/identify.rs b/common/nym_offline_compact_ecash/src/scheme/identify.rs index 0ce62e2aa1..4b0226e7f5 100644 --- a/common/nym_offline_compact_ecash/src/scheme/identify.rs +++ b/common/nym_offline_compact_ecash/src/scheme/identify.rs @@ -216,16 +216,21 @@ mod tests { .spend_verify(¶ms, &verification_key, &pay_info1) .unwrap()); - - let pay_info2 = PayInfo::generate_payinfo(provider_keypair.public_key()); - let (payment2, _) = upd_wallet.spend( - ¶ms, - &verification_key, - &user_keypair.secret_key(), - &pay_info2, - false, - spend_vv, - ).unwrap(); + let pay_info2 = PayInfo::generate_payinfo( + provider_keypair.public_key().to_bytes()[..32] + .try_into() + .unwrap(), + ); + let (payment2, _) = upd_wallet + .spend( + ¶ms, + &verification_key, + &user_keypair.secret_key(), + &pay_info2, + false, + spend_vv, + ) + .unwrap(); assert!(payment2 .spend_verify(¶ms, &verification_key, &pay_info2) @@ -433,15 +438,21 @@ mod tests { let current_l = aggr_wallet.l.get(); aggr_wallet.l.set(current_l - 10); - let pay_info2 = PayInfo::generate_payinfo(provider_keypair.public_key()); - let (payment2, _) = aggr_wallet.spend( - ¶ms, - &verification_key, - &user_keypair.secret_key(), - &pay_info2, - false, - spend_vv, - ).unwrap(); + let pay_info2 = PayInfo::generate_payinfo( + provider_keypair.public_key().to_bytes()[..32] + .try_into() + .unwrap(), + ); + let (payment2, _) = aggr_wallet + .spend( + ¶ms, + &verification_key, + &user_keypair.secret_key(), + &pay_info2, + false, + spend_vv, + ) + .unwrap(); let identify_result = identify(payment1, payment2, pay_info1.clone(), pay_info2.clone()).unwrap(); diff --git a/common/nym_offline_compact_ecash/src/scheme/mod.rs b/common/nym_offline_compact_ecash/src/scheme/mod.rs index 53d3b73bea..e4baed4107 100644 --- a/common/nym_offline_compact_ecash/src/scheme/mod.rs +++ b/common/nym_offline_compact_ecash/src/scheme/mod.rs @@ -7,7 +7,7 @@ use getset::{CopyGetters, Getters}; use crate::error::{CompactEcashError, Result}; use crate::proofs::proof_spend::{SpendInstance, SpendProof, SpendWitness}; -use crate::scheme::keygen::{SecretKeyUser, VerificationKeyAuth, PublicKeyUser}; +use crate::scheme::keygen::{SecretKeyUser, VerificationKeyAuth}; use crate::scheme::setup::{GroupParameters, Parameters}; use crate::traits::Bytable; use crate::utils::{ @@ -15,8 +15,8 @@ use crate::utils::{ try_deserialize_g2_projective, try_deserialize_scalar, Signature, SignerIndex, }; use crate::{Attribute, Base58}; -use chrono::{Utc, Timelike}; -use rand::{Rng, thread_rng}; +use chrono::Utc; +use rand::{thread_rng, Rng}; pub mod aggregation; pub mod identify; diff --git a/common/nym_offline_divisible_ecash/Cargo.toml b/common/nym_offline_divisible_ecash/Cargo.toml index 37c940443d..8d25cd6593 100644 --- a/common/nym_offline_divisible_ecash/Cargo.toml +++ b/common/nym_offline_divisible_ecash/Cargo.toml @@ -8,7 +8,9 @@ edition = "2021" [dependencies] #bls12_381 = { git = "https://github.com/jstuczyn/bls12_381", branch = "gt-serialisation", default-features = false, features = ["alloc", "pairings", "experimental", "zeroize"] } -bls12_381 = { path = "/Users/simon/Documents/Nym/github/andrew_bls12_381", default-features = false, features = ["alloc", "pairings", "experimental", "zeroize"] } +bls12_381 = { workspace = true } +ff = { workspace = true } +group = { workspace = true } itertools = "0.10" digest = "0.9" rand = "0.8" @@ -19,14 +21,6 @@ bs58 = "0.4.0" [dev-dependencies] criterion = { version = "0.3", features = ["html_reports"] } -[dependencies.ff] -version = "0.11" -default-features = false - -[dependencies.group] -version = "0.11" -default-features = false - [[bench]] name = "benchmarks" -harness = false \ No newline at end of file +harness = false diff --git a/common/nym_offline_divisible_ecash/benches/benchmarks.rs b/common/nym_offline_divisible_ecash/benches/benchmarks.rs index 5f33824050..d8b4474fc4 100644 --- a/common/nym_offline_divisible_ecash/benches/benchmarks.rs +++ b/common/nym_offline_divisible_ecash/benches/benchmarks.rs @@ -2,19 +2,23 @@ use std::collections::HashSet; use std::ops::Neg; use std::time::Duration; -use bls12_381::{G1Affine, G1Projective, G2Affine, G2Prepared, G2Projective, Gt, multi_miller_loop, Scalar}; -use criterion::{Criterion, criterion_group, criterion_main}; +use bls12_381::{ + multi_miller_loop, G1Affine, G1Projective, G2Affine, G2Prepared, G2Projective, Gt, Scalar, +}; +use criterion::{criterion_group, criterion_main, Criterion}; use ff::Field; use group::{Curve, Group}; use itertools::izip; use rand::seq::SliceRandom; use rand::thread_rng; -use nym_offline_divisible_ecash::{aggregate_verification_keys, aggregate_wallets, - issue, issue_verify, PartialWallet, - PayInfo, PublicKeyUser, SecretKeyUser, ttp_keygen_authorities, ttp_keygen_users, VerificationKeyAuth, withdrawal_request}; use nym_offline_divisible_ecash::identification::{identify, IdentifyResult}; use nym_offline_divisible_ecash::setup::{GroupParameters, Parameters}; +use nym_offline_divisible_ecash::{ + aggregate_verification_keys, aggregate_wallets, issue, issue_verify, ttp_keygen_authorities, + ttp_keygen_users, withdrawal_request, PartialWallet, PayInfo, PublicKeyUser, SecretKeyUser, + VerificationKeyAuth, +}; #[allow(unused)] fn double_pairing(g11: &G1Affine, g21: &G2Affine, g12: &G1Affine, g22: &G2Affine) { @@ -118,9 +122,7 @@ fn bench_pairings(c: &mut Criterion) { b.iter(|| exponent_in_gt(gt, r)) }); - group.bench_function("single pairing", |b| { - b.iter(|| single_pairing(&g11, &g21)) - }); + group.bench_function("single pairing", |b| b.iter(|| single_pairing(&g11, &g21))); group.bench_function("double pairing", |b| { b.iter(|| double_pairing(&g11, &g21, &g12, &g22)) @@ -166,7 +168,8 @@ fn bench_divisible_ecash(c: &mut Criterion) { // KEY GENERATION FOR THE AUTHORITIES let threshold = (case.threshold_p * case.num_authorities as f32).round() as u64; - let authorities_keypairs = ttp_keygen_authorities(¶ms, threshold, case.num_authorities).unwrap(); + let authorities_keypairs = + ttp_keygen_authorities(¶ms, threshold, case.num_authorities).unwrap(); let verification_keys_auth: Vec = authorities_keypairs .iter() .map(|keypair| keypair.verification_key()) @@ -208,7 +211,7 @@ fn bench_divisible_ecash(c: &mut Criterion) { let mut rng = rand::thread_rng(); let keypair = authorities_keypairs.choose(&mut rng).unwrap(); group.bench_function( - &format!("[Issuing Authority] issue_partial_wallet_with_L_{}", case.L, ), + &format!("[Issuing Authority] issue_partial_wallet_with_L_{}", case.L,), |b| { b.iter(|| { issue( @@ -216,12 +219,12 @@ fn bench_divisible_ecash(c: &mut Criterion) { &withdrawal_req, pk_user.clone(), &keypair.secret_key(), - ).unwrap() + ) + .unwrap() }) }, ); - let mut wallet_blinded_signatures = Vec::new(); for auth_keypair in authorities_keypairs { let blind_signature = issue( @@ -229,7 +232,8 @@ fn bench_divisible_ecash(c: &mut Criterion) { &withdrawal_req, pk_user.clone(), &auth_keypair.secret_key(), - ).unwrap(); + ) + .unwrap(); wallet_blinded_signatures.push(blind_signature); } @@ -237,7 +241,7 @@ fn bench_divisible_ecash(c: &mut Criterion) { let w = wallet_blinded_signatures.get(0).clone().unwrap(); let vk = verification_keys_auth.get(0).clone().unwrap(); group.bench_function( - &format!("[Client] issue_verify_a_partial_wallet_with_L_{}", case.L, ), + &format!("[Client] issue_verify_a_partial_wallet_with_L_{}", case.L,), |b| b.iter(|| issue_verify(&grp, vk, &sk_user, w, &req_info).unwrap()), ); @@ -245,12 +249,12 @@ fn bench_divisible_ecash(c: &mut Criterion) { wallet_blinded_signatures.iter(), verification_keys_auth.iter() ) - .map(|(w, vk)| issue_verify(&grp, &vk, &sk_user, &w, &req_info).unwrap()) - .collect(); - + .map(|(w, vk)| issue_verify(&grp, &vk, &sk_user, &w, &req_info).unwrap()) + .collect(); // AGGREGATE WALLET - let mut wallet = aggregate_wallets(&grp, &verification_key, &sk_user, &partial_wallets).unwrap(); + let mut wallet = + aggregate_wallets(&grp, &verification_key, &sk_user, &partial_wallets).unwrap(); // CLIENT BENCHMARK: aggregating all partial wallets group.bench_function( @@ -260,14 +264,22 @@ fn bench_divisible_ecash(c: &mut Criterion) { ), |b| { b.iter(|| { - aggregate_wallets(&grp, &verification_key, &sk_user, &partial_wallets) - .unwrap() + aggregate_wallets(&grp, &verification_key, &sk_user, &partial_wallets).unwrap() }) }, ); let pay_info = PayInfo { info: [67u8; 32] }; - let (payment, wallet) = wallet.spend(¶ms, &verification_key, &sk_user, &pay_info, case.spend_vv, false).unwrap(); + let (payment, wallet) = wallet + .spend( + ¶ms, + &verification_key, + &sk_user, + &pay_info, + case.spend_vv, + false, + ) + .unwrap(); // CLIENT BENCHMARK: spend a single coin from the wallet group.bench_function( @@ -277,7 +289,15 @@ fn bench_divisible_ecash(c: &mut Criterion) { ), |b| { b.iter(|| { - wallet.spend(¶ms, &verification_key, &sk_user, &pay_info, case.spend_vv, true) + wallet + .spend( + ¶ms, + &verification_key, + &sk_user, + &pay_info, + case.spend_vv, + true, + ) .unwrap() }) }, @@ -291,7 +311,8 @@ fn bench_divisible_ecash(c: &mut Criterion) { ), |b| { b.iter(|| { - payment.spend_verify(¶ms, &verification_key, &pay_info) + payment + .spend_verify(¶ms, &verification_key, &pay_info) .unwrap() }) }, @@ -305,25 +326,50 @@ fn bench_divisible_ecash(c: &mut Criterion) { wallet.l.set(current_l - 1); let pay_info2 = PayInfo { info: [52u8; 32] }; - let (payment2, wallet) = wallet.spend(¶ms, &verification_key, &sk_user, &pay_info2, 10, false).unwrap(); + let (payment2, wallet) = wallet + .spend(¶ms, &verification_key, &sk_user, &pay_info2, 10, false) + .unwrap(); // MERCHANT BENCHMARK: identify double spending group.bench_function( &format!( "[Merchant] identify_L_{}_threshold_{}_spend_vv_{}_pks_{}", - case.L, case.threshold_p, case.spend_vv, pk_all_users.len() + case.L, + case.threshold_p, + case.spend_vv, + pk_all_users.len() ), |b| { b.iter(|| { - identify(¶ms, &verification_key, &pk_all_users, payment.clone(), payment2.clone(), pay_info, pay_info2).unwrap() + identify( + ¶ms, + &verification_key, + &pk_all_users, + payment.clone(), + payment2.clone(), + pay_info, + pay_info2, + ) + .unwrap() }) }, ); - - let identify_result = identify(¶ms, &verification_key, &pk_all_users, payment.clone(), payment2.clone(), pay_info, pay_info2).unwrap(); - assert_eq!(identify_result, IdentifyResult::DoubleSpendingPublicKeys(pk_user)); + let identify_result = identify( + ¶ms, + &verification_key, + &pk_all_users, + payment.clone(), + payment2.clone(), + pay_info, + pay_info2, + ) + .unwrap(); + assert_eq!( + identify_result, + IdentifyResult::DoubleSpendingPublicKeys(pk_user) + ); } criterion_group!(benches, bench_divisible_ecash); -criterion_main!(benches); \ No newline at end of file +criterion_main!(benches); diff --git a/common/nym_offline_divisible_ecash/src/constants.rs b/common/nym_offline_divisible_ecash/src/constants.rs index 2be621a8bc..de0bde7714 100644 --- a/common/nym_offline_divisible_ecash/src/constants.rs +++ b/common/nym_offline_divisible_ecash/src/constants.rs @@ -1,2 +1,2 @@ /// Max value of wallet -pub(crate) const L: u64 = 100; \ No newline at end of file +pub(crate) const L: u64 = 100; diff --git a/common/nym_offline_divisible_ecash/src/lib.rs b/common/nym_offline_divisible_ecash/src/lib.rs index 523ee845fb..930aac41df 100644 --- a/common/nym_offline_divisible_ecash/src/lib.rs +++ b/common/nym_offline_divisible_ecash/src/lib.rs @@ -1,22 +1,23 @@ -use bls12_381::{G1Projective, G2Prepared, G2Projective, pairing, Scalar}; +use bls12_381::{pairing, G1Projective, G2Prepared, G2Projective, Scalar}; pub use scheme::aggregation::aggregate_verification_keys; pub use scheme::aggregation::aggregate_wallets; pub use scheme::identification; -pub use scheme::keygen::{PublicKeyUser, SecretKeyUser, VerificationKeyAuth}; pub use scheme::keygen::ttp_keygen_authorities; pub use scheme::keygen::ttp_keygen_users; -pub use scheme::PartialWallet; -pub use scheme::PayInfo; +pub use scheme::keygen::{PublicKeyUser, SecretKeyUser, VerificationKeyAuth}; pub use scheme::setup; pub use scheme::withdrawal::issue; pub use scheme::withdrawal::issue_verify; pub use scheme::withdrawal::withdrawal_request; +pub use scheme::PartialWallet; +pub use scheme::PayInfo; pub use traits::Base58; use crate::error::DivisibleEcashError; use crate::traits::Bytable; +mod constants; mod error; mod proofs; mod scheme; @@ -24,6 +25,5 @@ mod scheme; mod tests; mod traits; mod utils; -mod constants; pub type Attribute = Scalar; diff --git a/common/nym_offline_divisible_ecash/src/proofs/mod.rs b/common/nym_offline_divisible_ecash/src/proofs/mod.rs index 224ea3f377..eff13be430 100644 --- a/common/nym_offline_divisible_ecash/src/proofs/mod.rs +++ b/common/nym_offline_divisible_ecash/src/proofs/mod.rs @@ -3,8 +3,8 @@ use std::convert::TryFrom; use std::convert::TryInto; use bls12_381::{G1Affine, G1Projective, Scalar}; -use digest::Digest; use digest::generic_array::typenum::Unsigned; +use digest::Digest; use group::GroupEncoding; use sha2::Sha256; @@ -13,17 +13,17 @@ use crate::scheme::keygen::PublicKeyUser; use crate::scheme::setup::GroupParameters; use crate::utils::try_deserialize_g1_projective; -pub mod proof_withdrawal; pub mod proof_spend; +pub mod proof_withdrawal; type ChallengeDigest = Sha256; /// Generates a Scalar [or Fp] challenge by hashing a number of elliptic curve points. fn compute_challenge(iter: I) -> Scalar - where - D: Digest, - I: Iterator, - B: AsRef<[u8]>, +where + D: Digest, + I: Iterator, + B: AsRef<[u8]>, { let mut h = D::new(); for point_representation in iter { @@ -51,8 +51,8 @@ fn produce_response(witness_replacement: &Scalar, challenge: &Scalar, secret: &S // note: it's caller's responsibility to ensure witnesses.len() = secrets.len() fn produce_responses(witnesses: &[Scalar], challenge: &Scalar, secrets: &[S]) -> Vec - where - S: Borrow, +where + S: Borrow, { debug_assert_eq!(witnesses.len(), secrets.len()); diff --git a/common/nym_offline_divisible_ecash/src/proofs/proof_spend.rs b/common/nym_offline_divisible_ecash/src/proofs/proof_spend.rs index 8059276e87..b0fd727ec6 100644 --- a/common/nym_offline_divisible_ecash/src/proofs/proof_spend.rs +++ b/common/nym_offline_divisible_ecash/src/proofs/proof_spend.rs @@ -4,12 +4,12 @@ use std::ops::Neg; use bls12_381::{G1Projective, G2Projective, Gt, Scalar}; use group::GroupEncoding; -use crate::proofs::{ChallengeDigest, compute_challenge, produce_response, produce_responses}; -use crate::scheme::{Phi, VarPhi, Wallet}; +use crate::error::{DivisibleEcashError, Result}; +use crate::proofs::{compute_challenge, produce_response, produce_responses, ChallengeDigest}; use crate::scheme::keygen::{SecretKeyUser, VerificationKeyAuth}; use crate::scheme::setup::Parameters; -use crate::error::{DivisibleEcashError, Result}; -use crate::utils::{try_deserialize_scalar}; +use crate::scheme::{Phi, VarPhi, Wallet}; +use crate::utils::try_deserialize_scalar; pub struct SpendInstance { pub kappa: G2Projective, @@ -136,7 +136,8 @@ impl SpendProof { instance: &SpendInstance, witness: &SpendWitness, verification_key: &VerificationKeyAuth, - vv: u64) -> Self { + vv: u64, + ) -> Self { let grp = params.get_grp(); let params_u = params.get_params_u(); let params_a = params.get_params_a(); @@ -165,20 +166,31 @@ impl SpendProof { let zkcm_kappa = grp.gen2() * r_r + verification_key.alpha + r_attributes - .iter() - .zip(verification_key.beta_g2.iter()) - .map(|(attr, beta_i)| beta_i * attr) - .sum::(); + .iter() + .zip(verification_key.beta_g2.iter()) + .map(|(attr, beta_i)| beta_i * attr) + .sum::(); let zkcm_phi0 = g1 * r_r1; - let zkcm_phi1 = instance.varsig_prime1 * r_v + instance.psi_g1 * r_rho1 + params_u.get_ith_eta(vv as usize) * r_r1; + let zkcm_phi1 = instance.varsig_prime1 * r_v + + instance.psi_g1 * r_rho1 + + params_u.get_ith_eta(vv as usize) * r_r1; let zkcm_varphi0 = g1 * r_r2; - let zkcm_varphi1 = (g1 * instance.rr) * r_sk_u + instance.theta_prime1 * r_v + instance.psi_g1 * r_rho2 + params_u.get_ith_eta(vv as usize) * r_r2; - let zkcm_pg_eq1 = instance.pg_psi0_delta * r_r_varsig1 + instance.pg_psi0_gen2 * r_r_varsig2.neg(); - let zkcm_pg_eq2 = instance.pg_psi0_delta * r_r_theta1 + instance.pg_psi0_gen2 * r_r_theta2.neg(); - let zkcm_pg_eq3 = instance.pg_psi0_yy * r_r_rr + instance.pg_psi0_gen2 * r_r_ss + instance.pg_psi0_ww1 * r_r_varsig2 + instance.pg_psi0_ww2 * r_r_theta2; - let zkcm_pg_eq4 = instance.pg_rr_psi1 * r_r_tt + instance.pg_psi0_tt * r_r_rr + instance.pg_psi0_psi1 * r_rho3.neg(); - + let zkcm_varphi1 = (g1 * instance.rr) * r_sk_u + + instance.theta_prime1 * r_v + + instance.psi_g1 * r_rho2 + + params_u.get_ith_eta(vv as usize) * r_r2; + let zkcm_pg_eq1 = + instance.pg_psi0_delta * r_r_varsig1 + instance.pg_psi0_gen2 * r_r_varsig2.neg(); + let zkcm_pg_eq2 = + instance.pg_psi0_delta * r_r_theta1 + instance.pg_psi0_gen2 * r_r_theta2.neg(); + let zkcm_pg_eq3 = instance.pg_psi0_yy * r_r_rr + + instance.pg_psi0_gen2 * r_r_ss + + instance.pg_psi0_ww1 * r_r_varsig2 + + instance.pg_psi0_ww2 * r_r_theta2; + let zkcm_pg_eq4 = instance.pg_rr_psi1 * r_r_tt + + instance.pg_psi0_tt * r_r_rr + + instance.pg_psi0_psi1 * r_rho3.neg(); let challenge = compute_challenge::( std::iter::once(g1.to_bytes().as_ref()) @@ -191,7 +203,7 @@ impl SpendProof { .chain(std::iter::once(zkcm_pg_eq1.to_compressed().as_ref())) .chain(std::iter::once(zkcm_pg_eq2.to_compressed().as_ref())) .chain(std::iter::once(zkcm_pg_eq3.to_compressed().as_ref())) - .chain(std::iter::once(zkcm_pg_eq4.to_compressed().as_ref())) + .chain(std::iter::once(zkcm_pg_eq4.to_compressed().as_ref())), ); // compute response for each witness @@ -212,7 +224,6 @@ impl SpendProof { let response_r_rho2 = produce_response(&r_rho2, &challenge, &witness.rho2); let response_r_rho3 = produce_response(&r_rho3, &challenge, &witness.rho3); - SpendProof { challenge, response_r, @@ -251,10 +262,10 @@ impl SpendProof { + grp.gen2() * self.response_r + verification_key.alpha * (Scalar::one() - self.challenge) + [self.response_r_sk_u, self.response_r_v] - .iter() - .zip(verification_key.beta_g2.iter()) - .map(|(attr, beta_i)| beta_i * attr) - .sum::(); + .iter() + .zip(verification_key.beta_g2.iter()) + .map(|(attr, beta_i)| beta_i * attr) + .sum::(); let zkcm_phi0 = g1 * self.response_r_r1 + instance.phi.0 * self.challenge; let zkcm_phi1 = instance.varsig_prime1 * self.response_r_v @@ -297,7 +308,7 @@ impl SpendProof { .chain(std::iter::once(zkcm_pg_eq1.to_compressed().as_ref())) .chain(std::iter::once(zkcm_pg_eq2.to_compressed().as_ref())) .chain(std::iter::once(zkcm_pg_eq3.to_compressed().as_ref())) - .chain(std::iter::once(zkcm_pg_eq4.to_compressed().as_ref())) + .chain(std::iter::once(zkcm_pg_eq4.to_compressed().as_ref())), ); challenge == self.challenge @@ -331,7 +342,9 @@ impl TryFrom<&[u8]> for SpendProof { let response_r_sk_u_bytes = bytes[FIELD_SIZE * 2..FIELD_SIZE * 3].try_into().unwrap(); let response_r_sk_u = try_deserialize_scalar( &response_r_sk_u_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize response_r_sk_u".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize response_r_sk_u".to_string(), + ), )?; let response_r_v_bytes = bytes[FIELD_SIZE * 3..FIELD_SIZE * 4].try_into().unwrap(); @@ -361,25 +374,33 @@ impl TryFrom<&[u8]> for SpendProof { let response_r_varsig1_bytes = bytes[FIELD_SIZE * 7..FIELD_SIZE * 8].try_into().unwrap(); let response_r_varsig1 = try_deserialize_scalar( response_r_varsig1_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize response_r_varsig1".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize response_r_varsig1".to_string(), + ), )?; let response_r_theta1_bytes = bytes[FIELD_SIZE * 8..FIELD_SIZE * 9].try_into().unwrap(); let response_r_theta1 = try_deserialize_scalar( &response_r_theta1_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize response_r_theta1".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize response_r_theta1".to_string(), + ), )?; let response_r_varsig2_bytes = bytes[FIELD_SIZE * 9..FIELD_SIZE * 10].try_into().unwrap(); let response_r_varsig2 = try_deserialize_scalar( &response_r_varsig2_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize response_r_varsig2".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize response_r_varsig2".to_string(), + ), )?; let response_r_theta2_bytes = bytes[FIELD_SIZE * 10..FIELD_SIZE * 11].try_into().unwrap(); let response_r_theta2 = try_deserialize_scalar( &response_r_theta2_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize response_r_theta2".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize response_r_theta2".to_string(), + ), )?; let response_r_rr_bytes = bytes[FIELD_SIZE * 11..FIELD_SIZE * 12].try_into().unwrap(); @@ -403,19 +424,25 @@ impl TryFrom<&[u8]> for SpendProof { let response_r_rho1_bytes = bytes[FIELD_SIZE * 14..FIELD_SIZE * 15].try_into().unwrap(); let response_r_rho1 = try_deserialize_scalar( &response_r_rho1_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize response_r_rho1".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize response_r_rho1".to_string(), + ), )?; let response_r_rho2_bytes = bytes[FIELD_SIZE * 15..FIELD_SIZE * 16].try_into().unwrap(); let response_r_rho2 = try_deserialize_scalar( &response_r_rho2_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize response_r_rho2".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize response_r_rho2".to_string(), + ), )?; let response_r_rho3_bytes = bytes[FIELD_SIZE * 16..FIELD_SIZE * 17].try_into().unwrap(); let response_r_rho3 = try_deserialize_scalar( &response_r_rho3_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize response_r_rho3".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize response_r_rho3".to_string(), + ), )?; Ok(SpendProof { @@ -444,15 +471,17 @@ impl TryFrom<&[u8]> for SpendProof { mod tests { use std::ops::Neg; - use bls12_381::{G2Projective, pairing}; + use bls12_381::{pairing, G2Projective}; use group::Curve; use rand::thread_rng; use crate::proofs::proof_spend::{SpendInstance, SpendProof, SpendWitness}; - use crate::scheme::{PayInfo, Phi, VarPhi}; use crate::scheme::aggregation::aggregate_verification_keys; - use crate::scheme::keygen::{PublicKeyUser, SecretKeyUser, ttp_keygen_authorities, VerificationKeyAuth}; + use crate::scheme::keygen::{ + ttp_keygen_authorities, PublicKeyUser, SecretKeyUser, VerificationKeyAuth, + }; use crate::scheme::setup::{GroupParameters, Parameters}; + use crate::scheme::{PayInfo, Phi, VarPhi}; use crate::utils::hash_to_scalar; #[test] @@ -485,18 +514,26 @@ mod tests { let kappa = grp.gen2() * r + verification_key.alpha + attributes - .iter() - .zip(verification_key.beta_g2.iter()) - .map(|(priv_attr, beta_i)| beta_i * priv_attr) - .sum::(); + .iter() + .zip(verification_key.beta_g2.iter()) + .map(|(priv_attr, beta_i)| beta_i * priv_attr) + .sum::(); let r1 = grp.random_scalar(); let r2 = grp.random_scalar(); - let phi = Phi(grp.gen1() * r1, params_u.get_ith_sigma(l as usize) * v + params_u.get_ith_eta(vv as usize) * r1); + let phi = Phi( + grp.gen1() * r1, + params_u.get_ith_sigma(l as usize) * v + params_u.get_ith_eta(vv as usize) * r1, + ); let pay_info = PayInfo { info: [78u8; 32] }; let rr = hash_to_scalar(pay_info.info); - let varphi = VarPhi(grp.gen1() * r2, (grp.gen1() * rr) * sk + params_u.get_ith_theta(l as usize) * v + params_u.get_ith_eta(vv as usize) * r2); + let varphi = VarPhi( + grp.gen1() * r2, + (grp.gen1() * rr) * sk + + params_u.get_ith_theta(l as usize) * v + + params_u.get_ith_eta(vv as usize) * r2, + ); // random value used to compute blinded bases let r_varsig1 = grp.random_scalar(); @@ -507,29 +544,37 @@ mod tests { let r_ss = grp.random_scalar(); let r_tt = grp.random_scalar(); - // compute blinded bases let psi_g1 = params_u.get_psi_g1(); let psi_g2 = params_u.get_psi_g2(); let varsig_prime1 = params_u.get_ith_sigma(l as usize) + (psi_g1 * r_varsig1); let theta_prime1 = params_u.get_ith_theta(l as usize) + (psi_g1 * r_theta1); - let varsig_prime2 = params_u.get_ith_sigma(l as usize + vv as usize - 1) + (psi_g1 * r_varsig2); - let theta_prime2 = params_u.get_ith_theta(l as usize + vv as usize - 1) + (psi_g1 * r_theta2); + let varsig_prime2 = + params_u.get_ith_sigma(l as usize + vv as usize - 1) + (psi_g1 * r_varsig2); + let theta_prime2 = + params_u.get_ith_theta(l as usize + vv as usize - 1) + (psi_g1 * r_theta2); let rr_prime = params_u.get_ith_sps_sign(l as usize + vv as usize - 1).rr + (psi_g1 * r_rr); let ss_prime = params_u.get_ith_sps_sign(l as usize + vv as usize - 1).ss + (psi_g1 * r_ss); let tt_prime = params_u.get_ith_sps_sign(l as usize + vv as usize - 1).tt + (psi_g2 * r_tt); - let rho1 = v.neg() * r_varsig1; let rho2 = v.neg() * r_theta1; let rho3 = r_rr * r_tt; - - let pg_varsigpr1_delta = pairing(&varsig_prime1.to_affine(), ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine()); - let pg_psi0_delta = pairing(&psi_g1.to_affine(), ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine()); + let pg_varsigpr1_delta = pairing( + &varsig_prime1.to_affine(), + ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine(), + ); + let pg_psi0_delta = pairing( + &psi_g1.to_affine(), + ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine(), + ); let pg_varsigpr2_gen2 = pairing(&varsig_prime2.to_affine(), grp.gen2()); let pg_psi0_gen2 = pairing(&psi_g1.to_affine(), grp.gen2()); - let pg_thetapr1_delta = pairing(&theta_prime1.to_affine(), ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine()); + let pg_thetapr1_delta = pairing( + &theta_prime1.to_affine(), + ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine(), + ); let pg_thetapr2_gen2 = pairing(&theta_prime2.to_affine(), grp.gen2()); let yy = params_u.get_sps_pk().get_yy(); let pg_rrprime_yy = pairing(&rr_prime.to_affine(), &yy.to_affine()); @@ -550,10 +595,10 @@ mod tests { let pg_eq1 = pg_varsigpr1_delta - pg_varsigpr2_gen2; let pg_eq2 = pg_thetapr1_delta - pg_thetapr2_gen2; - let pg_eq3 = pg_rrprime_yy + pg_ssprime_gen2 + pg_varsigpr2_ww1 + pg_thetapr2_ww2 - pg_gen1_zz; + let pg_eq3 = + pg_rrprime_yy + pg_ssprime_gen2 + pg_varsigpr2_ww1 + pg_thetapr2_ww2 - pg_gen1_zz; let pg_eq4 = pg_rr_tt - pg_gen1_gen2; - let instance = SpendInstance { kappa, phi, @@ -606,8 +651,5 @@ mod tests { let zk_proof_bytes = zk_proof.to_bytes(); let zk_proof2 = SpendProof::try_from(&zk_proof_bytes[..]).unwrap(); assert_eq!(zk_proof, zk_proof2); - } } - - diff --git a/common/nym_offline_divisible_ecash/src/proofs/proof_withdrawal.rs b/common/nym_offline_divisible_ecash/src/proofs/proof_withdrawal.rs index d34236973b..f06b49bd97 100644 --- a/common/nym_offline_divisible_ecash/src/proofs/proof_withdrawal.rs +++ b/common/nym_offline_divisible_ecash/src/proofs/proof_withdrawal.rs @@ -5,7 +5,7 @@ use group::GroupEncoding; use itertools::izip; use crate::error::{DivisibleEcashError, Result}; -use crate::proofs::{ChallengeDigest, compute_challenge, produce_response, produce_responses}; +use crate::proofs::{compute_challenge, produce_response, produce_responses, ChallengeDigest}; use crate::scheme::keygen::PublicKeyUser; use crate::scheme::setup::{GroupParameters, Parameters}; use crate::utils::try_deserialize_g1_projective; @@ -140,10 +140,10 @@ impl WithdrawalReqProof { // compute zkp commitments for each instance let zkcm_com = g1 * r_com_opening + r_attributes - .iter() - .zip(params_u.get_gammas().iter()) - .map(|(rm_i, gamma_i)| gamma_i * rm_i) - .sum::(); + .iter() + .zip(params_u.get_gammas().iter()) + .map(|(rm_i, gamma_i)| gamma_i * rm_i) + .sum::(); let zkcm_pedcom = r_pedcom_openings .iter() @@ -196,11 +196,7 @@ impl WithdrawalReqProof { } } - pub(crate) fn verify( - &self, - params: &Parameters, - instance: &WithdrawalReqInstance, - ) -> bool { + pub(crate) fn verify(&self, params: &Parameters, instance: &WithdrawalReqInstance) -> bool { let grp = params.get_grp(); let g1 = grp.gen1(); let params_u = params.get_params_u(); @@ -209,21 +205,21 @@ impl WithdrawalReqProof { let zkcm_com = instance.com * self.challenge + g1 * self.response_opening + self - .response_attributes - .iter() - .zip(params_u.get_gammas().iter()) - .map(|(m_i, gamma_i)| gamma_i * m_i) - .sum::(); + .response_attributes + .iter() + .zip(params_u.get_gammas().iter()) + .map(|(m_i, gamma_i)| gamma_i * m_i) + .sum::(); let zkcm_pedcom = izip!( instance.pc_coms.iter(), self.response_openings.iter(), self.response_attributes.iter() ) - .map(|(cm_j, resp_o_j, resp_m_j)| { - cm_j * self.challenge + g1 * resp_o_j + instance.h * resp_m_j - }) - .collect::>(); + .map(|(cm_j, resp_o_j, resp_m_j)| { + cm_j * self.challenge + g1 * resp_o_j + instance.h * resp_m_j + }) + .collect::>(); let zk_commitment_user_sk = instance.pk_user.pk * self.challenge + g1 * self.response_attributes[0]; @@ -292,7 +288,6 @@ mod tests { let grp = GroupParameters::new().unwrap(); let params = Parameters::new(grp.clone()); - let sk = grp.random_scalar(); let pk_user = PublicKeyUser { pk: grp.gen1() * sk, @@ -304,10 +299,10 @@ mod tests { let com_opening = grp.random_scalar(); let com = grp.gen1() * com_opening + attr - .iter() - .zip(params.get_params_u().get_gammas()) - .map(|(&m, gamma)| gamma * m) - .sum::(); + .iter() + .zip(params.get_params_u().get_gammas()) + .map(|(&m, gamma)| gamma * m) + .sum::(); let h = hash_g1(com.to_bytes()); let pc_openings = grp.n_random_scalars(attr.len()); diff --git a/common/nym_offline_divisible_ecash/src/scheme/aggregation.rs b/common/nym_offline_divisible_ecash/src/scheme/aggregation.rs index 5947e9a1fc..ad0c094762 100644 --- a/common/nym_offline_divisible_ecash/src/scheme/aggregation.rs +++ b/common/nym_offline_divisible_ecash/src/scheme/aggregation.rs @@ -2,19 +2,19 @@ use core::iter::Sum; use core::ops::Mul; use std::cell::Cell; -use bls12_381::{G2Prepared, G2Projective, pairing, Scalar}; +use bls12_381::{pairing, G2Prepared, G2Projective, Scalar}; use group::Curve; use itertools::Itertools; -use crate::Attribute; use crate::error::{DivisibleEcashError, Result}; -use crate::scheme::{PartialWallet, Wallet}; use crate::scheme::keygen::{SecretKeyUser, VerificationKeyAuth}; use crate::scheme::setup::GroupParameters; +use crate::scheme::{PartialWallet, Wallet}; use crate::utils::{ - check_bilinear_pairing, PartialSignature, perform_lagrangian_interpolation_at_origin, + check_bilinear_pairing, perform_lagrangian_interpolation_at_origin, PartialSignature, Signature, SignatureShare, SignerIndex, }; +use crate::Attribute; pub(crate) trait Aggregatable: Sized { fn aggregate(aggregatable: &[Self], indices: Option<&[SignerIndex]>) -> Result; @@ -26,10 +26,10 @@ pub(crate) trait Aggregatable: Sized { } impl Aggregatable for T - where - T: Sum, - for<'a> T: Sum<&'a T>, - for<'a> &'a T: Mul, +where + T: Sum, + for<'a> T: Sum<&'a T>, + for<'a> &'a T: Mul, { fn aggregate(aggregatable: &[T], indices: Option<&[u64]>) -> Result { if aggregatable.is_empty() { @@ -164,4 +164,3 @@ pub fn aggregate_wallets( l: Cell::new(1), }) } - diff --git a/common/nym_offline_divisible_ecash/src/scheme/identification.rs b/common/nym_offline_divisible_ecash/src/scheme/identification.rs index 4c1fa882b7..4a93431865 100644 --- a/common/nym_offline_divisible_ecash/src/scheme/identification.rs +++ b/common/nym_offline_divisible_ecash/src/scheme/identification.rs @@ -1,14 +1,14 @@ use std::collections::{HashMap, HashSet}; use std::ops::Neg; -use bls12_381::{Gt, pairing, Scalar}; +use bls12_381::{pairing, Gt, Scalar}; use group::Curve; use crate::error::{DivisibleEcashError, Result}; -use crate::scheme::{PayInfo, Payment}; use crate::scheme::identification::IdentifyResult::DoubleSpendingPublicKeys; use crate::scheme::keygen::{PublicKeyUser, VerificationKeyAuth}; use crate::scheme::setup::Parameters; +use crate::scheme::{PayInfo, Payment}; #[derive(Debug, Eq, PartialEq)] pub enum IdentifyResult { @@ -26,15 +26,23 @@ pub fn identify( payment1: Payment, payment2: Payment, pay_info1: PayInfo, - pay_info2: PayInfo) -> Result { + pay_info2: PayInfo, +) -> Result { let params_a = params.get_params_a(); // compute the serial numbers for k1 in [0, V1-1] let mut serial_numbers = HashMap::new(); for k in 0..payment1.vv { - let sn = pairing(&payment1.phi.1.to_affine(), ¶ms_a.get_ith_delta(k as usize).to_affine()) - + pairing(&payment1.phi.0.to_affine(), ¶ms_a.get_etas_ith_jth_elem(payment1.vv as usize, k as usize).to_affine()); + let sn = pairing( + &payment1.phi.1.to_affine(), + ¶ms_a.get_ith_delta(k as usize).to_affine(), + ) + pairing( + &payment1.phi.0.to_affine(), + ¶ms_a + .get_etas_ith_jth_elem(payment1.vv as usize, k as usize) + .to_affine(), + ); serial_numbers.insert(sn, k); } @@ -43,8 +51,15 @@ pub fn identify( let mut k2 = 0; let mut duplicate_serial_numbers: Vec<(Gt, u64, u64)> = Default::default(); for j in 0..payment2.vv { - let sn = pairing(&payment2.phi.1.to_affine(), ¶ms_a.get_ith_delta(j as usize).to_affine()) - + pairing(&payment2.phi.0.to_affine(), ¶ms_a.get_etas_ith_jth_elem(payment2.vv as usize, j as usize).to_affine()); + let sn = pairing( + &payment2.phi.1.to_affine(), + ¶ms_a.get_ith_delta(j as usize).to_affine(), + ) + pairing( + &payment2.phi.0.to_affine(), + ¶ms_a + .get_etas_ith_jth_elem(payment2.vv as usize, j as usize) + .to_affine(), + ); if !serial_numbers.contains_key(&sn) { serial_numbers.insert(sn, j); } else { @@ -61,13 +76,25 @@ pub fn identify( let delta_k1 = params_a.get_ith_delta(k1 as usize); let delta_k2 = params_a.get_ith_delta(k2 as usize); let tt1 = pairing(&payment1.varphi.1.to_affine(), &delta_k1.to_affine()) - + pairing(&payment1.varphi.0.to_affine(), ¶ms_a.get_etas_ith_jth_elem(payment1.vv as usize, k1 as usize).to_affine()); + + pairing( + &payment1.varphi.0.to_affine(), + ¶ms_a + .get_etas_ith_jth_elem(payment1.vv as usize, k1 as usize) + .to_affine(), + ); let tt2 = pairing(&payment2.varphi.1.to_affine(), &delta_k2.to_affine()) - + pairing(&payment2.varphi.0.to_affine(), ¶ms_a.get_etas_ith_jth_elem(payment2.vv as usize, k2 as usize).to_affine()); - + + pairing( + &payment2.varphi.0.to_affine(), + ¶ms_a + .get_etas_ith_jth_elem(payment2.vv as usize, k2 as usize) + .to_affine(), + ); for pk_u in public_keys_u.iter() { - let pg_pku_deltas = pairing(&pk_u.pk.to_affine(), &(delta_k1 * payment1.rr + delta_k2 * payment2.rr.neg()).to_affine()); + let pg_pku_deltas = pairing( + &pk_u.pk.to_affine(), + &(delta_k1 * payment1.rr + delta_k2 * payment2.rr.neg()).to_affine(), + ); if tt1 - tt2 == pg_pku_deltas { return Ok(IdentifyResult::DoubleSpendingPublicKeys(pk_u.clone())); } @@ -86,12 +113,14 @@ mod tests { use group::Curve; use rand::thread_rng; - use crate::scheme::{PayInfo, Payment}; use crate::scheme::aggregation::{aggregate_verification_keys, aggregate_wallets}; use crate::scheme::identification::{identify, IdentifyResult}; - use crate::scheme::keygen::{PublicKeyUser, SecretKeyUser, ttp_keygen_authorities, VerificationKeyAuth}; + use crate::scheme::keygen::{ + ttp_keygen_authorities, PublicKeyUser, SecretKeyUser, VerificationKeyAuth, + }; use crate::scheme::setup::{GroupParameters, Parameters}; use crate::scheme::withdrawal::{issue, issue_verify, withdrawal_request}; + use crate::scheme::{PayInfo, Payment}; use crate::utils::hash_g1; #[test] @@ -121,7 +150,6 @@ mod tests { let sk_user2 = SecretKeyUser { sk: sk2 }; let pk_user2 = SecretKeyUser::public_key(&sk_user2, &grp); - // WITHDRAWAL REQUEST FOR USER1 let (withdrawal_req1, req_info1) = withdrawal_request(¶ms, &sk_user1).unwrap(); @@ -133,28 +161,52 @@ mod tests { &withdrawal_req1, pk_user1.clone(), &auth_keypair.secret_key(), - ).unwrap(); - let partial_wallet1 = issue_verify(&grp, &auth_keypair.verification_key(), &sk_user1, &blind_signature, &req_info1).unwrap(); + ) + .unwrap(); + let partial_wallet1 = issue_verify( + &grp, + &auth_keypair.verification_key(), + &sk_user1, + &blind_signature, + &req_info1, + ) + .unwrap(); partial_wallets1.push(partial_wallet1); } // AGGREGATE WALLET FOR USER1 - let mut wallet1 = aggregate_wallets(&grp, &verification_key, &sk_user1, &partial_wallets1).unwrap(); + let mut wallet1 = + aggregate_wallets(&grp, &verification_key, &sk_user1, &partial_wallets1).unwrap(); let pay_info1 = PayInfo { info: [67u8; 32] }; - let (payment1, wallet1) = wallet1.spend(¶ms, &verification_key, &sk_user1, &pay_info1, 10, false).unwrap(); + let (payment1, wallet1) = wallet1 + .spend(¶ms, &verification_key, &sk_user1, &pay_info1, 10, false) + .unwrap(); // SPEND VERIFICATION for USER1 - assert!(payment1.spend_verify(¶ms, &verification_key, &pay_info1).unwrap()); + assert!(payment1 + .spend_verify(¶ms, &verification_key, &pay_info1) + .unwrap()); let payment2 = payment1.clone(); // SPEND VERIFICATION for the duplicate payment - assert!(payment1.spend_verify(¶ms, &verification_key, &pay_info1).unwrap()); + assert!(payment1 + .spend_verify(¶ms, &verification_key, &pay_info1) + .unwrap()); let pay_info2 = pay_info1.clone(); let public_keys = HashSet::from([pk_user1, pk_user2]); - let identify_result = identify(¶ms, &verification_key, &public_keys, payment1, payment2, pay_info1, pay_info2).unwrap(); + let identify_result = identify( + ¶ms, + &verification_key, + &public_keys, + payment1, + payment2, + pay_info1, + pay_info2, + ) + .unwrap(); assert_eq!(identify_result, IdentifyResult::DuplicatePayInfo(pay_info1)); } @@ -181,7 +233,6 @@ mod tests { let sk_user1 = SecretKeyUser { sk: sk1 }; let pk_user1 = SecretKeyUser::public_key(&sk_user1, &grp); - // GENERATE KEYS FOR OTHER USERS let mut pk_all_users = HashSet::new(); for i in 0..50 { @@ -203,28 +254,52 @@ mod tests { &withdrawal_req1, pk_user1.clone(), &auth_keypair.secret_key(), - ).unwrap(); - let partial_wallet1 = issue_verify(&grp, &auth_keypair.verification_key(), &sk_user1, &blind_signature, &req_info1).unwrap(); + ) + .unwrap(); + let partial_wallet1 = issue_verify( + &grp, + &auth_keypair.verification_key(), + &sk_user1, + &blind_signature, + &req_info1, + ) + .unwrap(); partial_wallets1.push(partial_wallet1); } // AGGREGATE WALLET FOR USER1 - let mut wallet1 = aggregate_wallets(&grp, &verification_key, &sk_user1, &partial_wallets1).unwrap(); + let mut wallet1 = + aggregate_wallets(&grp, &verification_key, &sk_user1, &partial_wallets1).unwrap(); let pay_info1 = PayInfo { info: [67u8; 32] }; - let (payment1, new_wallet1) = wallet1.spend(¶ms, &verification_key, &sk_user1, &pay_info1, 10, false).unwrap(); + let (payment1, new_wallet1) = wallet1 + .spend(¶ms, &verification_key, &sk_user1, &pay_info1, 10, false) + .unwrap(); // let's reverse the spending counter in the wallet to create a double spending payment let current_l = wallet1.l.get(); wallet1.l.set(current_l - 1); let pay_info2 = PayInfo { info: [52u8; 32] }; - let (payment2, wallet1) = wallet1.spend(¶ms, &verification_key, &sk_user1, &pay_info2, 10, false).unwrap(); + let (payment2, wallet1) = wallet1 + .spend(¶ms, &verification_key, &sk_user1, &pay_info2, 10, false) + .unwrap(); + let identify_result = identify( + ¶ms, + &verification_key, + &pk_all_users, + payment1, + payment2, + pay_info1, + pay_info2, + ) + .unwrap(); - let identify_result = identify(¶ms, &verification_key, &pk_all_users, payment1, payment2, pay_info1, pay_info2).unwrap(); - - assert_eq!(identify_result, IdentifyResult::DoubleSpendingPublicKeys(pk_user1)); + assert_eq!( + identify_result, + IdentifyResult::DoubleSpendingPublicKeys(pk_user1) + ); } #[test] @@ -271,31 +346,54 @@ mod tests { &withdrawal_req1, pk_user1.clone(), &auth_keypair.secret_key(), - ).unwrap(); - let partial_wallet1 = issue_verify(&grp, &auth_keypair.verification_key(), &sk_user1, &blind_signature, &req_info1).unwrap(); + ) + .unwrap(); + let partial_wallet1 = issue_verify( + &grp, + &auth_keypair.verification_key(), + &sk_user1, + &blind_signature, + &req_info1, + ) + .unwrap(); partial_wallets1.push(partial_wallet1); } // AGGREGATE WALLET FOR USER1 - let mut wallet1 = aggregate_wallets(&grp, &verification_key, &sk_user1, &partial_wallets1).unwrap(); + let mut wallet1 = + aggregate_wallets(&grp, &verification_key, &sk_user1, &partial_wallets1).unwrap(); let pay_info1 = PayInfo { info: [67u8; 32] }; - let (payment1, new_wallet1) = wallet1.spend(¶ms, &verification_key, &sk_user1, &pay_info1, 10, false).unwrap(); + let (payment1, new_wallet1) = wallet1 + .spend(¶ms, &verification_key, &sk_user1, &pay_info1, 10, false) + .unwrap(); // let's reverse the spending counter in the wallet to create a double spending payment let current_l = wallet1.l.get(); wallet1.l.set(current_l - 7); let pay_info2 = PayInfo { info: [52u8; 32] }; - let (payment2, wallet1) = wallet1.spend(¶ms, &verification_key, &sk_user1, &pay_info2, 10, false).unwrap(); + let (payment2, wallet1) = wallet1 + .spend(¶ms, &verification_key, &sk_user1, &pay_info2, 10, false) + .unwrap(); + let identify_result = identify( + ¶ms, + &verification_key, + &public_keys, + payment1, + payment2, + pay_info1, + pay_info2, + ) + .unwrap(); - let identify_result = identify(¶ms, &verification_key, &public_keys, payment1, payment2, pay_info1, pay_info2).unwrap(); - - assert_eq!(identify_result, IdentifyResult::DoubleSpendingPublicKeys(pk_user1)); + assert_eq!( + identify_result, + IdentifyResult::DoubleSpendingPublicKeys(pk_user1) + ); } - #[test] fn ok_if_two_different_payments() { let rng = thread_rng(); @@ -335,19 +433,32 @@ mod tests { &withdrawal_req1, pk_user1.clone(), &auth_keypair.secret_key(), - ).unwrap(); - let partial_wallet1 = issue_verify(&grp, &auth_keypair.verification_key(), &sk_user1, &blind_signature, &req_info1).unwrap(); + ) + .unwrap(); + let partial_wallet1 = issue_verify( + &grp, + &auth_keypair.verification_key(), + &sk_user1, + &blind_signature, + &req_info1, + ) + .unwrap(); partial_wallets1.push(partial_wallet1); } // AGGREGATE WALLET FOR USER1 - let mut wallet1 = aggregate_wallets(&grp, &verification_key, &sk_user1, &partial_wallets1).unwrap(); + let mut wallet1 = + aggregate_wallets(&grp, &verification_key, &sk_user1, &partial_wallets1).unwrap(); let pay_info1 = PayInfo { info: [67u8; 32] }; - let (payment1, wallet1) = wallet1.spend(¶ms, &verification_key, &sk_user1, &pay_info1, 10, false).unwrap(); + let (payment1, wallet1) = wallet1 + .spend(¶ms, &verification_key, &sk_user1, &pay_info1, 10, false) + .unwrap(); // SPEND VERIFICATION for USER1 - assert!(payment1.spend_verify(¶ms, &verification_key, &pay_info1).unwrap()); + assert!(payment1 + .spend_verify(¶ms, &verification_key, &pay_info1) + .unwrap()); // WITHDRAWAL REQUEST FOR USER2 let (withdrawal_req2, req_info2) = withdrawal_request(¶ms, &sk_user2).unwrap(); @@ -360,22 +471,44 @@ mod tests { &withdrawal_req2, pk_user2.clone(), &auth_keypair.secret_key(), - ).unwrap(); - let partial_wallet2 = issue_verify(&grp, &auth_keypair.verification_key(), &sk_user2, &blind_signature, &req_info2).unwrap(); + ) + .unwrap(); + let partial_wallet2 = issue_verify( + &grp, + &auth_keypair.verification_key(), + &sk_user2, + &blind_signature, + &req_info2, + ) + .unwrap(); partial_wallets2.push(partial_wallet2); } // AGGREGATE WALLET FOR USER2 - let mut wallet2 = aggregate_wallets(&grp, &verification_key, &sk_user2, &partial_wallets2).unwrap(); + let mut wallet2 = + aggregate_wallets(&grp, &verification_key, &sk_user2, &partial_wallets2).unwrap(); let pay_info2 = PayInfo { info: [67u8; 32] }; - let (payment2, wallet2) = wallet2.spend(¶ms, &verification_key, &sk_user2, &pay_info2, 10, false).unwrap(); + let (payment2, wallet2) = wallet2 + .spend(¶ms, &verification_key, &sk_user2, &pay_info2, 10, false) + .unwrap(); // SPEND VERIFICATION for USER2 - assert!(payment2.spend_verify(¶ms, &verification_key, &pay_info2).unwrap()); + assert!(payment2 + .spend_verify(¶ms, &verification_key, &pay_info2) + .unwrap()); let public_keys = HashSet::from([pk_user1, pk_user2]); - let identify_result = identify(¶ms, &verification_key, &public_keys, payment1, payment2, pay_info1, pay_info2).unwrap(); + let identify_result = identify( + ¶ms, + &verification_key, + &public_keys, + payment1, + payment2, + pay_info1, + pay_info2, + ) + .unwrap(); assert_eq!(identify_result, IdentifyResult::NotADuplicatePayment); } -} \ No newline at end of file +} diff --git a/common/nym_offline_divisible_ecash/src/scheme/keygen.rs b/common/nym_offline_divisible_ecash/src/scheme/keygen.rs index b8500a2c8f..df42b5ff63 100644 --- a/common/nym_offline_divisible_ecash/src/scheme/keygen.rs +++ b/common/nym_offline_divisible_ecash/src/scheme/keygen.rs @@ -9,7 +9,10 @@ use group::Curve; use crate::error::{DivisibleEcashError, Result}; use crate::scheme::aggregation::aggregate_verification_keys; use crate::scheme::setup::{GroupParameters, Parameters}; -use crate::utils::{Polynomial, SignerIndex, try_deserialize_g1_projective, try_deserialize_g2_projective, try_deserialize_scalar, try_deserialize_scalar_vec}; +use crate::utils::{ + try_deserialize_g1_projective, try_deserialize_g2_projective, try_deserialize_scalar, + try_deserialize_scalar_vec, Polynomial, SignerIndex, +}; #[derive(Eq, Debug, PartialEq, Clone)] pub struct SecretKeyAuth { @@ -236,13 +239,13 @@ impl<'a> Mul for &'a VerificationKeyAuth { } impl Sum for VerificationKeyAuth - where - T: Borrow, +where + T: Borrow, { #[inline] fn sum(iter: I) -> Self - where - I: Iterator, + where + I: Iterator, { let mut peekable = iter.peekable(); let head_attributes = match peekable.peek() { @@ -319,7 +322,6 @@ pub struct KeyPairUser { public_key: PublicKeyUser, } - #[derive(Eq, PartialEq, Debug, Clone)] pub struct KeyPairAuth { secret_key: SecretKeyAuth, @@ -366,11 +368,11 @@ impl KeyPairUser { } } - pub fn ttp_keygen_authorities( params: &Parameters, threshold: u64, - num_authorities: u64) -> Result> { + num_authorities: u64, +) -> Result> { if threshold == 0 { return Err(DivisibleEcashError::Setup( "Tried to generate threshold keys with a 0 threshold value".to_string(), @@ -422,11 +424,15 @@ pub fn ttp_keygen_authorities( pub fn ttp_keygen_users(params: &Parameters) -> KeyPairUser { let grp = params.get_grp(); - let sk_user = SecretKeyUser { sk: grp.random_scalar() }; - let pk_user = PublicKeyUser { pk: grp.gen1() * sk_user.sk }; + let sk_user = SecretKeyUser { + sk: grp.random_scalar(), + }; + let pk_user = PublicKeyUser { + pk: grp.gen1() * sk_user.sk, + }; KeyPairUser { secret_key: sk_user, public_key: pk_user, } -} \ No newline at end of file +} diff --git a/common/nym_offline_divisible_ecash/src/scheme/mod.rs b/common/nym_offline_divisible_ecash/src/scheme/mod.rs index 6562bb1341..89db66066d 100644 --- a/common/nym_offline_divisible_ecash/src/scheme/mod.rs +++ b/common/nym_offline_divisible_ecash/src/scheme/mod.rs @@ -2,23 +2,26 @@ use std::cell::Cell; use std::convert::{TryFrom, TryInto}; use std::ops::Neg; -use bls12_381::{G1Projective, G2Prepared, G2Projective, pairing, Scalar}; +use bls12_381::{pairing, G1Projective, G2Prepared, G2Projective, Scalar}; use group::{Curve, GroupEncoding}; -use crate::Attribute; use crate::constants::L; use crate::error::{DivisibleEcashError, Result}; use crate::proofs::proof_spend::{SpendInstance, SpendProof, SpendWitness}; use crate::scheme::keygen::{SecretKeyUser, VerificationKeyAuth}; use crate::scheme::setup::{GroupParameters, Parameters}; -use crate::utils::{check_bilinear_pairing, hash_to_scalar, Signature, SignerIndex, try_deserialize_g1_projective, try_deserialize_scalar, try_deserialize_g2_projective}; +use crate::utils::{ + check_bilinear_pairing, hash_to_scalar, try_deserialize_g1_projective, + try_deserialize_g2_projective, try_deserialize_scalar, Signature, SignerIndex, +}; +use crate::Attribute; pub mod aggregation; +pub mod identification; pub mod keygen; pub mod setup; pub mod structure_preserving_signature; pub mod withdrawal; -pub mod identification; pub fn compute_kappa( params: &GroupParameters, @@ -29,10 +32,10 @@ pub fn compute_kappa( params.gen2() * blinding_factor + verification_key.alpha + attributes - .iter() - .zip(verification_key.beta_g2.iter()) - .map(|(priv_attr, beta_i)| beta_i * priv_attr) - .sum::() + .iter() + .zip(verification_key.beta_g2.iter()) + .map(|(priv_attr, beta_i)| beta_i * priv_attr) + .sum::() } #[derive(Eq, PartialEq, Debug, Clone, Copy)] @@ -60,13 +63,17 @@ impl Phi { let elem_0_bytes = bytes[0..48].try_into().unwrap(); let elem_0 = try_deserialize_g1_projective( elem_0_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize element 0 of Phi".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize element 0 of Phi".to_string(), + ), )?; let elem_1_bytes = bytes[48..96].try_into().unwrap(); let elem_1 = try_deserialize_g1_projective( elem_1_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize element 1 of Phi".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize element 1 of Phi".to_string(), + ), )?; Ok(Phi(elem_0, elem_1)) @@ -98,13 +105,17 @@ impl VarPhi { let elem_0_bytes = bytes[0..48].try_into().unwrap(); let elem_0 = try_deserialize_g1_projective( elem_0_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize element 0 of VarPhi".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize element 0 of VarPhi".to_string(), + ), )?; let elem_1_bytes = bytes[48..96].try_into().unwrap(); let elem_1 = try_deserialize_g1_projective( elem_1_bytes, - DivisibleEcashError::Deserialization("Failed to deserialize element 1 of VarPhi".to_string()), + DivisibleEcashError::Deserialization( + "Failed to deserialize element 1 of VarPhi".to_string(), + ), )?; Ok(VarPhi(elem_0, elem_1)) @@ -135,21 +146,49 @@ pub struct Payment { } impl Payment { - pub fn get_kappa(&self) -> G2Projective { self.kappa } - pub fn get_sig(&self) -> Signature { self.sig } - pub fn get_phi(&self) -> Phi { self.phi } - pub fn get_varphi(&self) -> VarPhi { self.varphi } - pub fn get_varsig_prime1(&self) -> G1Projective { self.varsig_prime1 } - pub fn get_varsig_prime2(&self) -> G1Projective { self.varsig_prime2 } - pub fn get_theta_prime1(&self) -> G1Projective { self.theta_prime1 } - pub fn get_theta_prime2(&self) -> G1Projective { self.theta_prime2 } - pub fn get_rr_prime(&self) -> G1Projective { self.rr_prime } - pub fn get_ss_prime(&self) -> G1Projective { self.ss_prime } - pub fn get_tt_prime(&self) -> G2Projective { self.tt_prime } - pub fn get_rr(&self) -> Scalar { self.rr } - pub fn get_zk_proof(&self) -> SpendProof { self.zk_proof.clone() } - pub fn get_vv(&self) -> u64 { self.vv } - pub fn to_bytes(&self) -> Vec{ + pub fn get_kappa(&self) -> G2Projective { + self.kappa + } + pub fn get_sig(&self) -> Signature { + self.sig + } + pub fn get_phi(&self) -> Phi { + self.phi + } + pub fn get_varphi(&self) -> VarPhi { + self.varphi + } + pub fn get_varsig_prime1(&self) -> G1Projective { + self.varsig_prime1 + } + pub fn get_varsig_prime2(&self) -> G1Projective { + self.varsig_prime2 + } + pub fn get_theta_prime1(&self) -> G1Projective { + self.theta_prime1 + } + pub fn get_theta_prime2(&self) -> G1Projective { + self.theta_prime2 + } + pub fn get_rr_prime(&self) -> G1Projective { + self.rr_prime + } + pub fn get_ss_prime(&self) -> G1Projective { + self.ss_prime + } + pub fn get_tt_prime(&self) -> G2Projective { + self.tt_prime + } + pub fn get_rr(&self) -> Scalar { + self.rr + } + pub fn get_zk_proof(&self) -> SpendProof { + self.zk_proof.clone() + } + pub fn get_vv(&self) -> u64 { + self.vv + } + pub fn to_bytes(&self) -> Vec { let kappa_bytes = self.kappa.to_affine().to_compressed(); let sig_bytes = self.sig.to_bytes(); let phi_bytes = self.phi.to_bytes(); @@ -189,96 +228,96 @@ impl TryFrom<&[u8]> for Payment { type Error = DivisibleEcashError; fn try_from(bytes: &[u8]) -> Result { - if bytes.len() < 760 { + if bytes.len() < 760 { return Err(DivisibleEcashError::Deserialization( "Invalid byte array for Payment deserialization".to_string(), )); } let mut idx = 0; - let kappa_bytes: [u8; 96] = bytes[idx..idx+96].try_into().unwrap(); + let kappa_bytes: [u8; 96] = bytes[idx..idx + 96].try_into().unwrap(); let kappa = try_deserialize_g2_projective( &kappa_bytes, DivisibleEcashError::Deserialization("Failed to deserialize kappa".to_string()), )?; idx += 96; - let sig_bytes: [u8; 96] = bytes[idx..idx+96].try_into().unwrap(); + let sig_bytes: [u8; 96] = bytes[idx..idx + 96].try_into().unwrap(); let sig = Signature::try_from(sig_bytes.as_slice())?; idx += 96; - let phi_bytes: [u8; 96] = bytes[idx..idx+96].try_into().unwrap(); + let phi_bytes: [u8; 96] = bytes[idx..idx + 96].try_into().unwrap(); let phi = Phi::from_bytes(&phi_bytes).unwrap(); idx += 96; - let varphi_bytes: [u8; 96] = bytes[idx..idx+96].try_into().unwrap(); + let varphi_bytes: [u8; 96] = bytes[idx..idx + 96].try_into().unwrap(); let varphi = VarPhi::from_bytes(&varphi_bytes).unwrap(); idx += 96; - let varsig_prime1_bytes: [u8; 48] = bytes[idx..idx+48].try_into().unwrap(); + let varsig_prime1_bytes: [u8; 48] = bytes[idx..idx + 48].try_into().unwrap(); let varsig_prime1 = try_deserialize_g1_projective( &varsig_prime1_bytes, DivisibleEcashError::Deserialization("Failed to deserialize varsig_prime1".to_string()), )?; idx += 48; - let varsig_prime2_bytes: [u8; 48] = bytes[idx..idx+48].try_into().unwrap(); + let varsig_prime2_bytes: [u8; 48] = bytes[idx..idx + 48].try_into().unwrap(); let varsig_prime2 = try_deserialize_g1_projective( &varsig_prime2_bytes, DivisibleEcashError::Deserialization("Failed to deserialize varsig_prime2".to_string()), )?; idx += 48; - let theta_prime1_bytes: [u8; 48] = bytes[idx..idx+48].try_into().unwrap(); + let theta_prime1_bytes: [u8; 48] = bytes[idx..idx + 48].try_into().unwrap(); let theta_prime1 = try_deserialize_g1_projective( &theta_prime1_bytes, DivisibleEcashError::Deserialization("Failed to deserialize theta_prime1".to_string()), )?; idx += 48; - let theta_prime2_bytes: [u8; 48] = bytes[idx..idx+48].try_into().unwrap(); + let theta_prime2_bytes: [u8; 48] = bytes[idx..idx + 48].try_into().unwrap(); let theta_prime2 = try_deserialize_g1_projective( &theta_prime2_bytes, DivisibleEcashError::Deserialization("Failed to deserialize theta_prime2".to_string()), )?; idx += 48; - let rr_prime_bytes: [u8; 48] = bytes[idx..idx+48].try_into().unwrap(); + let rr_prime_bytes: [u8; 48] = bytes[idx..idx + 48].try_into().unwrap(); let rr_prime = try_deserialize_g1_projective( &rr_prime_bytes, DivisibleEcashError::Deserialization("Failed to deserialize rr_prime".to_string()), )?; idx += 48; - let ss_prime_bytes: [u8; 48] = bytes[idx..idx+48].try_into().unwrap(); + let ss_prime_bytes: [u8; 48] = bytes[idx..idx + 48].try_into().unwrap(); let ss_prime = try_deserialize_g1_projective( &ss_prime_bytes, DivisibleEcashError::Deserialization("Failed to deserialize ss_prime".to_string()), )?; idx += 48; - let tt_prime_bytes: [u8; 96] = bytes[idx..idx+96].try_into().unwrap(); + let tt_prime_bytes: [u8; 96] = bytes[idx..idx + 96].try_into().unwrap(); let tt_prime = try_deserialize_g2_projective( &tt_prime_bytes, DivisibleEcashError::Deserialization("Failed to deserialize tt_prime".to_string()), )?; idx += 96; - let rr_bytes: [u8; 32] = bytes[idx..idx+32].try_into().unwrap(); + let rr_bytes: [u8; 32] = bytes[idx..idx + 32].try_into().unwrap(); let rr = try_deserialize_scalar( &rr_bytes, DivisibleEcashError::Deserialization("Failed to deserialize rr element".to_string()), )?; idx += 32; - let vv = u64::from_le_bytes(bytes[idx..idx+8].try_into().unwrap()); + let vv = u64::from_le_bytes(bytes[idx..idx + 8].try_into().unwrap()); idx += 8; // Deserialize the SpendProof struct let zk_proof_bytes = &bytes[idx..]; let zk_proof = SpendProof::try_from(zk_proof_bytes)?; - Ok(Payment{ + Ok(Payment { kappa, sig, phi, @@ -334,7 +373,6 @@ impl Wallet { self.l.get() } - pub fn spend( &self, params: &Parameters, @@ -358,21 +396,24 @@ impl Wallet { // construct kappa i.e., blinded attributes for show let attributes = vec![sk_user.sk, self.v()]; // compute kappa - let kappa = compute_kappa( - &grp, - &verification_key, - &attributes, - sign_blinding_factor, - ); + let kappa = compute_kappa(&grp, &verification_key, &attributes, sign_blinding_factor); let r1 = grp.random_scalar(); let r2 = grp.random_scalar(); - let phi = Phi(grp.gen1() * r1, params_u.get_ith_sigma(self.l() as usize) * self.v + params_u.get_ith_eta(vv as usize) * r1); + let phi = Phi( + grp.gen1() * r1, + params_u.get_ith_sigma(self.l() as usize) * self.v + + params_u.get_ith_eta(vv as usize) * r1, + ); // compute hash of the payment info let rr = hash_to_scalar(pay_info.info); - let varphi = VarPhi(grp.gen1() * r2, (grp.gen1() * rr) * sk_user.sk + params_u.get_ith_theta(self.l() as usize) * self.v + params_u.get_ith_eta(vv as usize) * r2); - + let varphi = VarPhi( + grp.gen1() * r2, + (grp.gen1() * rr) * sk_user.sk + + params_u.get_ith_theta(self.l() as usize) * self.v + + params_u.get_ith_eta(vv as usize) * r2, + ); // random value used to compute blinded bases let r_varsig1 = grp.random_scalar(); @@ -388,8 +429,10 @@ impl Wallet { let psi_g2 = params_u.get_psi_g2(); let varsig_prime1 = params_u.get_ith_sigma(self.l() as usize) + (psi_g1 * r_varsig1); let theta_prime1 = params_u.get_ith_theta(self.l() as usize) + (psi_g1 * r_theta1); - let varsig_prime2 = params_u.get_ith_sigma(self.l() as usize + vv as usize - 1) + (psi_g1 * r_varsig2); - let theta_prime2 = params_u.get_ith_theta(self.l() as usize + vv as usize - 1) + (psi_g1 * r_theta2); + let varsig_prime2 = + params_u.get_ith_sigma(self.l() as usize + vv as usize - 1) + (psi_g1 * r_varsig2); + let theta_prime2 = + params_u.get_ith_theta(self.l() as usize + vv as usize - 1) + (psi_g1 * r_theta2); let tau_l_vv = params_u.get_ith_sps_sign(self.l() as usize + vv as usize - 1); let rr_prime = tau_l_vv.rr + (psi_g1 * r_rr); @@ -400,11 +443,20 @@ impl Wallet { let rho2 = self.v.neg() * r_theta1; let rho3 = r_rr * r_tt; - let pg_varsigpr1_delta = pairing(&varsig_prime1.to_affine(), ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine()); - let pg_psi0_delta = pairing(&psi_g1.to_affine(), ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine()); + let pg_varsigpr1_delta = pairing( + &varsig_prime1.to_affine(), + ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine(), + ); + let pg_psi0_delta = pairing( + &psi_g1.to_affine(), + ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine(), + ); let pg_varsigpr2_gen2 = pairing(&varsig_prime2.to_affine(), grp.gen2()); let pg_psi0_gen2 = pairing(&psi_g1.to_affine(), grp.gen2()); - let pg_thetapr1_delta = pairing(&theta_prime1.to_affine(), ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine()); + let pg_thetapr1_delta = pairing( + &theta_prime1.to_affine(), + ¶ms_a.get_ith_delta((vv - 1) as usize).to_affine(), + ); let pg_thetapr2_gen2 = pairing(&theta_prime2.to_affine(), grp.gen2()); let yy = params_u.get_sps_pk().get_yy(); let pg_rrprime_yy = pairing(&rr_prime.to_affine(), &yy.to_affine()); @@ -425,7 +477,8 @@ impl Wallet { let pg_eq1 = pg_varsigpr1_delta - pg_varsigpr2_gen2; let pg_eq2 = pg_thetapr1_delta - pg_thetapr2_gen2; - let pg_eq3 = pg_rrprime_yy + pg_ssprime_gen2 + pg_varsigpr2_ww1 + pg_thetapr2_ww2 + pg_gen1_zz.neg(); + let pg_eq3 = + pg_rrprime_yy + pg_ssprime_gen2 + pg_varsigpr2_ww1 + pg_thetapr2_ww2 + pg_gen1_zz.neg(); let pg_eq4 = pg_rr_tt - pg_gen1_gen2; let instance = SpendInstance { @@ -511,7 +564,8 @@ impl Payment { &self, params: &Parameters, verification_key: &VerificationKeyAuth, - pay_info: &PayInfo) -> Result { + pay_info: &PayInfo, + ) -> Result { if bool::from(self.sig.0.is_identity()) { return Err(DivisibleEcashError::Spend( "The element h of the signature equals the identity".to_string(), @@ -549,11 +603,20 @@ impl Payment { let psi_g1 = params_u.get_psi_g1(); let psi_g2 = params_u.get_psi_g2(); - let pg_varsigpr1_delta = pairing(&self.varsig_prime1.to_affine(), ¶ms_a.get_ith_delta((self.vv - 1) as usize).to_affine()); - let pg_psi0_delta = pairing(&psi_g1.to_affine(), ¶ms_a.get_ith_delta((self.vv - 1) as usize).to_affine()); + let pg_varsigpr1_delta = pairing( + &self.varsig_prime1.to_affine(), + ¶ms_a.get_ith_delta((self.vv - 1) as usize).to_affine(), + ); + let pg_psi0_delta = pairing( + &psi_g1.to_affine(), + ¶ms_a.get_ith_delta((self.vv - 1) as usize).to_affine(), + ); let pg_varsigpr2_gen2 = pairing(&self.varsig_prime2.to_affine(), grp.gen2()); let pg_psi0_gen2 = pairing(&psi_g1.to_affine(), grp.gen2()); - let pg_thetapr1_delta = pairing(&self.theta_prime1.to_affine(), ¶ms_a.get_ith_delta((self.vv - 1) as usize).to_affine()); + let pg_thetapr1_delta = pairing( + &self.theta_prime1.to_affine(), + ¶ms_a.get_ith_delta((self.vv - 1) as usize).to_affine(), + ); let pg_thetapr2_gen2 = pairing(&self.theta_prime2.to_affine(), grp.gen2()); let yy = params_u.get_sps_pk().get_yy(); let pg_rrprime_yy = pairing(&self.rr_prime.to_affine(), &yy.to_affine()); @@ -574,7 +637,8 @@ impl Payment { let pg_eq1 = pg_varsigpr1_delta - pg_varsigpr2_gen2; let pg_eq2 = pg_thetapr1_delta - pg_thetapr2_gen2; - let pg_eq3 = pg_rrprime_yy + pg_ssprime_gen2 + pg_varsigpr2_ww1 + pg_thetapr2_ww2 + pg_gen1_zz.neg(); + let pg_eq3 = + pg_rrprime_yy + pg_ssprime_gen2 + pg_varsigpr2_ww1 + pg_thetapr2_ww2 + pg_gen1_zz.neg(); let pg_eq4 = pg_rr_tt - pg_gen1_gen2; let instance = SpendInstance { @@ -603,7 +667,9 @@ impl Payment { pg_psi0_psi1, }; - Ok(self.zk_proof.verify(¶ms, &instance, &verification_key, self.vv)) + Ok(self + .zk_proof + .verify(¶ms, &instance, &verification_key, self.vv)) } } @@ -613,10 +679,10 @@ mod tests { use rand::thread_rng; - use crate::scheme::{PayInfo, Phi, VarPhi, Wallet}; use crate::scheme::aggregation::aggregate_verification_keys; - use crate::scheme::keygen::{PublicKeyUser, ttp_keygen_authorities, VerificationKeyAuth}; + use crate::scheme::keygen::{ttp_keygen_authorities, PublicKeyUser, VerificationKeyAuth}; use crate::scheme::setup::{GroupParameters, Parameters}; + use crate::scheme::{PayInfo, Phi, VarPhi, Wallet}; use crate::utils::hash_g1; #[test] @@ -629,7 +695,10 @@ mod tests { #[test] fn varphi_to_and_from_bytes() { - let varphi = VarPhi(hash_g1("Element 0 of VarPhi"), hash_g1("Element 1 of VarPhi")); + let varphi = VarPhi( + hash_g1("Element 0 of VarPhi"), + hash_g1("Element 1 of VarPhi"), + ); let varphi_bytes = varphi.to_bytes(); let varphi_from_bytes = VarPhi::from_bytes(&varphi_bytes).unwrap(); assert_eq!(varphi, varphi_from_bytes); @@ -657,4 +726,4 @@ mod tests { let verification_key = aggregate_verification_keys(&verification_keys_auth, Some(&[1, 2, 3])).unwrap(); } -} \ No newline at end of file +} diff --git a/common/nym_offline_divisible_ecash/src/scheme/setup.rs b/common/nym_offline_divisible_ecash/src/scheme/setup.rs index dcda367cc7..2900fb5a77 100644 --- a/common/nym_offline_divisible_ecash/src/scheme/setup.rs +++ b/common/nym_offline_divisible_ecash/src/scheme/setup.rs @@ -1,7 +1,7 @@ use std::convert::TryFrom; use std::net::ToSocketAddrs; -use bls12_381::{G1Affine, G1Projective, G2Affine, G2Prepared, G2Projective, pairing, Scalar}; +use bls12_381::{pairing, G1Affine, G1Projective, G2Affine, G2Prepared, G2Projective, Scalar}; use ff::Field; use group::Curve; use rand::thread_rng; @@ -21,7 +21,6 @@ pub struct GroupParameters { _g2_prepared_miller: G2Prepared, } - impl GroupParameters { pub fn new() -> Result { Ok(GroupParameters { @@ -64,11 +63,17 @@ pub struct Parameters { } impl Parameters { - pub(crate) fn get_grp(&self) -> &GroupParameters { &self.grp } + pub(crate) fn get_grp(&self) -> &GroupParameters { + &self.grp + } - pub(crate) fn get_params_u(&self) -> &ParametersUser { &self.params_u } + pub(crate) fn get_params_u(&self) -> &ParametersUser { + &self.params_u + } - pub(crate) fn get_params_a(&self) -> &ParametersAuthority { &self.params_a } + pub(crate) fn get_params_a(&self) -> &ParametersAuthority { + &self.params_a + } pub fn new(grp: GroupParameters) -> Parameters { let g1 = grp.gen1(); @@ -116,10 +121,13 @@ impl Parameters { let sps_signatures: Vec = sigmas_u .iter() .zip(thetas_u.iter()) - .map(|(sigma, theta)| sps_keypair.sps_sk.sign(&grp, Some(&vec![*sigma, *theta]), None)) + .map(|(sigma, theta)| { + sps_keypair + .sps_sk + .sign(&grp, Some(&vec![*sigma, *theta]), None) + }) .collect(); - // Compute signature for each pair sigma, theta let params_u = ParametersUser { gammas: vec![gamma1, gamma2], @@ -149,7 +157,9 @@ impl Parameters { } impl Parameters { - pub(crate) fn get_sigma(&self) -> &G1Projective { &self.tmp_sigma } + pub(crate) fn get_sigma(&self) -> &G1Projective { + &self.tmp_sigma + } } #[derive(Debug, Clone)] @@ -166,31 +176,57 @@ pub struct ParametersUser { } impl ParametersUser { - pub(crate) fn get_gammas(&self) -> &Vec { &self.gammas } + pub(crate) fn get_gammas(&self) -> &Vec { + &self.gammas + } - pub(crate) fn get_psi_g1(&self) -> &G1Projective { &self.psi_g1 } + pub(crate) fn get_psi_g1(&self) -> &G1Projective { + &self.psi_g1 + } - pub(crate) fn get_psi_g2(&self) -> &G2Projective { &self.psi_g2 } + pub(crate) fn get_psi_g2(&self) -> &G2Projective { + &self.psi_g2 + } - pub(crate) fn get_eta(&self) -> &G1Projective { &self.eta } + pub(crate) fn get_eta(&self) -> &G1Projective { + &self.eta + } - pub(crate) fn get_etas(&self) -> &[G1Projective] { &self.etas } + pub(crate) fn get_etas(&self) -> &[G1Projective] { + &self.etas + } - pub(crate) fn get_ith_eta(&self, idx: usize) -> &G1Projective { self.etas.get(idx - 1).unwrap() } + pub(crate) fn get_ith_eta(&self, idx: usize) -> &G1Projective { + self.etas.get(idx - 1).unwrap() + } - pub(crate) fn get_sigmas(&self) -> &[G1Projective] { &self.sigmas } + pub(crate) fn get_sigmas(&self) -> &[G1Projective] { + &self.sigmas + } - pub(crate) fn get_ith_sigma(&self, idx: usize) -> &G1Projective { self.sigmas.get(idx - 1).unwrap() } + pub(crate) fn get_ith_sigma(&self, idx: usize) -> &G1Projective { + self.sigmas.get(idx - 1).unwrap() + } - pub(crate) fn get_thetas(&self) -> &[G1Projective] { &self.thetas } + pub(crate) fn get_thetas(&self) -> &[G1Projective] { + &self.thetas + } - pub(crate) fn get_ith_theta(&self, idx: usize) -> &G1Projective { self.thetas.get(idx - 1).unwrap() } + pub(crate) fn get_ith_theta(&self, idx: usize) -> &G1Projective { + self.thetas.get(idx - 1).unwrap() + } - pub(crate) fn get_sps_signs(&self) -> &[SPSSignature] { &self.sps_signatures } + pub(crate) fn get_sps_signs(&self) -> &[SPSSignature] { + &self.sps_signatures + } - pub(crate) fn get_ith_sps_sign(&self, idx: usize) -> &SPSSignature { &self.sps_signatures.get(idx - 1).unwrap() } + pub(crate) fn get_ith_sps_sign(&self, idx: usize) -> &SPSSignature { + &self.sps_signatures.get(idx - 1).unwrap() + } - pub(crate) fn get_sps_pk(&self) -> &SPSVerificationKey { &self.sps_pk } + pub(crate) fn get_sps_pk(&self) -> &SPSVerificationKey { + &self.sps_pk + } } #[derive(Debug, Clone)] @@ -200,13 +236,23 @@ pub struct ParametersAuthority { } impl ParametersAuthority { - pub(crate) fn get_deltas(&self) -> &[G2Projective] { &self.deltas } + pub(crate) fn get_deltas(&self) -> &[G2Projective] { + &self.deltas + } - pub(crate) fn get_ith_delta(&self, idx: usize) -> &G2Projective { self.deltas.get(idx).unwrap() } + pub(crate) fn get_ith_delta(&self, idx: usize) -> &G2Projective { + self.deltas.get(idx).unwrap() + } - pub(crate) fn get_etas(&self) -> &Vec> { &self.etas } + pub(crate) fn get_etas(&self) -> &Vec> { + &self.etas + } - pub(crate) fn get_eta_ith_row(&self, idx: usize) -> &[G2Projective] { self.etas.get(idx).unwrap() } + pub(crate) fn get_eta_ith_row(&self, idx: usize) -> &[G2Projective] { + self.etas.get(idx).unwrap() + } - pub(crate) fn get_etas_ith_jth_elem(&self, row: usize, column: usize) -> &G2Projective { self.etas.get(row - 1).unwrap().get(column).unwrap() } + pub(crate) fn get_etas_ith_jth_elem(&self, row: usize, column: usize) -> &G2Projective { + self.etas.get(row - 1).unwrap().get(column).unwrap() + } } diff --git a/common/nym_offline_divisible_ecash/src/scheme/structure_preserving_signature.rs b/common/nym_offline_divisible_ecash/src/scheme/structure_preserving_signature.rs index 1bfc15f4f1..278f74e523 100644 --- a/common/nym_offline_divisible_ecash/src/scheme/structure_preserving_signature.rs +++ b/common/nym_offline_divisible_ecash/src/scheme/structure_preserving_signature.rs @@ -1,7 +1,7 @@ use std::fmt::Debug; use std::ops::Neg; -use bls12_381::{G1Projective, G2Projective, Gt, pairing, Scalar}; +use bls12_381::{pairing, G1Projective, G2Projective, Gt, Scalar}; use group::Curve; use crate::scheme::setup::GroupParameters; @@ -32,7 +32,12 @@ impl SPSSecretKey { self.y } - pub fn sign(&self, grp: &GroupParameters, messages_a: Option<&[G1Projective]>, messages_b: Option<&[G2Projective]>) -> SPSSignature { + pub fn sign( + &self, + grp: &GroupParameters, + messages_a: Option<&[G1Projective]>, + messages_b: Option<&[G2Projective]>, + ) -> SPSSignature { let r = grp.random_scalar(); let rr = grp.gen1() * r; let ss: G1Projective = match messages_a { @@ -42,9 +47,12 @@ impl SPSSecretKey { .zip(self.ws.iter()) .map(|(m_i, w_i)| m_i * w_i.neg()) .collect(); - grp.gen1() * (self.z() - r * self.y()) + prod_s.iter().fold(G1Projective::identity(), |acc, elem| acc + elem) + grp.gen1() * (self.z() - r * self.y()) + + prod_s + .iter() + .fold(G1Projective::identity(), |acc, elem| acc + elem) } - None => grp.gen1() * (self.z() - r * self.y()) + None => grp.gen1() * (self.z() - r * self.y()), }; let tt = match messages_b { Some(msgs_b) => { @@ -53,26 +61,32 @@ impl SPSSecretKey { .zip(self.us.iter()) .map(|(m_i, u_i)| m_i * u_i.neg()) .collect(); - (grp.gen2() + prod_t.iter().fold(G2Projective::identity(), |acc, elem| acc + elem)) * r.invert().unwrap() + (grp.gen2() + + prod_t + .iter() + .fold(G2Projective::identity(), |acc, elem| acc + elem)) + * r.invert().unwrap() } - None => grp.gen2() * r.invert().unwrap() + None => grp.gen2() * r.invert().unwrap(), }; - SPSSignature - { - rr, - ss, - tt, - } + SPSSignature { rr, ss, tt } } } impl SPSVerificationKey { - pub fn verify(&self, grp: &GroupParameters, signature: SPSSignature, messages_a: &[G1Projective], messages_b: Option<&[G2Projective]>) -> bool { + pub fn verify( + &self, + grp: &GroupParameters, + signature: SPSSignature, + messages_a: &[G1Projective], + messages_b: Option<&[G2Projective]>, + ) -> bool { let pg_rr_yy = pairing(&signature.rr.to_affine(), &self.yy.to_affine()); let pg_ss_g2 = pairing(&signature.ss.to_affine(), grp.gen2()); let pg_g1_zz = pairing(grp.gen1(), &self.zz.to_affine()); - let pg_ma_ww: Vec = messages_a.iter() + let pg_ma_ww: Vec = messages_a + .iter() .zip(self.wws.iter()) .map(|(ma, ww)| pairing(&ma.to_affine(), &ww.to_affine())) .collect(); @@ -90,7 +104,9 @@ impl SPSVerificationKey { Some(msgs_b) => { let pg_rr_tt = pairing(&signature.rr.to_affine(), &signature.tt.to_affine()); let pg_g1_g2 = pairing(grp.gen1(), grp.gen2()); - let pg_uu_mb: Vec = self.uus.iter() + let pg_uu_mb: Vec = self + .uus + .iter() .zip(msgs_b.iter()) .map(|(uu, mb)| pairing(&uu.to_affine(), &mb.to_affine())) .collect(); @@ -110,7 +126,8 @@ impl SPSVerificationKey { None => { let pg_sign_rr_yy = pairing(&signature.rr.to_affine(), &self.yy.to_affine()); let pg_sign_ss_gen2 = pairing(&signature.ss.to_affine(), &grp.gen2()); - let pg_ma_wws: Vec = messages_a.iter() + let pg_ma_wws: Vec = messages_a + .iter() .zip(self.wws.iter()) .map(|(ma, ww)| pairing(&ma.to_affine(), &ww.to_affine())) .collect(); @@ -128,7 +145,9 @@ impl SPSVerificationKey { assert_eq!(pg_sign_rr_yy + pg_sign_ss_gen2 + prod_pg_ma_wws, pg_gen1_zz); assert_eq!(pg_rr_tt, pg_gen1_gen2); - if pg_sign_rr_yy + pg_sign_ss_gen2 + prod_pg_ma_wws == pg_gen1_zz && pg_rr_tt == pg_gen1_gen2 { + if pg_sign_rr_yy + pg_sign_ss_gen2 + prod_pg_ma_wws == pg_gen1_zz + && pg_rr_tt == pg_gen1_gen2 + { true } else { false @@ -139,11 +158,17 @@ impl SPSVerificationKey { return result; } - pub fn get_ith_ww(&self, idx: usize) -> &G2Projective { return self.wws.get(idx).unwrap(); } + pub fn get_ith_ww(&self, idx: usize) -> &G2Projective { + return self.wws.get(idx).unwrap(); + } - pub fn get_zz(&self) -> &G2Projective { return &self.zz; } + pub fn get_zz(&self) -> &G2Projective { + return &self.zz; + } - pub fn get_yy(&self) -> &G2Projective { return &self.yy; } + pub fn get_yy(&self) -> &G2Projective { + return &self.yy; + } } pub struct SPSKeyPair { @@ -187,7 +212,6 @@ pub struct SPSSignature { pub tt: G2Projective, } - #[cfg(test)] mod tests { use rand::thread_rng; @@ -204,7 +228,9 @@ mod tests { let msgs_a = vec![hash_g1("messageA1"), hash_g1("messageA2")]; let msgs_b = vec![hash_g2("messageB1"), hash_g2("messageB2")]; let signature = sps_keypair.sps_sk.sign(&grp, Some(&msgs_a), Some(&msgs_b)); - assert!(sps_keypair.sps_vk.verify(&grp, signature, &msgs_a, Some(&msgs_b))); + assert!(sps_keypair + .sps_vk + .verify(&grp, signature, &msgs_a, Some(&msgs_b))); } #[test] @@ -216,4 +242,4 @@ mod tests { let signature = sps_keypair.sps_sk.sign(&grp, Some(&msgs_a), None); assert!(sps_keypair.sps_vk.verify(&grp, signature, &msgs_a, None)); } -} \ No newline at end of file +} diff --git a/common/nym_offline_divisible_ecash/src/scheme/withdrawal.rs b/common/nym_offline_divisible_ecash/src/scheme/withdrawal.rs index 42db53a22d..f38b80fa20 100644 --- a/common/nym_offline_divisible_ecash/src/scheme/withdrawal.rs +++ b/common/nym_offline_divisible_ecash/src/scheme/withdrawal.rs @@ -2,11 +2,13 @@ use bls12_381::{G1Projective, G2Prepared, G2Projective, Scalar}; use group::{Curve, GroupEncoding}; use crate::error::{DivisibleEcashError, Result}; -use crate::proofs::proof_withdrawal::{WithdrawalReqInstance, WithdrawalReqProof, WithdrawalReqWitness}; +use crate::proofs::proof_withdrawal::{ + WithdrawalReqInstance, WithdrawalReqProof, WithdrawalReqWitness, +}; use crate::scheme::keygen::{PublicKeyUser, SecretKeyAuth, SecretKeyUser, VerificationKeyAuth}; -use crate::scheme::PartialWallet; use crate::scheme::setup::{GroupParameters, Parameters}; -use crate::utils::{BlindedSignature, check_bilinear_pairing, hash_g1, Signature}; +use crate::scheme::PartialWallet; +use crate::utils::{check_bilinear_pairing, hash_g1, BlindedSignature, Signature}; pub struct WithdrawalRequest { com_hash: G1Projective, @@ -21,7 +23,10 @@ pub struct RequestInfo { v: Scalar, } -pub fn withdrawal_request(params: &Parameters, sk_user: &SecretKeyUser) -> Result<(WithdrawalRequest, RequestInfo)> { +pub fn withdrawal_request( + params: &Parameters, + sk_user: &SecretKeyUser, +) -> Result<(WithdrawalRequest, RequestInfo)> { let grp = params.get_grp(); let g1 = grp.gen1(); let params_u = params.get_params_u(); @@ -30,10 +35,10 @@ pub fn withdrawal_request(params: &Parameters, sk_user: &SecretKeyUser) -> Resul let com_opening = grp.random_scalar(); let commitment = g1 * com_opening + attributes - .iter() - .zip(params_u.get_gammas()) - .map(|(&m, gamma)| gamma * m) - .sum::(); + .iter() + .zip(params_u.get_gammas()) + .map(|(&m, gamma)| gamma * m) + .sum::(); // Value h in the paper let com_hash = hash_g1(commitment.to_bytes()); @@ -45,7 +50,6 @@ pub fn withdrawal_request(params: &Parameters, sk_user: &SecretKeyUser) -> Resul .map(|(o_j, m_j)| g1 * o_j + com_hash * m_j) .collect::>(); - // construct a zk proof of knowledge proving possession of m1, m2, o, o1, o2 let instance = WithdrawalReqInstance { com: commitment, @@ -78,7 +82,12 @@ pub fn withdrawal_request(params: &Parameters, sk_user: &SecretKeyUser) -> Resul Ok((req, req_info)) } -pub fn issue(params: &Parameters, req: &WithdrawalRequest, pk_u: PublicKeyUser, sk_a: &SecretKeyAuth) -> Result { +pub fn issue( + params: &Parameters, + req: &WithdrawalRequest, + pk_u: PublicKeyUser, + sk_a: &SecretKeyAuth, +) -> Result { let h = hash_g1(req.com.to_bytes()); if !(h == req.com_hash) { return Err(DivisibleEcashError::WithdrawalRequestVerification( @@ -115,8 +124,8 @@ pub fn issue_verify( vk_auth: &VerificationKeyAuth, sk_user: &SecretKeyUser, blind_signature: &BlindedSignature, - req_info: &RequestInfo) -> Result { - + req_info: &RequestInfo, +) -> Result { // Parse the blinded signature let h = blind_signature.0; let c = blind_signature.1; @@ -163,4 +172,4 @@ pub fn issue_verify( v: req_info.v, idx: None, }) -} \ No newline at end of file +} diff --git a/common/nym_offline_divisible_ecash/src/tests/e2e.rs b/common/nym_offline_divisible_ecash/src/tests/e2e.rs index 65d14e86fe..98372d2f4b 100644 --- a/common/nym_offline_divisible_ecash/src/tests/e2e.rs +++ b/common/nym_offline_divisible_ecash/src/tests/e2e.rs @@ -1,12 +1,16 @@ use rand::thread_rng; use crate::error::DivisibleEcashError; -use crate::scheme::{PayInfo, Payment}; -use crate::scheme::aggregation::{aggregate_signatures, aggregate_verification_keys, aggregate_wallets}; +use crate::scheme::aggregation::{ + aggregate_signatures, aggregate_verification_keys, aggregate_wallets, +}; use crate::scheme::identification::identify; -use crate::scheme::keygen::{PublicKeyUser, SecretKeyUser, ttp_keygen_authorities, VerificationKeyAuth}; +use crate::scheme::keygen::{ + ttp_keygen_authorities, PublicKeyUser, SecretKeyUser, VerificationKeyAuth, +}; use crate::scheme::setup::{GroupParameters, Parameters}; use crate::scheme::withdrawal::{issue, issue_verify, withdrawal_request}; +use crate::scheme::{PayInfo, Payment}; #[test] // Test wa full end to end flow of withdrawal request, issuance, @@ -43,7 +47,13 @@ fn main() -> Result<(), DivisibleEcashError> { pk_user.clone(), &auth_keypair.secret_key(), )?; - let partial_wallet = issue_verify(&grp, &auth_keypair.verification_key(), &sk_user, &blind_signature, &req_info)?; + let partial_wallet = issue_verify( + &grp, + &auth_keypair.verification_key(), + &sk_user, + &blind_signature, + &req_info, + )?; partial_wallets.push(partial_wallet); } @@ -51,10 +61,13 @@ fn main() -> Result<(), DivisibleEcashError> { let mut wallet = aggregate_wallets(&grp, &verification_key, &sk_user, &partial_wallets)?; let pay_info = PayInfo { info: [67u8; 32] }; - let (payment, wallet) = wallet.spend(¶ms, &verification_key, &sk_user, &pay_info, 10, false)?; + let (payment, wallet) = + wallet.spend(¶ms, &verification_key, &sk_user, &pay_info, 10, false)?; - // SPEND VERIFICATION - assert!(payment.spend_verify(¶ms, &verification_key, &pay_info).unwrap()); + // SPEND VERIFICATION + assert!(payment + .spend_verify(¶ms, &verification_key, &pay_info) + .unwrap()); let payment_bytes = payment.to_bytes(); let payment2 = Payment::try_from(&payment_bytes[..]).unwrap(); assert_eq!(payment, payment2); diff --git a/common/nym_offline_divisible_ecash/src/utils.rs b/common/nym_offline_divisible_ecash/src/utils.rs index 622de7eb53..efa854e6c7 100644 --- a/common/nym_offline_divisible_ecash/src/utils.rs +++ b/common/nym_offline_divisible_ecash/src/utils.rs @@ -6,10 +6,10 @@ use core::ops::Mul; use std::convert::{TryFrom, TryInto}; use std::ops::Neg; -use bls12_381::{ - G1Affine, G1Projective, G2Affine, G2Prepared, G2Projective, multi_miller_loop, Scalar, -}; use bls12_381::hash_to_curve::{ExpandMsgXmd, HashToCurve, HashToField}; +use bls12_381::{ + multi_miller_loop, G1Affine, G1Projective, G2Affine, G2Prepared, G2Projective, Scalar, +}; use ff::Field; use group::{Curve, Group}; @@ -85,9 +85,9 @@ pub(crate) fn perform_lagrangian_interpolation_at_origin( points: &[SignerIndex], values: &[T], ) -> Result - where - T: Sum, - for<'a> &'a T: Mul, +where + T: Sum, + for<'a> &'a T: Mul, { if points.is_empty() || values.is_empty() { return Err(DivisibleEcashError::Interpolation( diff --git a/common/nym_online_divisible_ecash/Cargo.toml b/common/nym_online_divisible_ecash/Cargo.toml index d3a6ec3c26..f250a74343 100644 --- a/common/nym_online_divisible_ecash/Cargo.toml +++ b/common/nym_online_divisible_ecash/Cargo.toml @@ -9,22 +9,15 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -bls12_381 = { version = "0.5", default-features = false, features = ["pairings", "alloc", "experimental"] } -itertools = "0.10" -digest = "0.9" -rand = "0.8" -thiserror = "1.0" -sha2 = "0.9" +bls12_381 = { workspace = true } bs58 = "0.4.0" +digest = "0.9" +ff = { workspace = true } +group = { workspace = true } +itertools = "0.10" +rand = "0.8" +sha2 = "0.9" +thiserror = "1.0" [dev-dependencies] criterion = { version = "0.3", features = ["html_reports"] } - -[dependencies.ff] -version = "0.10" -default-features = false - -[dependencies.group] -version = "0.10" -default-features = false - diff --git a/common/nym_online_divisible_ecash/src/error.rs b/common/nym_online_divisible_ecash/src/error.rs index e69de29bb2..8b13789179 100644 --- a/common/nym_online_divisible_ecash/src/error.rs +++ b/common/nym_online_divisible_ecash/src/error.rs @@ -0,0 +1 @@ + diff --git a/common/nym_online_divisible_ecash/src/lib.rs b/common/nym_online_divisible_ecash/src/lib.rs index d9ec118e83..b5c5e88001 100644 --- a/common/nym_online_divisible_ecash/src/lib.rs +++ b/common/nym_online_divisible_ecash/src/lib.rs @@ -1,4 +1,3 @@ mod error; -mod scheme; mod traits; mod utils; diff --git a/common/nym_online_divisible_ecash/src/scheme/keygen.rs b/common/nym_online_divisible_ecash/src/scheme/keygen.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/common/nym_online_divisible_ecash/src/scheme/setup.rs b/common/nym_online_divisible_ecash/src/scheme/setup.rs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/common/nym_online_divisible_ecash/src/traits.rs b/common/nym_online_divisible_ecash/src/traits.rs index e69de29bb2..8b13789179 100644 --- a/common/nym_online_divisible_ecash/src/traits.rs +++ b/common/nym_online_divisible_ecash/src/traits.rs @@ -0,0 +1 @@ + diff --git a/common/nym_online_divisible_ecash/src/utils.rs b/common/nym_online_divisible_ecash/src/utils.rs index e69de29bb2..8b13789179 100644 --- a/common/nym_online_divisible_ecash/src/utils.rs +++ b/common/nym_online_divisible_ecash/src/utils.rs @@ -0,0 +1 @@ + diff --git a/common/nymcoconut/benches/benchmarks.rs b/common/nymcoconut/benches/benchmarks.rs index e53c8f378f..1354a5ebbf 100644 --- a/common/nymcoconut/benches/benchmarks.rs +++ b/common/nymcoconut/benches/benchmarks.rs @@ -15,16 +15,10 @@ use rand::seq::SliceRandom; use std::ops::Neg; use std::time::Duration; -use bls12_381::{G1Affine, G1Projective, G2Affine, G2Prepared, multi_miller_loop, Scalar}; -use criterion::{Criterion, criterion_group, criterion_main}; -use ff::Field; -use group::{Curve, Group}; -use rand::seq::SliceRandom; - use nymcoconut::{ - aggregate_signature_shares, aggregate_verification_keys, Attribute, blind_sign, - BlindedSignature, elgamal_keygen, Parameters, prepare_blind_sign, prove_bandwidth_credential, - setup, Signature, SignatureShare, ttp_keygen, VerificationKey, verify_credential, + aggregate_signature_shares, aggregate_verification_keys, blind_sign, elgamal_keygen, + prepare_blind_sign, prove_bandwidth_credential, setup, ttp_keygen, verify_credential, + Attribute, BlindedSignature, Parameters, Signature, SignatureShare, VerificationKey, }; #[allow(unused)] @@ -151,7 +145,7 @@ fn unblind_and_aggregate( &attributes, &unblinded_signature_shares, ) - .unwrap() + .unwrap() } struct BenchCase { @@ -229,7 +223,7 @@ fn bench_coconut(c: &mut Criterion) { &blind_sign_request, &public_attributes, ) - .unwrap() + .unwrap() }) }, ); @@ -244,7 +238,7 @@ fn bench_coconut(c: &mut Criterion) { &blind_sign_request, &public_attributes, ) - .unwrap(); + .unwrap(); blinded_signatures.push(blinded_signature) } @@ -325,7 +319,7 @@ fn bench_coconut(c: &mut Criterion) { serial_number, binding_number, ) - .unwrap(); + .unwrap(); // CLIENT BENCHMARK group.bench_function( @@ -344,7 +338,7 @@ fn bench_coconut(c: &mut Criterion) { serial_number, binding_number, ) - .unwrap() + .unwrap() }) }, ); diff --git a/gateway/src/config/old_config_v1_1_31.rs b/gateway/src/config/old_config_v1_1_31.rs index 18841a4993..7eea8889ff 100644 --- a/gateway/src/config/old_config_v1_1_31.rs +++ b/gateway/src/config/old_config_v1_1_31.rs @@ -123,6 +123,7 @@ impl From for Config { nym_api_urls: value.gateway.nym_api_urls, nyxd_urls: value.gateway.nyxd_urls, cosmos_mnemonic: value.gateway.cosmos_mnemonic, + offline_credential_verification: false, }, wireguard: nym_node::config::Wireguard { enabled: value.wireguard.enabled, @@ -216,6 +217,7 @@ pub struct GatewayV1_1_31 { // #[deprecated(note = "move to storage")] // TODO: I don't think this should be stored directly in the config... pub cosmos_mnemonic: bip39::Mnemonic, + pub offline_credential_verification: bool, } #[derive(Debug, Deserialize, PartialEq, Serialize)] diff --git a/gateway/src/node/client_handling/websocket/connection_handler/coconut.rs b/gateway/src/node/client_handling/websocket/connection_handler/coconut.rs index da7851cb2e..797e863dc6 100644 --- a/gateway/src/node/client_handling/websocket/connection_handler/coconut.rs +++ b/gateway/src/node/client_handling/websocket/connection_handler/coconut.rs @@ -201,12 +201,6 @@ impl EcashVerifier { api_clients: Vec, credential: EcashCredential, ) -> Result<(), RequestHandlingError> { - let req = nym_api_requests::coconut::VerifyCredentialBody::new( - credential.clone(), - proposal_id, - self.nyxd_client.address(), - ); - for client in api_clients { self.cred_sender .unbounded_send(PendingCredential { diff --git a/gateway/src/node/mod.rs b/gateway/src/node/mod.rs index b98444c3e9..706ed7e609 100644 --- a/gateway/src/node/mod.rs +++ b/gateway/src/node/mod.rs @@ -467,14 +467,14 @@ impl Gateway { let ecash_verifier = { let nyxd_client = self.random_nyxd_client()?; let ecash_params = self.get_ecash_parameters().await?; - EcashVerifier::new( + Arc::new(EcashVerifier::new( nyxd_client, ecash_params, self.identity_keypair.public_key().to_bytes(), shutdown.subscribe().named("EcashVerifier"), self.storage.clone(), self.config.gateway.offline_credential_verification, - ) + )) }; let mix_forwarding_channel = @@ -504,7 +504,7 @@ impl Gateway { mix_forwarding_channel.clone(), active_clients_store.clone(), shutdown.subscribe().named("websocket::Listener"), - Arc::new(coconut_verifier), + Arc::clone(&ecash_verifier), ); let nr_request_filter = if self.config.network_requester.enabled { @@ -527,7 +527,7 @@ impl Gateway { if self.config.ip_packet_router.enabled { let embedded_ip_sp = self .start_ip_packet_router( - mix_forwarding_channel, + mix_forwarding_channel.clone(), shutdown.subscribe().named("ip_service_provider"), ) .await?; @@ -548,7 +548,7 @@ impl Gateway { mix_forwarding_channel, active_clients_store, shutdown.subscribe().named("websocket::Listener"), - Arc::new(ecash_verifier), + Arc::clone(&ecash_verifier), ); // Once this is a bit more mature, make this a commandline flag instead of a compile time diff --git a/gateway/src/node/storage/error.rs b/gateway/src/node/storage/error.rs index 81c7606f14..cc053e94f8 100644 --- a/gateway/src/node/storage/error.rs +++ b/gateway/src/node/storage/error.rs @@ -6,11 +6,11 @@ use thiserror::Error; #[derive(Error, Debug)] pub(crate) enum StorageError { #[error("Database experienced an internal error: {0}")] - InternalDatabaseError(#[from] sqlx::Error), + InternalDatabase(#[from] sqlx::Error), #[error("Failed to perform database migration: {0}")] - MigrationError(#[from] sqlx::migrate::MigrateError), + Migration(#[from] sqlx::migrate::MigrateError), #[error("Somehow stored data is incorrect: {0}")] - DataCorruptionError(String), + DataCorruption(String), } diff --git a/gateway/src/node/storage/mod.rs b/gateway/src/node/storage/mod.rs index 168e0da1da..20c5db3bdf 100644 --- a/gateway/src/node/storage/mod.rs +++ b/gateway/src/node/storage/mod.rs @@ -384,17 +384,16 @@ impl Storage for PersistentStorage { .into_iter() .map(|stored_pending| { let credential = EcashCredential::try_from_bs58(stored_pending.credential) - .map_err(|err| StorageError::DataCorruptionError(err.to_string()))?; + .map_err(|err| StorageError::DataCorruption(err.to_string()))?; Ok(( stored_pending.id, PendingCredential { credential, address: AccountId::from_str(&stored_pending.address) - .map_err(|err| StorageError::DataCorruptionError(err.to_string()))?, + .map_err(|err| StorageError::DataCorruption(err.to_string()))?, client: NymApiClient::new( - Url::from_str(&stored_pending.api_url).map_err(|err| { - StorageError::DataCorruptionError(err.to_string()) - })?, + Url::from_str(&stored_pending.api_url) + .map_err(|err| StorageError::DataCorruption(err.to_string()))?, ), }, ))