From 138f5445cea7619e4aa9c0d5cac520263af7043c Mon Sep 17 00:00:00 2001 From: telezhnaya Date: Tue, 21 May 2024 22:10:29 +0100 Subject: [PATCH 1/6] drop self token transfer It doesn't look like a common usage scenario --- README.md | 2 +- src/transaction/engine.rs | 3 +- src/transaction/mod.rs | 1 - src/transaction/self_token_transfer.rs | 67 -------------------------- 4 files changed, 2 insertions(+), 71 deletions(-) delete mode 100644 src/transaction/self_token_transfer.rs diff --git a/README.md b/README.md index ae19af4..99e3215 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Check the program's help: `cargo run -- -h`. List the supported transactions: `cargo run -- list`. -Run a single transaction once: `cargo run -- test self_token_transfer `. +Run a single transaction once: `cargo run -- test token_transfer `. Run the bechmarks until the program is manually halted: `cargo run -- run `. diff --git a/src/transaction/engine.rs b/src/transaction/engine.rs index 64ee5a2..aa3191f 100644 --- a/src/transaction/engine.rs +++ b/src/transaction/engine.rs @@ -9,7 +9,7 @@ use crate::{ Account, AppError, Transaction, }; -use super::{self_token_transfer::SelfTokenTransfer, TransactionKind}; +use super::TransactionKind; use tokio::{sync::oneshot::Receiver, task::JoinSet, time::interval}; type Transactions = HashMap>; @@ -31,7 +31,6 @@ impl Engine { }; } - add_transaction!(SelfTokenTransfer); add_transaction!(TokenTransfer); Engine { transactions } diff --git a/src/transaction/mod.rs b/src/transaction/mod.rs index 9d3e62b..830a0f9 100644 --- a/src/transaction/mod.rs +++ b/src/transaction/mod.rs @@ -9,7 +9,6 @@ use crate::{Account, AppError}; pub mod engine; -mod self_token_transfer; mod token_transfer; #[derive(Debug, PartialEq, Eq, Hash, Display, From, Deref, Constructor, Clone)] diff --git a/src/transaction/self_token_transfer.rs b/src/transaction/self_token_transfer.rs deleted file mode 100644 index d485852..0000000 --- a/src/transaction/self_token_transfer.rs +++ /dev/null @@ -1,67 +0,0 @@ -use crate::{Account, AppError, Transaction, TransactionOutcome}; -use async_trait::async_trait; -use tokio::{process::Command, time::Instant}; -use tracing::{debug, warn}; - -use super::TransactionKind; - -pub struct SelfTokenTransfer {} - -#[async_trait] -impl Transaction for SelfTokenTransfer { - fn kind(&self) -> TransactionKind { - TransactionKind("self_token_transfer".to_string()) - } - - async fn execute( - &self, - account: &Account, - key_path: &str, - ) -> Result { - let now = Instant::now(); - let output_result = Command::new("near") - .args([ - "tokens", - &account.signer_id, - "send-near", - &account.signer_id, - "1 yoctoNEAR", - "network-config", - &account.network, - "sign-with-access-key-file", - &format!( - "{}/.near-credentials/{}/{}.json", - key_path, account.network, account.signer_id - ), - "send", - ]) - .output() - .await; - let elapsed = now.elapsed(); - - match output_result { - Ok(output) => { - if output.status.success() { - debug!( - "successful call to near token send:\n{}\n{}", - String::from_utf8_lossy(&output.stdout), - String::from_utf8_lossy(&output.stderr) - ); - Ok(TransactionOutcome::new(elapsed)) - } else { - warn!( - "failure during call to near token send:\n{}\n{}", - String::from_utf8_lossy(&output.stdout), - String::from_utf8_lossy(&output.stderr) - ); - Err(AppError::TransactionError( - "near token send-near failed".to_string(), - )) - } - } - Err(err) => Err(AppError::TransactionError(format!( - "near CLI invocation failure ({err})" - ))), - } - } -} From 82e2c1a130056db039d4bbf56de2d013a829619c Mon Sep 17 00:00:00 2001 From: telezhnaya Date: Wed, 22 May 2024 18:13:25 +0100 Subject: [PATCH 2/6] Use jsonrpc API, simplify the codebase --- .gitignore | 4 +- Cargo.lock | 4940 +++++++++++++++++++++++++---- Cargo.toml | 7 + README.md | 2 +- src/account.rs | 30 - src/bin/main.rs | 61 +- src/config.rs | 109 +- src/error.rs | 21 - src/lib.rs | 11 +- src/metrics.rs | 10 +- src/transaction/engine.rs | 143 +- src/transaction/mod.rs | 20 +- src/transaction/token_transfer.rs | 106 +- 13 files changed, 4577 insertions(+), 887 deletions(-) delete mode 100644 src/account.rs delete mode 100644 src/error.rs diff --git a/.gitignore b/.gitignore index 212de44..72a7292 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /target -.DS_Store \ No newline at end of file +.DS_Store +.idea/ +.env diff --git a/Cargo.lock b/Cargo.lock index 85d0bd3..2ec31dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,62 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "actix" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb72882332b6d6282f428b77ba0358cb2687e61a6f6df6a6d3871e8a177c2d4f" +dependencies = [ + "actix-macros", + "actix-rt", + "actix_derive", + "bitflags 2.5.0", + "bytes", + "crossbeam-channel", + "futures-core", + "futures-sink", + "futures-task", + "futures-util", + "log", + "once_cell", + "parking_lot 0.12.1", + "pin-project-lite", + "smallvec", + "tokio", + "tokio-util 0.7.11", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn 2.0.58", +] + +[[package]] +name = "actix-rt" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + [[package]] name = "addr2line" version = "0.21.0" @@ -17,6 +73,29 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.14", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -89,6 +168,61 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + [[package]] name = "async-trait" version = "0.1.79" @@ -97,7 +231,7 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.58", ] [[package]] @@ -116,10 +250,10 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.0", "http-body-util", - "hyper", + "hyper 1.2.0", "hyper-util", "itoa", "matchit", @@ -149,8 +283,8 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.0", "http-body-util", "mime", "pin-project-lite", @@ -169,13 +303,40 @@ checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", - "cfg-if", + "cfg-if 1.0.0", "libc", "miniz_oxide", "object", "rustc-demangle", ] +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -188,30 +349,211 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "blake3" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if 0.1.10", + "constant_time_eq", + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive 0.9.3", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe5b10e214954177fb1dc9fbd20a1a2608fe99e6c832033bdc7cea287a20d77" +dependencies = [ + "borsh-derive 1.5.0", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a8646f94ab393e43e8b35a2558b1624bed28b97ee09c5d15456e3c9463f46d" +dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.58", + "syn_derive", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + [[package]] name = "bumpalo" version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +[[package]] +name = "bytesize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" +dependencies = [ + "serde", +] + +[[package]] +name = "c2-chacha" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" +dependencies = [ + "cipher", + "ppv-lite86", +] + [[package]] name = "cc" version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" version = "0.4.38" @@ -220,11 +562,22 @@ checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", + "js-sys", "num-traits", "serde", + "wasm-bindgen", "windows-targets 0.52.4", ] +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array 0.14.7", +] + [[package]] name = "clap" version = "4.5.4" @@ -253,10 +606,10 @@ version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn", + "syn 2.0.58", ] [[package]] @@ -265,6 +618,15 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "colorchoice" version = "1.0.0" @@ -272,1027 +634,4336 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] -name = "core-foundation-sys" -version = "0.8.6" +name = "constant_time_eq" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] -name = "derive_more" -version = "1.0.0-beta.6" +name = "convert_case" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" -dependencies = [ - "derive_more-impl", -] +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] -name = "derive_more-impl" -version = "1.0.0-beta.6" +name = "core-foundation" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "proc-macro2", - "quote", - "syn", - "unicode-xid", + "core-foundation-sys", + "libc", ] [[package]] -name = "dtoa" -version = "1.0.9" +name = "core-foundation-sys" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] -name = "fnv" -version = "1.0.7" +name = "cpp_demangle" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" +dependencies = [ + "cfg-if 1.0.0", +] [[package]] -name = "form_urlencoded" -version = "1.2.1" +name = "cpufeatures" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ - "percent-encoding", + "libc", ] [[package]] -name = "futures" -version = "0.3.30" +name = "cranelift-bforest" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "2b5bb9245ec7dcc04d03110e538d31f0969d301c9d673145f4b4d5c3478539a3" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "cranelift-entity", ] [[package]] -name = "futures-channel" -version = "0.3.30" +name = "cranelift-codegen" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "ebb18d10e5ddac43ba4ca8fd4e310938569c3e484cc01b6372b27dc5bb4dfd28" dependencies = [ - "futures-core", - "futures-sink", + "bumpalo", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-control", + "cranelift-entity", + "cranelift-isle", + "gimli", + "hashbrown 0.14.5", + "log", + "regalloc2", + "smallvec", + "target-lexicon 0.12.14", ] [[package]] -name = "futures-core" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-executor" -version = "0.3.30" +name = "cranelift-codegen-meta" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "7a3ce6d22982c1b9b6b012654258bab1a13947bb12703518bef06b1a4867c3d6" dependencies = [ - "futures-core", - "futures-task", - "futures-util", + "cranelift-codegen-shared", ] [[package]] -name = "futures-io" -version = "0.3.30" +name = "cranelift-codegen-shared" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "47220fd4f9a0ce23541652b6f16f83868d282602c600d14934b2a4c166b4bd80" [[package]] -name = "futures-macro" -version = "0.3.30" +name = "cranelift-control" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "ed5a4c42672aea9b6e820046b52e47a1c05d3394a6cdf4cb3c3c4b702f954bd2" dependencies = [ - "proc-macro2", - "quote", - "syn", + "arbitrary", ] [[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - -[[package]] -name = "futures-task" -version = "0.3.30" +name = "cranelift-entity" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "0b4e9a3296fc827f9d35135dc2c0c8dd8d8359eb1ef904bae2d55d5bcb0c9f94" +dependencies = [ + "serde", + "serde_derive", +] [[package]] -name = "futures-util" -version = "0.3.30" +name = "cranelift-frontend" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "33ec537d0f0b8e084517f3e7bfa1d89af343d7c7df455573fca9f272d4e01267" dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon 0.12.14", ] [[package]] -name = "gimli" -version = "0.28.1" +name = "cranelift-isle" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "45bab6d69919d210a50331d35cc6ce111567bc040aebac63a8ae130d0400a075" [[package]] -name = "heck" -version = "0.5.0" +name = "cranelift-native" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "f32e81605f352cf37af5463f11cd7deec7b6572741931a8d372f7fdd4a744f5d" +dependencies = [ + "cranelift-codegen", + "libc", + "target-lexicon 0.12.14", +] [[package]] -name = "hermit-abi" -version = "0.3.9" +name = "cranelift-wasm" +version = "0.101.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "0edaa4cbec1bc787395c074233df2652dd62f3e29d3ee60329514a0a51e6b045" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "itertools", + "log", + "smallvec", + "wasmparser 0.115.0", + "wasmtime-types", +] [[package]] -name = "homedir" -version = "0.2.1" +name = "crc32fast" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22074da8bba2ef26fc1737ae6c777b5baab5524c2dc403b5c6a76166766ccda5" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "cfg-if", - "nix", - "serde", - "widestring", - "windows-sys 0.48.0", - "wmi", + "cfg-if 1.0.0", ] [[package]] -name = "http" -version = "1.1.0" +name = "crossbeam-channel" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ - "bytes", - "fnv", - "itoa", + "crossbeam-utils", ] [[package]] -name = "http-body" -version = "1.0.0" +name = "crossbeam-deque" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "bytes", - "http", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] -name = "http-body-util" -version = "0.1.1" +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", + "crossbeam-utils", ] [[package]] -name = "httparse" -version = "1.8.0" +name = "crossbeam-utils" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] -name = "httpdate" -version = "1.0.3" +name = "crunchy" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] -name = "humantime" -version = "2.1.0" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] [[package]] -name = "hyper" -version = "1.2.0" +name = "crypto-mac" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", + "generic-array 0.14.7", + "subtle", ] [[package]] -name = "hyper-util" -version = "0.1.3" +name = "curve25519-dalek" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" dependencies = [ - "bytes", - "futures-util", - "http", - "http-body", - "hyper", - "pin-project-lite", - "socket2", - "tokio", + "cfg-if 1.0.0", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rand_core 0.6.4", + "rustc_version 0.4.0", + "subtle", + "zeroize", ] [[package]] -name = "iana-time-zone" -version = "0.1.60" +name = "curve25519-dalek-derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", + "proc-macro2", + "quote", + "syn 2.0.58", ] [[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" +name = "darling" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ - "cc", + "darling_core", + "darling_macro", ] [[package]] -name = "itoa" -version = "1.0.11" +name = "darling_core" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.58", +] [[package]] -name = "js-sys" -version = "0.3.69" +name = "darling_macro" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ - "wasm-bindgen", + "darling_core", + "quote", + "syn 2.0.58", ] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "debugid" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "uuid", +] [[package]] -name = "libc" -version = "0.2.153" +name = "deranged" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] [[package]] -name = "lock_api" -version = "0.4.11" +name = "derive_arbitrary" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ - "autocfg", - "scopeguard", + "proc-macro2", + "quote", + "syn 2.0.58", ] [[package]] -name = "log" -version = "0.4.21" +name = "derive_more" +version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 1.0.109", +] [[package]] -name = "matchers" -version = "0.1.0" +name = "derive_more" +version = "1.0.0-beta.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" dependencies = [ - "regex-automata 0.1.10", + "derive_more-impl", ] [[package]] -name = "matchit" -version = "0.7.3" +name = "derive_more-impl" +version = "1.0.0-beta.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", + "unicode-xid", +] [[package]] -name = "memchr" -version = "2.7.2" +name = "digest" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] [[package]] -name = "memoffset" -version = "0.7.1" +name = "digest" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "autocfg", + "generic-array 0.14.7", ] [[package]] -name = "mime" -version = "0.3.17" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] [[package]] -name = "miniz_oxide" -version = "0.7.2" +name = "dissimilar" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" -dependencies = [ - "adler", -] +checksum = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d" [[package]] -name = "mio" -version = "0.8.11" +name = "dotenv" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.48.0", -] +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" [[package]] -name = "more-asserts" -version = "0.3.1" +name = "dtoa" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] -name = "nix" -version = "0.26.4" +name = "dynasm" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +checksum = "add9a102807b524ec050363f09e06f1504214b0e1c7797f64261c891022dce8b" dependencies = [ "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset", - "pin-utils", + "byteorder", + "lazy_static", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "nu-ansi-term" -version = "0.46.0" +name = "dynasm" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "33dc03612f42465a8ed7f5e354bc2b79ba54cedefa81d5bd3a064f1835adaba8" dependencies = [ - "overload", - "winapi", + "bitflags 1.3.2", + "byteorder", + "lazy_static", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "num-traits" -version = "0.2.18" +name = "dynasmrt" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "64fba5a42bd76a17cad4bfa00de168ee1cbfa06a5e8ce992ae880218c05641a9" dependencies = [ - "hermit-abi", - "libc", + "byteorder", + "dynasm 1.2.3", + "memmap2", ] [[package]] -name = "object" -version = "0.32.2" +name = "dynasmrt" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "f7dccc31a678058996aef614f6bd418ced384da70f284e83e2b7bf29b27b6a28" dependencies = [ - "memchr", + "byteorder", + "dynasm 2.0.0", + "fnv", + "memmap2", ] [[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "overload" -version = "0.1.1" +name = "easy-ext" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" [[package]] -name = "parking_lot" -version = "0.12.1" +name = "ed25519" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "lock_api", - "parking_lot_core", + "signature", ] [[package]] -name = "parking_lot_core" -version = "0.9.9" +name = "ed25519-dalek" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.48.5", + "curve25519-dalek", + "ed25519", + "rand_core 0.6.4", + "sha2", + "subtle", ] [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "either" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" [[package]] -name = "pin-project" -version = "1.1.5" +name = "encoding_rs" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ - "pin-project-internal", + "cfg-if 1.0.0", ] [[package]] -name = "pin-project-internal" -version = "1.1.5" +name = "enum-map" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" dependencies = [ - "proc-macro2", - "quote", - "syn", + "enum-map-derive", ] [[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "proc-macro2" -version = "1.0.79" +name = "enum-map-derive" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ - "unicode-ident", + "proc-macro2", + "quote", + "syn 2.0.58", ] [[package]] -name = "prometheus-client" -version = "0.22.2" +name = "enumset" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ca959da22a332509f2a73ae9e5f23f9dcfc31fd3a54d71f159495bd5909baa" +checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" dependencies = [ - "dtoa", - "itoa", - "parking_lot", - "prometheus-client-derive-encode", + "enumset_derive", ] [[package]] -name = "prometheus-client-derive-encode" -version = "0.4.2" +name = "enumset_derive" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" +checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" dependencies = [ + "darling", "proc-macro2", "quote", - "syn", -] - -[[package]] -name = "quote" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", + "syn 2.0.58", ] [[package]] -name = "redox_syscall" -version = "0.4.1" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "regex" -version = "1.10.4" +name = "errno" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "errno-dragonfly", + "libc", + "winapi", ] [[package]] -name = "regex-automata" -version = "0.1.10" +name = "errno" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ - "regex-syntax 0.6.29", + "libc", + "windows-sys 0.52.0", ] [[package]] -name = "regex-automata" -version = "0.4.6" +name = "errno-dragonfly" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.3", + "cc", + "libc", ] [[package]] -name = "regex-syntax" -version = "0.6.29" +name = "fallible-iterator" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] -name = "regex-syntax" -version = "0.8.3" +name = "fastrand" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] -name = "rustc-demangle" -version = "0.1.23" +name = "fiat-crypto" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] -name = "rustversion" -version = "1.0.15" +name = "finite-wasm" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" +checksum = "6d81b511929c2669eaf64e36471cf27c2508133e62ade9d49e608e8d675e7854" +dependencies = [ + "bitvec", + "dissimilar", + "num-traits", + "prefix-sum-vec", + "thiserror", + "wasm-encoder 0.27.0", + "wasmparser 0.105.0", + "wasmprinter", +] [[package]] -name = "ryu" -version = "1.0.17" +name = "fixed-hash" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "static_assertions", +] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "fixedbitset" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] -name = "serde" -version = "1.0.197" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" -dependencies = [ - "serde_derive", -] +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "serde_derive" -version = "1.0.197" +name = "foreign-types" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "proc-macro2", - "quote", - "syn", + "foreign-types-shared", ] [[package]] -name = "serde_json" -version = "1.0.115" +name = "foreign-types-shared" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" -dependencies = [ - "itoa", - "ryu", - "serde", -] +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] -name = "serde_path_to_error" -version = "0.1.16" +name = "form_urlencoded" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "itoa", - "serde", + "percent-encoding", ] [[package]] -name = "serde_urlencoded" -version = "0.7.1" +name = "fs2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", + "libc", + "winapi", ] [[package]] -name = "sharded-slab" -version = "0.1.7" +name = "funty" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] -name = "signal-hook-registry" -version = "1.4.1" +name = "futures" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ - "libc", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] -name = "slab" -version = "0.4.9" +name = "futures-channel" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ - "autocfg", + "futures-core", + "futures-sink", ] [[package]] -name = "smallvec" -version = "1.13.2" +name = "futures-core" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] -name = "socket2" -version = "0.5.6" +name = "futures-executor" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ - "libc", - "windows-sys 0.52.0", + "futures-core", + "futures-task", + "futures-util", ] [[package]] -name = "strsim" -version = "0.11.1" +name = "futures-io" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] -name = "syn" -version = "2.0.58" +name = "futures-macro" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "unicode-ident", + "syn 2.0.58", ] [[package]] -name = "sync_wrapper" -version = "0.1.2" +name = "futures-sink" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] -name = "sync_wrapper" -version = "1.0.1" +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "fxprof-processed-profile" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" +dependencies = [ + "bitflags 2.5.0", + "debugid", + "fxhash", + "serde", + "serde_json", +] + +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + +[[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.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +dependencies = [ + "fallible-iterator", + "indexmap 2.2.6", + "stable_deref_trait", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util 0.7.11", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.11", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash 0.8.11", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "homedir" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22074da8bba2ef26fc1737ae6c777b5baab5524c2dc403b5c6a76166766ccda5" +dependencies = [ + "cfg-if 1.0.0", + "nix 0.26.4", + "serde", + "widestring", + "windows-sys 0.48.0", + "wmi", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http 1.1.0", + "http-body 1.0.0", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper 0.14.28", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper 0.14.28", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "hyper 1.2.0", + "pin-project-lite", + "socket2", + "tokio", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json_comments" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dbbfed4e59ba9750e15ba154fdfd9329cee16ff3df539c2666b70f58cc32105" + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin", +] + +[[package]] +name = "leb128" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "loupe" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6a72dfa44fe15b5e76b94307eeb2ff995a8c5b283b55008940c02e0c5b634d" +dependencies = [ + "loupe-derive", + "rustversion", +] + +[[package]] +name = "loupe-derive" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fbfc88337168279f2e9ae06e157cfed4efd3316e14dc96ed074d4f2e6c5952" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "mach2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +dependencies = [ + "libc", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "memfd" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" +dependencies = [ + "rustix", +] + +[[package]] +name = "memmap" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "more-asserts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" + +[[package]] +name = "more-asserts" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "near-account-id" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35cbb989542587b47205e608324ddd391f0cee1c22b4b64ae49f458334b95907" +dependencies = [ + "borsh 1.5.0", + "serde", +] + +[[package]] +name = "near-cache" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b222afeb8daa3849626f0ce713806ce8be2b33e4aac54913dc7ef1db1fa83d7" +dependencies = [ + "lru", +] + +[[package]] +name = "near-chain-configs" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ac5ca8d44a732193603e117f57d490b8c29b1e8e756abb3f12d4eb19443cd1d" +dependencies = [ + "anyhow", + "bytesize", + "chrono", + "derive_more 0.99.17", + "near-config-utils", + "near-crypto", + "near-parameters", + "near-primitives", + "num-rational", + "once_cell", + "serde", + "serde_json", + "sha2", + "smart-default", + "tracing", +] + +[[package]] +name = "near-config-utils" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1c9ff519efa8c778d341fa34971dee93e8adf4e8ae51feaefaa63bdf7e496a" +dependencies = [ + "anyhow", + "json_comments", + "thiserror", + "tracing", +] + +[[package]] +name = "near-crypto" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d927e95742aea981b9fd60996fbeba3b61e90acafd54c2c3c2a4ed40065ff03" +dependencies = [ + "blake2", + "borsh 1.5.0", + "bs58", + "c2-chacha", + "curve25519-dalek", + "derive_more 0.99.17", + "ed25519-dalek", + "hex", + "near-account-id", + "near-config-utils", + "near-stdx", + "once_cell", + "primitive-types", + "rand 0.7.3", + "secp256k1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-fmt" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a9aa862014eeedb79df494b1b8080c5b51cd014f978183e08a7918a50350558" +dependencies = [ + "near-primitives-core", +] + +[[package]] +name = "near-jsonrpc-client" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5225c0f97a61fd4534dee3169959dd91bb812be7d0573c1130a3cf86fd16b3e" +dependencies = [ + "borsh 1.5.0", + "lazy_static", + "log", + "near-chain-configs", + "near-crypto", + "near-jsonrpc-primitives", + "near-primitives", + "reqwest", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "near-jsonrpc-primitives" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63ba17af2bc4208fdc4f6a8088842ad1f0165ac46d8259db6a2719f15d039e06" +dependencies = [ + "arbitrary", + "near-chain-configs", + "near-crypto", + "near-primitives", + "near-rpc-error-macro", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "near-o11y" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64d008979998e436ac5ad2e60326d1a7f2d30dcb5a22c1a4657159f7f284342" +dependencies = [ + "actix", + "base64 0.21.7", + "clap", + "near-crypto", + "near-fmt", + "near-primitives-core", + "once_cell", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "prometheus", + "serde", + "serde_json", + "strum", + "thiserror", + "tokio", + "tracing", + "tracing-appender", + "tracing-opentelemetry", + "tracing-subscriber", +] + +[[package]] +name = "near-parameters" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996c8654020f7eb3c11039cb39123fd4cd78654fde4c9e7c3fd6d092c84f342" +dependencies = [ + "assert_matches", + "borsh 1.5.0", + "enum-map", + "near-account-id", + "near-primitives-core", + "num-rational", + "serde", + "serde_repr", + "serde_yaml", + "strum", + "thiserror", +] + +[[package]] +name = "near-primitives" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c880397c022d3b8f592cef18f85fd6e79181a2a04c31154afb1730f9fa21098" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "borsh 1.5.0", + "bytesize", + "cfg-if 1.0.0", + "chrono", + "derive_more 0.99.17", + "easy-ext", + "enum-map", + "hex", + "near-crypto", + "near-fmt", + "near-o11y", + "near-parameters", + "near-primitives-core", + "near-rpc-error-macro", + "near-stdx", + "near-vm-runner", + "num-rational", + "once_cell", + "primitive-types", + "rand 0.8.5", + "rand_chacha 0.3.1", + "reed-solomon-erasure", + "serde", + "serde_json", + "serde_with", + "serde_yaml", + "sha3", + "smart-default", + "strum", + "thiserror", + "time", + "tracing", +] + +[[package]] +name = "near-primitives-core" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "082b1d3f6c7e273ec5cd9588e00bdbfc51be6cc9a3a7ec31fc899b4b7d2d3f9d" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "borsh 1.5.0", + "bs58", + "derive_more 0.99.17", + "enum-map", + "near-account-id", + "num-rational", + "serde", + "serde_repr", + "serde_with", + "sha2", + "strum", + "thiserror", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3610517a56329b7cce0c8c4cf2686fc4bbe0b155181b118acf20d2a301bf29b6" +dependencies = [ + "quote", + "serde", + "syn 2.0.58", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa8db2fd2a6dbab8c56908e983f41570341e391daddb0d4c430746c6971107e3" +dependencies = [ + "fs2", + "near-rpc-error-core", + "serde", + "syn 2.0.58", +] + +[[package]] +name = "near-stdx" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73a697f311c110d0fabae6c8c49ab0a8eff0ec37df82cc860deba92156e77c43" + +[[package]] +name = "near-vm-compiler" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d6c12977e11cbc33921c367a8ae949317d099025c96531702d3afed6e5f44ce" +dependencies = [ + "enumset", + "finite-wasm", + "near-vm-types", + "near-vm-vm", + "rkyv", + "smallvec", + "target-lexicon 0.12.14", + "thiserror", + "tracing", + "wasmparser 0.99.0", +] + +[[package]] +name = "near-vm-compiler-singlepass" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f883363f5d05502035f0f6c0416078fdf535557dbffc1b4177aaab87bd448528" +dependencies = [ + "dynasm 2.0.0", + "dynasmrt 2.0.0", + "enumset", + "finite-wasm", + "lazy_static", + "memoffset 0.8.0", + "more-asserts 0.2.2", + "near-vm-compiler", + "near-vm-types", + "near-vm-vm", + "rayon", + "smallvec", + "strum", + "tracing", +] + +[[package]] +name = "near-vm-engine" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c758c7ad8d551eafefd783aa286c2fa95f4ad6e89efedf1bd5f8629efd529ac" +dependencies = [ + "backtrace", + "cfg-if 1.0.0", + "enumset", + "finite-wasm", + "lazy_static", + "memmap2", + "more-asserts 0.2.2", + "near-vm-compiler", + "near-vm-types", + "near-vm-vm", + "region", + "rkyv", + "rustc-demangle", + "target-lexicon 0.12.14", + "thiserror", + "tracing", +] + +[[package]] +name = "near-vm-runner" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20569500ca56e161c6ed81da9a24c7bf7b974c4238b2f08b2582113b66fa0060" +dependencies = [ + "anyhow", + "base64 0.21.7", + "borsh 1.5.0", + "ed25519-dalek", + "enum-map", + "finite-wasm", + "loupe", + "memoffset 0.8.0", + "near-cache", + "near-crypto", + "near-parameters", + "near-primitives-core", + "near-stdx", + "near-vm-compiler", + "near-vm-compiler-singlepass", + "near-vm-engine", + "near-vm-types", + "near-vm-vm", + "num-rational", + "once_cell", + "parity-wasm 0.41.0", + "parity-wasm 0.42.2", + "prefix-sum-vec", + "pwasm-utils", + "ripemd", + "serde", + "serde_repr", + "serde_with", + "sha2", + "sha3", + "strum", + "thiserror", + "tracing", + "wasm-encoder 0.27.0", + "wasmer-compiler-near", + "wasmer-compiler-singlepass-near", + "wasmer-engine-near", + "wasmer-engine-universal-near", + "wasmer-runtime-core-near", + "wasmer-runtime-near", + "wasmer-types-near", + "wasmer-vm-near", + "wasmparser 0.78.2", + "wasmtime", + "zeropool-bn", +] + +[[package]] +name = "near-vm-types" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5e894a085d2a9ed4e8f10ae8766c95fa77b5aa47d3c0e85b89af22d5b253491" +dependencies = [ + "indexmap 1.9.3", + "num-traits", + "rkyv", + "thiserror", +] + +[[package]] +name = "near-vm-vm" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c98a68706832b567cafa03375d40512bba8d95ae6d3b760f340b22a4b97893" +dependencies = [ + "backtrace", + "cc", + "cfg-if 1.0.0", + "finite-wasm", + "indexmap 1.9.3", + "libc", + "memoffset 0.8.0", + "more-asserts 0.2.2", + "near-vm-types", + "region", + "rkyv", + "thiserror", + "tracing", + "wasmparser 0.99.0", + "winapi", +] + +[[package]] +name = "nix" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e0b4f3320ed72aaedb9a5ac838690a8047c7b275da22711fddff4f8a14229" +dependencies = [ + "bitflags 1.3.2", + "cc", + "cfg-if 0.1.10", + "libc", + "void", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if 1.0.0", + "libc", + "memoffset 0.7.1", + "pin-utils", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "crc32fast", + "hashbrown 0.14.5", + "indexmap 2.2.6", + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", + "tokio", + "tokio-stream", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1a6ca9de4c8b00aa7f1a153bd76cb263287155cec642680d79d98706f3d28a" +dependencies = [ + "async-trait", + "futures", + "futures-util", + "http 0.2.12", + "opentelemetry", + "prost", + "thiserror", + "tokio", + "tonic", + "tonic-build", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985cc35d832d412224b2cffe2f9194b1b89b6aa5d0bef76d080dce09d90e62bd" +dependencies = [ + "opentelemetry", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "page_size" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "parity-wasm" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" + +[[package]] +name = "parity-wasm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" + +[[package]] +name = "parking_lot" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" +dependencies = [ + "lock_api 0.3.4", + "parking_lot_core 0.7.3", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api 0.4.11", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93f386bb233083c799e6e642a9d73db98c24a5deeb95ffc85bf281255dffc98" +dependencies = [ + "cfg-if 0.1.10", + "cloudabi", + "libc", + "redox_syscall 0.1.57", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.2.6", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "prefix-sum-vec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa06bd51638b6e76ac9ba9b6afb4164fa647bd2916d722f2623fbb6d1ed8bdba" + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "memchr", + "parking_lot 0.12.1", + "protobuf", + "thiserror", +] + +[[package]] +name = "prometheus-client" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ca959da22a332509f2a73ae9e5f23f9dcfc31fd3a54d71f159495bd5909baa" +dependencies = [ + "dtoa", + "itoa", + "parking_lot 0.12.1", + "prometheus-client-derive-encode", +] + +[[package]] +name = "prometheus-client-derive-encode" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +dependencies = [ + "bytes", + "heck 0.3.3", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost", + "prost-types", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +dependencies = [ + "bytes", + "prost", +] + +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pwasm-utils" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" +dependencies = [ + "byteorder", + "log", + "parity-wasm 0.41.0", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.14", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "reed-solomon-erasure" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" +dependencies = [ + "smallvec", +] + +[[package]] +name = "regalloc2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +dependencies = [ + "hashbrown 0.13.2", + "log", + "rustc-hash", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "region" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6b6ebd13bc009aef9cd476c1310d49ac354d36e240cf1bd753290f3dc7199a7" +dependencies = [ + "bitflags 1.3.2", + "libc", + "mach2", + "windows-sys 0.52.0", +] + +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rkyv" +version = "0.7.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.23", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno 0.3.9", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustversion" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +dependencies = [ + "bitflags 2.5.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-bench" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d733da87e79faaac25616e33d26299a41143fd4cd42746cbb0e91d8feea243fd" +dependencies = [ + "byteorder", + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "serde_json" +version = "1.0.115" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.2.6", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.2.6", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "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 = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smart-default" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "socket2" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "sptr" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" [[package]] -name = "thiserror" -version = "1.0.58" +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 = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target-lexicon" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" + +[[package]] +name = "target-lexicon" +version = "0.12.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "thiserror" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[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.58", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" +dependencies = [ + "async-stream", + "async-trait", + "base64 0.13.1", + "bytes", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.28", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "prost-derive", + "tokio", + "tokio-stream", + "tokio-util 0.6.10", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tonic-build" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" +dependencies = [ + "proc-macro2", + "prost-build", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util 0.7.11", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +dependencies = [ + "bitflags 2.5.0", + "bytes", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror", + "time", + "tracing-subscriber", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" dependencies = [ - "thiserror-impl", + "log", + "once_cell", + "tracing-core", ] [[package]] -name = "thiserror-impl" -version = "1.0.58" +name = "tracing-log" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log 0.1.4", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log 0.2.0", +] + +[[package]] +name = "transaction-bench" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-trait", + "axum", + "clap", + "derive_more 1.0.0-beta.6", + "dotenv", + "futures", + "homedir", + "humantime", + "more-asserts 0.3.1", + "near-crypto", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives", + "prometheus-client", + "regex", + "thiserror", + "tokio", + "tower-http", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "try-lock" +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 = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.58", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.58", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-encoder" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e77053dc709db790691d3732cfc458adc5acc881dec524965c608effdcd9c581" +dependencies = [ + "leb128", +] + +[[package]] +name = "wasm-encoder" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca90ba1b5b0a70d3d49473c5579951f3bddc78d47b59256d2f9d4922b150aca" +dependencies = [ + "leb128", +] + +[[package]] +name = "wasmer-compiler-near" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46fdae7245128f284476e6db9653ef0a15b011975091bcd7f9d7303132409662" +dependencies = [ + "enumset", + "rkyv", + "smallvec", + "target-lexicon 0.12.14", + "thiserror", + "wasmer-types-near", + "wasmer-vm-near", + "wasmparser 0.78.2", +] + +[[package]] +name = "wasmer-compiler-singlepass-near" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac4af0e438015585eb27b2c6f6869c58c540bfe27408b686b1778470bf301050" +dependencies = [ + "byteorder", + "dynasm 1.2.3", + "dynasmrt 1.2.3", + "lazy_static", + "memoffset 0.6.5", + "more-asserts 0.2.2", + "rayon", + "smallvec", + "wasmer-compiler-near", + "wasmer-types-near", + "wasmer-vm-near", +] + +[[package]] +name = "wasmer-engine-near" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4048411cabb2c94c7d8d11d9d0282cc6b15308b61ebc1e122c40e89865ebb5c5" +dependencies = [ + "backtrace", + "enumset", + "lazy_static", + "memmap2", + "more-asserts 0.2.2", + "rustc-demangle", + "target-lexicon 0.12.14", + "thiserror", + "wasmer-compiler-near", + "wasmer-types-near", + "wasmer-vm-near", +] + +[[package]] +name = "wasmer-engine-universal-near" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f31c3d2850ac7957406d3c9581d9435ea8126a26478709fa7e931b6f562b4d" +dependencies = [ + "cfg-if 1.0.0", + "enumset", + "leb128", + "region", + "rkyv", + "thiserror", + "wasmer-compiler-near", + "wasmer-engine-near", + "wasmer-types-near", + "wasmer-vm-near", + "winapi", +] + +[[package]] +name = "wasmer-runtime-core-near" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3fac37da3c625e98708c5dd92d3f642aaf700fd077168d3d0fff277ec6a165" +dependencies = [ + "bincode", + "blake3", + "borsh 0.9.3", + "cc", + "digest 0.8.1", + "errno 0.2.8", + "hex", + "indexmap 1.9.3", + "lazy_static", + "libc", + "nix 0.15.0", + "page_size", + "parking_lot 0.10.2", + "rustc_version 0.2.3", + "serde", + "serde-bench", + "serde_bytes", + "serde_derive", + "smallvec", + "target-lexicon 0.10.0", + "wasmparser 0.51.4", + "winapi", ] [[package]] -name = "thread_local" -version = "1.1.8" +name = "wasmer-runtime-near" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "158e6fff11e5e1ef805af50637374d5bd43d92017beafa18992cdf7f3f7ae3e4" dependencies = [ - "cfg-if", - "once_cell", + "lazy_static", + "memmap", + "serde", + "serde_derive", + "wasmer-runtime-core-near", + "wasmer-singlepass-backend-near", ] [[package]] -name = "tokio" -version = "1.37.0" +name = "wasmer-singlepass-backend-near" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "5f6edd0ba6c0bcf9b279186d4dbe81649dda3e5ef38f586865943de4dcd653f8" dependencies = [ - "backtrace", - "bytes", + "bincode", + "borsh 0.9.3", + "byteorder", + "dynasm 1.2.3", + "dynasmrt 1.2.3", + "lazy_static", "libc", - "mio", - "num_cpus", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.48.0", + "nix 0.15.0", + "serde", + "serde_derive", + "smallvec", + "wasmer-runtime-core-near", ] [[package]] -name = "tokio-macros" -version = "2.2.0" +name = "wasmer-types-near" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "1ba154adffb0fbd33f5dabd3788a1744d846b43e6e090d44269c7ee8fa5743e4" dependencies = [ - "proc-macro2", - "quote", - "syn", + "indexmap 1.9.3", + "rkyv", + "thiserror", ] [[package]] -name = "tower" -version = "0.4.13" +name = "wasmer-vm-near" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "70a5585596f6e9915d606de944aece51626736fb1191aefb5b2ef108c6f7604a" dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", - "tracing", + "backtrace", + "cc", + "cfg-if 1.0.0", + "indexmap 1.9.3", + "libc", + "memoffset 0.6.5", + "more-asserts 0.2.2", + "region", + "rkyv", + "thiserror", + "wasmer-types-near", + "winapi", ] [[package]] -name = "tower-http" -version = "0.5.2" +name = "wasmparser" +version = "0.51.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" -dependencies = [ - "bitflags 2.5.0", - "bytes", - "http", - "http-body", - "http-body-util", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", -] +checksum = "aeb1956b19469d1c5e63e459d29e7b5aa0f558d9f16fcef09736f8a265e6c10a" [[package]] -name = "tower-layer" -version = "0.3.2" +name = "wasmparser" +version = "0.78.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "52144d4c78e5cf8b055ceab8e5fa22814ce4315d6002ad32cfd914f37c12fd65" [[package]] -name = "tower-service" -version = "0.3.2" +name = "wasmparser" +version = "0.99.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "9ef3b717afc67f848f412d4f02c127dd3e35a0eecd58c684580414df4fde01d3" +dependencies = [ + "indexmap 1.9.3", + "url", +] [[package]] -name = "tracing" -version = "0.1.40" +name = "wasmparser" +version = "0.105.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "83be9e0b3f9570dc1979a33ae7b89d032c73211564232b99976553e5c155ec32" dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", + "indexmap 1.9.3", + "url", ] [[package]] -name = "tracing-attributes" -version = "0.1.27" +name = "wasmparser" +version = "0.115.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "e06c0641a4add879ba71ccb3a1e4278fd546f76f1eafb21d8f7b07733b547cd5" dependencies = [ - "proc-macro2", - "quote", - "syn", + "indexmap 2.2.6", + "semver 1.0.23", ] [[package]] -name = "tracing-core" -version = "0.1.32" +name = "wasmprinter" +version = "0.2.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "50b0e5ed7a74a065637f0d7798ce5f29cadb064980d24b0c82af5200122fa0d8" dependencies = [ - "once_cell", - "valuable", + "anyhow", + "wasmparser 0.105.0", ] [[package]] -name = "tracing-log" -version = "0.2.0" +name = "wasmtime" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +checksum = "ca54f6090ce46973f33a79f265924b204f248f91aec09229bce53d19d567c1a6" dependencies = [ + "anyhow", + "bincode", + "bumpalo", + "cfg-if 1.0.0", + "fxprof-processed-profile", + "indexmap 2.2.6", + "libc", "log", + "object", "once_cell", - "tracing-core", + "paste", + "psm", + "serde", + "serde_derive", + "serde_json", + "target-lexicon 0.12.14", + "wasm-encoder 0.35.0", + "wasmparser 0.115.0", + "wasmtime-cranelift", + "wasmtime-environ", + "wasmtime-jit", + "wasmtime-runtime", + "windows-sys 0.48.0", ] [[package]] -name = "tracing-subscriber" -version = "0.3.18" +name = "wasmtime-asm-macros" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "54984bc0b5689da87a43d7c181d23092b4d5cfcbb7ae3eb6b917dd55865d95e6" dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", + "cfg-if 1.0.0", ] [[package]] -name = "transaction-bench" -version = "0.1.0" +name = "wasmtime-cranelift" +version = "14.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cf3cee8be02f5006d21b773ffd6802f96a0b7d661ff2ad8a01fb93df458b1aa" dependencies = [ - "async-trait", - "axum", - "clap", - "derive_more", - "futures", - "homedir", - "humantime", - "more-asserts", - "prometheus-client", - "regex", + "anyhow", + "cfg-if 1.0.0", + "cranelift-codegen", + "cranelift-control", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "cranelift-wasm", + "gimli", + "log", + "object", + "target-lexicon 0.12.14", "thiserror", - "tokio", - "tower-http", - "tracing", - "tracing-subscriber", + "wasmparser 0.115.0", + "wasmtime-cranelift-shared", + "wasmtime-environ", + "wasmtime-versioned-export-macros", ] [[package]] -name = "unicode-ident" -version = "1.0.12" +name = "wasmtime-cranelift-shared" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "420fd2a69bc162957f4c94f21c7fa08ecf60d916f4e87b56332507c555da381d" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-control", + "cranelift-native", + "gimli", + "object", + "target-lexicon 0.12.14", + "wasmtime-environ", +] [[package]] -name = "unicode-xid" -version = "0.2.4" +name = "wasmtime-environ" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "fb6a445ce2b2810127caee6c1b79b8da4ae57712b05556a674592c18b7500a14" +dependencies = [ + "anyhow", + "cranelift-entity", + "gimli", + "indexmap 2.2.6", + "log", + "object", + "serde", + "serde_derive", + "target-lexicon 0.12.14", + "thiserror", + "wasmparser 0.115.0", + "wasmtime-types", +] [[package]] -name = "utf8parse" -version = "0.2.1" +name = "wasmtime-jit" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "1f0f6586c61125fbfc13c3108c3dd565d21f314dd5bac823b9a5b7ab576d21f1" +dependencies = [ + "addr2line", + "anyhow", + "bincode", + "cfg-if 1.0.0", + "cpp_demangle", + "gimli", + "log", + "object", + "rustc-demangle", + "rustix", + "serde", + "serde_derive", + "target-lexicon 0.12.14", + "wasmtime-environ", + "wasmtime-jit-icache-coherence", + "wasmtime-runtime", + "windows-sys 0.48.0", +] [[package]] -name = "valuable" -version = "0.1.0" +name = "wasmtime-jit-debug" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "109a9e46afe33580b952b14a4207354355f19bcdf0b47485b397b68409eaf553" +dependencies = [ + "once_cell", + "wasmtime-versioned-export-macros", +] [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "wasmtime-jit-icache-coherence" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "f67e6be36375c39cff57ed3b137ab691afbf2d9ba8ee1c01f77888413f218749" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "windows-sys 0.48.0", +] [[package]] -name = "wasm-bindgen" -version = "0.2.92" +name = "wasmtime-runtime" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "1d07986b2327b5e7f535ed638fbde25990fc8f85400194fda0d26db71c7b685e" dependencies = [ - "cfg-if", - "wasm-bindgen-macro", + "anyhow", + "cc", + "cfg-if 1.0.0", + "indexmap 2.2.6", + "libc", + "log", + "mach", + "memfd", + "memoffset 0.9.1", + "paste", + "rand 0.8.5", + "rustix", + "sptr", + "wasm-encoder 0.35.0", + "wasmtime-asm-macros", + "wasmtime-environ", + "wasmtime-jit-debug", + "wasmtime-versioned-export-macros", + "wasmtime-wmemcheck", + "windows-sys 0.48.0", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.92" +name = "wasmtime-types" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "e810a0d2e869abd1cb42bd232990f6bd211672b3d202d2ae7e70ffb97ed70ea3" dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", + "cranelift-entity", + "serde", + "serde_derive", + "thiserror", + "wasmparser 0.115.0", ] [[package]] -name = "wasm-bindgen-macro" -version = "0.2.92" +name = "wasmtime-versioned-export-macros" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "09b5575a75e711ca6c36bb9ad647c93541cdc8e34218031acba5da3f35919dd3" dependencies = [ + "proc-macro2", "quote", - "wasm-bindgen-macro-support", + "syn 2.0.58", ] [[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.92" +name = "wasmtime-wmemcheck" +version = "14.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "9dafab2db172a53e23940e0fa3078c202f567ee5f13f4b42f66b694fab43c658" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "wasm-bindgen-shared" -version = "0.2.92" +name = "which" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] [[package]] name = "widestring" @@ -1351,7 +5022,7 @@ checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.58", ] [[package]] @@ -1362,7 +5033,7 @@ checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.58", ] [[package]] @@ -1497,6 +5168,25 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + [[package]] name = "wmi" version = "0.13.3" @@ -1510,3 +5200,51 @@ dependencies = [ "thiserror", "windows", ] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" + +[[package]] +name = "zeropool-bn" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] diff --git a/Cargo.toml b/Cargo.toml index 788cc3c..6e1f126 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,8 +6,10 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +anyhow = "1.0.86" axum = "0.7.5" clap = { version = "4.5.4", features = ["derive", "env", "string"] } +dotenv = "0.15.0" prometheus-client = "0.22.2" tokio = { version = "1.37.0", features = ["rt-multi-thread", "tokio-macros", "parking_lot", "signal", "process"] } tracing = "0.1.40" @@ -21,5 +23,10 @@ futures = "0.3.30" regex = "1.10.4" homedir = "0.2.1" +near-crypto = "0.21.2" +near-jsonrpc-client = "0.9.0" +near-jsonrpc-primitives = "0.21.2" +near-primitives = "0.21.2" + [dev-dependencies] more-asserts = "0.3.1" diff --git a/README.md b/README.md index 99e3215..432f8c6 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ List the supported transactions: `cargo run -- list`. Run a single transaction once: `cargo run -- test token_transfer `. -Run the bechmarks until the program is manually halted: `cargo run -- run `. +Run the benchmarks until the program is manually halted: `cargo run -- run `. ## CI The CI checks that the project compiles successfully at every commit. Docker images are pushed to the registry only by tagged builds. diff --git a/src/account.rs b/src/account.rs deleted file mode 100644 index f473743..0000000 --- a/src/account.rs +++ /dev/null @@ -1,30 +0,0 @@ -use std::str::FromStr; - -use derive_more::{Constructor, Display}; - -use crate::AppError; - -#[derive(Debug, Constructor, Default, Clone, Display)] -#[display("{}:{}:{}", signer_id, buddy_id, network)] -pub struct Account { - pub signer_id: String, - pub buddy_id: String, - pub network: String, -} - -impl FromStr for Account { - type Err = AppError; - - fn from_str(s: &str) -> Result { - let split: Vec<_> = s.split(':').collect(); - if split.len() != 3 { - Err(AppError::AccountParseError(s.to_string())) - } else { - Ok(Account::new( - split[0].to_string(), - split[1].to_string(), - split[2].to_string(), - )) - } - } -} diff --git a/src/bin/main.rs b/src/bin/main.rs index a3f94e4..5d55d12 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -1,35 +1,36 @@ use clap::Parser; use futures::try_join; +use near_jsonrpc_client::JsonRpcClient; use tokio::sync::oneshot; use tracing::info; use tracing_subscriber::{fmt, prelude::*, EnvFilter}; -use transaction_bench::config::{Command, RunArgs, TestArgs}; -use transaction_bench::{AppConfig, AppError, Engine, MetricServer}; +use transaction_bench::config::{Mode, Opts}; +use transaction_bench::{Engine, MetricServer}; #[tokio::main] -async fn main() -> Result<(), AppError> { +async fn main() -> anyhow::Result<()> { setup_tracing(); - - let config = AppConfig::parse(); + dotenv::dotenv().ok(); + let opts = Opts::parse(); let engine = Engine::with_default_transactions(); - match config.command { - Command::Run(args) => run(args, engine).await, - Command::List => list(engine).await, - Command::Test(args) => test(args, engine).await, + match opts.mode { + Mode::Run => run(opts, engine).await, + Mode::List => list(engine).await, + Mode::Test => test(opts, engine).await, } } -async fn run(args: RunArgs, engine: Engine) -> Result<(), AppError> { - info!("configuration: {:?}", args); +async fn run(opts: Opts, engine: Engine) -> anyhow::Result<()> { + info!("configuration: {:?}", opts); let (shutdown_notice, shutdown_signal) = oneshot::channel::<()>(); - let metric_server = MetricServer::new(args.metric_server_address)?; + let metric_server = MetricServer::new(opts.metric_server_address); let metric_server_fut = metric_server.run(shutdown_notice); - let engine_fut = engine.run(args, metric_server.metrics.clone(), shutdown_signal); + let engine_fut = engine.run(opts, metric_server.metrics.clone(), shutdown_signal); try_join!(metric_server_fut, engine_fut).map(|_| ()) } -async fn list(engine: Engine) -> Result<(), AppError> { +async fn list(engine: Engine) -> anyhow::Result<()> { info!("list of supported transactions:"); for tx in engine.transactions().values() { info!(" - {}", tx.kind()); @@ -37,28 +38,22 @@ async fn list(engine: Engine) -> Result<(), AppError> { Ok(()) } -async fn test(args: TestArgs, engine: Engine) -> Result<(), AppError> { - let mut matched = false; +async fn test(opts: Opts, engine: Engine) -> anyhow::Result<()> { + let rpc_client = JsonRpcClient::connect(&opts.rpc_url); for (kind, tx) in engine.transactions() { - if args.kind.is_match(kind.as_str()) { - matched = true; - for account in args.exec_args.accounts.clone() { - info!("executing transaction {} for {}", tx.kind(), account); - let outcome = tx.execute(&account, &args.exec_args.key_path).await?; - info!( - "completed transaction {} for {}: {}", - tx.kind(), - account, - outcome - ); - } + if *kind == opts.transaction_kind { + info!("executing transaction {} for {}", tx.kind(), opts.signer_id); + let outcome = tx.execute(&rpc_client, opts.clone()).await?; + info!( + "completed transaction {} for {}: {}", + tx.kind(), + opts.signer_id, + outcome + ); + return Ok(()); } } - if matched { - Ok(()) - } else { - Err(AppError::NoMatchedTransaction(args.kind)) - } + Ok(()) } fn setup_tracing() { diff --git a/src/config.rs b/src/config.rs index 23392f1..a9e529b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,79 +1,58 @@ -use std::{ - ffi::OsString, - net::{AddrParseError, SocketAddr}, -}; - -use clap::{Args, Parser, Subcommand}; -use homedir::get_my_home; -use regex::Regex; - -use crate::Account; - -#[derive(Parser, Debug)] -#[command(version, about, long_about = None)] -pub struct AppConfig { - #[clap(subcommand)] - pub command: Command, -} - -#[derive(Debug, Subcommand)] -pub enum Command { +use crate::TransactionKind; +use clap::{Parser, Subcommand}; +use near_crypto::SecretKey; +use near_primitives::types::AccountId; +use std::net::SocketAddr; + +#[derive(clap::ValueEnum, Debug, Clone, Subcommand)] +pub enum Mode { /// Run all transactions continuously. - Run(RunArgs), + Run, /// Display the available transaction types. List, /// Run a single transaction once. - Test(TestArgs), -} - -/// Args needed to execute transactions. -#[derive(Debug, Args, Default, Clone)] -pub struct ExecArgs { - /// A list of ::. - /// Main account is used to sign transactions. Buddy account is the receiver of token transfers (where applicable) - #[arg(env, verbatim_doc_comment)] - pub accounts: Vec, - #[clap(env, short, long, default_value = foo())] - /// Path to the location storing the account keys. Defaults to the user's directory. - pub key_path: String, + Test, } -#[derive(Debug, Args, Clone)] -pub struct RunArgs { - #[clap(flatten)] - pub exec_args: ExecArgs, +/// Start options +#[derive(Parser, Debug, Clone)] +#[clap( + version, + author, + about, + disable_help_subcommand(true), + propagate_version(true), + next_line_help(true) +)] +pub struct Opts { + /// Mode + #[clap(short, long, env, value_enum, default_value = "list")] + pub mode: Mode, + /// RPC URL + #[clap(long, env)] + pub rpc_url: String, + /// Signer account id + #[clap(long, env)] + pub signer_id: AccountId, + /// Signer private key + #[clap(long, env)] + pub signer_key: SecretKey, + /// Receiver account id + #[clap(long, env)] + pub receiver_id: AccountId, + /// Transaction kind + #[clap(long, env, value_enum, default_value = "token_transfer")] + pub transaction_kind: TransactionKind, + /// Number of times each transaction is performed at every benchmarking run + #[clap(long, env, default_value_t = 1)] + pub repeats_number: u32, /// Time difference between two benchmarking runs. - #[arg(env, short, long, value_parser = humantime::parse_duration, default_value = "15m")] + #[clap(env, short, long, value_parser = humantime::parse_duration, default_value = "15m")] pub period: std::time::Duration, /// Metric server address. - #[clap(env, short, long, default_value = "0.0.0.0:9000")] - #[arg(value_parser = parse_addr)] + #[clap(env, long, default_value = "0.0.0.0:9000")] pub metric_server_address: SocketAddr, /// Geographical location identifier. #[clap(env, short, long, default_value = "unknown")] pub location: String, - /// How many times each transaction is performed at every benchmarking run. - #[clap(env, short, long, default_value = "1")] - pub count: u8, -} - -#[derive(Debug, Args)] -pub struct TestArgs { - /// Type of the transaction to run (regex). - #[arg(env)] - pub kind: Regex, - #[clap(flatten)] - pub exec_args: ExecArgs, -} - -fn parse_addr(arg: &str) -> Result { - arg.parse() -} - -pub fn foo() -> OsString { - get_my_home() - .expect("can't find home dir") - .expect("can't find home dir") - .as_os_str() - .to_owned() } diff --git a/src/error.rs b/src/error.rs deleted file mode 100644 index 589a83a..0000000 --- a/src/error.rs +++ /dev/null @@ -1,21 +0,0 @@ -use regex::Regex; -use thiserror::Error; -use tokio::io; - -use crate::transaction::TransactionKind; - -#[derive(Error, Debug)] -pub enum AppError { - #[error("IO error")] - IOError(#[from] io::Error), - #[error("transaction type {0} not known")] - UnknownTransactionType(TransactionKind), - #[error("no match for {0}")] - NoMatchedTransaction(Regex), - #[error("transaction error({0})")] - TransactionError(String), - #[error("cannot parse signer account, buddy account and network from '{0}'")] - AccountParseError(String), - #[error("unknown error")] - Unknown, -} diff --git a/src/lib.rs b/src/lib.rs index 3c37a0a..a3295b3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,16 +1,7 @@ -#![forbid(unsafe_code)] - -pub mod account; -pub use account::Account; - pub mod config; -pub use config::AppConfig; - -pub mod error; -pub use error::AppError; pub mod metrics; pub use metrics::MetricServer; pub mod transaction; -pub use transaction::{engine::Engine, Transaction, TransactionKind, TransactionOutcome}; +pub use transaction::{engine::Engine, TransactionKind, TransactionOutcome, TransactionSample}; diff --git a/src/metrics.rs b/src/metrics.rs index 0289e28..0527603 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -17,8 +17,6 @@ use tokio::sync::oneshot::Sender; use tower_http::timeout::TimeoutLayer; use tracing::info; -use crate::AppError; - #[derive(Clone, Debug, Hash, PartialEq, Eq, EncodeLabelSet, Constructor)] pub struct Labels { kind: String, @@ -40,16 +38,16 @@ pub struct MetricServer { } impl MetricServer { - pub fn new(address: SocketAddr) -> Result { + pub fn new(address: SocketAddr) -> Self { let (registry, metrics) = create_registry_and_metrics(); - Ok(Self { + Self { registry, address, metrics, - }) + } } - pub async fn run(&self, shutdown_notice: Sender<()>) -> Result<(), AppError> { + pub async fn run(&self, shutdown_notice: Sender<()>) -> anyhow::Result<()> { info!("starting metrics server on {}", self.address); let listener = TcpListener::bind(self.address).await?; diff --git a/src/transaction/engine.rs b/src/transaction/engine.rs index aa3191f..365c9fb 100644 --- a/src/transaction/engine.rs +++ b/src/transaction/engine.rs @@ -1,18 +1,19 @@ +use near_jsonrpc_client::JsonRpcClient; use std::{collections::HashMap, sync::Arc}; use tracing::{info, warn}; use crate::{ - config::RunArgs, metrics::{Labels, Metrics}, transaction::token_transfer::TokenTransfer, - Account, AppError, Transaction, + TransactionSample, }; use super::TransactionKind; +use crate::config::Opts; use tokio::{sync::oneshot::Receiver, task::JoinSet, time::interval}; -type Transactions = HashMap>; +type Transactions = HashMap>; #[derive(Default)] pub struct Engine { @@ -27,7 +28,7 @@ impl Engine { macro_rules! add_transaction { ($name: ident) => { let tx = Arc::new($name {}); - transactions.insert(tx.kind(), tx as Arc); + transactions.insert(tx.kind(), tx as Arc); }; } @@ -37,25 +38,28 @@ impl Engine { } /// Adds a new transaction to be executed during `run` or `run_all_once`. - pub fn add_transaction(&mut self, tx: Arc) -> Option> { + pub fn add_transaction( + &mut self, + tx: Arc, + ) -> Option> { self.transactions.insert(tx.kind(), tx) } /// Returns the list of all registered transaction kinds. - pub fn transactions(&self) -> &HashMap> { + pub fn transactions(&self) -> &HashMap> { &self.transactions } /// Runs the engine until the program is stopped. pub async fn run( &self, - args: RunArgs, + opts: Opts, metrics: Arc, stop_signal: Receiver<()>, - ) -> Result<(), AppError> { + ) -> anyhow::Result<()> { info!("starting transaction engine"); tokio::select! { - res = self.run_impl(args, metrics) => res, + res = self.run_impl(opts, metrics) => res, _ = stop_signal => { info!("transaction engine shutting down"); Ok(()) @@ -63,25 +67,22 @@ impl Engine { } } - async fn run_impl(&self, args: RunArgs, metrics: Arc) -> Result<(), AppError> { - let mut interval = interval(args.period); + async fn run_impl(&self, opts: Opts, metrics: Arc) -> anyhow::Result<()> { + let mut interval = interval(opts.period); loop { interval.tick().await; - self.run_all_once(&args, &metrics).await; + self.run_all_once(opts.clone(), &metrics).await; } } - async fn run_all_once(&self, args: &RunArgs, metrics: &Arc) { + async fn run_all_once(&self, opts: Opts, metrics: &Arc) { info!("running all transactions"); let mut tasks = JoinSet::new(); - for account in args.exec_args.accounts.clone() { - let metrics = metrics.clone(); - let transactions = self.transactions.clone(); - let args = args.clone(); - tasks.spawn(async move { - run_account_transactions_once(transactions, args, account, metrics).await; - }); - } + let metrics = metrics.clone(); + let transactions = self.transactions.clone(); + tasks.spawn(async move { + run_account_transactions_once(transactions, opts, metrics).await; + }); while let Some(join_result) = tasks.join_next().await { if let Err(err) = join_result { warn!("error during account transactions {}", err); @@ -92,27 +93,38 @@ impl Engine { async fn run_account_transactions_once( transactions: Transactions, - args: RunArgs, - account: Account, + opts: Opts, metrics: Arc, ) { - for (kind, tx) in transactions { - let labels = Labels::new( - kind.to_string(), - account.network.clone(), - args.location.clone(), - ); + let network = if opts.rpc_url.contains("mainnet") { + "mainnet" + } else if opts.rpc_url.contains("testnet") { + "testnet" + } else { + "localnet" + }; + + let rpc_client = JsonRpcClient::connect(&opts.rpc_url); + + for (kind, tx_sample) in transactions { + let labels = Labels::new(kind.to_string(), network.to_string(), opts.location.clone()); metrics.attempted_transactions.get_or_create(&labels).inc(); - for i in 0..args.count { - let tx = tx.clone(); - info!("executing transaction {}#{} for {}", tx.kind(), i, account); - match tx.execute(&account, &args.exec_args.key_path).await { + for i in 0..opts.repeats_number { + let tx_sample = tx_sample.clone(); + info!( + "executing transaction {}#{} for {}", + tx_sample.kind(), + i, + opts.signer_id + ); + + match tx_sample.execute(&rpc_client, opts.clone()).await { Ok(outcome) => { info!( "completed transaction {}#{} for {}: {}", - tx.kind(), + tx_sample.kind(), i, - account, + opts.signer_id, outcome ); metrics.successful_transactions.get_or_create(&labels).inc(); @@ -124,9 +136,9 @@ async fn run_account_transactions_once( Err(err) => { warn!( "error during transaction {}#{} for {}: {}", - tx.kind(), + tx_sample.kind(), i, - account, + opts.signer_id, err ); metrics.failed_transactions.get_or_create(&labels).inc(); @@ -147,20 +159,19 @@ mod tests { use async_trait::async_trait; use more_asserts::assert_ge; + use near_crypto::{KeyType, SecretKey}; use tokio::{sync::oneshot, time::sleep}; + use crate::config::Mode; use crate::{ - config::ExecArgs, metrics::{create_registry_and_metrics, Labels}, - Account, TransactionOutcome, + TransactionOutcome, }; use super::*; - const TEST_OK_TX_KIND: &str = "test_ok"; - const TEST_ERR_TX_KIND: &str = "test_err"; const LOCATION: &str = "eu"; - const NETWORK: &str = "localnet"; + const NETWORK: &str = "testnet"; const MIN_EXECUTIONS_IN_ONE_SECOND: u64 = 10; #[derive(Default)] @@ -169,12 +180,16 @@ mod tests { } #[async_trait] - impl Transaction for TestOkTransaction { + impl TransactionSample for TestOkTransaction { fn kind(&self) -> TransactionKind { - TransactionKind(TEST_OK_TX_KIND.to_string()) + TransactionKind::TokenTransfer } - async fn execute(&self, _: &Account, _: &str) -> Result { + async fn execute( + &self, + _rpc_client: &JsonRpcClient, + _opts: Opts, + ) -> anyhow::Result { self.exec_counter .fetch_add(1, std::sync::atomic::Ordering::SeqCst); Ok(TransactionOutcome::new(std::time::Duration::from_millis(1))) @@ -187,31 +202,33 @@ mod tests { } #[async_trait] - impl Transaction for TestErrTransaction { + impl TransactionSample for TestErrTransaction { fn kind(&self) -> TransactionKind { - TransactionKind(TEST_ERR_TX_KIND.to_string()) + TransactionKind::FungibleTokenTransfer } - async fn execute(&self, _: &Account, _: &str) -> Result { + async fn execute( + &self, + _rpc_client: &JsonRpcClient, + _opts: Opts, + ) -> anyhow::Result { self.exec_counter.fetch_add(1, Ordering::SeqCst); - Err(AppError::TransactionError("unknown error".to_string())) + Err(anyhow::anyhow!("unknown error".to_string())) } } - fn create_test_run_args() -> RunArgs { - RunArgs { - exec_args: ExecArgs { - accounts: vec![Account::new( - String::new(), - String::new(), - NETWORK.to_string(), - )], - key_path: String::new(), - }, + fn create_test_run_opts() -> Opts { + Opts { + mode: Mode::Run, + rpc_url: "https://rpc.testnet.near.org".to_string(), + signer_id: "cat.near".parse().unwrap(), + signer_key: SecretKey::from_random(KeyType::ED25519), + receiver_id: "dog.near".parse().unwrap(), + transaction_kind: TransactionKind::TokenTransfer, period: Duration::from_millis(1), metric_server_address: SocketAddr::from_str("0.0.0.0:9000").unwrap(), location: LOCATION.to_string(), - count: 1, + repeats_number: 1, } } @@ -234,7 +251,7 @@ mod tests { engine.add_transaction(ok_tx_clone); engine.add_transaction(err_tx_clone); engine - .run(create_test_run_args(), metrics_clone, shutdown_signal) + .run(create_test_run_opts(), metrics_clone, shutdown_signal) .await .unwrap(); }); @@ -242,7 +259,7 @@ mod tests { handle.abort(); let labels = Labels::new( - TEST_OK_TX_KIND.to_string(), + ok_tx.kind().to_string(), NETWORK.to_string(), LOCATION.to_string(), ); @@ -261,7 +278,7 @@ mod tests { ); let labels = Labels::new( - TEST_ERR_TX_KIND.to_string(), + err_tx.kind().to_string(), NETWORK.to_string(), LOCATION.to_string(), ); diff --git a/src/transaction/mod.rs b/src/transaction/mod.rs index 830a0f9..12c35d2 100644 --- a/src/transaction/mod.rs +++ b/src/transaction/mod.rs @@ -2,27 +2,31 @@ use core::fmt; use std::time::Duration; use async_trait::async_trait; -use derive_more::{Constructor, Deref, Display, From}; +use derive_more::{Constructor, Display, From}; use humantime::format_duration; +use near_jsonrpc_client::JsonRpcClient; -use crate::{Account, AppError}; +use crate::config::Opts; pub mod engine; mod token_transfer; -#[derive(Debug, PartialEq, Eq, Hash, Display, From, Deref, Constructor, Clone)] -pub struct TransactionKind(String); +#[derive(clap::ValueEnum, Debug, PartialEq, Eq, Hash, Display, From, Clone)] +pub enum TransactionKind { + TokenTransfer, + FungibleTokenTransfer, +} #[async_trait] -pub trait Transaction: Send + Sync { +pub trait TransactionSample: Send + Sync { fn kind(&self) -> TransactionKind; async fn execute( &self, - account: &Account, - key_path: &str, - ) -> Result; + rpc_client: &JsonRpcClient, + opts: Opts, + ) -> anyhow::Result; } #[derive(Debug, Constructor)] diff --git a/src/transaction/token_transfer.rs b/src/transaction/token_transfer.rs index 21ae74a..258df04 100644 --- a/src/transaction/token_transfer.rs +++ b/src/transaction/token_transfer.rs @@ -1,6 +1,12 @@ -use crate::{Account, AppError, Transaction, TransactionOutcome}; +use crate::config::Opts; +use crate::{TransactionOutcome, TransactionSample}; use async_trait::async_trait; -use tokio::{process::Command, time::Instant}; +use near_jsonrpc_client::{methods, JsonRpcClient}; +use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_primitives::action::TransferAction; +use near_primitives::transaction::{Action, Transaction}; +use near_primitives::types::BlockReference; +use tokio::time::Instant; use tracing::{debug, warn}; use super::TransactionKind; @@ -8,60 +14,64 @@ use super::TransactionKind; pub struct TokenTransfer {} #[async_trait] -impl Transaction for TokenTransfer { +impl TransactionSample for TokenTransfer { fn kind(&self) -> TransactionKind { - TransactionKind("token_transfer".to_string()) + TransactionKind::TokenTransfer } async fn execute( &self, - account: &Account, - key_path: &str, - ) -> Result { + rpc_client: &JsonRpcClient, + opts: Opts, + ) -> anyhow::Result { + let signer = near_crypto::InMemorySigner::from_secret_key( + opts.signer_id.clone(), + opts.signer_key.clone(), + ); + + let access_key_response = rpc_client + .call(methods::query::RpcQueryRequest { + block_reference: BlockReference::latest(), + request: near_primitives::views::QueryRequest::ViewAccessKey { + account_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + }, + }) + .await?; + + let current_nonce = match access_key_response.kind { + QueryResponseKind::AccessKey(access_key) => access_key.nonce, + _ => return Err(anyhow::anyhow!("Unreachable code")), + }; + + let transaction = Transaction { + signer_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + nonce: current_nonce + 1, + receiver_id: opts.receiver_id, + block_hash: access_key_response.block_hash, + actions: vec![Action::Transfer(TransferAction { deposit: 1 })], + }; + let request = methods::send_tx::RpcSendTransactionRequest { + signed_transaction: transaction.sign(&signer), + wait_until: Default::default(), + }; + let now = Instant::now(); - let output_result = Command::new("near") - .args([ - "tokens", - &account.signer_id, - "send-near", - &account.buddy_id, - "1 yoctoNEAR", - "network-config", - &account.network, - "sign-with-access-key-file", - &format!( - "{}/.near-credentials/{}/{}.json", - key_path, account.network, account.signer_id - ), - "send", - ]) - .output() - .await; - let elapsed = now.elapsed(); - match output_result { - Ok(output) => { - if output.status.success() { - debug!( - "successful call to near token send:\n{}\n{}", - String::from_utf8_lossy(&output.stdout), - String::from_utf8_lossy(&output.stderr) - ); - Ok(TransactionOutcome::new(elapsed)) - } else { - warn!( - "failure during call to near token send:\n{}\n{}", - String::from_utf8_lossy(&output.stdout), - String::from_utf8_lossy(&output.stderr) - ); - Err(AppError::TransactionError( - "near token send-near failed".to_string(), - )) - } + match rpc_client.call(request).await { + Ok(response) => { + debug!( + "successful NEAR transfer, status: {:?}\n", + response.final_execution_status, + ); + let elapsed = now.elapsed(); + Ok(TransactionOutcome::new(elapsed)) + } + Err(err) => { + warn!("failure during NEAR transfer:\n{}\n", err); + Err(anyhow::anyhow!("NEAR transfer failed: {}", err)) } - Err(err) => Err(AppError::TransactionError(format!( - "near CLI invocation failure ({err})" - ))), } } } From 56f5120e7c7b5250caa4c16342fc7969c9678282 Mon Sep 17 00:00:00 2001 From: telezhnaya Date: Mon, 27 May 2024 12:40:46 +0100 Subject: [PATCH 3/6] Add new metrics --- Cargo.lock | 1 + Cargo.toml | 19 ++-- src/transaction/engine.rs | 16 +++- src/transaction/fungible_token_transfer.rs | 87 +++++++++++++++++ src/transaction/mod.rs | 11 ++- src/transaction/swap.rs | 93 +++++++++++++++++++ ..._transfer.rs => token_transfer_default.rs} | 6 +- src/transaction/token_transfer_final.rs | 78 ++++++++++++++++ .../token_transfer_included_final.rs | 78 ++++++++++++++++ 9 files changed, 370 insertions(+), 19 deletions(-) create mode 100644 src/transaction/fungible_token_transfer.rs create mode 100644 src/transaction/swap.rs rename src/transaction/{token_transfer.rs => token_transfer_default.rs} (95%) create mode 100644 src/transaction/token_transfer_final.rs create mode 100644 src/transaction/token_transfer_included_final.rs diff --git a/Cargo.lock b/Cargo.lock index 2ec31dc..dfbe0ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4296,6 +4296,7 @@ dependencies = [ "near-primitives", "prometheus-client", "regex", + "serde_json", "thiserror", "tokio", "tower-http", diff --git a/Cargo.toml b/Cargo.toml index 6e1f126..6a52c03 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,25 +3,24 @@ name = "transaction-bench" version = "0.1.0" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] anyhow = "1.0.86" +async-trait = "0.1.79" axum = "0.7.5" clap = { version = "4.5.4", features = ["derive", "env", "string"] } +derive_more = { version = "=1.0.0-beta.6", features = ["display", "from", "deref", "constructor"]} dotenv = "0.15.0" +futures = "0.3.30" +homedir = "0.2.1" +humantime = "2.1.0" prometheus-client = "0.22.2" +regex = "1.10.4" +serde_json = "1.0.115" +thiserror = "1.0.58" tokio = { version = "1.37.0", features = ["rt-multi-thread", "tokio-macros", "parking_lot", "signal", "process"] } +tower-http = { version = "0.5.2", features = ["timeout"] } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } -tower-http = { version = "0.5.2", features = ["timeout"] } -thiserror = "1.0.58" -humantime = "2.1.0" -async-trait = "0.1.79" -derive_more = { version = "=1.0.0-beta.6", features = ["display", "from", "deref", "constructor"]} -futures = "0.3.30" -regex = "1.10.4" -homedir = "0.2.1" near-crypto = "0.21.2" near-jsonrpc-client = "0.9.0" diff --git a/src/transaction/engine.rs b/src/transaction/engine.rs index 365c9fb..48a0297 100644 --- a/src/transaction/engine.rs +++ b/src/transaction/engine.rs @@ -5,7 +5,11 @@ use tracing::{info, warn}; use crate::{ metrics::{Labels, Metrics}, - transaction::token_transfer::TokenTransfer, + transaction::{ + fungible_token_transfer::FungibleTokenTransfer, swap::Swap, + token_transfer_default::TokenTransferDefault, token_transfer_final::TokenTransferFinal, + token_transfer_included_final::TokenTransferIncludedFinal, + }, TransactionSample, }; @@ -32,7 +36,11 @@ impl Engine { }; } - add_transaction!(TokenTransfer); + add_transaction!(TokenTransferDefault); + add_transaction!(TokenTransferFinal); + add_transaction!(TokenTransferIncludedFinal); + add_transaction!(FungibleTokenTransfer); + add_transaction!(Swap); Engine { transactions } } @@ -182,7 +190,7 @@ mod tests { #[async_trait] impl TransactionSample for TestOkTransaction { fn kind(&self) -> TransactionKind { - TransactionKind::TokenTransfer + TransactionKind::TokenTransferDefault } async fn execute( @@ -224,7 +232,7 @@ mod tests { signer_id: "cat.near".parse().unwrap(), signer_key: SecretKey::from_random(KeyType::ED25519), receiver_id: "dog.near".parse().unwrap(), - transaction_kind: TransactionKind::TokenTransfer, + transaction_kind: TransactionKind::TokenTransferDefault, period: Duration::from_millis(1), metric_server_address: SocketAddr::from_str("0.0.0.0:9000").unwrap(), location: LOCATION.to_string(), diff --git a/src/transaction/fungible_token_transfer.rs b/src/transaction/fungible_token_transfer.rs new file mode 100644 index 0000000..857e032 --- /dev/null +++ b/src/transaction/fungible_token_transfer.rs @@ -0,0 +1,87 @@ +use crate::config::Opts; +use crate::{TransactionOutcome, TransactionSample}; +use async_trait::async_trait; +use near_jsonrpc_client::{methods, JsonRpcClient}; +use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_primitives::action::FunctionCallAction; +use near_primitives::transaction::{Action, Transaction}; +use near_primitives::types::BlockReference; +use tokio::time::Instant; +use tracing::{debug, warn}; + +use super::TransactionKind; + +pub struct FungibleTokenTransfer {} + +#[async_trait] +impl TransactionSample for FungibleTokenTransfer { + fn kind(&self) -> TransactionKind { + TransactionKind::FungibleTokenTransfer + } + + async fn execute( + &self, + rpc_client: &JsonRpcClient, + opts: Opts, + ) -> anyhow::Result { + let signer = near_crypto::InMemorySigner::from_secret_key( + opts.signer_id.clone(), + opts.signer_key.clone(), + ); + + let access_key_response = rpc_client + .call(methods::query::RpcQueryRequest { + block_reference: BlockReference::latest(), + request: near_primitives::views::QueryRequest::ViewAccessKey { + account_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + }, + }) + .await?; + + let current_nonce = match access_key_response.kind { + QueryResponseKind::AccessKey(access_key) => access_key.nonce, + _ => return Err(anyhow::anyhow!("Unreachable code")), + }; + + let transaction = Transaction { + signer_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + nonce: current_nonce + 1, + receiver_id: "usdt.tether-token.near".parse().unwrap(), + block_hash: access_key_response.block_hash, + actions: vec![Action::FunctionCall(Box::new(FunctionCallAction { + method_name: "ft_transfer".to_string(), + args: serde_json::json!({ + "amount": "1", + "receiver_id": opts.receiver_id, + }) + .to_string() + .into_bytes(), + gas: 100_000_000_000_000, // 100 TeraGas + deposit: 1, + }))], + }; + let request = methods::send_tx::RpcSendTransactionRequest { + signed_transaction: transaction.sign(&signer), + wait_until: Default::default(), + }; + + let now = Instant::now(); + + match rpc_client.call(request).await { + Ok(response) => { + debug!( + "successful USDT FT transfer, status: {:?}\n", + response.final_execution_status, + ); + let elapsed = now.elapsed(); + Ok(TransactionOutcome::new(elapsed)) + } + Err(err) => { + warn!("failure during USDT FT transfer:\n{}\n", err); + Err(anyhow::anyhow!("USDT FT transfer failed: {}", err)) + } + } + } +} diff --git a/src/transaction/mod.rs b/src/transaction/mod.rs index 12c35d2..073f503 100644 --- a/src/transaction/mod.rs +++ b/src/transaction/mod.rs @@ -10,12 +10,19 @@ use crate::config::Opts; pub mod engine; -mod token_transfer; +mod fungible_token_transfer; +mod swap; +mod token_transfer_default; +mod token_transfer_final; +mod token_transfer_included_final; #[derive(clap::ValueEnum, Debug, PartialEq, Eq, Hash, Display, From, Clone)] pub enum TransactionKind { - TokenTransfer, + TokenTransferDefault, + TokenTransferIncludedFinal, + TokenTransferFinal, FungibleTokenTransfer, + Swap, } #[async_trait] diff --git a/src/transaction/swap.rs b/src/transaction/swap.rs new file mode 100644 index 0000000..a122033 --- /dev/null +++ b/src/transaction/swap.rs @@ -0,0 +1,93 @@ +use crate::config::Opts; +use crate::{TransactionOutcome, TransactionSample}; +use async_trait::async_trait; +use near_jsonrpc_client::{methods, JsonRpcClient}; +use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_primitives::action::FunctionCallAction; +use near_primitives::transaction::{Action, Transaction}; +use near_primitives::types::BlockReference; +use tokio::time::Instant; +use tracing::{debug, warn}; + +use super::TransactionKind; + +pub struct Swap {} + +#[async_trait] +impl TransactionSample for Swap { + fn kind(&self) -> TransactionKind { + TransactionKind::Swap + } + + async fn execute( + &self, + rpc_client: &JsonRpcClient, + opts: Opts, + ) -> anyhow::Result { + let signer = near_crypto::InMemorySigner::from_secret_key( + opts.signer_id.clone(), + opts.signer_key.clone(), + ); + + let access_key_response = rpc_client + .call(methods::query::RpcQueryRequest { + block_reference: BlockReference::latest(), + request: near_primitives::views::QueryRequest::ViewAccessKey { + account_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + }, + }) + .await?; + + let current_nonce = match access_key_response.kind { + QueryResponseKind::AccessKey(access_key) => access_key.nonce, + _ => return Err(anyhow::anyhow!("Unreachable code")), + }; + + let transaction = Transaction { + signer_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + nonce: current_nonce + 1, + receiver_id: "wrap.near".parse().unwrap(), + block_hash: access_key_response.block_hash, + actions: vec![Action::FunctionCall(Box::new(FunctionCallAction { + method_name: "near_deposit".to_string(), + args: serde_json::json!({}) + .to_string() + .into_bytes(), + gas: 100_000_000_000_000, // 100 TeraGas + deposit: 1_000_000_000_000_000_000_000, // 0.001 NEAR + })), + Action::FunctionCall(Box::new(FunctionCallAction { + method_name: "ft_transfer_call".to_string(), + args: serde_json::json!({"msg": "{\"actions\":[{\"pool_id\":3879,\"token_in\":\"wrap.near\",\"token_out\":\"usdt.tether-token.near\",\"amount_in\":\"1000000000000000000000\",\"min_amount_out\":\"1\"}]}","amount": "1000000000000000000000","receiver_id": "v2.ref-finance.near"}) + .to_string() + .into_bytes(), + gas: 100_000_000_000_000, // 100 TeraGas + deposit: 1, + })), + ], + }; + let request = methods::send_tx::RpcSendTransactionRequest { + signed_transaction: transaction.sign(&signer), + wait_until: Default::default(), + }; + + let now = Instant::now(); + + match rpc_client.call(request).await { + Ok(response) => { + debug!( + "successful swap from NEAR to USDT, status: {:?}\n", + response.final_execution_status, + ); + let elapsed = now.elapsed(); + Ok(TransactionOutcome::new(elapsed)) + } + Err(err) => { + warn!("failure during swap from NEAR to USDT:\n{}\n", err); + Err(anyhow::anyhow!("swap from NEAR to USDT failed: {}", err)) + } + } + } +} diff --git a/src/transaction/token_transfer.rs b/src/transaction/token_transfer_default.rs similarity index 95% rename from src/transaction/token_transfer.rs rename to src/transaction/token_transfer_default.rs index 258df04..553fadb 100644 --- a/src/transaction/token_transfer.rs +++ b/src/transaction/token_transfer_default.rs @@ -11,12 +11,12 @@ use tracing::{debug, warn}; use super::TransactionKind; -pub struct TokenTransfer {} +pub struct TokenTransferDefault {} #[async_trait] -impl TransactionSample for TokenTransfer { +impl TransactionSample for TokenTransferDefault { fn kind(&self) -> TransactionKind { - TransactionKind::TokenTransfer + TransactionKind::TokenTransferDefault } async fn execute( diff --git a/src/transaction/token_transfer_final.rs b/src/transaction/token_transfer_final.rs new file mode 100644 index 0000000..83176f1 --- /dev/null +++ b/src/transaction/token_transfer_final.rs @@ -0,0 +1,78 @@ +use crate::config::Opts; +use crate::{TransactionOutcome, TransactionSample}; +use async_trait::async_trait; +use near_jsonrpc_client::{methods, JsonRpcClient}; +use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_primitives::action::TransferAction; +use near_primitives::transaction::{Action, Transaction}; +use near_primitives::types::BlockReference; +use near_primitives::views::TxExecutionStatus; +use tokio::time::Instant; +use tracing::{debug, warn}; + +use super::TransactionKind; + +pub struct TokenTransferFinal {} + +#[async_trait] +impl TransactionSample for TokenTransferFinal { + fn kind(&self) -> TransactionKind { + TransactionKind::TokenTransferFinal + } + + async fn execute( + &self, + rpc_client: &JsonRpcClient, + opts: Opts, + ) -> anyhow::Result { + let signer = near_crypto::InMemorySigner::from_secret_key( + opts.signer_id.clone(), + opts.signer_key.clone(), + ); + + let access_key_response = rpc_client + .call(methods::query::RpcQueryRequest { + block_reference: BlockReference::latest(), + request: near_primitives::views::QueryRequest::ViewAccessKey { + account_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + }, + }) + .await?; + + let current_nonce = match access_key_response.kind { + QueryResponseKind::AccessKey(access_key) => access_key.nonce, + _ => return Err(anyhow::anyhow!("Unreachable code")), + }; + + let transaction = Transaction { + signer_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + nonce: current_nonce + 1, + receiver_id: opts.receiver_id, + block_hash: access_key_response.block_hash, + actions: vec![Action::Transfer(TransferAction { deposit: 1 })], + }; + let request = methods::send_tx::RpcSendTransactionRequest { + signed_transaction: transaction.sign(&signer), + wait_until: TxExecutionStatus::Final, + }; + + let now = Instant::now(); + + match rpc_client.call(request).await { + Ok(response) => { + debug!( + "successful NEAR transfer, status: {:?}\n", + response.final_execution_status, + ); + let elapsed = now.elapsed(); + Ok(TransactionOutcome::new(elapsed)) + } + Err(err) => { + warn!("failure during NEAR transfer:\n{}\n", err); + Err(anyhow::anyhow!("NEAR transfer failed: {}", err)) + } + } + } +} diff --git a/src/transaction/token_transfer_included_final.rs b/src/transaction/token_transfer_included_final.rs new file mode 100644 index 0000000..9e11c9e --- /dev/null +++ b/src/transaction/token_transfer_included_final.rs @@ -0,0 +1,78 @@ +use crate::config::Opts; +use crate::{TransactionOutcome, TransactionSample}; +use async_trait::async_trait; +use near_jsonrpc_client::{methods, JsonRpcClient}; +use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_primitives::action::TransferAction; +use near_primitives::transaction::{Action, Transaction}; +use near_primitives::types::BlockReference; +use near_primitives::views::TxExecutionStatus; +use tokio::time::Instant; +use tracing::{debug, warn}; + +use super::TransactionKind; + +pub struct TokenTransferIncludedFinal {} + +#[async_trait] +impl TransactionSample for TokenTransferIncludedFinal { + fn kind(&self) -> TransactionKind { + TransactionKind::TokenTransferFinal + } + + async fn execute( + &self, + rpc_client: &JsonRpcClient, + opts: Opts, + ) -> anyhow::Result { + let signer = near_crypto::InMemorySigner::from_secret_key( + opts.signer_id.clone(), + opts.signer_key.clone(), + ); + + let access_key_response = rpc_client + .call(methods::query::RpcQueryRequest { + block_reference: BlockReference::latest(), + request: near_primitives::views::QueryRequest::ViewAccessKey { + account_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + }, + }) + .await?; + + let current_nonce = match access_key_response.kind { + QueryResponseKind::AccessKey(access_key) => access_key.nonce, + _ => return Err(anyhow::anyhow!("Unreachable code")), + }; + + let transaction = Transaction { + signer_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + nonce: current_nonce + 1, + receiver_id: opts.receiver_id, + block_hash: access_key_response.block_hash, + actions: vec![Action::Transfer(TransferAction { deposit: 1 })], + }; + let request = methods::send_tx::RpcSendTransactionRequest { + signed_transaction: transaction.sign(&signer), + wait_until: TxExecutionStatus::IncludedFinal, + }; + + let now = Instant::now(); + + match rpc_client.call(request).await { + Ok(response) => { + debug!( + "successful NEAR transfer, status: {:?}\n", + response.final_execution_status, + ); + let elapsed = now.elapsed(); + Ok(TransactionOutcome::new(elapsed)) + } + Err(err) => { + warn!("failure during NEAR transfer:\n{}\n", err); + Err(anyhow::anyhow!("NEAR transfer failed: {}", err)) + } + } + } +} From 7ba11e51be581010e4731835092c5bd1f40bdf7c Mon Sep 17 00:00:00 2001 From: telezhnaya Date: Mon, 27 May 2024 13:30:25 +0100 Subject: [PATCH 4/6] cleanup --- src/bin/main.rs | 2 +- src/config.rs | 2 +- src/lib.rs | 2 +- src/transaction/engine.rs | 48 +++++++++--- src/transaction/fungible_token_transfer.rs | 68 +++++----------- src/transaction/mod.rs | 77 +++++++++++++++---- src/transaction/swap.rs | 70 +++++------------ src/transaction/token_transfer_default.rs | 68 +++++----------- src/transaction/token_transfer_final.rs | 68 +++++----------- .../token_transfer_included_final.rs | 70 +++++------------ 10 files changed, 193 insertions(+), 282 deletions(-) diff --git a/src/bin/main.rs b/src/bin/main.rs index 5d55d12..4aca6e4 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -45,7 +45,7 @@ async fn test(opts: Opts, engine: Engine) -> anyhow::Result<()> { info!("executing transaction {} for {}", tx.kind(), opts.signer_id); let outcome = tx.execute(&rpc_client, opts.clone()).await?; info!( - "completed transaction {} for {}: {}", + "completed transaction {} for {}: {:?}", tx.kind(), opts.signer_id, outcome diff --git a/src/config.rs b/src/config.rs index a9e529b..2c3c1c3 100644 --- a/src/config.rs +++ b/src/config.rs @@ -41,7 +41,7 @@ pub struct Opts { #[clap(long, env)] pub receiver_id: AccountId, /// Transaction kind - #[clap(long, env, value_enum, default_value = "token_transfer")] + #[clap(long, env, value_enum, default_value = "token-transfer-default")] pub transaction_kind: TransactionKind, /// Number of times each transaction is performed at every benchmarking run #[clap(long, env, default_value_t = 1)] diff --git a/src/lib.rs b/src/lib.rs index a3295b3..7ef00a9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,4 +4,4 @@ pub mod metrics; pub use metrics::MetricServer; pub mod transaction; -pub use transaction::{engine::Engine, TransactionKind, TransactionOutcome, TransactionSample}; +pub use transaction::{engine::Engine, TransactionKind, TransactionSample}; diff --git a/src/transaction/engine.rs b/src/transaction/engine.rs index 48a0297..f12e2b6 100644 --- a/src/transaction/engine.rs +++ b/src/transaction/engine.rs @@ -129,7 +129,7 @@ async fn run_account_transactions_once( match tx_sample.execute(&rpc_client, opts.clone()).await { Ok(outcome) => { info!( - "completed transaction {}#{} for {}: {}", + "completed transaction {}#{} for {}: {:?}", tx_sample.kind(), i, opts.signer_id, @@ -139,7 +139,7 @@ async fn run_account_transactions_once( metrics .transaction_latency .get_or_create(&labels) - .observe(outcome.latency.as_secs_f64()); + .observe(outcome.as_secs_f64()); } Err(err) => { warn!( @@ -167,14 +167,14 @@ mod tests { use async_trait::async_trait; use more_asserts::assert_ge; - use near_crypto::{KeyType, SecretKey}; + use near_crypto::{InMemorySigner, KeyType, SecretKey}; + use near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest; + use near_primitives::hash::CryptoHash; + use near_primitives::types::Nonce; use tokio::{sync::oneshot, time::sleep}; use crate::config::Mode; - use crate::{ - metrics::{create_registry_and_metrics, Labels}, - TransactionOutcome, - }; + use crate::metrics::{create_registry_and_metrics, Labels}; use super::*; @@ -193,14 +193,28 @@ mod tests { TransactionKind::TokenTransferDefault } + fn get_name(&self) -> &str { + unimplemented!(); + } + + fn get_transaction_request( + &self, + _: &InMemorySigner, + _: Opts, + _: Nonce, + _: CryptoHash, + ) -> RpcSendTransactionRequest { + unimplemented!(); + } + async fn execute( &self, _rpc_client: &JsonRpcClient, _opts: Opts, - ) -> anyhow::Result { + ) -> anyhow::Result { self.exec_counter .fetch_add(1, std::sync::atomic::Ordering::SeqCst); - Ok(TransactionOutcome::new(std::time::Duration::from_millis(1))) + Ok(std::time::Duration::from_millis(1)) } } @@ -215,11 +229,25 @@ mod tests { TransactionKind::FungibleTokenTransfer } + fn get_name(&self) -> &str { + unimplemented!(); + } + + fn get_transaction_request( + &self, + _: &InMemorySigner, + _: Opts, + _: Nonce, + _: CryptoHash, + ) -> RpcSendTransactionRequest { + unimplemented!(); + } + async fn execute( &self, _rpc_client: &JsonRpcClient, _opts: Opts, - ) -> anyhow::Result { + ) -> anyhow::Result { self.exec_counter.fetch_add(1, Ordering::SeqCst); Err(anyhow::anyhow!("unknown error".to_string())) } diff --git a/src/transaction/fungible_token_transfer.rs b/src/transaction/fungible_token_transfer.rs index 857e032..c137d32 100644 --- a/src/transaction/fungible_token_transfer.rs +++ b/src/transaction/fungible_token_transfer.rs @@ -1,13 +1,12 @@ use crate::config::Opts; -use crate::{TransactionOutcome, TransactionSample}; +use crate::TransactionSample; use async_trait::async_trait; -use near_jsonrpc_client::{methods, JsonRpcClient}; -use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_crypto::InMemorySigner; +use near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest; use near_primitives::action::FunctionCallAction; +use near_primitives::hash::CryptoHash; use near_primitives::transaction::{Action, Transaction}; -use near_primitives::types::BlockReference; -use tokio::time::Instant; -use tracing::{debug, warn}; +use near_primitives::types::Nonce; use super::TransactionKind; @@ -19,37 +18,23 @@ impl TransactionSample for FungibleTokenTransfer { TransactionKind::FungibleTokenTransfer } - async fn execute( + fn get_name(&self) -> &str { + "USDT FT transfer" + } + + fn get_transaction_request( &self, - rpc_client: &JsonRpcClient, + signer: &InMemorySigner, opts: Opts, - ) -> anyhow::Result { - let signer = near_crypto::InMemorySigner::from_secret_key( - opts.signer_id.clone(), - opts.signer_key.clone(), - ); - - let access_key_response = rpc_client - .call(methods::query::RpcQueryRequest { - block_reference: BlockReference::latest(), - request: near_primitives::views::QueryRequest::ViewAccessKey { - account_id: signer.account_id.clone(), - public_key: signer.public_key.clone(), - }, - }) - .await?; - - let current_nonce = match access_key_response.kind { - QueryResponseKind::AccessKey(access_key) => access_key.nonce, - _ => return Err(anyhow::anyhow!("Unreachable code")), - }; - + nonce: Nonce, + block_hash: CryptoHash, + ) -> RpcSendTransactionRequest { let transaction = Transaction { signer_id: signer.account_id.clone(), public_key: signer.public_key.clone(), - nonce: current_nonce + 1, + nonce: nonce + 1, receiver_id: "usdt.tether-token.near".parse().unwrap(), - block_hash: access_key_response.block_hash, + block_hash, actions: vec![Action::FunctionCall(Box::new(FunctionCallAction { method_name: "ft_transfer".to_string(), args: serde_json::json!({ @@ -62,26 +47,9 @@ impl TransactionSample for FungibleTokenTransfer { deposit: 1, }))], }; - let request = methods::send_tx::RpcSendTransactionRequest { - signed_transaction: transaction.sign(&signer), + RpcSendTransactionRequest { + signed_transaction: transaction.sign(signer), wait_until: Default::default(), - }; - - let now = Instant::now(); - - match rpc_client.call(request).await { - Ok(response) => { - debug!( - "successful USDT FT transfer, status: {:?}\n", - response.final_execution_status, - ); - let elapsed = now.elapsed(); - Ok(TransactionOutcome::new(elapsed)) - } - Err(err) => { - warn!("failure during USDT FT transfer:\n{}\n", err); - Err(anyhow::anyhow!("USDT FT transfer failed: {}", err)) - } } } } diff --git a/src/transaction/mod.rs b/src/transaction/mod.rs index 073f503..7f53ae2 100644 --- a/src/transaction/mod.rs +++ b/src/transaction/mod.rs @@ -1,10 +1,14 @@ -use core::fmt; -use std::time::Duration; - use async_trait::async_trait; -use derive_more::{Constructor, Display, From}; -use humantime::format_duration; -use near_jsonrpc_client::JsonRpcClient; +use derive_more::{Display, From}; +use near_crypto::InMemorySigner; +use near_jsonrpc_client::{methods, JsonRpcClient}; +use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest; +use near_primitives::hash::CryptoHash; +use near_primitives::types::{BlockReference, Nonce}; +use std::time::Duration; +use tokio::time::Instant; +use tracing::{debug, warn}; use crate::config::Opts; @@ -29,20 +33,59 @@ pub enum TransactionKind { pub trait TransactionSample: Send + Sync { fn kind(&self) -> TransactionKind; - async fn execute( + fn get_name(&self) -> &str; + + fn get_transaction_request( &self, - rpc_client: &JsonRpcClient, + signer: &InMemorySigner, opts: Opts, - ) -> anyhow::Result; -} + nonce: Nonce, + block_hash: CryptoHash, + ) -> RpcSendTransactionRequest; -#[derive(Debug, Constructor)] -pub struct TransactionOutcome { - pub latency: Duration, -} + async fn execute(&self, rpc_client: &JsonRpcClient, opts: Opts) -> anyhow::Result { + let now = Instant::now(); + + let signer = near_crypto::InMemorySigner::from_secret_key( + opts.signer_id.clone(), + opts.signer_key.clone(), + ); + + let access_key_response = rpc_client + .call(methods::query::RpcQueryRequest { + block_reference: BlockReference::latest(), + request: near_primitives::views::QueryRequest::ViewAccessKey { + account_id: signer.account_id.clone(), + public_key: signer.public_key.clone(), + }, + }) + .await?; + + let current_nonce = match access_key_response.kind { + QueryResponseKind::AccessKey(access_key) => access_key.nonce, + _ => return Err(anyhow::anyhow!("Unreachable code")), + }; + + let request = self.get_transaction_request( + &signer, + opts, + current_nonce, + access_key_response.block_hash, + ); -impl fmt::Display for TransactionOutcome { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "latency = {}", format_duration(self.latency)) + match rpc_client.call(request).await { + Ok(response) => { + debug!( + "successful {}, status: {:?}\n", + self.get_name(), + response.final_execution_status, + ); + Ok(now.elapsed()) + } + Err(err) => { + warn!("failure during {}:\n{}\n", self.get_name(), err); + Err(anyhow::anyhow!("{} failed: {}", self.get_name(), err)) + } + } } } diff --git a/src/transaction/swap.rs b/src/transaction/swap.rs index a122033..f2f6cea 100644 --- a/src/transaction/swap.rs +++ b/src/transaction/swap.rs @@ -1,13 +1,12 @@ use crate::config::Opts; -use crate::{TransactionOutcome, TransactionSample}; +use crate::TransactionSample; use async_trait::async_trait; -use near_jsonrpc_client::{methods, JsonRpcClient}; -use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_crypto::InMemorySigner; +use near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest; use near_primitives::action::FunctionCallAction; +use near_primitives::hash::CryptoHash; use near_primitives::transaction::{Action, Transaction}; -use near_primitives::types::BlockReference; -use tokio::time::Instant; -use tracing::{debug, warn}; +use near_primitives::types::Nonce; use super::TransactionKind; @@ -19,37 +18,23 @@ impl TransactionSample for Swap { TransactionKind::Swap } - async fn execute( - &self, - rpc_client: &JsonRpcClient, - opts: Opts, - ) -> anyhow::Result { - let signer = near_crypto::InMemorySigner::from_secret_key( - opts.signer_id.clone(), - opts.signer_key.clone(), - ); - - let access_key_response = rpc_client - .call(methods::query::RpcQueryRequest { - block_reference: BlockReference::latest(), - request: near_primitives::views::QueryRequest::ViewAccessKey { - account_id: signer.account_id.clone(), - public_key: signer.public_key.clone(), - }, - }) - .await?; - - let current_nonce = match access_key_response.kind { - QueryResponseKind::AccessKey(access_key) => access_key.nonce, - _ => return Err(anyhow::anyhow!("Unreachable code")), - }; + fn get_name(&self) -> &str { + "swap from NEAR to USDT" + } + fn get_transaction_request( + &self, + signer: &InMemorySigner, + _opts: Opts, + nonce: Nonce, + block_hash: CryptoHash, + ) -> RpcSendTransactionRequest { let transaction = Transaction { signer_id: signer.account_id.clone(), public_key: signer.public_key.clone(), - nonce: current_nonce + 1, + nonce: nonce + 1, receiver_id: "wrap.near".parse().unwrap(), - block_hash: access_key_response.block_hash, + block_hash, actions: vec![Action::FunctionCall(Box::new(FunctionCallAction { method_name: "near_deposit".to_string(), args: serde_json::json!({}) @@ -68,26 +53,9 @@ impl TransactionSample for Swap { })), ], }; - let request = methods::send_tx::RpcSendTransactionRequest { - signed_transaction: transaction.sign(&signer), + RpcSendTransactionRequest { + signed_transaction: transaction.sign(signer), wait_until: Default::default(), - }; - - let now = Instant::now(); - - match rpc_client.call(request).await { - Ok(response) => { - debug!( - "successful swap from NEAR to USDT, status: {:?}\n", - response.final_execution_status, - ); - let elapsed = now.elapsed(); - Ok(TransactionOutcome::new(elapsed)) - } - Err(err) => { - warn!("failure during swap from NEAR to USDT:\n{}\n", err); - Err(anyhow::anyhow!("swap from NEAR to USDT failed: {}", err)) - } } } } diff --git a/src/transaction/token_transfer_default.rs b/src/transaction/token_transfer_default.rs index 553fadb..be0e76e 100644 --- a/src/transaction/token_transfer_default.rs +++ b/src/transaction/token_transfer_default.rs @@ -1,13 +1,12 @@ use crate::config::Opts; -use crate::{TransactionOutcome, TransactionSample}; +use crate::TransactionSample; use async_trait::async_trait; -use near_jsonrpc_client::{methods, JsonRpcClient}; -use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_crypto::InMemorySigner; +use near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest; use near_primitives::action::TransferAction; +use near_primitives::hash::CryptoHash; use near_primitives::transaction::{Action, Transaction}; -use near_primitives::types::BlockReference; -use tokio::time::Instant; -use tracing::{debug, warn}; +use near_primitives::types::Nonce; use super::TransactionKind; @@ -19,59 +18,28 @@ impl TransactionSample for TokenTransferDefault { TransactionKind::TokenTransferDefault } - async fn execute( + fn get_name(&self) -> &str { + "NEAR transfer, wait_until default" + } + + fn get_transaction_request( &self, - rpc_client: &JsonRpcClient, + signer: &InMemorySigner, opts: Opts, - ) -> anyhow::Result { - let signer = near_crypto::InMemorySigner::from_secret_key( - opts.signer_id.clone(), - opts.signer_key.clone(), - ); - - let access_key_response = rpc_client - .call(methods::query::RpcQueryRequest { - block_reference: BlockReference::latest(), - request: near_primitives::views::QueryRequest::ViewAccessKey { - account_id: signer.account_id.clone(), - public_key: signer.public_key.clone(), - }, - }) - .await?; - - let current_nonce = match access_key_response.kind { - QueryResponseKind::AccessKey(access_key) => access_key.nonce, - _ => return Err(anyhow::anyhow!("Unreachable code")), - }; - + nonce: Nonce, + block_hash: CryptoHash, + ) -> RpcSendTransactionRequest { let transaction = Transaction { signer_id: signer.account_id.clone(), public_key: signer.public_key.clone(), - nonce: current_nonce + 1, + nonce: nonce + 1, receiver_id: opts.receiver_id, - block_hash: access_key_response.block_hash, + block_hash, actions: vec![Action::Transfer(TransferAction { deposit: 1 })], }; - let request = methods::send_tx::RpcSendTransactionRequest { - signed_transaction: transaction.sign(&signer), + RpcSendTransactionRequest { + signed_transaction: transaction.sign(signer), wait_until: Default::default(), - }; - - let now = Instant::now(); - - match rpc_client.call(request).await { - Ok(response) => { - debug!( - "successful NEAR transfer, status: {:?}\n", - response.final_execution_status, - ); - let elapsed = now.elapsed(); - Ok(TransactionOutcome::new(elapsed)) - } - Err(err) => { - warn!("failure during NEAR transfer:\n{}\n", err); - Err(anyhow::anyhow!("NEAR transfer failed: {}", err)) - } } } } diff --git a/src/transaction/token_transfer_final.rs b/src/transaction/token_transfer_final.rs index 83176f1..a4e867e 100644 --- a/src/transaction/token_transfer_final.rs +++ b/src/transaction/token_transfer_final.rs @@ -1,14 +1,13 @@ use crate::config::Opts; -use crate::{TransactionOutcome, TransactionSample}; +use crate::TransactionSample; use async_trait::async_trait; -use near_jsonrpc_client::{methods, JsonRpcClient}; -use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_crypto::InMemorySigner; +use near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest; use near_primitives::action::TransferAction; +use near_primitives::hash::CryptoHash; use near_primitives::transaction::{Action, Transaction}; -use near_primitives::types::BlockReference; +use near_primitives::types::Nonce; use near_primitives::views::TxExecutionStatus; -use tokio::time::Instant; -use tracing::{debug, warn}; use super::TransactionKind; @@ -20,59 +19,28 @@ impl TransactionSample for TokenTransferFinal { TransactionKind::TokenTransferFinal } - async fn execute( + fn get_name(&self) -> &str { + "NEAR transfer, wait_until Final" + } + + fn get_transaction_request( &self, - rpc_client: &JsonRpcClient, + signer: &InMemorySigner, opts: Opts, - ) -> anyhow::Result { - let signer = near_crypto::InMemorySigner::from_secret_key( - opts.signer_id.clone(), - opts.signer_key.clone(), - ); - - let access_key_response = rpc_client - .call(methods::query::RpcQueryRequest { - block_reference: BlockReference::latest(), - request: near_primitives::views::QueryRequest::ViewAccessKey { - account_id: signer.account_id.clone(), - public_key: signer.public_key.clone(), - }, - }) - .await?; - - let current_nonce = match access_key_response.kind { - QueryResponseKind::AccessKey(access_key) => access_key.nonce, - _ => return Err(anyhow::anyhow!("Unreachable code")), - }; - + nonce: Nonce, + block_hash: CryptoHash, + ) -> RpcSendTransactionRequest { let transaction = Transaction { signer_id: signer.account_id.clone(), public_key: signer.public_key.clone(), - nonce: current_nonce + 1, + nonce: nonce + 1, receiver_id: opts.receiver_id, - block_hash: access_key_response.block_hash, + block_hash, actions: vec![Action::Transfer(TransferAction { deposit: 1 })], }; - let request = methods::send_tx::RpcSendTransactionRequest { - signed_transaction: transaction.sign(&signer), + RpcSendTransactionRequest { + signed_transaction: transaction.sign(signer), wait_until: TxExecutionStatus::Final, - }; - - let now = Instant::now(); - - match rpc_client.call(request).await { - Ok(response) => { - debug!( - "successful NEAR transfer, status: {:?}\n", - response.final_execution_status, - ); - let elapsed = now.elapsed(); - Ok(TransactionOutcome::new(elapsed)) - } - Err(err) => { - warn!("failure during NEAR transfer:\n{}\n", err); - Err(anyhow::anyhow!("NEAR transfer failed: {}", err)) - } } } } diff --git a/src/transaction/token_transfer_included_final.rs b/src/transaction/token_transfer_included_final.rs index 9e11c9e..687142d 100644 --- a/src/transaction/token_transfer_included_final.rs +++ b/src/transaction/token_transfer_included_final.rs @@ -1,14 +1,13 @@ use crate::config::Opts; -use crate::{TransactionOutcome, TransactionSample}; +use crate::TransactionSample; use async_trait::async_trait; -use near_jsonrpc_client::{methods, JsonRpcClient}; -use near_jsonrpc_primitives::types::query::QueryResponseKind; +use near_crypto::InMemorySigner; +use near_jsonrpc_primitives::types::transactions::RpcSendTransactionRequest; use near_primitives::action::TransferAction; +use near_primitives::hash::CryptoHash; use near_primitives::transaction::{Action, Transaction}; -use near_primitives::types::BlockReference; +use near_primitives::types::Nonce; use near_primitives::views::TxExecutionStatus; -use tokio::time::Instant; -use tracing::{debug, warn}; use super::TransactionKind; @@ -17,62 +16,31 @@ pub struct TokenTransferIncludedFinal {} #[async_trait] impl TransactionSample for TokenTransferIncludedFinal { fn kind(&self) -> TransactionKind { - TransactionKind::TokenTransferFinal + TransactionKind::TokenTransferIncludedFinal } - async fn execute( + fn get_name(&self) -> &str { + "NEAR transfer, wait_until IncludedFinal" + } + + fn get_transaction_request( &self, - rpc_client: &JsonRpcClient, + signer: &InMemorySigner, opts: Opts, - ) -> anyhow::Result { - let signer = near_crypto::InMemorySigner::from_secret_key( - opts.signer_id.clone(), - opts.signer_key.clone(), - ); - - let access_key_response = rpc_client - .call(methods::query::RpcQueryRequest { - block_reference: BlockReference::latest(), - request: near_primitives::views::QueryRequest::ViewAccessKey { - account_id: signer.account_id.clone(), - public_key: signer.public_key.clone(), - }, - }) - .await?; - - let current_nonce = match access_key_response.kind { - QueryResponseKind::AccessKey(access_key) => access_key.nonce, - _ => return Err(anyhow::anyhow!("Unreachable code")), - }; - + nonce: Nonce, + block_hash: CryptoHash, + ) -> RpcSendTransactionRequest { let transaction = Transaction { signer_id: signer.account_id.clone(), public_key: signer.public_key.clone(), - nonce: current_nonce + 1, + nonce: nonce + 1, receiver_id: opts.receiver_id, - block_hash: access_key_response.block_hash, + block_hash, actions: vec![Action::Transfer(TransferAction { deposit: 1 })], }; - let request = methods::send_tx::RpcSendTransactionRequest { - signed_transaction: transaction.sign(&signer), + RpcSendTransactionRequest { + signed_transaction: transaction.sign(signer), wait_until: TxExecutionStatus::IncludedFinal, - }; - - let now = Instant::now(); - - match rpc_client.call(request).await { - Ok(response) => { - debug!( - "successful NEAR transfer, status: {:?}\n", - response.final_execution_status, - ); - let elapsed = now.elapsed(); - Ok(TransactionOutcome::new(elapsed)) - } - Err(err) => { - warn!("failure during NEAR transfer:\n{}\n", err); - Err(anyhow::anyhow!("NEAR transfer failed: {}", err)) - } } } } From e8c06653dd4f1032983473560cc11b5de2d645f7 Mon Sep 17 00:00:00 2001 From: telezhnaya Date: Mon, 27 May 2024 13:55:43 +0100 Subject: [PATCH 5/6] cleanup --- src/transaction/fungible_token_transfer.rs | 9 +++---- src/transaction/swap.rs | 29 ++++++++++------------ 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/transaction/fungible_token_transfer.rs b/src/transaction/fungible_token_transfer.rs index c137d32..6ff212a 100644 --- a/src/transaction/fungible_token_transfer.rs +++ b/src/transaction/fungible_token_transfer.rs @@ -37,12 +37,9 @@ impl TransactionSample for FungibleTokenTransfer { block_hash, actions: vec![Action::FunctionCall(Box::new(FunctionCallAction { method_name: "ft_transfer".to_string(), - args: serde_json::json!({ - "amount": "1", - "receiver_id": opts.receiver_id, - }) - .to_string() - .into_bytes(), + args: serde_json::json!({"amount": "1","receiver_id": opts.receiver_id}) + .to_string() + .into_bytes(), gas: 100_000_000_000_000, // 100 TeraGas deposit: 1, }))], diff --git a/src/transaction/swap.rs b/src/transaction/swap.rs index f2f6cea..75c0dd9 100644 --- a/src/transaction/swap.rs +++ b/src/transaction/swap.rs @@ -35,22 +35,19 @@ impl TransactionSample for Swap { nonce: nonce + 1, receiver_id: "wrap.near".parse().unwrap(), block_hash, - actions: vec![Action::FunctionCall(Box::new(FunctionCallAction { - method_name: "near_deposit".to_string(), - args: serde_json::json!({}) - .to_string() - .into_bytes(), - gas: 100_000_000_000_000, // 100 TeraGas - deposit: 1_000_000_000_000_000_000_000, // 0.001 NEAR - })), - Action::FunctionCall(Box::new(FunctionCallAction { - method_name: "ft_transfer_call".to_string(), - args: serde_json::json!({"msg": "{\"actions\":[{\"pool_id\":3879,\"token_in\":\"wrap.near\",\"token_out\":\"usdt.tether-token.near\",\"amount_in\":\"1000000000000000000000\",\"min_amount_out\":\"1\"}]}","amount": "1000000000000000000000","receiver_id": "v2.ref-finance.near"}) - .to_string() - .into_bytes(), - gas: 100_000_000_000_000, // 100 TeraGas - deposit: 1, - })), + actions: vec![ + Action::FunctionCall(Box::new(FunctionCallAction { + method_name: "near_deposit".to_string(), + args: serde_json::json!({}).to_string().into_bytes(), + gas: 100_000_000_000_000, // 100 TeraGas + deposit: 1_000_000_000_000_000_000_000, // 0.001 NEAR + })), + Action::FunctionCall(Box::new(FunctionCallAction { + method_name: "ft_transfer_call".to_string(), + args: serde_json::json!({"msg": "{\"actions\":[{\"pool_id\":3879,\"token_in\":\"wrap.near\",\"token_out\":\"usdt.tether-token.near\",\"amount_in\":\"1000000000000000000000\",\"min_amount_out\":\"1\"}]}","amount": "1000000000000000000000","receiver_id": "v2.ref-finance.near"}).to_string().into_bytes(), + gas: 100_000_000_000_000, // 100 TeraGas + deposit: 1, + })), ], }; RpcSendTransactionRequest { From 8a7a037474f063e25fd97df73ea65c655336601c Mon Sep 17 00:00:00 2001 From: telezhnaya Date: Mon, 27 May 2024 14:18:49 +0100 Subject: [PATCH 6/6] fix docker file --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1ea3a7f..0593b15 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,6 @@ FROM rust:1.77.0 as builder RUN apt-get update && apt-get install -y curl libudev-dev && rm -rf /var/lib/apt/lists/* WORKDIR /usr/src/app -RUN sh -c '(curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/near-cli-rs/releases/download/v0.8.1/near-cli-rs-installer.sh | sh) || \ - cargo install near-cli-rs' COPY . . RUN cargo install --path .