From 0102cc5613226b877b0a0168aacbbe5fd9b381b9 Mon Sep 17 00:00:00 2001 From: Andrew Westberg Date: Sun, 17 Dec 2023 13:53:42 +0000 Subject: [PATCH] Updates for cardano-node 8.7.2 --- .cargo/config.toml | 2 +- .github/workflows/ci.yml | 10 +- Cargo.lock | 1551 +++++++++++++++---------- Cargo.toml | 63 +- build.rs | 2 + contrib/libsodium | 2 +- src/lib.rs | 11 +- src/main.rs | 43 +- src/nodeclient/leaderlog/libsodium.rs | 24 +- src/nodeclient/ping.rs | 111 +- src/nodeclient/sync.rs | 468 ++++---- src/test.rs | 39 +- 12 files changed, 1346 insertions(+), 980 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index ec9ed69..96a8f06 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,3 @@ [build] rustflags = ["-C", "target-feature=+crt-static"] -target = "x86_64-unknown-linux-musl" +target = "x86_64-unknown-linux-gnu" \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6d1c9b3..6fd3ca0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,11 +12,14 @@ jobs: fail-fast: false matrix: job: - - { os: ubuntu-latest, target: x86_64-unknown-linux-musl } + - { os: ubuntu-latest, target: x86_64-unknown-linux-gnu } + - { os: ubuntu-latest, target: x86_64-unknown-linux-musl, use-cross: true } + - { os: ubuntu-20.04, target: x86_64-unknown-linux-musl, use-cross: true } - { os: macos-latest, target: x86_64-apple-darwin } + - { os: macos-latest-xlarge, target: aarch64-apple-darwin, use-cross: true } steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: submodules: true # recurse submodules - name: Configure Environment @@ -53,7 +56,8 @@ jobs: ;; *-unknown-linux-*) sudo apt-get -y update - sudo apt-get -y install automake build-essential pkg-config libffi-dev libgmp-dev libssl-dev libtinfo-dev libsystemd-dev zlib1g-dev make g++ tmux git jq wget libncursesw5 libtool autoconf musl-tools + sudo apt-get -y install automake build-essential pkg-config libffi-dev libgmp-dev libssl-dev libtinfo-dev libsystemd-dev zlib1g-dev make g++ tmux git jq wget libncursesw5 libtool autoconf musl-tools gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu + pip install cargo-zigbuild ;; *-apple-darwin) brew install automake diff --git a/Cargo.lock b/Cargo.lock index ae4cb98..51c9793 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,15 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + [[package]] name = "adler" version = "1.0.2" @@ -10,24 +19,37 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.7.6" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ - "getrandom", + "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -54,26 +76,39 @@ checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-channel" -version = "1.8.0" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener 4.0.1", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] name = "async-compression" -version = "0.3.15" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +checksum = "bc2d0cfb2a7388d34f590e76686704c494ed7aaceed62ee1ba35cbf363abc2a5" dependencies = [ "flate2", "futures-core", @@ -84,30 +119,30 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.5.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" dependencies = [ - "async-lock", + "async-lock 3.2.0", "async-task", "concurrent-queue", - "fastrand", - "futures-lite", + "fastrand 2.0.1", + "futures-lite 2.1.0", "slab", ] [[package]] name = "async-global-executor" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel", + "async-channel 2.1.1", "async-executor", - "async-io", - "async-lock", + "async-io 2.2.2", + "async-lock 3.2.0", "blocking", - "futures-lite", + "futures-lite 2.1.0", "once_cell", ] @@ -117,27 +152,57 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock", + "async-lock 2.8.0", "autocfg", - "cfg-if 1.0.0", + "cfg-if", "concurrent-queue", - "futures-lite", + "futures-lite 1.13.0", "log", "parking", - "polling", - "rustix", + "polling 2.8.0", + "rustix 0.37.27", "slab", - "socket2", + "socket2 0.4.10", "waker-fn", ] +[[package]] +name = "async-io" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6afaa937395a620e33dc6a742c593c01aced20aa376ffb0f628121198578ccc7" +dependencies = [ + "async-lock 3.2.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.1.0", + "parking", + "polling 3.3.1", + "rustix 0.38.28", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + [[package]] name = "async-lock" -version = "2.7.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" dependencies = [ - "event-listener", + "event-listener 4.0.1", + "event-listener-strategy", + "pin-project-lite", ] [[package]] @@ -146,15 +211,15 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" dependencies = [ - "async-channel", + "async-channel 1.9.0", "async-global-executor", - "async-io", - "async-lock", + "async-io 1.13.0", + "async-lock 2.8.0", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite", + "futures-lite 1.13.0", "gloo-timers", "kv-log-macro", "log", @@ -168,15 +233,15 @@ dependencies = [ [[package]] name = "async-task" -version = "4.4.0" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" +checksum = "e1d90cd0b264dfdd8eb5bad0a2c217c1f88fa96a8573f40e7b12de23fb468f46" [[package]] name = "atomic-waker" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atty" @@ -204,6 +269,21 @@ dependencies = [ "cc", ] +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "base58" version = "0.2.0" @@ -212,9 +292,9 @@ checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "bech32" @@ -224,10 +304,12 @@ checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] name = "bigdecimal" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aaf33151a6429fe9211d1b276eafdf70cdff28b071e76c0b0e1503221ea3744" +checksum = "c06619be423ea5bb86c95f087d5707942791a08a85530df0db2209a3ecfb8bc9" dependencies = [ + "autocfg", + "libm", "num-bigint", "num-integer", "num-traits", @@ -241,65 +323,82 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.1.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c70beb79cbb5ce9c4f8e20849978f34225931f665bb49efa6982875a4d5facb3" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "blake2b_simd" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" dependencies = [ "arrayref", "arrayvec", "constant_time_eq", ] +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "blocking" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ - "async-channel", - "async-lock", + "async-channel 2.1.1", + "async-lock 3.2.0", "async-task", - "atomic-waker", - "fastrand", - "futures-lite", - "log", + "fastrand 2.0.1", + "futures-io", + "futures-lite 2.1.0", + "piper", + "tracing", +] + +[[package]] +name = "built" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d17f4d6e4dc36d1a02fbedc2753a096848e7c1b0772f7654eab8e2c927dd53" +dependencies = [ + "git2", ] [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "jobserver", + "libc", +] [[package]] name = "cfg-if" @@ -309,24 +408,23 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.24" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ + "android-tzdata", "iana-time-zone", "js-sys", - "num-integer", "num-traits", - "time", "wasm-bindgen", - "winapi", + "windows-targets 0.48.5", ] [[package]] name = "chrono-tz" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa48fa079165080f11d7753fd0bc175b7d391f276b965fe4b55bfad67856e463" +checksum = "e23185c0e21df6ed832a12e2bda87c7d1def6842881fb634a8511ced741b0d76" dependencies = [ "chrono", "chrono-tz-build", @@ -335,9 +433,9 @@ dependencies = [ [[package]] name = "chrono-tz-build" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9998fb9f7e9b2111641485bf8beb32f92945f97f92a3d061f744cfef335f751" +checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" dependencies = [ "parse-zoneinfo", "phf", @@ -361,27 +459,25 @@ dependencies = [ [[package]] name = "cncli" -version = "5.3.2" +version = "6.0.0-alpha1" dependencies = [ "async-std", "autotools", "bigdecimal", "blake2b_simd", + "built", "byteorder", "chrono", "chrono-tz", - "env_logger 0.10.0", + "env_logger", "futures", "hex", - "itertools", - "jemallocator", + "itertools 0.12.0", "libc", "log", - "net2", "num-bigint", "num-rational", - "pallas-miniprotocols", - "pallas-multiplexer", + "pallas-network", "pallas-traverse", "pkg-config", "pretty_env_logger", @@ -394,225 +490,212 @@ dependencies = [ "serde-aux", "serde_cbor", "serde_json", + "socket2 0.5.5", "structopt", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", ] [[package]] -name = "codespan-reporting" -version = "0.11.1" +name = "concurrent-queue" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ - "termcolor", - "unicode-width", + "crossbeam-utils", ] [[package]] -name = "concurrent-queue" -version = "2.1.0" +name = "constant_time_eq" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "crossbeam-utils", + "core-foundation-sys", + "libc", ] [[package]] -name = "constant_time_eq" -version = "0.2.5" +name = "core-foundation-sys" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] -name = "core-foundation-sys" -version = "0.8.4" +name = "cpufeatures" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +dependencies = [ + "libc", +] [[package]] -name = "crc32fast" -version = "1.3.2" +name = "crc" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" dependencies = [ - "cfg-if 1.0.0", + "crc-catalog", ] [[package]] -name = "crossbeam-channel" -version = "0.5.7" +name = "crc-catalog" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils", + "cfg-if", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa" dependencies = [ "autocfg", - "cfg-if 1.0.0", + "cfg-if", "crossbeam-utils", "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] -name = "cryptoxide" -version = "0.4.4" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382ce8820a5bb815055d3553a610e8cb542b2d767bbacea99038afda96cd760d" - -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "cxx" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.13", + "generic-array", + "typenum", ] [[package]] -name = "cxxbridge-flags" -version = "1.0.94" +name = "cryptoxide" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" +checksum = "382ce8820a5bb815055d3553a610e8cb542b2d767bbacea99038afda96cd760d" [[package]] -name = "cxxbridge-macro" -version = "1.0.94" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.13", + "block-buffer", + "crypto-common", ] [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "env_logger" -version = "0.7.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ - "atty", - "humantime 1.3.0", + "humantime", + "is-terminal", "log", "regex", "termcolor", ] [[package]] -name = "env_logger" -version = "0.10.0" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" -dependencies = [ - "humantime 2.1.0", - "is-terminal", - "log", - "regex", - "termcolor", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.0" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "errno-dragonfly", "libc", - "windows-sys 0.45.0", + "windows-sys 0.52.0", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "84f2cdcf274580f2d63697192d744727b3198894b1bf02923643bf59e2c26712" dependencies = [ - "cc", - "libc", + "concurrent-queue", + "parking", + "pin-project-lite", ] [[package]] -name = "event-listener" -version = "2.5.3" +name = "event-listener-strategy" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.1", + "pin-project-lite", +] [[package]] name = "fallible-iterator" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fallible-streaming-iterator" @@ -629,11 +712,17 @@ dependencies = [ "instant", ] +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + [[package]] name = "flate2" -version = "1.0.25" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -647,18 +736,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "futures" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ "futures-channel", "futures-core", @@ -671,9 +760,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", "futures-sink", @@ -681,15 +770,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -698,17 +787,17 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-lite" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", "futures-io", "memchr", @@ -717,34 +806,47 @@ dependencies = [ "waker-fn", ] +[[package]] +name = "futures-lite" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" +dependencies = [ + "fastrand 2.0.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.42", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-channel", "futures-core", @@ -758,15 +860,44 @@ dependencies = [ "slab", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "git2" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd" +dependencies = [ + "bitflags 2.4.1", + "libc", + "libgit2-sys", + "log", + "url", ] [[package]] @@ -783,9 +914,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.16" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -808,18 +939,19 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash", + "allocator-api2", ] [[package]] name = "hashlink" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ "hashbrown", ] @@ -844,18 +976,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -865,9 +988,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -876,9 +999,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -893,18 +1016,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[package]] -name = "humantime" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -dependencies = [ - "quick-error", -] +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -914,9 +1028,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.25" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -929,7 +1043,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.5", "tokio", "tower-service", "tracing", @@ -938,10 +1052,11 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.23.2" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ + "futures-util", "http", "hyper", "rustls", @@ -951,33 +1066,32 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.56" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] name = "idna" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -985,11 +1099,11 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ - "autocfg", + "equivalent", "hashbrown", ] @@ -999,35 +1113,34 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "io-lifetimes" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi 0.3.3", "libc", "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.7.2" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", + "hermit-abi 0.3.3", + "rustix 0.38.28", "windows-sys 0.48.0", ] @@ -1040,39 +1153,46 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] -name = "jemalloc-sys" -version = "0.5.3+5.3.0-patched" +name = "jobserver" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9bd5d616ea7ed58b571b2e209a65759664d7fb021a0819d7a790afc67e47ca1" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ - "cc", "libc", ] [[package]] -name = "jemallocator" -version = "0.5.0" +name = "js-sys" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c2514137880c52b0b4822b563fadd38257c1f380858addb74a400889696ea6" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ - "jemalloc-sys", - "libc", + "wasm-bindgen", ] [[package]] -name = "js-sys" -version = "0.3.61" +name = "keccak" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ - "wasm-bindgen", + "cpufeatures", ] [[package]] @@ -1092,57 +1212,83 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.141" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" + +[[package]] +name = "libgit2-sys" +version = "0.16.1+1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2a2bb3680b094add03bb3732ec520ece34da31a8cd2d633d1389d0f0fb60d0c" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libsqlite3-sys" -version = "0.26.0" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ "cc", + "libc", "pkg-config", "vcpkg", ] [[package]] -name = "link-cplusplus" -version = "1.0.8" +name = "linux-raw-sys" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.3.1" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" dependencies = [ - "cfg-if 1.0.0", "value-bag", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] @@ -1176,41 +1322,39 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.6.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.6" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "wasi", + "windows-sys 0.48.0", ] [[package]] -name = "net2" -version = "0.2.38" +name = "nu-ansi-term" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d0df99cfcd2530b2e694f6e17e7f37b8e26bb23983ac530c0c97408837c631" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ - "cfg-if 0.1.10", - "libc", + "overload", "winapi", ] [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -1241,59 +1385,74 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.3", "libc", ] +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" -version = "1.17.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] -name = "pallas-addresses" -version = "0.18.0" +name = "overload" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8af9e9683d7adb7c45b58bf8949c16af0556214c14b01cac92761b3c221377b9" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pallas-addresses" +version = "0.20.0" +source = "git+https://github.com/AndrewWestberg/pallas?rev=3a16264250e978ed8a0fb4b3899b1deb55db4923#3a16264250e978ed8a0fb4b3899b1deb55db4923" dependencies = [ "base58", "bech32", + "crc", "hex", "pallas-codec", "pallas-crypto", + "sha3", "thiserror", ] [[package]] name = "pallas-codec" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "848a3cd192a1afa0e8c7121e40e0c5991715722399c51359dbf9246443a649fb" +version = "0.20.0" +source = "git+https://github.com/AndrewWestberg/pallas?rev=3a16264250e978ed8a0fb4b3899b1deb55db4923#3a16264250e978ed8a0fb4b3899b1deb55db4923" dependencies = [ "hex", "minicbor", "serde", + "thiserror", ] [[package]] name = "pallas-crypto" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d7e5248d3c81960fa2a1a430edc54d99601cf963ad7a4da8f9e13808d98c7f" +version = "0.20.0" +source = "git+https://github.com/AndrewWestberg/pallas?rev=3a16264250e978ed8a0fb4b3899b1deb55db4923#3a16264250e978ed8a0fb4b3899b1deb55db4923" dependencies = [ "cryptoxide", "hex", @@ -1304,39 +1463,26 @@ dependencies = [ ] [[package]] -name = "pallas-miniprotocols" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625e7c774664644f252d2ab2632eaed446239f180e1f03c87ffed2b8ff180f43" -dependencies = [ - "hex", - "itertools", - "pallas-codec", - "pallas-multiplexer", - "thiserror", - "tracing", -] - -[[package]] -name = "pallas-multiplexer" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e66af1c76d81a6baf905828d2e527f29c7877e33486e4f955a90d93b357636bf" +name = "pallas-network" +version = "0.20.0" +source = "git+https://github.com/AndrewWestberg/pallas?rev=3a16264250e978ed8a0fb4b3899b1deb55db4923#3a16264250e978ed8a0fb4b3899b1deb55db4923" dependencies = [ "byteorder", "hex", - "log", + "itertools 0.10.5", "pallas-codec", + "pallas-crypto", "rand", + "socket2 0.5.5", "thiserror", + "tokio", "tracing", ] [[package]] name = "pallas-primitives" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "286a2d69437c9b3deaa58b8832edce3b80868ca6afeee8aff7d78f338ada9854" +version = "0.20.0" +source = "git+https://github.com/AndrewWestberg/pallas?rev=3a16264250e978ed8a0fb4b3899b1deb55db4923#3a16264250e978ed8a0fb4b3899b1deb55db4923" dependencies = [ "base58", "bech32", @@ -1350,23 +1496,24 @@ dependencies = [ [[package]] name = "pallas-traverse" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "519f950d87a031770d302fdd510dc0b744c283b65d99a1a9896f399122a9c182" +version = "0.20.0" +source = "git+https://github.com/AndrewWestberg/pallas?rev=3a16264250e978ed8a0fb4b3899b1deb55db4923#3a16264250e978ed8a0fb4b3899b1deb55db4923" dependencies = [ "hex", "pallas-addresses", "pallas-codec", "pallas-crypto", "pallas-primitives", + "paste", + "serde", "thiserror", ] [[package]] name = "parking" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parse-zoneinfo" @@ -1377,26 +1524,32 @@ dependencies = [ "regex", ] +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "phf" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ "phf_shared", ] [[package]] name = "phf_codegen" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56ac890c5e3ca598bbdeaa99964edb5b0258a583a9eb6ef4e89fc85d9224770" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" dependencies = [ "phf_generator", "phf_shared", @@ -1404,9 +1557,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ "phf_shared", "rand", @@ -1414,18 +1567,18 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ "siphasher", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -1433,26 +1586,51 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" [[package]] name = "polling" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e1f879b2998099c2d69ab9605d145d5b661195627eccc680002c4918a7fb6fa" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" dependencies = [ "autocfg", "bitflags 1.3.2", - "cfg-if 1.0.0", + "cfg-if", "concurrent-queue", "libc", "log", "pin-project-lite", - "windows-sys 0.45.0", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix 0.38.28", + "tracing", + "windows-sys 0.52.0", ] [[package]] @@ -1463,11 +1641,11 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "pretty_env_logger" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d" +checksum = "865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c" dependencies = [ - "env_logger 0.7.1", + "env_logger", "log", ] @@ -1497,24 +1675,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" -version = "1.0.26" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -1551,9 +1723,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -1561,21 +1733,31 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] name = "regex" -version = "1.7.3" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -1584,15 +1766,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.16" +version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b71749df584b7f4cac2c426c127a7c785a5106cc98f7a8feb044115f0fa254" +checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ "async-compression", "base64", @@ -1617,6 +1799,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-rustls", "tokio-util", @@ -1631,26 +1814,25 @@ dependencies = [ [[package]] name = "ring" -version = "0.16.20" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", + "getrandom", "libc", - "once_cell", "spin", "untrusted", - "web-sys", - "winapi", + "windows-sys 0.48.0", ] [[package]] name = "rusqlite" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" +checksum = "a78046161564f5e7cd9008aff3b2990b3850dc8e0349119b98e8f251e099f24d" dependencies = [ - "bitflags 2.1.0", + "bitflags 2.4.1", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -1658,64 +1840,81 @@ dependencies = [ "smallvec", ] +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + [[package]] name = "rustix" -version = "0.37.8" +version = "0.37.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aef160324be24d31a62147fae491c14d2204a3865c7ca8c3b0d7f7bcb3ea635" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" dependencies = [ "bitflags 1.3.2", "errno", "io-lifetimes", "libc", - "linux-raw-sys", + "linux-raw-sys 0.3.8", "windows-sys 0.48.0", ] +[[package]] +name = "rustix" +version = "0.38.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +dependencies = [ + "bitflags 2.4.1", + "errno", + "libc", + "linux-raw-sys 0.4.12", + "windows-sys 0.52.0", +] + [[package]] name = "rustls" -version = "0.20.8" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", "ring", + "rustls-webpki", "sct", - "webpki", ] [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ "base64", ] [[package]] -name = "ryu" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" - -[[package]] -name = "scopeguard" -version = "1.1.0" +name = "rustls-webpki" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] [[package]] -name = "scratch" -version = "1.0.5" +name = "ryu" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ "ring", "untrusted", @@ -1723,18 +1922,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.159" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde-aux" -version = "4.2.0" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3dfe1b7eb6f9dcf011bd6fad169cdeaae75eda0d61b1a99a3f015b41b0cae39" +checksum = "184eba62ebddb71658697c8b08822edee89970bf318c5362189f0de27f85b498" dependencies = [ "chrono", "serde", @@ -1753,20 +1952,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.159" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.42", ] [[package]] name = "serde_json" -version = "1.0.95" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -1785,42 +1984,71 @@ dependencies = [ "serde", ] +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", ] +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "strsim" @@ -1865,20 +2093,41 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.13" +version = "2.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" +checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] @@ -1894,33 +2143,32 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.42", ] [[package]] -name = "time" -version = "0.1.45" +name = "thread_local" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "cfg-if", + "once_cell", ] [[package]] @@ -1940,36 +2188,47 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.27.0" +version = "1.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" dependencies = [ - "autocfg", + "backtrace", "bytes", "libc", "mio", "num_cpus", "pin-project-lite", - "socket2", - "windows-sys 0.45.0", + "socket2 0.5.5", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.42", ] [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", - "webpki", ] [[package]] name = "tokio-util" -version = "0.7.7" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -1987,11 +2246,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if 1.0.0", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1999,41 +2257,73 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.42", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ + "log", "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", ] [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -2052,36 +2342,38 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "value-bag" -version = "1.0.0-alpha.9" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" -dependencies = [ - "ctor", - "version_check", -] +checksum = "4a72e1902dde2bd6441347de2b70b7f5d59bf157c6c62f0c44572607a1d55bbe" [[package]] name = "vcpkg" @@ -2103,26 +2395,19 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "waker-fn" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2131,36 +2416,36 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.42", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -2168,9 +2453,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2178,51 +2463,38 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.42", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" -dependencies = [ - "webpki", -] +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "winapi" @@ -2242,9 +2514,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -2256,151 +2528,172 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] name = "windows-sys" -version = "0.45.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.42.2", + "windows-targets 0.48.5", ] [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.52.0", ] [[package]] name = "windows-targets" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "zerocopy" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.42", ] diff --git a/Cargo.toml b/Cargo.toml index 086b155..d8a1e35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cncli" -version = "5.3.2" +version = "6.0.0-alpha1" authors = ["Andrew Westberg "] edition = "2018" build = "build.rs" @@ -10,46 +10,47 @@ links = "libsodium" [dependencies] async-std = "1.12.0" -bigdecimal = "0.3.0" -num-bigint = "0.4.3" +bigdecimal = "0.4.2" +num-bigint = "0.4.4" num-rational = "0.4.1" -blake2b_simd = "1.0.1" -byteorder = "1.4.3" -#pallas-miniprotocols = { git = "https://github.com/AndrewWestberg/pallas", rev="22b74673f749cea571703044460bfb476ee2ed8e" } -#pallas-multiplexer = { git = "https://github.com/AndrewWestberg/pallas", rev="22b74673f749cea571703044460bfb476ee2ed8e" } -#pallas-traverse = { git = "https://github.com/AndrewWestberg/pallas", rev="22b74673f749cea571703044460bfb476ee2ed8e" } -pallas-miniprotocols = "0.18.0" -pallas-multiplexer = "0.18.0" -pallas-traverse = "0.18.0" -chrono = "0.4.24" -chrono-tz = "0.8.1" -futures = "0.3.28" +blake2b_simd = "1.0.2" +byteorder = "1.5.0" +pallas-network = { git = "https://github.com/AndrewWestberg/pallas", rev="3a16264250e978ed8a0fb4b3899b1deb55db4923" } +pallas-traverse = { git = "https://github.com/AndrewWestberg/pallas", rev="3a16264250e978ed8a0fb4b3899b1deb55db4923" } +#pallas-network = "0.20.0" +#pallas-traverse = "0.20.0" +chrono = "0.4.31" +chrono-tz = "0.8.4" +futures = "0.3.29" hex = "0.4.3" -libc = "0.2.141" -net2 = "0.2.38" -regex = "1.7.3" -reqwest = { version = "0.11.16", default-features = false, features = ["blocking", "rustls-tls-webpki-roots", "rustls-tls", "json", "gzip", "deflate"] } -rusqlite = { version = "0.29.0", features = ["bundled"] } -serde = { version = "1.0.159", features = ["derive"] } -serde-aux = "4.2.0" +libc = "0.2.151" +regex = "1.10.2" +reqwest = { version = "0.11.22", default-features = false, features = ["blocking", "rustls-tls-webpki-roots", "rustls-tls", "json", "gzip", "deflate"] } +rusqlite = { version = "0.30.0", features = ["bundled"] } +serde = { version = "1.0.193", features = ["derive"] } +serde-aux = "4.3.1" serde_cbor = "0.11.2" -serde_json = "1.0.95" +serde_json = "1.0.108" +socket2 = "0.5.5" structopt = "0.3.26" rand = "0.8.5" -rayon = "1.7.0" -itertools = "0.10.5" +rayon = "1.8.0" +itertools = "0.12.0" +tokio = { version = "1", features = ["rt", "net", "io-util", "time", "sync", "macros"] } +thiserror = "1.0.51" +tracing = "0.1.37" +tracing-subscriber = "0.3.16" -# logging -log = "0.4.17" -env_logger = "0.10.0" -pretty_env_logger = "0.4.0" -[target.'cfg(not(target_env = "msvc"))'.dependencies] -jemallocator = "0.5.0" +# logging +log = "0.4.20" +env_logger = "0.10.1" +pretty_env_logger = "0.5.0" [build-dependencies] autotools = "0.2.6" -pkg-config = "0.3.26" +pkg-config = "0.3.28" +built = { version = "0.7.1", features = ["git2"] } [features] libsodium-sys = [] diff --git a/build.rs b/build.rs index 3fb2a74..6eb7ff6 100644 --- a/build.rs +++ b/build.rs @@ -10,6 +10,8 @@ macro_rules! log { } fn main() { + built::write_built_file().expect("Failed to acquire build-time information"); + #[cfg(not(feature = "libsodium-sys"))] { // Use set libsodium env path diff --git a/contrib/libsodium b/contrib/libsodium index 66f017f..dbb48cc 160000 --- a/contrib/libsodium +++ b/contrib/libsodium @@ -1 +1 @@ -Subproject commit 66f017f16633f2060db25e17c170c2afa0f2a8a1 +Subproject commit dbb48cce5429cb6585c9034f002568964f1ce567 diff --git a/src/lib.rs b/src/lib.rs index 681a3e1..8e003fa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -267,7 +267,7 @@ pub mod nodeclient { }, } - pub fn start(cmd: Command) { + pub async fn start(cmd: Command) { match cmd { Command::Ping { ref host, @@ -275,7 +275,7 @@ pub mod nodeclient { ref network_magic, ref timeout_seconds, } => { - ping::ping(&mut stdout(), host.as_str(), *port, *network_magic, *timeout_seconds); + ping::ping(&mut stdout(), host.as_str(), *port, *network_magic, *timeout_seconds).await; } Command::Validate { ref db, ref hash } => { validate::validate_block(db, hash.as_str()); @@ -295,7 +295,8 @@ pub mod nodeclient { *network_magic, shelley_genesis_hash.as_str(), *no_service, - ); + ) + .await; } Command::Leaderlog { ref db, @@ -371,14 +372,14 @@ pub mod nodeclient { let api_key = pooltool_config.api_key.clone(); let cardano_node_path = cardano_node.clone(); handles.push(thread::spawn(move || { - sync::sendtip( + tokio::runtime::Runtime::new().unwrap().block_on(sync::sendtip( pool.name, pool.pool_id, pool.host, pool.port, api_key, &cardano_node_path, - ); + )); })); } diff --git a/src/main.rs b/src/main.rs index a8b20da..9b255e6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,24 +3,32 @@ extern crate chrono_tz; use std::env::{set_var, var}; use std::{panic, process}; -#[cfg(not(target_env = "msvc"))] -use jemallocator::Jemalloc; use structopt::StructOpt; use cncli::nodeclient::{self, Command}; -#[cfg(not(target_env = "msvc"))] -#[global_allocator] -static GLOBAL: Jemalloc = Jemalloc; +pub mod built_info { + include!(concat!(env!("OUT_DIR"), "/built.rs")); + + pub fn version() -> &'static str { + Box::leak(Box::new(format!( + "v{} <{}> ({})", + PKG_VERSION, + GIT_COMMIT_HASH_SHORT.unwrap_or("unknown"), + TARGET + ))) + } +} #[derive(Debug, StructOpt)] -#[structopt(name = "cncli", about = "A community-built cardano-node CLI")] +#[structopt(name = "cncli", about = "A community-built cardano-node CLI", version = built_info::version())] struct Cli { #[structopt(subcommand)] cmd: Command, } -fn main() { +#[tokio::main] +async fn main() { match var("RUST_LOG") { Ok(_) => {} Err(_) => { @@ -30,6 +38,25 @@ fn main() { } pretty_env_logger::init_timed(); + let tracing_filter = match var("RUST_LOG") { + Ok(level) => match level.to_lowercase().as_str() { + "error" => tracing::Level::ERROR, + "warn" => tracing::Level::WARN, + "info" => tracing::Level::INFO, + "debug" => tracing::Level::DEBUG, + "trace" => tracing::Level::TRACE, + _ => tracing::Level::INFO, + }, + Err(_) => tracing::Level::INFO, + }; + + tracing::subscriber::set_global_default( + tracing_subscriber::FmtSubscriber::builder() + .with_max_level(tracing_filter) + .finish(), + ) + .unwrap(); + // take_hook() returns the default hook in case when a custom one is not set let orig_hook = panic::take_hook(); panic::set_hook(Box::new(move |panic_info| { @@ -39,7 +66,7 @@ fn main() { })); let args = Cli::from_args(); - nodeclient::start(args.cmd) + nodeclient::start(args.cmd).await; } #[cfg(test)] diff --git a/src/nodeclient/leaderlog/libsodium.rs b/src/nodeclient/leaderlog/libsodium.rs index 85139ce..49db7f2 100644 --- a/src/nodeclient/leaderlog/libsodium.rs +++ b/src/nodeclient/leaderlog/libsodium.rs @@ -1,19 +1,19 @@ #[link(name = "sodium", kind = "static")] extern "C" { - // int crypto_vrf_prove(unsigned char *proof, const unsigned char *sk, const unsigned char *m, unsigned long long mlen); - fn crypto_vrf_prove(proof: *mut u8, sk: *const u8, m: *const u8, mlen: u64) -> i32; + // int crypto_vrf_ietfdraft03_prove(unsigned char *proof, const unsigned char *sk, const unsigned char *m, unsigned long long mlen); + fn crypto_vrf_ietfdraft03_prove(proof: *mut u8, sk: *const u8, m: *const u8, mlen: u64) -> i32; - // int crypto_vrf_proof_to_hash(unsigned char *hash, const unsigned char *proof); - fn crypto_vrf_proof_to_hash(hash: *mut u8, proof: *const u8) -> i32; + // int crypto_vrf_ietfdraft03_proof_to_hash(unsigned char *hash, const unsigned char *proof); + fn crypto_vrf_ietfdraft03_proof_to_hash(hash: *mut u8, proof: *const u8) -> i32; - // int crypto_vrf_verify(unsigned char *output, const unsigned char *pk, const unsigned char *proof, const unsigned char *m, unsigned long long mlen) - fn crypto_vrf_verify(output: *mut u8, pk: *const u8, proof: *const u8, m: *const u8, mlen: u64) -> i32; + // int crypto_vrf_ietfdraft03_verify(unsigned char *output, const unsigned char *pk, const unsigned char *proof, const unsigned char *m, unsigned long long mlen) + fn crypto_vrf_ietfdraft03_verify(output: *mut u8, pk: *const u8, proof: *const u8, m: *const u8, mlen: u64) -> i32; } pub(crate) fn sodium_crypto_vrf_prove(secret_key: &[u8], seed: &[u8]) -> Result, String> { let mut proof: Vec = Vec::with_capacity(80); unsafe { - let rc = crypto_vrf_prove( + let rc = crypto_vrf_ietfdraft03_prove( proof.as_mut_ptr(), secret_key.as_ptr(), seed.as_ptr(), @@ -21,7 +21,7 @@ pub(crate) fn sodium_crypto_vrf_prove(secret_key: &[u8], seed: &[u8]) -> Result< ); if rc != 0 { Err(format!( - "libsodium crypto_vrf_prove() failed, returned {rc}, expected 0" + "libsodium crypto_vrf_ietfdraft03_prove() failed, returned {rc}, expected 0" )) } else { proof.set_len(80); @@ -33,10 +33,10 @@ pub(crate) fn sodium_crypto_vrf_prove(secret_key: &[u8], seed: &[u8]) -> Result< pub(crate) fn sodium_crypto_vrf_proof_to_hash(proof: &[u8]) -> Result, String> { let mut hash: Vec = Vec::with_capacity(64); unsafe { - let rc = crypto_vrf_proof_to_hash(hash.as_mut_ptr(), proof.as_ptr()); + let rc = crypto_vrf_ietfdraft03_proof_to_hash(hash.as_mut_ptr(), proof.as_ptr()); if rc != 0 { Err(format!( - "libsodium crypto_vrf_proof_to_hash() failed, returned {rc}, expected 0" + "libsodium crypto_vrf_ietfdraft03_proof_to_hash() failed, returned {rc}, expected 0" )) } else { hash.set_len(64); @@ -48,7 +48,7 @@ pub(crate) fn sodium_crypto_vrf_proof_to_hash(proof: &[u8]) -> Result, S pub(crate) fn sodium_crypto_vrf_verify(public_key: &[u8], signature: &[u8], seed: &[u8]) -> Result, String> { let mut verification: Vec = Vec::with_capacity(64); unsafe { - let rc = crypto_vrf_verify( + let rc = crypto_vrf_ietfdraft03_verify( verification.as_mut_ptr(), public_key.as_ptr(), signature.as_ptr(), @@ -57,7 +57,7 @@ pub(crate) fn sodium_crypto_vrf_verify(public_key: &[u8], signature: &[u8], seed ); if rc != 0 { Err(format!( - "libsodium crypto_vrf_verify() failed, returned {rc}, expected 0" + "libsodium crypto_vrf_ietfdraft03_verify() failed, returned {rc}, expected 0" )) } else { verification.set_len(64); diff --git a/src/nodeclient/ping.rs b/src/nodeclient/ping.rs index c76f304..8e79ae6 100644 --- a/src/nodeclient/ping.rs +++ b/src/nodeclient/ping.rs @@ -2,12 +2,9 @@ use std::io::Write; use std::net::{SocketAddr, ToSocketAddrs}; use std::time::{Duration, Instant}; -use futures::executor::block_on; -use net2::TcpStreamExt; -use pallas_miniprotocols::handshake; -use pallas_miniprotocols::handshake::Confirmation; -use pallas_multiplexer::bearers::Bearer; -use pallas_multiplexer::StdPlexer; +use pallas_network::miniprotocols::handshake::Confirmation; +use pallas_network::miniprotocols::{handshake, PROTOCOL_N2N_HANDSHAKE}; +use pallas_network::multiplexer::{Bearer, Plexer}; use serde::Serialize; #[derive(Debug, Serialize)] @@ -32,72 +29,62 @@ struct PingError { error_message: String, } -pub fn ping(out: &mut W, host: &str, port: u16, network_magic: u64, timeout_seconds: u64) { - block_on(async { - let start = Instant::now(); - let socket_addrs_result = format!("{host}:{port}").to_socket_addrs(); - match socket_addrs_result { - Ok(mut socket_addrs) => { - let socket_addr: &SocketAddr = &socket_addrs.next().unwrap(); - let dns_duration = start.elapsed(); - match Bearer::connect_tcp_timeout(socket_addr, Duration::from_secs(timeout_seconds)) { - Ok(bearer) => { - match &bearer { - Bearer::Tcp(tcp_stream) => { - tcp_stream.set_keepalive_ms(Some(30_000u32)).unwrap(); - tcp_stream - .set_read_timeout(Some(Duration::from_secs(timeout_seconds))) - .unwrap(); - } - Bearer::Unix(_) => {} - } - let connect_duration = start.elapsed() - dns_duration; +pub async fn ping(out: &mut W, host: &str, port: u16, network_magic: u64, timeout_seconds: u64) { + let start = Instant::now(); + let socket_addrs_result = format!("{host}:{port}").to_socket_addrs(); + match socket_addrs_result { + Ok(mut socket_addrs) => { + let socket_addr: &SocketAddr = &socket_addrs.next().unwrap(); + let dns_duration = start.elapsed(); + match Bearer::connect_tcp_timeout(socket_addr, Duration::from_secs(timeout_seconds)).await { + Ok(bearer) => { + let connect_duration = start.elapsed() - dns_duration; - let mut plexer = StdPlexer::new(bearer); + let mut plexer = Plexer::new(bearer); - //handshake is channel0 - let channel0 = plexer.use_channel(0); + let hs_channel = plexer.subscribe_client(PROTOCOL_N2N_HANDSHAKE); - plexer.muxer.spawn(); - plexer.demuxer.spawn(); + let _plexer_handle = tokio::spawn(async move { plexer.run().await }); - let versions = handshake::n2n::VersionTable::v7_and_above(network_magic); - let mut client = handshake::N2NClient::new(channel0); - match client.handshake(versions) { - Ok(confirmation) => match confirmation { - Confirmation::Accepted(version_number, _) => { - let total_duration = start.elapsed(); - let handshake_duration = total_duration - connect_duration - dns_duration; - ping_json_success( - out, - dns_duration, - connect_duration, - handshake_duration, - total_duration, - version_number, - host, - port, - ); - } - Confirmation::Rejected(refuse_reason) => { - ping_json_error(out, format!("{refuse_reason:?}"), host, port); - } - }, - Err(error) => { - ping_json_error(out, format!("{error}"), host, port); + let versions = handshake::n2n::VersionTable::v7_and_above(network_magic); + let mut client = handshake::Client::new(hs_channel); + match client.handshake(versions).await { + Ok(confirmation) => match confirmation { + Confirmation::Accepted(version_number, _) => { + let total_duration = start.elapsed(); + let handshake_duration = total_duration - connect_duration - dns_duration; + ping_json_success( + out, + dns_duration, + connect_duration, + handshake_duration, + total_duration, + version_number, + host, + port, + ); + } + Confirmation::Rejected(refuse_reason) => { + ping_json_error(out, format!("{refuse_reason:?}"), host, port); + } + Confirmation::QueryReply(_) => { + ping_json_error(out, "Unexpected QueryReply".to_string(), host, port); } + }, + Err(error) => { + ping_json_error(out, format!("{error}"), host, port); } } - Err(error) => { - ping_json_error(out, error.to_string(), host, port); - } + } + Err(error) => { + ping_json_error(out, error.to_string(), host, port); } } - Err(error) => { - ping_json_error(out, error.to_string(), host, port); - } } - }); + Err(error) => { + ping_json_error(out, error.to_string(), host, port); + } + } } #[allow(clippy::too_many_arguments)] diff --git a/src/nodeclient/sync.rs b/src/nodeclient/sync.rs index 032bd9f..46f9fe1 100644 --- a/src/nodeclient/sync.rs +++ b/src/nodeclient/sync.rs @@ -4,17 +4,20 @@ use std::ops::Sub; use std::path::Path; use std::time::{Duration, Instant}; -use async_std::task; -use futures::executor::block_on; +use futures::{pin_mut, FutureExt}; +use thiserror::Error; + use log::{debug, error, info, warn}; -use net2::TcpStreamExt; -use pallas_miniprotocols::chainsync::{HeaderContent, NextResponse, Tip}; -use pallas_miniprotocols::handshake::n2n::VersionData; -use pallas_miniprotocols::handshake::{Confirmation, Error}; -use pallas_miniprotocols::{chainsync, handshake, Point, MAINNET_MAGIC}; -use pallas_multiplexer::bearers::Bearer; -use pallas_multiplexer::{StdChannel, StdPlexer}; +use pallas_network::miniprotocols::chainsync::{HeaderContent, NextResponse, Tip}; +use pallas_network::miniprotocols::handshake::n2n::VersionData; +use pallas_network::miniprotocols::handshake::Confirmation; +use pallas_network::miniprotocols::{ + chainsync, handshake, keepalive, Point, MAINNET_MAGIC, PROTOCOL_N2N_CHAIN_SYNC, PROTOCOL_N2N_HANDSHAKE, + PROTOCOL_N2N_KEEP_ALIVE, +}; +use pallas_network::multiplexer::{AgentChannel, Bearer, Plexer}; use pallas_traverse::MultiEraHeader; +use tokio::select; use crate::nodeclient::pooltool; use crate::nodeclient::sqlite; @@ -22,6 +25,24 @@ use crate::nodeclient::sqlite::BlockStore; const FIVE_SECS: Duration = Duration::from_secs(5); +#[derive(Error, Debug)] +pub enum Error { + #[error("loggingobserver error occurred")] + LoggingObserverError(String), + + #[error("pallas_traverse error occurred")] + PallasTraverseError(#[from] pallas_traverse::Error), + + #[error("io error occurred")] + IoError(#[from] std::io::Error), + + #[error("keepalive error occurred")] + KeepAliveError(#[from] keepalive::Error), + + #[error("chainsync error occurred")] + ChainSyncError(#[from] pallas_network::miniprotocols::chainsync::ClientError), +} + #[derive(Debug, Clone)] pub struct BlockHeader { pub block_number: i64, @@ -49,7 +70,7 @@ pub struct BlockHeader { struct LoggingObserver { pub last_log_time: Instant, pub exit_when_tip_reached: bool, - pub block_store: Option>, + pub block_store: Option>, pub shelley_genesis_hash: String, pub pending_blocks: Vec, } @@ -72,22 +93,14 @@ enum Continuation { } trait Observer { - fn on_roll_forward( - &mut self, - content: &HeaderContent, - tip: &Tip, - ) -> Result>; - fn on_rollback(&mut self, point: &Point) -> Result>; - fn on_tip_reached(&mut self) -> Result>; + fn on_roll_forward(&mut self, content: &HeaderContent, tip: &Tip) -> Result; + fn on_rollback(&mut self, point: &Point) -> Result; + fn on_tip_reached(&mut self) -> Result; } impl Observer for LoggingObserver { - fn on_roll_forward( - &mut self, - content: &HeaderContent, - tip: &Tip, - ) -> Result> { - let mut result: Result> = Ok(Continuation::Proceed); + fn on_roll_forward(&mut self, content: &HeaderContent, tip: &Tip) -> Result { + let mut result: Result = Ok(Continuation::Proceed); match content.byron_prefix { None => { let multi_era_header = MultiEraHeader::decode(content.variant, None, &content.cbor); @@ -146,7 +159,7 @@ impl Observer for LoggingObserver { "block {} of {}: {:.2}% sync'd", header.header_body.block_number, tip.1, - block_number / tip_block_number * 100.0 + (block_number / tip_block_number * 10000.0).floor() / 100.0 ); self.last_log_time = Instant::now(); } @@ -222,13 +235,13 @@ impl Observer for LoggingObserver { result } - fn on_rollback(&mut self, point: &Point) -> Result> { + fn on_rollback(&mut self, point: &Point) -> Result { debug!("asked to roll back {:?}", point); Ok(Continuation::Proceed) } - fn on_tip_reached(&mut self) -> Result> { + fn on_tip_reached(&mut self) -> Result { debug!("tip was reached"); if self.exit_when_tip_reached { info!("Exiting..."); @@ -239,19 +252,22 @@ impl Observer for LoggingObserver { } } -fn do_handshake(channel: StdChannel, network_magic: u64) -> Result, Error> { +async fn do_handshake( + channel: AgentChannel, + network_magic: u64, +) -> Result, handshake::Error> { let versions = handshake::n2n::VersionTable::v7_and_above(network_magic); - let mut client = handshake::N2NClient::new(channel); - client.handshake(versions) + let mut client = handshake::Client::new(channel); + client.handshake(versions).await } -fn do_chainsync( - channel: StdChannel, +async fn do_chainsync( + channel: AgentChannel, skip_to_tip: bool, exit_when_tip_reached: bool, - mut block_store: Option>, - shelley_genesis_hash: &str, -) { + mut block_store: Option>, + shelley_genesis_hash: String, +) -> Result<(), Error> { let mut chain_blocks: Vec = vec![]; /* Classic sync: Use blocks from store if available. */ @@ -302,167 +318,162 @@ fn do_chainsync( let mut client = chainsync::N2NClient::new(channel); if skip_to_tip { - match client.intersect_tip() { - Ok(_) => {} - Err(err) => { - error!("intersect_tip error!: {:?}", err); - return; - } - } + client.intersect_tip().await?; } else { - match client.find_intersect(chain_blocks) { - Ok(_) => {} - Err(err) => { - error!("find_intersect error!: {:?}", err); - return; - } - } + client.find_intersect(chain_blocks).await?; } let mut logging_observer = LoggingObserver { exit_when_tip_reached, block_store, - shelley_genesis_hash: shelley_genesis_hash.to_string(), + shelley_genesis_hash, ..Default::default() }; - let next_result = client.request_next(); - if next_result.is_err() { - error!("request_next error!: {:?}", next_result.unwrap_err()); - return; - } - let mut next = next_result.unwrap(); + let mut next = client.request_next().await?; loop { match &next { NextResponse::RollForward(header_content, tip) => { - match logging_observer.on_roll_forward(header_content, tip) { - Ok(continuation) => match continuation { - Continuation::Proceed => match client.request_next() { - Ok(next_response) => { - next = next_response; - } - Err(error) => { - error!("{:?}", error); - break; - } - }, - Continuation::DropOut => { - match client.send_done() { - Ok(_) => {} - Err(error) => { - error!("{:?}", error); - } - } - break; - } - }, - Err(error) => { - error!("{:?}", error); - break; - } - } - } - NextResponse::RollBackward(point, _tip) => match logging_observer.on_rollback(point) { - Ok(continuation) => match continuation { - Continuation::Proceed => match client.request_next() { - Ok(next_response) => { - next = next_response; - } - Err(error) => { - error!("{:?}", error); - break; - } - }, + match logging_observer.on_roll_forward(header_content, tip)? { + Continuation::Proceed => next = client.request_next().await?, Continuation::DropOut => { - match client.send_done() { - Ok(_) => {} - Err(error) => { - error!("{:?}", error); - } - } - break; + client.send_done().await?; + return Ok(()); } - }, - Err(error) => { - error!("{:?}", error); - break; - } - }, - NextResponse::Await => match client.recv_while_must_reply() { - Ok(next_response) => { - next = next_response; } - Err(error) => { - error!("{:?}", error); - break; + } + NextResponse::RollBackward(point, _tip) => match logging_observer.on_rollback(point)? { + Continuation::Proceed => next = client.request_next().await?, + Continuation::DropOut => { + client.send_done().await?; + return Ok(()); } }, + NextResponse::Await => next = client.recv_while_must_reply().await?, } } } -pub(crate) fn sync(db: &Path, host: &str, port: u16, network_magic: u64, shelley_genesis_hash: &str, no_service: bool) { - block_on(async { - loop { - // Retry to establish connection forever - let block_store = sqlite::SqLiteBlockStore::new(db).unwrap(); - match Bearer::connect_tcp_timeout( - &format!("{host}:{port}").to_socket_addrs().unwrap().next().unwrap(), - Duration::from_secs(5), - ) { - Ok(bearer) => { - match &bearer { - Bearer::Tcp(tcp_stream) => { - tcp_stream.set_keepalive_ms(Some(30_000u32)).unwrap(); - } - Bearer::Unix(_) => {} - } - - let mut plexer = StdPlexer::new(bearer); - - //handshake is channel0 - let channel0 = plexer.use_channel(0); - //chainsync is channel2 - let channel2 = plexer.use_channel(2); - - plexer.muxer.spawn(); - plexer.demuxer.spawn(); +async fn do_keepalive(channel: AgentChannel) -> Result<(), Error> { + let mut client = keepalive::Client::new(channel); + debug!("keepalive process started!"); + loop { + tokio::time::sleep(Duration::from_secs(20)).await; + debug!("sending keepalive..."); + client.send_keepalive().await?; + debug!("keepalive sent!"); + } +} - match do_handshake(channel0, network_magic) { - Ok(confirmation) => match confirmation { - Confirmation::Accepted(_, _) => { +pub(crate) async fn sync( + db: &Path, + host: &str, + port: u16, + network_magic: u64, + shelley_genesis_hash: &str, + no_service: bool, +) { + loop { + // Retry to establish connection forever + let block_store = sqlite::SqLiteBlockStore::new(db).unwrap(); + match Bearer::connect_tcp_timeout( + &format!("{host}:{port}").to_socket_addrs().unwrap().next().unwrap(), + FIVE_SECS, + ) + .await + { + Ok(bearer) => { + let mut plexer = Plexer::new(bearer); + + let hs_channel = plexer.subscribe_client(PROTOCOL_N2N_HANDSHAKE); + let cs_channel = plexer.subscribe_client(PROTOCOL_N2N_CHAIN_SYNC); + let ka_channel = plexer.subscribe_client(PROTOCOL_N2N_KEEP_ALIVE); + + let plexer_handle = tokio::spawn(async move { plexer.run().await }); + + match do_handshake(hs_channel, network_magic).await { + Ok(confirmation) => match confirmation { + Confirmation::Accepted(_, _) => { + let shelley_genesis_hash = shelley_genesis_hash.to_string(); + let cs_handle = tokio::spawn(async move { do_chainsync( - channel2, + cs_channel, false, no_service, Some(Box::new(block_store)), shelley_genesis_hash, - ); - } - Confirmation::Rejected(refuse_reason) => { - error!("{:?}", refuse_reason); + ) + .await?; + Ok::<(), Error>(()) + }) + .fuse(); + let ka_handle = tokio::spawn(async move { + do_keepalive(ka_channel).await?; + Ok::<(), Error>(()) + }) + .fuse(); + + pin_mut!(cs_handle, ka_handle); + select! { + cs_result = cs_handle => { + match cs_result { + Ok(result) => { + match result { + Ok(_) => {} + Err(error) => { + error!("chainsync error: {:?}", error); + } + } + } + Err(error) => { + error!("chainsync error: {:?}", error); + } + } + } + ka_result = ka_handle => { + match ka_result { + Ok(result) => { + match result { + Ok(_) => {} + Err(error) => { + error!("keepalive error: {:?}", error); + } + } + } + Err(error) => { + error!("keepalive error: {:?}", error); + } + } + } } - }, - Err(error) => { - error!("{:?}", error); + plexer_handle.abort(); } + Confirmation::Rejected(refuse_reason) => { + error!("{:?}", refuse_reason); + } + Confirmation::QueryReply(_) => { + error!("Unexpected QueryReply"); + } + }, + Err(error) => { + error!("{:?}", error); } } - Err(error) => { - error!("{}", error); - } } - - if no_service { - break; + Err(error) => { + error!("{}", error); } + } - warn!("Disconnected... retry in 5 secs..."); - task::sleep(Duration::from_secs(5)).await; + if no_service { + break; } - }); + + warn!("Disconnected... retry in 5 secs..."); + tokio::time::sleep(FIVE_SECS).await; + } } -pub(crate) fn sendtip( +pub(crate) async fn sendtip( pool_name: String, pool_id: String, host: String, @@ -470,64 +481,103 @@ pub(crate) fn sendtip( api_key: String, cardano_node_path: &Path, ) { - block_on(async { - loop { - let pooltool_notifier = pooltool::PoolToolNotifier { - pool_name: pool_name.clone(), - pool_id: pool_id.clone(), - api_key: api_key.clone(), - cardano_node_path: cardano_node_path.to_path_buf(), - ..Default::default() - }; - match Bearer::connect_tcp_timeout( - &format!("{host}:{port}").to_socket_addrs().unwrap().next().unwrap(), - Duration::from_secs(5), - ) { - Ok(bearer) => { - match &bearer { - Bearer::Tcp(tcp_stream) => { - tcp_stream.set_keepalive_ms(Some(30_000u32)).unwrap(); - } - Bearer::Unix(_) => {} - } - - let mut plexer = StdPlexer::new(bearer); - - //handshake is channel0 - let channel0 = plexer.use_channel(0); - //chainsync is channel2 - let channel2 = plexer.use_channel(2); - - plexer.muxer.spawn(); - plexer.demuxer.spawn(); - - match do_handshake(channel0, MAINNET_MAGIC) { - Ok(confirmation) => match confirmation { - Confirmation::Accepted(_, _) => { + loop { + let pooltool_notifier = pooltool::PoolToolNotifier { + pool_name: pool_name.clone(), + pool_id: pool_id.clone(), + api_key: api_key.clone(), + cardano_node_path: cardano_node_path.to_path_buf(), + ..Default::default() + }; + match Bearer::connect_tcp_timeout( + &format!("{host}:{port}").to_socket_addrs().unwrap().next().unwrap(), + FIVE_SECS, + ) + .await + { + Ok(bearer) => { + let mut plexer = Plexer::new(bearer); + + let hs_channel = plexer.subscribe_client(PROTOCOL_N2N_HANDSHAKE); + let cs_channel = plexer.subscribe_client(PROTOCOL_N2N_CHAIN_SYNC); + let ka_channel = plexer.subscribe_client(PROTOCOL_N2N_KEEP_ALIVE); + + let plexer_handle = tokio::spawn(async move { plexer.run().await }); + + match do_handshake(hs_channel, MAINNET_MAGIC).await { + Ok(confirmation) => match confirmation { + Confirmation::Accepted(_, _) => { + let cs_handle = tokio::spawn(async move { do_chainsync( - channel2, + cs_channel, true, false, Some(Box::new(pooltool_notifier)), - "1a3be38bcbb7911969283716ad7aa550250226b76a61fc51cc9a9a35d9276d81", - ); - } - Confirmation::Rejected(refuse_reason) => { - error!("{:?}", refuse_reason); + "1a3be38bcbb7911969283716ad7aa550250226b76a61fc51cc9a9a35d9276d81".to_string(), + ) + .await?; + Ok::<(), Error>(()) + }) + .fuse(); + let ka_handle = tokio::spawn(async move { + do_keepalive(ka_channel).await?; + Ok::<(), Error>(()) + }) + .fuse(); + + pin_mut!(cs_handle, ka_handle); + select! { + cs_result = cs_handle => { + match cs_result { + Ok(result) => { + match result { + Ok(_) => {} + Err(error) => { + error!("chainsync error: {:?}", error); + } + } + } + Err(error) => { + error!("chainsync error: {:?}", error); + } + } + } + ka_result = ka_handle => { + match ka_result { + Ok(result) => { + match result { + Ok(_) => {} + Err(error) => { + error!("keepalive error: {:?}", error); + } + } + } + Err(error) => { + error!("keepalive error: {:?}", error); + } + } + } } - }, - Err(error) => { - error!("{:?}", error); + plexer_handle.abort(); + } + Confirmation::Rejected(refuse_reason) => { + error!("{:?}", refuse_reason); + } + Confirmation::QueryReply(_) => { + error!("Unexpected QueryReply"); } + }, + Err(error) => { + error!("{:?}", error); } } - Err(error) => { - error!("{}", error); - } } - - warn!("Disconnected... retry in 5 secs..."); - task::sleep(Duration::from_secs(5)).await; + Err(error) => { + error!("{}", error); + } } - }); + + warn!("Disconnected... retry in 5 secs..."); + tokio::time::sleep(FIVE_SECS).await; + } } diff --git a/src/test.rs b/src/test.rs index 6cf2c24..5eacb01 100644 --- a/src/test.rs +++ b/src/test.rs @@ -26,14 +26,14 @@ fn test_is_overlay_slot() { assert!(is_overlay_slot(&first_slot_of_epoch, ¤t_slot, &d)); } -#[test] -fn test_ping() { +#[tokio::test] +async fn test_ping() { let host = "preprod-node.world.dev.cardano.org".to_string(); let port = 30000; let network_magic = 1; let mut stdout: Vec = Vec::new(); - ping::ping(&mut stdout, &host, port, network_magic, 2); + ping::ping(&mut stdout, &host, port, network_magic, 2).await; assert_eq!( &std::str::from_utf8(&stdout).unwrap()[..86], @@ -41,46 +41,47 @@ fn test_ping() { ); } -#[test] -fn test_ping_failure_address() { +#[tokio::test] +async fn test_ping_failure_address() { let host = "murrika.relays-new.cardano-testnet.iohkdev.io".to_string(); let port = 30000; let network_magic = 1; let mut stdout: Vec = Vec::new(); - ping::ping(&mut stdout, &host, port, network_magic, 2); + ping::ping(&mut stdout, &host, port, network_magic, 2).await; - #[cfg(target_os = "macos")] - assert_eq!(&std::str::from_utf8(&stdout).unwrap()[..], "{\n \"status\": \"error\",\n \"host\": \"murrika.relays-new.cardano-testnet.iohkdev.io\",\n \"port\": 30000,\n \"errorMessage\": \"failed to lookup address information: nodename nor servname provided, or not known\"\n}"); - - #[cfg(target_os = "linux")] - assert_eq!(std::str::from_utf8(&stdout).unwrap(), "{\n \"status\": \"error\",\n \"host\": \"murrika.relays-new.cardano-testnet.iohkdev.io\",\n \"port\": 30000,\n \"errorMessage\": \"failed to lookup address information: Name does not resolve\"\n}"); + let regex_str = ".*failed to lookup address information: .*"; + let regex = Regex::new(regex_str); + let ping_result = std::str::from_utf8(&stdout).unwrap(); + // println!("ping_result: {}", ping_result); + assert_eq!(regex.unwrap().is_match(ping_result), true); } -#[test] -fn test_ping_failure_bad_port() { +#[tokio::test] +async fn test_ping_failure_bad_port() { let host = "preprod-node.world.dev.cardano.org".to_string(); let port = 3992; let network_magic = 1; let mut stdout: Vec = Vec::new(); - ping::ping(&mut stdout, &host, port, network_magic, 2); + ping::ping(&mut stdout, &host, port, network_magic, 2).await; assert_eq!(std::str::from_utf8(&stdout).unwrap(), "{\n \"status\": \"error\",\n \"host\": \"preprod-node.world.dev.cardano.org\",\n \"port\": 3992,\n \"errorMessage\": \"connection timed out\"\n}"); } -#[test] -fn test_ping_failure_bad_magic() { +#[tokio::test] +async fn test_ping_failure_bad_magic() { let host = "preprod-node.world.dev.cardano.org".to_string(); let port = 30000; let network_magic = 111111; let mut stdout: Vec = Vec::new(); - ping::ping(&mut stdout, &host, port, network_magic, 2); + ping::ping(&mut stdout, &host, port, network_magic, 2).await; - let regex_str = "\\{\\n \"status\": \"error\",\\n \"host\": \"preprod-node.world.dev.cardano.org\",\\n \"port\": 30000,\\n \"errorMessage\": \"Refused\\(\\d+, \\\\\"version data mismatch: NodeToNodeVersionData \\{networkMagic = NetworkMagic \\{unNetworkMagic = 1\\}, diffusionMode = InitiatorAndResponderDiffusionMode} /= NodeToNodeVersionData \\{networkMagic = NetworkMagic \\{unNetworkMagic = 111111\\}, diffusionMode = InitiatorAndResponderDiffusionMode}\\\\\"\\)\"\\n\\}"; + let regex_str = ".*\"Refused\\(\\d+, \\\\\"version data mismatch.*"; let regex = Regex::new(regex_str); let ping_result = std::str::from_utf8(&stdout).unwrap(); + // println!("ping_result: {}", ping_result); assert_eq!(regex.unwrap().is_match(ping_result), true); } @@ -138,7 +139,7 @@ fn test_split_ln() { fn test_ln() { let x = BigDecimal::one(); let ln_x = ln(&x); - assert_eq!(ln_x.to_string(), "0.0000000000000000000000000000000000"); + assert_eq!(ln_x.to_string(), "0"); let x = BigDecimal::from_str("0.95").unwrap(); let ln_x = ln(&x);