From 2273637a0785a5bca95baef21cebcc7f5fceabce Mon Sep 17 00:00:00 2001 From: Bryan Stitt Date: Tue, 30 May 2023 20:58:24 -0700 Subject: [PATCH] move cli into a separate packge and clean up dependencies --- .cargo/config.toml | 8 +- Cargo.lock | 363 +++++++++++------- Cargo.toml | 1 + Dockerfile | 2 +- entities/Cargo.toml | 2 +- latency/src/ewma.rs | 2 +- rate-counter/Cargo.toml | 1 - redis-rate-limiter/Cargo.toml | 2 +- web3_proxy/Cargo.toml | 40 +- web3_proxy/src/rpcs/jsonrpc_client.rs | 4 + web3_proxy_cli/Cargo.toml | 44 +++ .../examples/subscribe_blocks.rs | 0 .../examples/tracing.rs | 0 .../examples/watch_blocks.rs | 0 .../src/bin/curve_api_checks.rs | 0 .../src/bin/wait_for_sync.rs | 0 .../src}/change_admin_status.rs | 0 .../src}/change_user_address.rs | 0 .../src}/change_user_tier.rs | 0 .../src}/change_user_tier_by_address.rs | 0 .../src}/change_user_tier_by_key.rs | 0 .../src}/check_config.rs | 0 .../src}/count_users.rs | 0 .../src}/create_key.rs | 0 .../src}/create_user.rs | 0 .../src}/delete_user.rs | 0 .../src}/drop_migration_lock.rs | 0 .../src}/example.rs | 0 .../src}/list_recent_users.rs | 0 .../src}/list_user_tier.rs | 0 .../src}/main.rs | 0 .../src}/migrate_stats_to_v2.rs | 0 .../src}/pagerduty.rs | 0 .../src}/popularity_contest.rs | 0 .../src}/proxyd.rs | 0 .../src}/rpc_accounting.rs | 0 .../src}/search_kafka.rs | 0 .../src}/sentryd/compare.rs | 0 .../src}/sentryd/mod.rs | 0 .../src}/sentryd/simple.rs | 0 .../src}/stat_age.rs | 0 .../src}/transfer_key.rs | 0 .../src}/user_export.rs | 0 .../src}/user_import.rs | 0 44 files changed, 304 insertions(+), 165 deletions(-) create mode 100644 web3_proxy/src/rpcs/jsonrpc_client.rs create mode 100644 web3_proxy_cli/Cargo.toml rename {web3_proxy => web3_proxy_cli}/examples/subscribe_blocks.rs (100%) rename {web3_proxy => web3_proxy_cli}/examples/tracing.rs (100%) rename {web3_proxy => web3_proxy_cli}/examples/watch_blocks.rs (100%) rename {web3_proxy => web3_proxy_cli}/src/bin/curve_api_checks.rs (100%) rename {web3_proxy => web3_proxy_cli}/src/bin/wait_for_sync.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/change_admin_status.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/change_user_address.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/change_user_tier.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/change_user_tier_by_address.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/change_user_tier_by_key.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/check_config.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/count_users.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/create_key.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/create_user.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/delete_user.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/drop_migration_lock.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/example.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/list_recent_users.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/list_user_tier.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/main.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/migrate_stats_to_v2.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/pagerduty.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/popularity_contest.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/proxyd.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/rpc_accounting.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/search_kafka.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/sentryd/compare.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/sentryd/mod.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/sentryd/simple.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/stat_age.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/transfer_key.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/user_export.rs (100%) rename {web3_proxy/src/bin/web3_proxy_cli => web3_proxy_cli/src}/user_import.rs (100%) diff --git a/.cargo/config.toml b/.cargo/config.toml index 41beade0..8d50c76b 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,11 +3,15 @@ rustflags = [ # potentially faster. https://nnethercote.github.io/perf-book/build-configuration.html "-C", "target-cpu=native", # tokio unstable is needed for tokio-console - "--cfg", "tokio_unstable" + "--cfg", "tokio_unstable", + # uuid unstable is needed for zerocopy deserialize + "--cfg", "uuid_unstable", ] rustdocflags = [ # potentially faster. https://nnethercote.github.io/perf-book/build-configuration.html "-C", "target-cpu=native", # tokio unstable is needed for tokio-console - "--cfg", "tokio_unstable" + "--cfg", "tokio_unstable", + # uuid unstable is needed for zerocopy deserialize + "--cfg", "uuid_unstable", ] diff --git a/Cargo.lock b/Cargo.lock index 925d8fac..7d87a561 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -170,6 +170,19 @@ dependencies = [ "term", ] +[[package]] +name = "async-compression" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0122885821398cc923ece939e24d1056a2384ee719432397fa9db87230ff11" +dependencies = [ + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + [[package]] name = "async-stream" version = "0.3.5" @@ -189,7 +202,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -200,7 +213,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -291,7 +304,7 @@ dependencies = [ "sha1", "sync_wrapper", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.18.0", "tower", "tower-layer", "tower-service", @@ -334,7 +347,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -661,9 +674,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.25" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbc37d37da9e5bce8173f3a41b71d9bf3c674deebbaceacd0ebdabde76efb03" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" dependencies = [ "android-tzdata", "iana-time-zone", @@ -760,7 +773,7 @@ dependencies = [ "bincode", "bs58", "coins-core", - "digest 0.10.6", + "digest 0.10.7", "getrandom", "hmac", "k256 0.13.1", @@ -796,7 +809,7 @@ dependencies = [ "base64 0.21.2", "bech32", "bs58", - "digest 0.10.6", + "digest 0.10.7", "generic-array", "hex", "ripemd", @@ -1154,6 +1167,12 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "data-encoding" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + [[package]] name = "deadpool" version = "0.9.5" @@ -1233,9 +1252,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e58dffcdcc8ee7b22f0c1f71a69243d7c2d9ad87b5a14361f2424a1565c219" +checksum = "56acb310e15652100da43d130af8d97b509e95af61aab1c5a7939ef24337ee17" dependencies = [ "const-oid 0.9.2", "zeroize", @@ -1283,9 +1302,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "const-oid 0.9.2", @@ -1376,9 +1395,9 @@ version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428" dependencies = [ - "der 0.7.5", - "digest 0.10.6", - "elliptic-curve 0.13.4", + "der 0.7.6", + "digest 0.10.7", + "elliptic-curve 0.13.5", "rfc6979 0.4.0", "signature 2.1.0", "spki 0.7.2", @@ -1399,7 +1418,7 @@ dependencies = [ "base16ct 0.1.1", "crypto-bigint 0.4.9", "der 0.6.1", - "digest 0.10.6", + "digest 0.10.7", "ff 0.12.1", "generic-array", "group 0.12.1", @@ -1411,13 +1430,13 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" +checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" dependencies = [ "base16ct 0.2.0", "crypto-bigint 0.5.2", - "digest 0.10.6", + "digest 0.10.7", "ff 0.13.0", "generic-array", "group 0.13.0", @@ -1529,7 +1548,7 @@ checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ "aes 0.8.2", "ctr", - "digest 0.10.6", + "digest 0.10.7", "hex", "hmac", "pbkdf2 0.11.0", @@ -1593,9 +1612,9 @@ dependencies = [ [[package]] name = "ethers" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d5486fdc149826f38c388f26a7df72534ee3f20d3a3f72539376fa7b3bbc43d" +checksum = "9c3a2483be182a1deacc9b7daa727594c8977f4d6c6df2d762eac3280cfa67c5" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -1609,9 +1628,9 @@ dependencies = [ [[package]] name = "ethers-addressbook" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c66a426b824a0f6d1361ad74b6b01adfd26c44ee1e14c3662dcf28406763ec5" +checksum = "b4a57fb532a6833eaa086a72049a5638a3baf593b2687e7ad726d983f793fb18" dependencies = [ "ethers-core", "once_cell", @@ -1621,9 +1640,9 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa43e2e69632492d7b38e59465d125a0066cf4c477390ece00d3acbd11b338b" +checksum = "80ef33619fb0732617a84e05a02da32a1b212239a4bdba3af5e57aa9caf55929" dependencies = [ "ethers-contract-abigen", "ethers-contract-derive", @@ -1640,16 +1659,15 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2edb8fdbf77459819a443234b461171a024476bfc12f1853b889a62c6e1185ff" +checksum = "b284d9fb6f654f8a12f46e85d14f7f6f867f5bbb7de5780cdda45d39e75809c0" dependencies = [ "Inflector", "dunce", "ethers-core", "ethers-etherscan", "eyre", - "getrandom", "hex", "prettyplease", "proc-macro2", @@ -1658,18 +1676,16 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.17", - "tokio", + "syn 2.0.18", "toml 0.7.4", - "url", "walkdir", ] [[package]] name = "ethers-contract-derive" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "939b0c37746929f869285ee37d270b7c998d80cc7404c2e20dda8efe93e3b295" +checksum = "542b65f2d45be9ae1676ba129baba60d76d440acb6e933e76b0b6dcada266415" dependencies = [ "Inflector", "ethers-contract-abigen", @@ -1678,23 +1694,22 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] name = "ethers-core" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198ea9efa8480fa69f73d31d41b1601dace13d053c6fe4be6f5878d9dfcf0108" +checksum = "949df06c5bdc23361f12f58af748e62839d579fd650ce734bff2ccaedec992a9" dependencies = [ "arrayvec", "bytes", "cargo_metadata", "chrono", - "elliptic-curve 0.13.4", + "elliptic-curve 0.13.5", "ethabi", "generic-array", - "getrandom", "hex", "k256 0.13.1", "num_enum 0.6.1", @@ -1705,7 +1720,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.17", + "syn 2.0.18", "tempfile", "thiserror", "tiny-keccak", @@ -1714,13 +1729,11 @@ dependencies = [ [[package]] name = "ethers-etherscan" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196a21d6939ab78b7a1e4c45c2b33b0c2dd821a2e1af7c896f06721e1ba2a0c7" +checksum = "f93971f8de6430ce591f6e8af3a6c0a64d3ee5cd2efa384ebc0d662ac6d9da10" dependencies = [ "ethers-core", - "ethers-solc", - "getrandom", "reqwest", "semver", "serde", @@ -1731,9 +1744,9 @@ dependencies = [ [[package]] name = "ethers-middleware" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75594cc450992fc7de701c9145de612325fd8a18be765b8ae78767ba2b74876f" +checksum = "b47e5929cec99aa8cb4b93fd13d990d6d243ba389a803fbfd4806d69ad6d7980" dependencies = [ "async-trait", "auto_impl", @@ -1758,9 +1771,9 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1009041f40476b972b5d79346cc512e97c662b1a0a2f78285eabe9a122909783" +checksum = "e9a404215845d474defb3c0466ec3e695ce6122702158e87343f4308c026de81" dependencies = [ "async-trait", "auto_impl", @@ -1772,7 +1785,6 @@ dependencies = [ "futures-core", "futures-timer", "futures-util", - "getrandom", "hashers", "hex", "http", @@ -1784,7 +1796,7 @@ dependencies = [ "serde_json", "thiserror", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.19.0", "tracing", "tracing-futures", "url", @@ -1796,14 +1808,14 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bd11ad6929f01f01be74bb00d02bbd6552f22de030865c898b340a3a592db1" +checksum = "97d849cf868651243a26442af8a5b8a63cd4c85f4e8d5c5f72994a702abc3fd9" dependencies = [ "async-trait", "coins-bip32", "coins-bip39", - "elliptic-curve 0.13.4", + "elliptic-curve 0.13.5", "eth-keystore", "ethers-core", "hex", @@ -1815,14 +1827,13 @@ dependencies = [ [[package]] name = "ethers-solc" -version = "2.0.4" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2284784306de73d8ad1bc792ecc1b87da0268185683698d60fd096d23d168c99" +checksum = "8aa3fd8abbcc84013d8199524d3b89bf123d7a48ed984b00b80c72ef1a47b691" dependencies = [ "cfg-if", "dunce", "ethers-core", - "getrandom", "glob", "hex", "home", @@ -2108,7 +2119,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -2333,7 +2344,6 @@ checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8" dependencies = [ "base64 0.13.1", "byteorder", - "crossbeam-channel", "flate2", "nom", "num-traits", @@ -2425,19 +2435,13 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hex_fmt" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" - [[package]] name = "hmac" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -2841,7 +2845,7 @@ checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if", "ecdsa 0.16.7", - "elliptic-curve 0.13.4", + "elliptic-curve 0.13.5", "once_cell", "sha2 0.10.6", "signature 2.1.0", @@ -2883,9 +2887,6 @@ name = "lalrpop-util" version = "0.19.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed" -dependencies = [ - "regex", -] [[package]] name = "latency" @@ -2966,6 +2967,7 @@ checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ "autocfg", "scopeguard", + "serde", ] [[package]] @@ -3010,7 +3012,7 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -3090,14 +3092,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -3320,7 +3321,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -3398,7 +3399,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -3618,7 +3619,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "hmac", "password-hash", "sha2 0.10.6", @@ -3630,7 +3631,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0ca0b5a68607598bf3bad68f32227a8164f6254833f84eafaac409cd6746c31" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "hmac", ] @@ -3679,7 +3680,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -3766,22 +3767,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.18", ] [[package]] @@ -3834,7 +3835,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.5", + "der 0.7.6", "spki 0.7.2", ] @@ -3858,12 +3859,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ceca8aaf45b5c46ec7ed39fff75f57290368c1846d33d24a122ca81416ab058" +checksum = "3b69d39aab54d069e7f2fe8cb970493e7834601ca2d8c65fd7bbd183578080d1" dependencies = [ "proc-macro2", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -4100,7 +4101,6 @@ dependencies = [ name = "rate-counter" version = "0.1.0" dependencies = [ - "flume", "tokio", ] @@ -4264,6 +4264,7 @@ version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ + "async-compression", "base64 0.21.2", "bytes", "encoding_rs", @@ -4298,7 +4299,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots", + "webpki-roots 0.22.6", "winreg", ] @@ -4350,7 +4351,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -4429,7 +4430,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cf22754c49613d2b3b119f0e5d46e34a2c628a937e3024b8762de4e7d8c710b" dependencies = [ "byteorder", - "digest 0.10.6", + "digest 0.10.7", "num-bigint-dig", "num-integer", "num-iter", @@ -4570,9 +4571,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfdef77228a4c05dc94211441595746732131ad7f6530c6c18f045da7b7ab937" +checksum = "b569c32c806ec3abdf3b5869fb8bf1e0d275a7c1c9b0b05603d9464632649edf" dependencies = [ "cfg-if", "derive_more", @@ -4825,7 +4826,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ "base16ct 0.2.0", - "der 0.7.5", + "der 0.7.6", "generic-array", "pkcs8 0.10.2", "subtle", @@ -4894,7 +4895,7 @@ dependencies = [ "sentry-tracing", "tokio", "ureq", - "webpki-roots", + "webpki-roots 0.22.6", ] [[package]] @@ -5013,7 +5014,7 @@ checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -5098,7 +5099,7 @@ checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -5122,7 +5123,7 @@ checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -5131,7 +5132,7 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "keccak", ] @@ -5180,7 +5181,7 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "rand_core", ] @@ -5190,7 +5191,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "rand_core", ] @@ -5270,9 +5271,9 @@ dependencies = [ [[package]] name = "solang-parser" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c5ead679f39243782be98c2689e592fc0fc9489ca2e47c9e027bd30f948df31" +checksum = "4a94494913728908efa7a25a2dd2e4f037e714897985c24273c40596638ed909" dependencies = [ "itertools", "lalrpop", @@ -5324,7 +5325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", - "der 0.7.5", + "der 0.7.6", ] [[package]] @@ -5362,7 +5363,7 @@ dependencies = [ "bytes", "chrono", "crossbeam-queue", - "digest 0.10.6", + "digest 0.10.7", "dotenvy", "either", "event-listener", @@ -5400,7 +5401,7 @@ dependencies = [ "tokio-stream", "url", "uuid 1.3.3", - "webpki-roots", + "webpki-roots 0.22.6", ] [[package]] @@ -5498,9 +5499,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "svm-rs" @@ -5546,9 +5547,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45b6ddbb36c5b969c182aec3c4a0bce7df3fbad4b77114706a49aacc80567388" +checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" dependencies = [ "proc-macro2", "quote", @@ -5633,7 +5634,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -5736,7 +5737,7 @@ dependencies = [ "autocfg", "bytes", "libc", - "mio 0.8.6", + "mio 0.8.8", "num_cpus", "parking_lot 0.12.1", "pin-project-lite", @@ -5795,7 +5796,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -5849,12 +5850,23 @@ checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" dependencies = [ "futures-util", "log", - "rustls 0.20.8", "tokio", - "tokio-rustls 0.23.4", - "tungstenite", - "webpki", - "webpki-roots", + "tungstenite 0.18.0", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" +dependencies = [ + "futures-util", + "log", + "rustls 0.21.1", + "tokio", + "tokio-rustls 0.24.0", + "tungstenite 0.19.0", + "webpki-roots 0.23.1", ] [[package]] @@ -5917,9 +5929,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.19.9" +version = "0.19.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d964908cec0d030b812013af25a0e57fddfadb1e066ecc6681d86253129d4f" +checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" dependencies = [ "indexmap", "serde", @@ -6027,7 +6039,7 @@ checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" dependencies = [ "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", ] [[package]] @@ -6153,7 +6165,26 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.20.8", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "rustls 0.21.1", "sha1", "thiserror", "url", @@ -6268,7 +6299,7 @@ dependencies = [ "rustls 0.20.8", "url", "webpki", - "webpki-roots", + "webpki-roots 0.22.6", ] [[package]] @@ -6306,7 +6337,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" dependencies = [ "getrandom", + "rand", "serde", + "zerocopy", ] [[package]] @@ -6380,7 +6413,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", "wasm-bindgen-shared", ] @@ -6414,7 +6447,7 @@ checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.17", + "syn 2.0.18", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6464,21 +6497,16 @@ dependencies = [ "counter", "deferred-rate-limiter", "derive_more", - "dotenv", "entities", "env_logger", "ethers", "ewma", - "fdlimit", "flume", "fstrings", "futures", "gethostname", - "glob", "handlebars", "hashbrown 0.13.2", - "hdrhistogram", - "hex_fmt", "hostname", "http", "hyper", @@ -6491,21 +6519,17 @@ dependencies = [ "log", "migration", "mimalloc", - "num", "num-traits", "once_cell", "ordered-float", "pagerduty-rs", "parking_lot 0.12.1", - "prettytable", - "proctitle", "quick_cache_ttl", "rdkafka", "redis-rate-limiter", "regex", "reqwest", "rmp-serde", - "sentry", "serde", "serde_json", "serde_prometheus", @@ -6527,6 +6551,45 @@ dependencies = [ "uuid 1.3.3", ] +[[package]] +name = "web3_proxy_cli" +version = "0.1.0" +dependencies = [ + "anyhow", + "argh", + "chrono", + "entities", + "env_logger", + "ethers", + "fdlimit", + "futures", + "glob", + "hashbrown 0.13.2", + "influxdb2", + "influxdb2-structmap", + "log", + "migration", + "num", + "num-traits", + "pagerduty-rs", + "parking_lot 0.12.1", + "prettytable", + "proctitle", + "rdkafka", + "reqwest", + "rmp-serde", + "sentry", + "serde", + "serde_json", + "tokio", + "toml 0.7.4", + "tracing", + "tracing-subscriber 0.3.17", + "ulid", + "uuid 1.3.3", + "web3_proxy", +] + [[package]] name = "webpki" version = "0.22.0" @@ -6546,6 +6609,15 @@ dependencies = [ "webpki", ] +[[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki", +] + [[package]] name = "winapi" version = "0.3.9" @@ -6785,6 +6857,27 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "zerocopy" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332f188cc1bcf1fe1064b8c58d150f497e697f49774aa846f2dc949d9a25f236" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6505e6815af7de1746a08f69c69606bb45695a17149517680f3b2149713b19a3" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "zeroize" version = "1.6.0" diff --git a/Cargo.toml b/Cargo.toml index 12175b98..6b35368b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ members = [ "redis-rate-limiter", "thread-fast-rng", "web3_proxy", + "web3_proxy_cli", ] [profile.release] diff --git a/Dockerfile b/Dockerfile index 38349e55..00e5f085 100644 --- a/Dockerfile +++ b/Dockerfile @@ -67,7 +67,7 @@ RUN --mount=type=cache,target=/usr/local/cargo/registry \ --features "$WEB3_PROXY_FEATURES" \ --locked \ --no-default-features \ - --path ./web3_proxy \ + --path ./web3_proxy_cli \ --profile faster_release \ --root /usr/local/bin \ ; diff --git a/entities/Cargo.toml b/entities/Cargo.toml index b0cf89e7..4ac9493c 100644 --- a/entities/Cargo.toml +++ b/entities/Cargo.toml @@ -13,5 +13,5 @@ path = "src/mod.rs" sea-orm = "0.11.3" serde = "1.0.163" uuid = "1.3.3" -ethers = "2.0.4" +ethers = "2.0.6" ulid = "1.0.0" diff --git a/latency/src/ewma.rs b/latency/src/ewma.rs index fe5b51f9..ae201549 100644 --- a/latency/src/ewma.rs +++ b/latency/src/ewma.rs @@ -3,7 +3,7 @@ use serde::Serialize; use tokio::time::Duration; pub struct EwmaLatency { - /// exponentially weighted moving average of how many milliseconds behind the fastest node we are + /// exponentially weighted of some latency in milliseconds ewma: ewma::EWMA, } diff --git a/rate-counter/Cargo.toml b/rate-counter/Cargo.toml index a8b8396b..8751ffc4 100644 --- a/rate-counter/Cargo.toml +++ b/rate-counter/Cargo.toml @@ -5,5 +5,4 @@ authors = ["Bryan Stitt "] edition = "2021" [dependencies] -flume = "0.10.14" tokio = { version = "1.28.2", features = ["time"] } diff --git a/redis-rate-limiter/Cargo.toml b/redis-rate-limiter/Cargo.toml index c5397866..872383ee 100644 --- a/redis-rate-limiter/Cargo.toml +++ b/redis-rate-limiter/Cargo.toml @@ -6,6 +6,6 @@ edition = "2021" [dependencies] anyhow = "1.0.71" -chrono = "0.4.25" +chrono = "0.4.26" deadpool-redis = { version = "0.12.0", features = ["rt_tokio_1", "serde"] } tokio = "1.28.2" diff --git a/web3_proxy/Cargo.toml b/web3_proxy/Cargo.toml index 1f7804dc..3f29a9dc 100644 --- a/web3_proxy/Cargo.toml +++ b/web3_proxy/Cargo.toml @@ -2,7 +2,6 @@ name = "web3_proxy" version = "0.28.0" edition = "2021" -default-run = "web3_proxy_cli" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -23,59 +22,54 @@ quick_cache_ttl = { path = "../quick_cache_ttl" } redis-rate-limiter = { path = "../redis-rate-limiter" } thread-fast-rng = { path = "../thread-fast-rng" } +influxdb2 = { git = "https://github.com/llamanodes/influxdb2", features = ["rustls"] } +influxdb2-structmap = { git = "https://github.com/llamanodes/influxdb2/"} + # TODO: regex has several "perf" features that we might want to use # TODO: make sure this uuid version matches sea-orm. PR to put this in their prelude # TODO: import num_traits from sea-orm so we always have the same version # TODO: import chrono from sea-orm so we always have the same version # TODO: make sure this time version matches siwe. PR to put this in their prelude +# TODO: rdkafka has a tracing feature + +# TODO: hdrhistogram for automated tiers anyhow = { version = "1.0.71", features = ["backtrace"] } arc-swap = "1.6.0" argh = "0.1.10" +async-trait = "0.1.68" axum = { version = "0.6.18", features = ["headers", "ws"] } axum-client-ip = "0.4.1" axum-macros = "0.3.7" -chrono = "0.4.25" -console-subscriber = { version = "*", optional = true } +chrono = "0.4.26" +console-subscriber = { version = "0.1.9", optional = true } counter = "0.5.7" derive_more = "0.99.17" -dotenv = "0.15.0" -env_logger = "0.10.0" -ethers = { version = "2.0.4", default-features = false, features = ["rustls", "ws"] } +ethers = { version = "2.0.6", default-features = false, features = ["rustls", "ws"] } ewma = "0.1.1" -fdlimit = "0.2.1" flume = "0.10.14" fstrings = "0.2" futures = { version = "0.3.28", features = ["thread-pool"] } gethostname = "0.4.3" -glob = "0.3.1" handlebars = "4.3.7" hashbrown = { version = "0.13.2", features = ["serde"] } -hdrhistogram = "7.5.2" -hex_fmt = "0.3.0" hostname = "0.3.1" http = "0.2.9" -hyper = { version = "0.14.26", features = ["full"] } -influxdb2 = { git = "https://github.com/llamanodes/influxdb2", features = ["rustls"] } -influxdb2-structmap = { git = "https://github.com/llamanodes/influxdb2/"} +hyper = { version = "0.14.26", features = ["full", "nightly"] } ipnet = "2.7.2" itertools = "0.10.5" listenfd = "1.0.1" log = "0.4.18" mimalloc = { version = "0.1.37", optional = true} -num = "0.4.0" num-traits = "0.2.15" once_cell = { version = "1.17.2" } ordered-float = "3.7.0" pagerduty-rs = { version = "0.1.6", default-features = false, features = ["async", "rustls", "sync"] } -parking_lot = { version = "0.12.1", features = ["arc_lock"] } -prettytable = "*" -proctitle = "0.1.1" +parking_lot = { version = "0.12.1", features = ["arc_lock", "nightly", "serde"] } rdkafka = { version = "0.31.0" } regex = "1.8.3" -reqwest = { version = "0.11.18", default-features = false, features = ["json", "tokio-rustls"] } +reqwest = { version = "0.11.18", default-features = false, features = ["deflate", "gzip", "json", "tokio-rustls"] } rmp-serde = "1.1.1" -sentry = { version = "0.31.3", default-features = false, features = ["backtrace", "contexts", "panic", "anyhow", "reqwest", "rustls", "log", "sentry-log"] } serde = { version = "1.0.163", features = [] } serde_json = { version = "1.0.96", default-features = false, features = ["alloc", "raw_value"] } serde_prometheus = "0.2.2" @@ -83,7 +77,7 @@ siwe = "0.5.0" strum = { version = "0.24.1", features = ["derive"] } time = "0.3.21" tokio = { version = "1.28.2", features = ["full"] } -tokio-console = { version = "*", optional = true } +tokio-console = { version = "0.1.8", optional = true } tokio-stream = { version = "0.1.14", features = ["sync"] } tokio-uring = { version = "0.4.0", optional = true } toml = "0.7.4" @@ -91,10 +85,10 @@ tower = "0.4.13" tower-http = { version = "0.4.0", features = ["cors", "sensitive-headers"] } tracing = "0.1.37" tracing-subscriber = "0.3" -ulid = { version = "1.0.0", features = ["uuid", "serde"] } +ulid = { version = "1.0.0", features = ["rand", "uuid", "serde"] } url = "2.3.1" -uuid = "1.3.3" -async-trait = "0.1.68" +uuid = { version = "1.3.3", default-features = false, features = ["fast-rng", "serde", "v4", "zerocopy"] } [dev-dependencies] +env_logger = "0.10.0" tokio = { version = "1.28.2", features = ["full", "test-util"] } diff --git a/web3_proxy/src/rpcs/jsonrpc_client.rs b/web3_proxy/src/rpcs/jsonrpc_client.rs new file mode 100644 index 00000000..c7d42049 --- /dev/null +++ b/web3_proxy/src/rpcs/jsonrpc_client.rs @@ -0,0 +1,4 @@ +use super::{many::Web3Rpcs, one::Web3Rpc}; +use ethers::providers::{JsonRpcClient, ProviderError}; +use serde::{de::DeserializeOwned, Serialize}; +use std::fmt::Debug; diff --git a/web3_proxy_cli/Cargo.toml b/web3_proxy_cli/Cargo.toml new file mode 100644 index 00000000..8b87c54f --- /dev/null +++ b/web3_proxy_cli/Cargo.toml @@ -0,0 +1,44 @@ +[package] +name = "web3_proxy_cli" +version = "0.1.0" +edition = "2021" +default-run = "web3_proxy_cli" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +entities = { path = "../entities" } +migration = { path = "../migration" } +web3_proxy = { path = "../web3_proxy" } + +influxdb2 = { git = "https://github.com/llamanodes/influxdb2", features = ["rustls"] } +influxdb2-structmap = { git = "https://github.com/llamanodes/influxdb2/"} + +anyhow = "1.0.71" +argh = "0.1.10" +chrono = "0.4.26" +env_logger = "0.10.0" +ethers = "2.0.6" +fdlimit = "0.2.1" +futures = "0.3.28" +glob = "0.3.1" +hashbrown = "0.13.2" +log = "0.4.18" +num = "0.4.0" +num-traits = "0.2.15" +pagerduty-rs = "0.1.6" +parking_lot = "0.12.1" +prettytable = "0.10.0" +proctitle = "0.1.1" +rdkafka = { version = "0.31.0" } +reqwest = "0.11.18" +rmp-serde = "1.1.1" +sentry = { version = "0.31.3", default-features = false, features = ["backtrace", "contexts", "panic", "anyhow", "reqwest", "rustls", "log", "sentry-log"] } +serde = "1.0.163" +serde_json = "1.0.96" +tokio = "1.28.2" +toml = "0.7.4" +tracing = "0.1.37" +tracing-subscriber = "0.3.17" +ulid = "1.0.0" +uuid = "1.3.3" diff --git a/web3_proxy/examples/subscribe_blocks.rs b/web3_proxy_cli/examples/subscribe_blocks.rs similarity index 100% rename from web3_proxy/examples/subscribe_blocks.rs rename to web3_proxy_cli/examples/subscribe_blocks.rs diff --git a/web3_proxy/examples/tracing.rs b/web3_proxy_cli/examples/tracing.rs similarity index 100% rename from web3_proxy/examples/tracing.rs rename to web3_proxy_cli/examples/tracing.rs diff --git a/web3_proxy/examples/watch_blocks.rs b/web3_proxy_cli/examples/watch_blocks.rs similarity index 100% rename from web3_proxy/examples/watch_blocks.rs rename to web3_proxy_cli/examples/watch_blocks.rs diff --git a/web3_proxy/src/bin/curve_api_checks.rs b/web3_proxy_cli/src/bin/curve_api_checks.rs similarity index 100% rename from web3_proxy/src/bin/curve_api_checks.rs rename to web3_proxy_cli/src/bin/curve_api_checks.rs diff --git a/web3_proxy/src/bin/wait_for_sync.rs b/web3_proxy_cli/src/bin/wait_for_sync.rs similarity index 100% rename from web3_proxy/src/bin/wait_for_sync.rs rename to web3_proxy_cli/src/bin/wait_for_sync.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/change_admin_status.rs b/web3_proxy_cli/src/change_admin_status.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/change_admin_status.rs rename to web3_proxy_cli/src/change_admin_status.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/change_user_address.rs b/web3_proxy_cli/src/change_user_address.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/change_user_address.rs rename to web3_proxy_cli/src/change_user_address.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/change_user_tier.rs b/web3_proxy_cli/src/change_user_tier.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/change_user_tier.rs rename to web3_proxy_cli/src/change_user_tier.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/change_user_tier_by_address.rs b/web3_proxy_cli/src/change_user_tier_by_address.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/change_user_tier_by_address.rs rename to web3_proxy_cli/src/change_user_tier_by_address.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/change_user_tier_by_key.rs b/web3_proxy_cli/src/change_user_tier_by_key.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/change_user_tier_by_key.rs rename to web3_proxy_cli/src/change_user_tier_by_key.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/check_config.rs b/web3_proxy_cli/src/check_config.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/check_config.rs rename to web3_proxy_cli/src/check_config.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/count_users.rs b/web3_proxy_cli/src/count_users.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/count_users.rs rename to web3_proxy_cli/src/count_users.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/create_key.rs b/web3_proxy_cli/src/create_key.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/create_key.rs rename to web3_proxy_cli/src/create_key.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/create_user.rs b/web3_proxy_cli/src/create_user.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/create_user.rs rename to web3_proxy_cli/src/create_user.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/delete_user.rs b/web3_proxy_cli/src/delete_user.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/delete_user.rs rename to web3_proxy_cli/src/delete_user.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/drop_migration_lock.rs b/web3_proxy_cli/src/drop_migration_lock.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/drop_migration_lock.rs rename to web3_proxy_cli/src/drop_migration_lock.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/example.rs b/web3_proxy_cli/src/example.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/example.rs rename to web3_proxy_cli/src/example.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/list_recent_users.rs b/web3_proxy_cli/src/list_recent_users.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/list_recent_users.rs rename to web3_proxy_cli/src/list_recent_users.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/list_user_tier.rs b/web3_proxy_cli/src/list_user_tier.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/list_user_tier.rs rename to web3_proxy_cli/src/list_user_tier.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/main.rs b/web3_proxy_cli/src/main.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/main.rs rename to web3_proxy_cli/src/main.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/migrate_stats_to_v2.rs b/web3_proxy_cli/src/migrate_stats_to_v2.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/migrate_stats_to_v2.rs rename to web3_proxy_cli/src/migrate_stats_to_v2.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/pagerduty.rs b/web3_proxy_cli/src/pagerduty.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/pagerduty.rs rename to web3_proxy_cli/src/pagerduty.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/popularity_contest.rs b/web3_proxy_cli/src/popularity_contest.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/popularity_contest.rs rename to web3_proxy_cli/src/popularity_contest.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/proxyd.rs b/web3_proxy_cli/src/proxyd.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/proxyd.rs rename to web3_proxy_cli/src/proxyd.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/rpc_accounting.rs b/web3_proxy_cli/src/rpc_accounting.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/rpc_accounting.rs rename to web3_proxy_cli/src/rpc_accounting.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/search_kafka.rs b/web3_proxy_cli/src/search_kafka.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/search_kafka.rs rename to web3_proxy_cli/src/search_kafka.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/sentryd/compare.rs b/web3_proxy_cli/src/sentryd/compare.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/sentryd/compare.rs rename to web3_proxy_cli/src/sentryd/compare.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/sentryd/mod.rs b/web3_proxy_cli/src/sentryd/mod.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/sentryd/mod.rs rename to web3_proxy_cli/src/sentryd/mod.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/sentryd/simple.rs b/web3_proxy_cli/src/sentryd/simple.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/sentryd/simple.rs rename to web3_proxy_cli/src/sentryd/simple.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/stat_age.rs b/web3_proxy_cli/src/stat_age.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/stat_age.rs rename to web3_proxy_cli/src/stat_age.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/transfer_key.rs b/web3_proxy_cli/src/transfer_key.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/transfer_key.rs rename to web3_proxy_cli/src/transfer_key.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/user_export.rs b/web3_proxy_cli/src/user_export.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/user_export.rs rename to web3_proxy_cli/src/user_export.rs diff --git a/web3_proxy/src/bin/web3_proxy_cli/user_import.rs b/web3_proxy_cli/src/user_import.rs similarity index 100% rename from web3_proxy/src/bin/web3_proxy_cli/user_import.rs rename to web3_proxy_cli/src/user_import.rs