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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 C&%Rp# delta 11328 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 XBo?KoA~heTA9%&c&Kk*55z7Jqf>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