From bf13092bc13700e20257555c271094d3e4e07f1e Mon Sep 17 00:00:00 2001 From: tuxmain <tuxmain@zettascript.org> Date: Sat, 25 Jun 2022 11:41:22 +0200 Subject: [PATCH] feat: transfer & oneshot --- Cargo.lock | 844 +++++++++++++++++++-------------------------- Cargo.toml | 6 +- res/metadata.scale | Bin 115699 -> 125644 bytes src/main.rs | 189 +++++++++- 4 files changed, 526 insertions(+), 513 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2953513..c808f60 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,7 +33,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.7", "once_cell", "version_check", ] @@ -47,6 +47,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "android_system_properties" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" +dependencies = [ + "libc", +] + [[package]] name = "ansi_term" version = "0.12.1" @@ -58,9 +67,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.57" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" +checksum = "c794e162a5eff65c72ef524dfe393eb923c354e350bb78b9c7383df13f3bc142" [[package]] name = "arrayref" @@ -89,11 +98,20 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +[[package]] +name = "async-lock" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +dependencies = [ + "event-listener", +] + [[package]] name = "async-trait" -version = "0.1.53" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" dependencies = [ "proc-macro2", "quote", @@ -119,9 +137,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.65" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" dependencies = [ "addr2line", "cc", @@ -161,9 +179,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitvec" -version = "0.20.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", @@ -171,6 +189,15 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake2" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" +dependencies = [ + "digest 0.10.3", +] + [[package]] name = "blake2-rfc" version = "0.2.18" @@ -199,7 +226,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", ] [[package]] @@ -208,7 +235,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", ] [[package]] @@ -222,9 +249,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.9.1" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" [[package]] name = "byte-slice-cast" @@ -246,9 +273,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" [[package]] name = "cc" @@ -262,36 +289,32 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "chameleon" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bd83544cd11113170ce1eee45383928f3f720bc8b305af18c2a3da3547e1ae" - [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "3f725f340c3854e3cb3ab736dc21f0cca183303acea3b3ffec30f141503ac8eb" dependencies = [ - "libc", + "iana-time-zone", + "js-sys", "num-integer", "num-traits", + "wasm-bindgen", "winapi", ] [[package]] name = "clap" -version = "3.1.18" +version = "3.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b" +checksum = "a3dbbb6653e7c55cc8595ad3e1f7be8f32aba4eb7ff7f0fd1163d4f3d137c0a9" dependencies = [ "atty", "bitflags", "clap_derive", "clap_lex", "indexmap", - "lazy_static", + "once_cell", "strsim", "termcolor", "textwrap", @@ -299,11 +322,11 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.1.18" +version = "3.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c" +checksum = "9ba52acd3b0a5c33aeada5cdaa3267cdc7c594a98731d4268cdc1532f4264cb4" dependencies = [ - "heck 0.4.0", + "heck", "proc-macro-error", "proc-macro2", "quote", @@ -312,9 +335,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.2.0" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" dependencies = [ "os_str_bytes", ] @@ -358,11 +381,11 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-common" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", "typenum", ] @@ -372,7 +395,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", "subtle", ] @@ -382,7 +405,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", "subtle", ] @@ -414,9 +437,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.13.4" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02" dependencies = [ "darling_core", "darling_macro", @@ -424,9 +447,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.13.4" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f" dependencies = [ "fnv", "ident_case", @@ -438,9 +461,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.13.4" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5" dependencies = [ "darling_core", "quote", @@ -484,7 +507,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", ] [[package]] @@ -495,6 +518,7 @@ checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ "block-buffer 0.10.2", "crypto-common", + "subtle", ] [[package]] @@ -526,9 +550,9 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" +checksum = "4f94fa09c2aeea5b8839e414b7b841bf429fd25b9c522116ac97ee87856d88b2" [[package]] name = "ed25519" @@ -555,9 +579,9 @@ dependencies = [ [[package]] name = "either" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" [[package]] name = "env_logger" @@ -578,6 +602,12 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "fake-simd" version = "0.1.2" @@ -604,9 +634,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "frame-metadata" -version = "14.2.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ed5e5c346de62ca5c184b4325a6600d1eaca210666e4606fe4e449574978d0" +checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d" dependencies = [ "cfg-if", "parity-scale-codec", @@ -616,9 +646,9 @@ dependencies = [ [[package]] name = "funty" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" @@ -692,6 +722,12 @@ version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + [[package]] name = "futures-util" version = "0.3.21" @@ -737,9 +773,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.5" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check", @@ -760,39 +796,20 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ "cfg-if", "libc", - "wasi 0.10.0+wasi-snapshot-preview1", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "gimli" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" - -[[package]] -name = "h2" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util 0.7.2", - "tracing", -] +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" [[package]] name = "hash-db" @@ -811,22 +828,13 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ "ahash", ] -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "heck" version = "0.4.0" @@ -875,30 +883,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ "digest 0.9.0", - "generic-array 0.14.5", + "generic-array 0.14.6", "hmac 0.8.1", ] [[package]] name = "http" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff8670570af52249509a86f5e3e18a08c60b177071826898fde8997cf5f6bfbb" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ "bytes", "fnv", - "itoa 1.0.2", -] - -[[package]] -name = "http-body" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" -dependencies = [ - "bytes", - "http", - "pin-project-lite", + "itoa 1.0.3", ] [[package]] @@ -907,12 +904,6 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" -[[package]] -name = "httpdate" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - [[package]] name = "humantime" version = "2.1.0" @@ -920,43 +911,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] -name = "hyper" -version = "0.14.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42dc3c131584288d375f2d07f822b0cb012d8c6fb899a5b9fdb3cb7eb9b6004f" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa 1.0.2", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.23.0" +name = "iana-time-zone" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" +checksum = "1779539f58004e5dba1c1f093d44325ebeb244bfc04b791acdc0aaeca9c04570" dependencies = [ - "http", - "hyper", - "log", - "rustls", - "rustls-native-certs", - "tokio", - "tokio-rustls", - "webpki-roots", + "android_system_properties", + "core-foundation", + "js-sys", + "wasm-bindgen", + "winapi", ] [[package]] @@ -967,9 +931,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "impl-codec" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ "parity-scale-codec", ] @@ -996,23 +960,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.8.2" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ "autocfg", "hashbrown", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - [[package]] name = "integer-sqrt" version = "0.1.5" @@ -1030,38 +985,36 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" [[package]] name = "js-sys" -version = "0.3.57" +version = "0.3.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" +checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" dependencies = [ "wasm-bindgen", ] [[package]] name = "jsonrpsee" -version = "0.8.0" -source = "git+https://github.com/librelois/jsonrpsee/?branch=duniter-monthly-2022-02#b038aa331e0cd10723512eeb22c8049357606866" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11e017217fcd18da0a25296d3693153dd19c8a6aadab330b3595285d075385d1" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", - "jsonrpsee-http-client", - "jsonrpsee-proc-macros", - "jsonrpsee-types", - "jsonrpsee-ws-client", ] [[package]] name = "jsonrpsee-client-transport" -version = "0.8.0" -source = "git+https://github.com/librelois/jsonrpsee/?branch=duniter-monthly-2022-02#b038aa331e0cd10723512eeb22c8049357606866" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce395539a14d3ad4ec1256fde105abd36a2da25d578a291cabe98f45adfdb111" dependencies = [ - "futures", + "futures-util", "http", "jsonrpsee-core", "jsonrpsee-types", @@ -1071,66 +1024,38 @@ dependencies = [ "thiserror", "tokio", "tokio-rustls", - "tokio-util 0.6.10", + "tokio-util", "tracing", "webpki-roots", ] [[package]] name = "jsonrpsee-core" -version = "0.8.0" -source = "git+https://github.com/librelois/jsonrpsee/?branch=duniter-monthly-2022-02#b038aa331e0cd10723512eeb22c8049357606866" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16efcd4477de857d4a2195a45769b2fe9ebb54f3ef5a4221d3b014a4fe33ec0b" dependencies = [ "anyhow", - "arrayvec 0.7.2", + "async-lock", "async-trait", "beef", "futures-channel", + "futures-timer", "futures-util", - "hyper", "jsonrpsee-types", "rustc-hash", "serde", "serde_json", - "soketto", "thiserror", "tokio", "tracing", ] -[[package]] -name = "jsonrpsee-http-client" -version = "0.8.0" -source = "git+https://github.com/librelois/jsonrpsee/?branch=duniter-monthly-2022-02#b038aa331e0cd10723512eeb22c8049357606866" -dependencies = [ - "async-trait", - "hyper", - "hyper-rustls", - "jsonrpsee-core", - "jsonrpsee-types", - "rustc-hash", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", -] - -[[package]] -name = "jsonrpsee-proc-macros" -version = "0.8.0" -source = "git+https://github.com/librelois/jsonrpsee/?branch=duniter-monthly-2022-02#b038aa331e0cd10723512eeb22c8049357606866" -dependencies = [ - "proc-macro-crate 1.1.3", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "jsonrpsee-types" -version = "0.8.0" -source = "git+https://github.com/librelois/jsonrpsee/?branch=duniter-monthly-2022-02#b038aa331e0cd10723512eeb22c8049357606866" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bcf76cd316f5d3ad48138085af1f45e2c58c98e02f0779783dbb034d43f7c86" dependencies = [ "anyhow", "beef", @@ -1140,16 +1065,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "jsonrpsee-ws-client" -version = "0.8.0" -source = "git+https://github.com/librelois/jsonrpsee/?branch=duniter-monthly-2022-02#b038aa331e0cd10723512eeb22c8049357606866" -dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", -] - [[package]] name = "keccak" version = "0.1.2" @@ -1164,15 +1079,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.126" +version = "0.2.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "95f2a930906a03d4ee59113b31586c057c94f4d40c9fe90f21597a8b6822bfd8" [[package]] name = "libsecp256k1" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37" +checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" dependencies = [ "arrayref", "base64", @@ -1261,9 +1176,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memory-db" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de006e09d04fc301a5f7e817b75aa49801c4479a8af753764416b085337ddcc5" +checksum = "6566c70c1016f525ced45d7b7f97730a2bafb037c788211d0c186ef5b2189f0a" dependencies = [ "hash-db", "hashbrown", @@ -1299,9 +1214,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" dependencies = [ "libc", "log", @@ -1379,18 +1294,18 @@ dependencies = [ [[package]] name = "object" -version = "0.28.4" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" [[package]] name = "opaque-debug" @@ -1412,15 +1327,15 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "os_str_bytes" -version = "6.1.0" +version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" +checksum = "648001efe5d5c0102d8cea768e348da85d90af8ba91f0bea908f157951493cd4" [[package]] name = "parity-scale-codec" -version = "2.3.1" +version = "3.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +checksum = "9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0" dependencies = [ "arrayvec 0.7.2", "bitvec", @@ -1432,11 +1347,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "2.3.1" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -1444,9 +1359,9 @@ dependencies = [ [[package]] name = "parity-util-mem" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f4cb4e169446179cbc6b8b6320cc9fca49bd2e94e8db25f25f200a8ea774770" +checksum = "c32561d248d352148124f036cac253a644685a21dc9fea383eb4907d7bd35a8f" dependencies = [ "cfg-if", "hashbrown", @@ -1476,34 +1391,32 @@ checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" [[package]] name = "parking_lot" -version = "0.11.2" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ - "instant", "lock_api", "parking_lot_core", ] [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" dependencies = [ "cfg-if", - "instant", "libc", "redox_syscall", "smallvec", - "winapi", + "windows-sys", ] [[package]] name = "paste" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +checksum = "9423e2b32f7a043629287a536f21951e8c6a82482d0acb1eeebfc90bc2225b22" [[package]] name = "pbkdf2" @@ -1525,18 +1438,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" +checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" +checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" dependencies = [ "proc-macro2", "quote", @@ -1563,9 +1476,9 @@ checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "primitive-types" -version = "0.10.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" dependencies = [ "fixed-hash", "impl-codec", @@ -1576,19 +1489,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro-crate" -version = "1.1.3" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" dependencies = [ + "once_cell", "thiserror", "toml", ] @@ -1619,27 +1524,27 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.39" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.18" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] [[package]] name = "radium" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" @@ -1701,7 +1606,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.7", ] [[package]] @@ -1724,27 +1629,27 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] [[package]] name = "ref-cast" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685d58625b6c2b83e4cc88a27c4bf65adb7b6b16dbdc413e515c9405b47432ab" +checksum = "ed13bcd201494ab44900a96490291651d200730904221832b9547d24a87d332b" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a043824e29c94169374ac5183ac0ed43f5724dc4556b19568007486bd840fa1f" +checksum = "5234cd6063258a5e32903b53b1b6ac043a0541c8adc1f610f67b0326c7a578fa" dependencies = [ "proc-macro2", "quote", @@ -1753,9 +1658,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.6" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ "aho-corasick", "memchr", @@ -1773,9 +1678,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.26" +version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" [[package]] name = "ring" @@ -1836,24 +1741,24 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7522c9de787ff061458fe9a829dc790a3f5b22dc571694fc5883f448b94d9a9" +checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" dependencies = [ "base64", ] [[package]] name = "ryu" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "scale-info" -version = "1.0.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55b744399c25532d63a0d2789b109df8d46fc93752d46b0782991a931a782f" +checksum = "c46be926081c9f4dd5dd9b6f1d3e3229f2360bc6502dd8836f84a93b7c75e99a" dependencies = [ "bitvec", "cfg-if", @@ -1865,11 +1770,11 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "1.0.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcd" +checksum = "50e334bb10a245e28e5fd755cabcafd96cfcd167c99ae63a46924ca8d8703a3c" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -1919,6 +1824,24 @@ dependencies = [ "untrusted", ] +[[package]] +name = "secp256k1" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c42e6f1735c5f00f51e43e28d6634141f2bcad10931b2609ddd74a86d751260" +dependencies = [ + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957da2573cde917463ece3570eab4a0b3f19de6f1646cde62e6fd3868f566036" +dependencies = [ + "cc", +] + [[package]] name = "secrecy" version = "0.8.0" @@ -1953,18 +1876,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.137" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.137" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" +checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391" dependencies = [ "proc-macro2", "quote", @@ -1973,11 +1896,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.81" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" dependencies = [ - "itoa 1.0.2", + "itoa 1.0.3", "ryu", "serde", ] @@ -2031,6 +1954,16 @@ dependencies = [ "digest 0.10.3", ] +[[package]] +name = "sha3" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a31480366ec990f395a61b7c08122d99bd40544fdb5abcfc1b06bb29994312c" +dependencies = [ + "digest 0.10.3", + "keccak", +] + [[package]] name = "sharded-slab" version = "0.1.4" @@ -2048,15 +1981,18 @@ checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4" [[package]] name = "slab" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] [[package]] name = "smallvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "socket2" @@ -2085,8 +2021,8 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "6.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "parity-scale-codec", "scale-info", @@ -2098,8 +2034,8 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "5.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "integer-sqrt", "num-traits", @@ -2113,8 +2049,8 @@ dependencies = [ [[package]] name = "sp-core" -version = "4.1.0-dev" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "6.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "base58", "bitflags", @@ -2140,9 +2076,9 @@ dependencies = [ "regex", "scale-info", "schnorrkel", + "secp256k1", "secrecy", "serde", - "sha2 0.10.2", "sp-core-hashing", "sp-debug-derive", "sp-externalities", @@ -2153,8 +2089,6 @@ dependencies = [ "substrate-bip39", "thiserror", "tiny-bip39", - "tiny-keccak", - "twox-hash", "wasmi", "zeroize", ] @@ -2162,20 +2096,21 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ - "blake2-rfc", + "blake2", "byteorder", + "digest 0.10.3", "sha2 0.10.2", + "sha3", "sp-std", - "tiny-keccak", "twox-hash", ] [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "proc-macro2", "quote", @@ -2184,8 +2119,8 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.10.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "0.12.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "environmental", "parity-scale-codec", @@ -2195,8 +2130,8 @@ dependencies = [ [[package]] name = "sp-io" -version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "6.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "futures", "hash-db", @@ -2204,6 +2139,7 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot", + "secp256k1", "sp-core", "sp-externalities", "sp-keystore", @@ -2219,8 +2155,8 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.10.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "0.12.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "async-trait", "futures", @@ -2236,7 +2172,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "backtrace", "lazy_static", @@ -2245,8 +2181,8 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "4.1.0-dev" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "6.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "either", "hash256-std-hasher", @@ -2267,8 +2203,8 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "4.1.0-dev" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "6.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -2284,11 +2220,11 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "5.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "Inflector", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -2296,8 +2232,8 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.10.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "0.12.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "hash-db", "log", @@ -2313,19 +2249,18 @@ dependencies = [ "sp-trie", "thiserror", "tracing", - "trie-db", "trie-root", ] [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" [[package]] name = "sp-storage" -version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "6.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "impl-serde", "parity-scale-codec", @@ -2337,8 +2272,8 @@ dependencies = [ [[package]] name = "sp-tracing" -version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "5.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "parity-scale-codec", "sp-std", @@ -2349,8 +2284,8 @@ dependencies = [ [[package]] name = "sp-trie" -version = "4.0.0" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "6.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "hash-db", "memory-db", @@ -2358,41 +2293,15 @@ dependencies = [ "scale-info", "sp-core", "sp-std", + "thiserror", "trie-db", "trie-root", ] -[[package]] -name = "sp-version" -version = "4.0.0-dev" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "parity-wasm", - "scale-info", - "serde", - "sp-runtime", - "sp-std", - "sp-version-proc-macro", - "thiserror", -] - -[[package]] -name = "sp-version-proc-macro" -version = "4.0.0-dev" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" -dependencies = [ - "parity-scale-codec", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "sp-wasm-interface" -version = "4.1.0-dev" -source = "git+https://github.com/librelois/substrate.git?branch=duniter-monthly-2022-02#8fbc011c06ee051577022c8fd84f2a018123efd3" +version = "6.0.0" +source = "git+https://github.com/duniter/substrate?branch=duniter-substrate-v0.9.23#3c05363666a2e719807713830b7d6eee0a9598d2" dependencies = [ "impl-trait-for-tuples", "log", @@ -2409,9 +2318,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "ss58-registry" -version = "1.22.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d804c8d48aeab838be31570866fce1130d275b563d49af08b4927a0bd561e7c" +checksum = "a039906277e0d8db996cd9d1ef19278c10209d994ecfc1025ced16342873a17c" dependencies = [ "Inflector", "num-format", @@ -2455,72 +2364,72 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "subxt" -version = "0.17.0" -source = "git+https://github.com/librelois/subxt.git?branch=duniter-monthly-2022-02#42166f6bc3762e8e4aa873542f0d3f59c119fb49" +version = "0.22.0" +source = "git+https://github.com/duniter/subxt.git?branch=duniter-substrate-v0.9.23#e0fcf196eb6192e905e1784580f64363e2213556" dependencies = [ - "async-trait", "bitvec", - "chameleon", "derivative", "frame-metadata", "futures", "hex", "jsonrpsee", - "log", - "num-traits", "parity-scale-codec", + "parking_lot", "scale-info", "serde", "serde_json", "sp-core", "sp-runtime", - "sp-version", "subxt-macro", + "subxt-metadata", "thiserror", + "tracing", ] [[package]] name = "subxt-codegen" -version = "0.17.0" -source = "git+https://github.com/librelois/subxt.git?branch=duniter-monthly-2022-02#42166f6bc3762e8e4aa873542f0d3f59c119fb49" +version = "0.22.0" +source = "git+https://github.com/duniter/subxt.git?branch=duniter-substrate-v0.9.23#e0fcf196eb6192e905e1784580f64363e2213556" dependencies = [ - "async-trait", "darling", "frame-metadata", - "heck 0.3.3", + "heck", "parity-scale-codec", - "proc-macro-crate 0.1.5", "proc-macro-error", "proc-macro2", "quote", "scale-info", + "subxt-metadata", "syn", ] [[package]] name = "subxt-macro" -version = "0.17.0" -source = "git+https://github.com/librelois/subxt.git?branch=duniter-monthly-2022-02#42166f6bc3762e8e4aa873542f0d3f59c119fb49" +version = "0.22.0" +source = "git+https://github.com/duniter/subxt.git?branch=duniter-substrate-v0.9.23#e0fcf196eb6192e905e1784580f64363e2213556" dependencies = [ - "async-trait", "darling", - "frame-metadata", - "heck 0.3.3", - "parity-scale-codec", - "proc-macro-crate 0.1.5", "proc-macro-error", - "proc-macro2", - "quote", - "scale-info", "subxt-codegen", "syn", ] +[[package]] +name = "subxt-metadata" +version = "0.22.0" +source = "git+https://github.com/duniter/subxt.git?branch=duniter-substrate-v0.9.23#e0fcf196eb6192e905e1784580f64363e2213556" +dependencies = [ + "frame-metadata", + "parity-scale-codec", + "scale-info", + "sp-core", +] + [[package]] name = "syn" -version = "1.0.95" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -2562,18 +2471,18 @@ checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" dependencies = [ "proc-macro2", "quote", @@ -2619,15 +2528,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - [[package]] name = "tinyvec" version = "1.6.0" @@ -2645,13 +2545,12 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.18.2" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4903bf0427cf68dddd5aa6a93220756f8be0c34fcfa9f5e6191e103e15a31395" +checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581" dependencies = [ - "bytes", + "autocfg", "libc", - "memchr", "mio", "once_cell", "pin-project-lite", @@ -2662,9 +2561,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" dependencies = [ "proc-macro2", "quote", @@ -2684,31 +2583,16 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.6.10" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f988a1a1adc2fb21f9c12aa96441da33a1728193ae0b95d2be22dbd17fcb4e5c" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -2720,17 +2604,11 @@ dependencies = [ "serde", ] -[[package]] -name = "tower-service" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" - [[package]] name = "tracing" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" dependencies = [ "cfg-if", "pin-project-lite", @@ -2740,9 +2618,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c" +checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" dependencies = [ "proc-macro2", "quote", @@ -2751,11 +2629,11 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.26" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" dependencies = [ - "lazy_static", + "once_cell", "valuable", ] @@ -2804,9 +2682,9 @@ dependencies = [ [[package]] name = "trie-db" -version = "0.22.6" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eac131e334e81b6b3be07399482042838adcd7957aa0010231d0813e39e02fa" +checksum = "d32d034c0d3db64b43c31de38e945f15b40cd4ca6d2dcfc26d4798ce8de4ab83" dependencies = [ "hash-db", "hashbrown", @@ -2817,19 +2695,13 @@ dependencies = [ [[package]] name = "trie-root" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "652931506d2c1244d7217a70b99f56718a7b4161b37f04e7cd868072a99f68cd" +checksum = "9a36c5ca3911ed3c9a5416ee6c679042064b93fc637ded67e25f92e68d783891" dependencies = [ "hash-db", ] -[[package]] -name = "try-lock" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" - [[package]] name = "twox-hash" version = "1.6.3" @@ -2837,6 +2709,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", + "digest 0.10.3", "rand 0.8.5", "static_assertions", ] @@ -2861,25 +2734,19 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-segmentation" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" - [[package]] name = "unicode-xid" version = "0.2.3" @@ -2904,16 +2771,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -2934,9 +2791,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.80" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" +checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2944,13 +2801,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.80" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" +checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", "syn", @@ -2959,9 +2816,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.80" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" +checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2969,9 +2826,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.80" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" +checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" dependencies = [ "proc-macro2", "quote", @@ -2982,9 +2839,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.80" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" +checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" [[package]] name = "wasmi" @@ -3012,9 +2869,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.57" +version = "0.3.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -3032,9 +2889,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.22.3" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d8de8415c823c8abd270ad483c6feeac771fad964890779f9a8cb24fbbc1bf" +checksum = "f1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04daf" dependencies = [ "webpki", ] @@ -3115,15 +2972,18 @@ checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] name = "wyz" -version = "0.2.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e" +dependencies = [ + "tap", +] [[package]] name = "zeroize" -version = "1.5.5" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94693807d016b2f2d2e14420eb3bfcca689311ff775dcf113d74ea624b7cdf07" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" dependencies = [ "zeroize_derive", ] diff --git a/Cargo.toml b/Cargo.toml index b3a0b5a..4db6708 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,8 +12,8 @@ clap = { version = "3.0", features = ["derive"] } env_logger = "0.9.0" hex = "0.4.3" logs = "0.5" -codec = { package = "parity-scale-codec", version = "2.3.1" } +codec = { package = "parity-scale-codec", version = "3.1.5" } serde_json = "1.0.64" -sp-core = { git = "https://github.com/librelois/substrate.git", branch = "duniter-monthly-2022-02" } -subxt = { git = 'https://github.com/librelois/subxt.git', branch = 'duniter-monthly-2022-02' } +sp-core = { git = "https://github.com/duniter/substrate", branch = "duniter-substrate-v0.9.23" } +subxt = { git = 'https://github.com/duniter/subxt.git', branch = 'duniter-substrate-v0.9.23' } tokio = { version = "1.15.0", features = ["macros"] } diff --git a/res/metadata.scale b/res/metadata.scale index 521cb929be57a23ef6eb7c5ad68d65b9d76b8bcb..10f4232185e31dcb87b88cd33a9731c8efca1265 100644 GIT binary patch delta 19425 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�_&z5Gq^K~40r!njZ&CD+||58T8y4z3enjN=QtF1qv5rG?wLyH)kQFMg9 zy|kbK7i=1J9q=~h@V=PCT1}LRdbm?2;*&CkB22p#`q)`g=iWBZ#DPE2g46VYvFaN% zK409`F`Esv5;A<Vt_Ovnh^LksSC7yHoJjjoTCI#=M%z&;v;BavzQ>NzSoqJM*s_gN z$H1ST8gCt=FWK;?VvO6Krcz}T<lxhklXjm%pV><+@6U8?9FBZuTz;AsXEm5vUU5$% z{`um4puz=X#u>_X21N3obVN+QBTVpKQ=Xw2!b#Y00u(-EJoyY|fJJ|Cf^zZpws_lV zOg>3dbL1&Jrce^4EFLi8<Kz6+#*B(*A+A1#4}AF~Z7{k{k$+~EI@2L6bXYq0nX;nE zOtY0f8Vc(07l!0X&ryxBr)gGNg{T%@(j(j`;mymBwPc(<4cnyF_?Oc(CH1UA$&`{W zYQ{$&!;IWBkfbAwyU)-UoMo#;LLVZj@$X`GX=kYb?u0S^1T7o7;PW?KFs_%5`ZE?R zJdC$aQF`WIXQ?kD?tYV{+W*8-ZG~#7F{PJgjw)6sl8~U66iTJOHNEr&MJZK{2hUNi zTCBnsc>Wxfj98$GIxj1f)AxsS<WPoPvyTugKITP)Lvx>}Jf%`KmOoEh=GKUs4S?YU z3KvEc#?w<7kvdN7R=WIL5dT~Yq)L?TH2(E@s#jlCXohj?dFqD4V7z#qGL==T@!!tV zx1sHf7igY}`?$q@uf0I`sAId;MVT!yZm^Gx-ohOU!~0zr5mBS}yI|EGBjX~Z>JDT1 zMXGjQRcHZaiocp5<;oIdvF_?SauGHz>i^><;t(F~e^09+<zM)Fv`#T{zDHk-vAO{R z5tbqT{sugJSR%qql<{ccZ_E5`oMRYQu++pKPlAv#Z=?e_j38Dk-~?|6^3vSEq>#;b zpIW(BRka%!;rrE{i>2k;1hirGHuIwW0o73^3!AsCHcOsR9YwO_i^$#zd&7rS&8$&} x_yKr3(sNAJ671}g>dpdL-!$INt2^5u4gfGWi|a%tw2RcfE}#xCsyolB{|;EszFPnQ delta 11328 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 XHe20IYA^U8j{gl|A+<_-o$|i`f>Zx6 diff --git a/src/main.rs b/src/main.rs index 53f2014..f2beb9c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,14 +6,35 @@ use sp_core::{ sr25519::Pair, }; use subxt::sp_runtime::MultiAddress; -use subxt::{ClientBuilder, DefaultConfig, DefaultExtra, PairSigner}; +use subxt::{ + extrinsic::{BaseExtrinsicParams, BaseExtrinsicParamsBuilder}, + ClientBuilder, DefaultConfig, PairSigner, +}; #[subxt::subxt(runtime_metadata_path = "res/metadata.scale")] -pub mod gdev_100 {} +pub mod gdev_300 {} -pub type Api = gdev_100::RuntimeApi<DefaultConfig, DefaultExtra<DefaultConfig>>; +pub type Api = gdev_300::RuntimeApi<DefaultConfig, BaseExtrinsicParams<DefaultConfig, Tip>>; type Client = subxt::Client<DefaultConfig>; +#[derive(Copy, Clone, Debug, Default, Encode)] +pub struct Tip { + #[codec(compact)] + tip: u64, +} + +impl Tip { + pub fn new(amount: u64) -> Self { + Tip { tip: amount } + } +} + +impl From<u64> for Tip { + fn from(n: u64) -> Self { + Self::new(n) + } +} + #[derive(Parser, Debug)] #[clap(author, version, about, long_about = None)] struct Args { @@ -25,14 +46,35 @@ struct Args { #[clap(short, long)] secret: String, /// Websocket RPC endpoint - #[clap(short, long, default_value = "ws://localhost:9945")] + #[clap(short, long, default_value = "ws://localhost:9944")] url: String, } #[derive(Debug, clap::Subcommand)] pub enum Subcommand { + CreateOneshot { + balance: u64, + dest: sp_core::crypto::AccountId32, + }, + ConsumeOneshot { + dest: sp_core::crypto::AccountId32, + #[clap(long = "oneshot")] + dest_oneshot: bool, + }, + ConsumeOneshotWithRemaining { + balance: u64, + dest: sp_core::crypto::AccountId32, + #[clap(long = "one")] + dest_oneshot: bool, + remaining_to: sp_core::crypto::AccountId32, + #[clap(long = "rem-one")] + remaining_to_oneshot: bool, + }, /// Generate a revocation document for the provided account GenRevocDoc, + OneshotBalance { + account: sp_core::crypto::AccountId32, + }, #[clap(hide = true)] Repart { // Number of transactions per block to target @@ -43,6 +85,12 @@ pub enum Subcommand { }, #[clap(hide = true)] SpamRoll { actual_repart: usize }, + Transfer { + balance: u64, + dest: sp_core::crypto::AccountId32, + #[clap(short = 'k')] + keep_alive: bool, + }, } #[tokio::main(flavor = "current_thread")] @@ -53,7 +101,6 @@ async fn main() -> Result<()> { let pair = Pair::from_string(&args.secret, None) .map_err(|_| anyhow!("Invalid secret {}", args.secret))?; - //let mut signer = PairSigner::new(pair.clone()); let client: Client = ClientBuilder::new() .set_url(&args.url) @@ -63,11 +110,91 @@ async fn main() -> Result<()> { let api = client.clone().to_runtime_api::<Api>(); let account_id: sp_core::crypto::AccountId32 = pair.public().into(); - let account = api.storage().system().account(account_id, None).await?; + let account = api.storage().system().account(&account_id, None).await?; logs::info!("Account free balance: {}", account.data.free); match args.subcommand { + Subcommand::CreateOneshot { balance, dest } => { + api.tx() + .oneshot_account() + .create_oneshot_account(dest.into(), balance)? + .sign_and_submit_then_watch( + &PairSigner::new(pair), + BaseExtrinsicParamsBuilder::new(), + ) + .await?; + } + Subcommand::ConsumeOneshot { dest, dest_oneshot } => { + let number = api.storage().system().number(None).await?; + api.tx() + .oneshot_account() + .consume_oneshot_account( + number, + if dest_oneshot { + gdev_300::runtime_types::pallet_oneshot_account::types::Account::Oneshot( + dest.into(), + ) + } else { + gdev_300::runtime_types::pallet_oneshot_account::types::Account::Normal( + dest.into(), + ) + }, + )? + .sign_and_submit_then_watch( + &PairSigner::new(pair), + BaseExtrinsicParamsBuilder::new(), + ) + .await?; + } + Subcommand::ConsumeOneshotWithRemaining { + balance, + dest, + dest_oneshot, + remaining_to, + remaining_to_oneshot, + } => { + let number = api.storage().system().number(None).await?; + api.tx() + .oneshot_account() + .consume_oneshot_account_with_remaining( + number, + if dest_oneshot { + gdev_300::runtime_types::pallet_oneshot_account::types::Account::Oneshot( + dest.into(), + ) + } else { + gdev_300::runtime_types::pallet_oneshot_account::types::Account::Normal( + dest.into(), + ) + }, + if remaining_to_oneshot { + gdev_300::runtime_types::pallet_oneshot_account::types::Account::Oneshot( + remaining_to.into(), + ) + } else { + gdev_300::runtime_types::pallet_oneshot_account::types::Account::Normal( + remaining_to.into(), + ) + }, + balance, + )? + .sign_and_submit_then_watch( + &PairSigner::new(pair), + BaseExtrinsicParamsBuilder::new(), + ) + .await?; + } Subcommand::GenRevocDoc => gen_revoc_doc(&api, &pair).await?, + Subcommand::OneshotBalance { account } => { + logs::info!( + "{}", + api.storage() + .oneshot_account() + .oneshot_accounts(&account, None) + .await? + .unwrap_or(0) + ); + } Subcommand::Repart { target, actual_repart, @@ -85,8 +212,8 @@ async fn main() -> Result<()> { /*let _ = api .tx() .balances() - .transfer(MultiAddress::Id(pair_i.public().into()), 501) - .sign_and_submit_then_watch(&signer) + .transfer(MultiAddress::Id(pair_i.public().into()), 501)? + .sign_and_submit_then_watch(&signer, BaseExtrinsicParamsBuilder::new()) .await? .wait_for_in_block() .await?; @@ -95,16 +222,14 @@ async fn main() -> Result<()> { let pair_i_account = api .storage() .system() - .account(pair_i.public().into(), None) + .account(&pair_i.public().into(), None) .await?; logs::info!("account //{} balance: {}", i, pair_i_account.data.free); } } Subcommand::SpamRoll { actual_repart } => { - let mut pairs = Vec::<( - PairSigner<DefaultConfig, DefaultExtra<DefaultConfig>, Pair>, - AccountId32, - )>::with_capacity(actual_repart); + let mut pairs = + Vec::<(PairSigner<DefaultConfig, Pair>, AccountId32)>::with_capacity(actual_repart); for i in 0..actual_repart { let pair_i = pair .derive(std::iter::once(DeriveJunction::hard::<u32>(i as u32)), None) @@ -121,8 +246,8 @@ async fn main() -> Result<()> { let watcher = api .tx() .balances() - .transfer(MultiAddress::Id(dest), 1) - .sign_and_submit_then_watch(&pairs[i].0) + .transfer(MultiAddress::Id(dest), 1)? + .sign_and_submit_then_watch(&pairs[i].0, BaseExtrinsicParamsBuilder::new()) .await?; pairs[i].0.increment_nonce(); logs::info!("send 1 cent from //{} to //{}", i, i + 1); @@ -132,8 +257,11 @@ async fn main() -> Result<()> { let watcher = api .tx() .balances() - .transfer(MultiAddress::Id(dest), 1) - .sign_and_submit_then_watch(&pairs[actual_repart - 1].0) + .transfer(MultiAddress::Id(dest), 1)? + .sign_and_submit_then_watch( + &pairs[actual_repart - 1].0, + BaseExtrinsicParamsBuilder::new(), + ) .await?; pairs[actual_repart - 1].0.increment_nonce(); logs::info!("send 1 cent from //{} to //0", actual_repart - 1); @@ -145,6 +273,31 @@ async fn main() -> Result<()> { } } } + Subcommand::Transfer { + balance, + dest, + keep_alive, + } => { + if keep_alive { + api.tx() + .balances() + .transfer(dest.into(), balance)? + .sign_and_submit_then_watch( + &PairSigner::new(pair), + BaseExtrinsicParamsBuilder::new(), + ) + .await?; + } else { + api.tx() + .balances() + .transfer_keep_alive(dest.into(), balance)? + .sign_and_submit_then_watch( + &PairSigner::new(pair), + BaseExtrinsicParamsBuilder::new(), + ) + .await?; + } + } } Ok(()) @@ -152,7 +305,7 @@ async fn main() -> Result<()> { async fn gen_revoc_doc(api: &Api, pair: &Pair) -> Result<()> { let account_id: sp_core::crypto::AccountId32 = pair.public().into(); - let genesis_hash = api.storage().system().block_hash(0, None).await?; + let genesis_hash = api.storage().system().block_hash(&0, None).await?; let payload = (account_id, genesis_hash).encode(); let signature = pair.sign(&payload); -- GitLab