diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aeb81c98..fd06cb38 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,5 +19,9 @@ jobs: toolchain: stable - name: Install cargo-nextest uses: taiki-e/install-action@nextest + + - name: Build the binary + run: cargo build + - name: Run nextest run: cargo nextest run --workspace diff --git a/.github/workflows/websocket-proxy-ci.yaml b/.github/workflows/websocket-proxy-ci.yaml index 667d61d8..284cbeb3 100644 --- a/.github/workflows/websocket-proxy-ci.yaml +++ b/.github/workflows/websocket-proxy-ci.yaml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest defaults: run: - working-directory: "./websocket-proxy" + working-directory: "./crates/websocket-proxy" steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index fc32ee3d..217d6f89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,14 +19,14 @@ checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -185,9 +185,9 @@ dependencies = [ "const-hex", "derive_more 2.0.1", "foldhash", - "getrandom 0.2.15", - "hashbrown 0.15.2", - "indexmap 2.8.0", + "getrandom 0.2.16", + "hashbrown 0.15.3", + "indexmap 2.9.0", "itoa", "k256", "keccak-asm", @@ -203,9 +203,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -214,13 +214,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -285,7 +285,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -297,11 +297,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.8.0", + "indexmap 2.9.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", "syn-solidity", "tiny-keccak", ] @@ -318,7 +318,7 @@ dependencies = [ "macro-string", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", "syn-solidity", ] @@ -417,29 +417,26 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" dependencies = [ "anstyle", - "once_cell", + "once_cell_polyfill", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.97" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] -name = "arbitrary" -version = "1.4.1" +name = "arc-swap" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" -dependencies = [ - "derive_arbitrary", -] +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "ark-ff" @@ -576,9 +573,9 @@ dependencies = [ [[package]] name = "assert_cmd" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" +checksum = "2bd389a4b2970a01282ee455294913c0a43724daedcd1a24c3eb0ec1c1320b66" dependencies = [ "anstyle", "bstr", @@ -592,9 +589,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a194f9d963d8099596278594b3107448656ba73831c9d8c783e613ce86da64" +checksum = "b37fc50485c4f3f736a4fb14199f6d5f5ba008d7f28fe710306c92780f004c07" dependencies = [ "brotli", "flate2", @@ -636,7 +633,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -647,7 +644,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -658,13 +655,13 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -675,9 +672,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-lc-rs" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b756939cb2f8dc900aa6dcd505e6e2428e9cae7ff7b028c49e3946efa70878" +checksum = "93fcc8f365936c834db5514fc45aee5b1202d677e6b40e48468aaaa8183ca8c7" dependencies = [ "aws-lc-sys", "zeroize", @@ -685,9 +682,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f7720b74ed28ca77f90769a71fd8c637a0137f6fae4ae947e1050229cff57f" +checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079" dependencies = [ "bindgen", "cc", @@ -703,14 +700,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", - "axum-core", + "axum-core 0.4.5", "bytes", "futures-util", "http", "http-body", "http-body-util", "itoa", - "matchit", + "matchit 0.7.3", "memchr", "mime", "percent-encoding", @@ -723,6 +720,43 @@ dependencies = [ "tower-service", ] +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core 0.5.2", + "base64 0.22.1", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit 0.8.4", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "axum-core" version = "0.4.5" @@ -743,11 +777,42 @@ dependencies = [ "tower-service", ] +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "getrandom 0.2.16", + "instant", + "rand 0.8.5", +] + [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -788,7 +853,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cexpr", "clang-sys", "itertools 0.12.1", @@ -801,7 +866,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.100", + "syn 2.0.101", "which", ] @@ -828,9 +893,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "bitvec" @@ -917,9 +982,9 @@ dependencies = [ [[package]] name = "brotli" -version = "7.0.0" +version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -928,9 +993,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -938,9 +1003,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.3" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", "regex-automata 0.4.9", @@ -976,11 +1041,10 @@ dependencies = [ [[package]] name = "c-kzg" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7e3c397401eb76228c89561cf22f85f41c95aa799ee9d860de3ea1cbc728fc" +checksum = "7318cfa722931cb5fe0838b98d3ce5621e75f6a6408abc21721d80de9223f2e4" dependencies = [ - "arbitrary", "blst", "cc", "glob", @@ -992,9 +1056,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.17" +version = "1.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" +checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" dependencies = [ "jobserver", "libc", @@ -1024,9 +1088,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1048,9 +1112,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.35" +version = "4.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944" +checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" dependencies = [ "clap_builder", "clap_derive", @@ -1058,9 +1122,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.35" +version = "4.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9" +checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" dependencies = [ "anstream", "anstyle", @@ -1077,7 +1141,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -1122,9 +1186,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" dependencies = [ "cfg-if", "cpufeatures", @@ -1171,9 +1235,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -1196,9 +1260,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ "crc-catalog", ] @@ -1272,9 +1336,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e9666f4a9a948d4f1dff0c08a4512b0f7c86414b23960104c243c10d79f4c3" +checksum = "a4735f265ba6a1188052ca32d461028a7d1125868be18e287e756019da7607b5" dependencies = [ "ctor-proc-macro", "dtor", @@ -1307,7 +1371,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -1318,14 +1382,20 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.100", + "syn 2.0.101", ] +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -1352,17 +1422,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_arbitrary" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "derive_more" version = "1.0.0" @@ -1389,7 +1448,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -1400,7 +1459,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", "unicode-xid", ] @@ -1439,7 +1498,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -1450,9 +1509,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "docker_credential" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31951f49556e34d90ed28342e1df7e1cb7a229c4cab0aecc627b5d91edd41d07" +checksum = "1d89dfcba45b4afad7450a99b39e751590463e45c04728cf555d36bb66940de8" dependencies = [ "base64 0.21.7", "serde", @@ -1467,9 +1526,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dtor" -version = "0.0.5" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222ef136a1c687d4aa0395c175f2c4586e379924c352fd02f7870cf7de783c23" +checksum = "97cbdf2ad6846025e8e25df05171abfb30e3ababa12ee0a0e44b9bbe570633a8" dependencies = [ "dtor-proc-macro", ] @@ -1553,9 +1612,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" dependencies = [ "libc", "windows-sys 0.59.0", @@ -1609,7 +1668,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -1705,6 +1764,34 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "flashblocks-websocket-proxy" +version = "0.1.0" +dependencies = [ + "axum 0.8.4", + "backoff", + "clap", + "dotenvy", + "futures", + "hostname", + "http", + "metrics", + "metrics-derive", + "metrics-exporter-prometheus 0.17.0", + "redis", + "redis-test", + "reqwest", + "ring", + "serde_json", + "thiserror 2.0.12", + "tokio", + "tokio-tungstenite", + "tokio-util", + "tracing", + "tracing-subscriber", + "uuid", +] + [[package]] name = "flate2" version = "1.1.1" @@ -1828,7 +1915,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -1863,10 +1950,11 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" dependencies = [ + "cc", "cfg-if", "libc", "log", @@ -1887,9 +1975,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", @@ -1900,9 +1988,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "libc", @@ -1935,9 +2023,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.8" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" dependencies = [ "atomic-waker", "bytes", @@ -1945,7 +2033,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.8.0", + "indexmap 2.9.0", "slab", "tokio", "tokio-util", @@ -1960,9 +2048,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" dependencies = [ "foldhash", "serde", @@ -2007,6 +2095,17 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "hostname" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" +dependencies = [ + "cfg-if", + "libc", + "windows-link", +] + [[package]] name = "http" version = "1.3.1" @@ -2097,11 +2196,10 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", @@ -2145,22 +2243,28 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +checksum = "b1c293b6b3d21eca78250dc7dbebd6b9210ec5530e038cbfe0661b5c47ab06e8" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", "libc", + "percent-encoding", "pin-project-lite", "socket2", + "system-configuration", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] @@ -2190,7 +2294,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.0", + "windows-core", ] [[package]] @@ -2204,21 +2308,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -2227,31 +2332,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -2259,67 +2344,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -2339,9 +2411,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -2364,7 +2436,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -2386,15 +2458,24 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.3", "serde", ] +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -2487,7 +2568,7 @@ version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", "libc", ] @@ -2574,7 +2655,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -2678,25 +2759,25 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.171" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libloading" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] name = "libm" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" @@ -2704,9 +2785,9 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "libc", - "redox_syscall 0.5.10", + "redox_syscall 0.5.12", ] [[package]] @@ -2717,15 +2798,15 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" @@ -2764,7 +2845,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -2782,6 +2863,12 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + [[package]] name = "memchr" version = "2.7.4" @@ -2790,14 +2877,26 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "metrics" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a7deb012b3b2767169ff203fadb4c6b0b82b947512e5eb9e0b78c2e186ad9e3" +checksum = "25dea7ac8057892855ec285c440160265225438c3c45072613c25a4b26e98ef5" dependencies = [ "ahash", "portable-atomic", ] +[[package]] +name = "metrics-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3dbdd96ed57d565ec744cba02862d707acf373c5772d152abae6ec5c4e24f6c" +dependencies = [ + "proc-macro2", + "quote", + "regex", + "syn 2.0.101", +] + [[package]] name = "metrics-exporter-prometheus" version = "0.16.2" @@ -2809,7 +2908,7 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "indexmap 2.8.0", + "indexmap 2.9.0", "ipnet", "metrics", "metrics-util", @@ -2819,22 +2918,43 @@ dependencies = [ "tracing", ] +[[package]] +name = "metrics-exporter-prometheus" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df88858cd28baaaf2cfc894e37789ed4184be0e1351157aec7bf3c2266c793fd" +dependencies = [ + "base64 0.22.1", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "indexmap 2.9.0", + "ipnet", + "metrics", + "metrics-util", + "quanta", + "thiserror 2.0.12", + "tokio", + "tracing", +] + [[package]] name = "metrics-util" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbd4884b1dd24f7d6628274a2f5ae22465c337c5ba065ec9b6edccddf8acc673" +checksum = "b8496cc523d1f94c1385dd8f0f0c2c480b2b8aeccb5b7e4485ad6365523ae376" dependencies = [ "aho-corasick", "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.15.2", - "indexmap 2.8.0", + "hashbrown 0.15.3", + "indexmap 2.9.0", "metrics", "ordered-float", "quanta", "radix_trie", - "rand 0.8.5", + "rand 0.9.1", "rand_xoshiro", "sketches-ddsketch", ] @@ -2863,22 +2983,22 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff70ce3e48ae43fa075863cef62e8b43b71a4f2382229920e0df362592919430" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3028,11 +3148,17 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + [[package]] name = "op-alloy-consensus" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91764ebe0eddf6e3cfff41650332ff4e01defe372386027703f2e7e334734a05" +checksum = "917f7a65b83e8f9cf06d5209161babf39f5e5768e226a08ad42c033386248a66" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3046,9 +3172,9 @@ dependencies = [ [[package]] name = "op-alloy-rpc-types-engine" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc26f8288839926d0137d39d70628bb5ac00fca449bab24c54cebd66c71b9cf4" +checksum = "a6c57a07a8f7da6169a247c4af7cf6bb69fec3789dd41b7dcb6742fce01a232e" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3069,7 +3195,7 @@ version = "0.10.72" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg-if", "foreign-types", "libc", @@ -3086,7 +3212,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -3097,9 +3223,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.107" +version = "0.9.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" +checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847" dependencies = [ "cc", "libc", @@ -3210,9 +3336,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parity-scale-codec" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", @@ -3226,14 +3352,14 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -3260,7 +3386,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.10", + "redox_syscall 0.5.12", "smallvec", "windows-targets 0.52.6", ] @@ -3287,7 +3413,7 @@ dependencies = [ "regex", "regex-syntax 0.8.5", "structmeta", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -3340,7 +3466,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -3377,6 +3503,15 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -3389,7 +3524,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.24", + "zerocopy", ] [[package]] @@ -3424,12 +3559,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb" +checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" dependencies = [ "proc-macro2", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -3471,14 +3606,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] name = "proc-macro2" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -3491,7 +3626,7 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.0", + "bitflags 2.9.1", "lazy_static", "num-traits", "rand 0.8.5", @@ -3523,7 +3658,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -3592,13 +3727,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", - "zerocopy 0.8.24", ] [[package]] @@ -3627,7 +3761,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -3636,7 +3770,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", ] [[package]] @@ -3650,11 +3784,11 @@ dependencies = [ [[package]] name = "rand_xoshiro" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.9.3", ] [[package]] @@ -3663,7 +3797,36 @@ version = "11.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", +] + +[[package]] +name = "redis" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "438a4e5f8e9aa246d6f3666d6978441bf1b37d5f417b50c4dd220be09f5fcc17" +dependencies = [ + "arc-swap", + "combine", + "itoa", + "num-bigint", + "percent-encoding", + "ryu", + "sha1_smol", + "socket2", + "url", +] + +[[package]] +name = "redis-test" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "967d3ffa2d2ead5a95b2e8561d7453c4719c9fe9dbba521673e058e513cb1c24" +dependencies = [ + "rand 0.9.1", + "redis", + "socket2", + "tempfile", ] [[package]] @@ -3677,11 +3840,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.10" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] [[package]] @@ -3730,9 +3893,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.15" +version = "0.12.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +checksum = "e98ff6b0dbbe4d5a37318f433d4fc82babd21631f194d370409ceb2e40b2f0b5" dependencies = [ "base64 0.22.1", "bytes", @@ -3756,21 +3919,20 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-native-tls", "tower 0.5.2", + "tower-http 0.6.4", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-registry", ] [[package]] @@ -3783,7 +3945,7 @@ dependencies = [ "jsonrpsee-http-client", "pin-project", "tower 0.4.13", - "tower-http 0.6.2", + "tower-http 0.6.4", "tracing", ] @@ -3805,7 +3967,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -3845,7 +4007,7 @@ dependencies = [ "hyper-util", "jsonrpsee", "metrics", - "metrics-exporter-prometheus", + "metrics-exporter-prometheus 0.16.2", "metrics-util", "moka", "op-alloy-consensus", @@ -3856,7 +4018,7 @@ dependencies = [ "parking_lot", "paste", "predicates", - "rand 0.9.0", + "rand 0.9.1", "reqwest", "reth-rpc-layer", "rustls", @@ -3882,9 +4044,9 @@ checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" [[package]] name = "ruint" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78a46eb779843b2c4f21fac5773e25d6d5b7c8f0922876c91541790d2ca27eef" +checksum = "11256b5fe8c68f56ac6f39ef0720e592f33d2367a4782740d9c9142e889c7fb4" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", @@ -3899,7 +4061,7 @@ dependencies = [ "primitive-types", "proptest", "rand 0.8.5", - "rand 0.9.0", + "rand 0.9.1", "rlp", "ruint-macro", "serde", @@ -3964,7 +4126,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3973,22 +4135,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.5" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "errno", "libc", - "linux-raw-sys 0.9.3", + "linux-raw-sys 0.9.4", "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.25" +version = "0.23.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" dependencies = [ "aws-lc-rs", "log", @@ -4023,17 +4185,20 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] [[package]] name = "rustls-platform-verifier" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5467026f437b4cb2a533865eaa73eb840019a0916f4b9ec563c6e617e086c9" +checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" dependencies = [ - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-foundation-sys", "jni", "log", @@ -4044,7 +4209,7 @@ dependencies = [ "rustls-webpki", "security-framework 3.2.0", "security-framework-sys", - "webpki-root-certs", + "webpki-root-certs 0.26.11", "windows-sys 0.59.0", ] @@ -4056,9 +4221,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.1" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ "aws-lc-rs", "ring", @@ -4068,9 +4233,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "rusty-fork" @@ -4141,7 +4306,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -4154,8 +4319,8 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.9.0", - "core-foundation 0.10.0", + "bitflags 2.9.1", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -4212,7 +4377,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4227,6 +4392,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +dependencies = [ + "itoa", + "serde", +] + [[package]] name = "serde_repr" version = "0.1.20" @@ -4235,7 +4410,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4260,7 +4435,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.8.0", + "indexmap 2.9.0", "serde", "serde_derive", "serde_json", @@ -4277,7 +4452,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4301,11 +4476,17 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -4349,9 +4530,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -4395,9 +4576,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" dependencies = [ "serde", ] @@ -4410,9 +4591,9 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "socket2" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4471,7 +4652,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4482,7 +4663,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4504,7 +4685,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4526,9 +4707,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.100" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -4544,7 +4725,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4558,13 +4739,13 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4573,7 +4754,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -4607,9 +4788,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ "fastrand", - "getrandom 0.3.2", + "getrandom 0.3.3", "once_cell", - "rustix 1.0.5", + "rustix 1.0.7", "windows-sys 0.59.0", ] @@ -4674,7 +4855,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4685,7 +4866,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4749,9 +4930,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -4759,9 +4940,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.45.0" +version = "1.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" dependencies = [ "backtrace", "bytes", @@ -4783,7 +4964,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -4833,11 +5014,25 @@ dependencies = [ "xattr", ] +[[package]] +name = "tokio-tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +dependencies = [ + "futures-util", + "log", + "native-tls", + "tokio", + "tokio-native-tls", + "tungstenite", +] + [[package]] name = "tokio-util" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -4849,17 +5044,17 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ - "indexmap 2.8.0", + "indexmap 2.9.0", "toml_datetime", "winnow", ] @@ -4872,7 +5067,7 @@ checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", - "axum", + "axum 0.7.9", "base64 0.22.1", "bytes", "h2", @@ -4927,6 +5122,7 @@ dependencies = [ "tokio", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -4936,7 +5132,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "async-compression", - "bitflags 2.9.0", + "bitflags 2.9.1", "bytes", "futures-core", "http", @@ -4951,13 +5147,13 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" +checksum = "0fdb0c213ca27a9f57ab69ddb290fd80d970922355b83ae380b395d3986b8a2e" dependencies = [ "async-compression", "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.9.1", "bytes", "futures-core", "futures-util", @@ -5012,7 +5208,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -5091,6 +5287,24 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +dependencies = [ + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "native-tls", + "rand 0.9.1", + "sha1", + "thiserror 2.0.12", + "utf-8", +] + [[package]] name = "typenum" version = "1.18.0" @@ -5158,10 +5372,10 @@ dependencies = [ ] [[package]] -name = "utf16_iter" -version = "1.0.5" +name = "utf-8" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8_iter" @@ -5177,11 +5391,13 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", + "js-sys", + "wasm-bindgen", ] [[package]] @@ -5267,7 +5483,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", "wasm-bindgen-shared", ] @@ -5302,7 +5518,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5338,9 +5554,18 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "0.26.8" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" +dependencies = [ + "webpki-root-certs 1.0.0", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09aed61f5e8d2c18344b3faa33a4c837855fe56642757754775548fee21386c4" +checksum = "01a83f7e1a9f8712695c03eabe9ed3fbca0feff0152f33f12593e5a6303cb1a4" dependencies = [ "rustls-pki-types", ] @@ -5390,49 +5615,48 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.58.0" +version = "0.61.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", + "windows-collections", + "windows-core", + "windows-future", + "windows-link", + "windows-numerics", ] [[package]] -name = "windows-core" -version = "0.58.0" +name = "windows-collections" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-core", ] [[package]] name = "windows-core" -version = "0.61.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", + "windows-implement", + "windows-interface", "windows-link", - "windows-result 0.3.2", - "windows-strings 0.4.0", + "windows-result", + "windows-strings 0.4.2", ] [[package]] -name = "windows-implement" -version = "0.58.0" +name = "windows-future" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", + "windows-core", + "windows-link", + "windows-threading", ] [[package]] @@ -5443,18 +5667,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", -] - -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -5465,7 +5678,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -5475,44 +5688,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" [[package]] -name = "windows-registry" -version = "0.4.0" +name = "windows-numerics" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-result 0.3.2", - "windows-strings 0.3.1", - "windows-targets 0.53.0", + "windows-core", + "windows-link", ] [[package]] -name = "windows-result" -version = "0.2.0" +name = "windows-registry" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ - "windows-targets 0.52.6", + "windows-result", + "windows-strings 0.3.1", + "windows-targets 0.53.0", ] [[package]] name = "windows-result" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ "windows-link", ] -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows-strings" version = "0.3.1" @@ -5524,9 +5728,9 @@ dependencies = [ [[package]] name = "windows-strings" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ "windows-link", ] @@ -5629,6 +5833,15 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -5811,9 +6024,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.4" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" dependencies = [ "memchr", ] @@ -5824,20 +6037,14 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wyz" @@ -5855,14 +6062,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" dependencies = [ "libc", - "rustix 1.0.5", + "rustix 1.0.7", ] [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -5872,54 +6079,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", "synstructure", ] [[package]] name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" -dependencies = [ - "zerocopy-derive 0.8.24", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] @@ -5939,7 +6126,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", "synstructure", ] @@ -5960,14 +6147,25 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", ] [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -5976,13 +6174,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.101", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 7ea50dac..1e9af461 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,71 +1,14 @@ -[package] -name = "rollup-boost" -version = "0.1.0" -edition = "2024" +[workspace] +resolver = "3" -[dependencies] -op-alloy-rpc-types-engine = "0.12.0" -alloy-rpc-types-engine = "0.13.0" -alloy-rpc-types-eth = "0.13.0" -alloy-primitives = { version = "0.8.10", features = ["rand"] } -tokio = { version = "1", features = ["full"] } +members = ["crates/rollup-boost", "crates/websocket-proxy"] + +[workspace.dependencies] tracing = "0.1.4" tracing-subscriber = { version = "0.3.11", features = ["env-filter", "json"] } -serde = { version = "1", features = ["derive"] } -thiserror = "2.0.12" clap = { version = "4", features = ["derive", "env"] } -jsonrpsee = { version = "0.24", features = ["server", "http-client", "macros"] } -moka = { version = "0.12.10", features = ["future"] } -http = "1.1.0" -dotenvy = "0.15.7" -tower = { version = "0.4.13", features = ["timeout"] } -tower-http = { version = "0.5.2", features = [ - "decompression-full", - "sensitive-headers", -] } -http-body-util = "0.1.2" -hyper = { version = "1.4.1", features = ["full"] } -hyper-util = { version = "0.1", features = ["full"] } -hyper-rustls = { version = "0.27.0", features = ["ring"] } -rustls = { version = "0.23.23", features = ["ring"] } -serde_json = "1.0.96" -opentelemetry = { version = "0.28.0", features = ["trace"] } -opentelemetry-otlp = { version = "0.28.0", features = [ - "http-proto", - "http-json", - "reqwest-client", - "trace", - "grpc-tonic", -] } -opentelemetry_sdk = { version = "0.28.0", features = ["rt-tokio"] } -tracing-opentelemetry = "0.29.0" futures = "0.3.31" +thiserror = "2.0.11" +serde_json = "1.0.96" metrics = "0.24.0" -metrics-exporter-prometheus = "0.16.0" -metrics-util = "0.19.0" -eyre = "0.6.12" -paste = "1.0.15" -parking_lot = "0.12.3" - -[dev-dependencies] -rand = "0.9.0" -time = { version = "0.3.36", features = ["macros", "formatting", "parsing"] } -op-alloy-consensus = "0.12.0" -alloy-eips = { version = "0.13.0", features = ["serde"] } -alloy-consensus = { version = "0.13.0", features = ["serde"] } -anyhow = "1.0" -testcontainers = { version = "0.23.3" } -assert_cmd = "2.0.10" -predicates = "3.1.2" -tokio-util = { version = "0.7.13" } -bytes = "1.2" -reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", version = "1.3.7", rev = "v1.3.7" } -ctor = "0.4.1" -reqwest = "0.12.15" - -[[bin]] -name = "rollup-boost" -path = "src/bin/main.rs" - -[lib] -path = "src/lib.rs" +tokio = { version = "1", features = ["full"] } diff --git a/README.md b/README.md index e6c67ab5..80c83042 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Rollup Boost is a block builder sidecar for Optimism Stack chains to enable exte Run the rollup-boost server using the following command: ``` -cargo run -- [OPTIONS] +cargo run --bin rollup-boost -- [OPTIONS] ``` ### Command-line Options @@ -35,7 +35,7 @@ You can also set the options using environment variables. See .env.example to us ### Example ``` -cargo run --l2-jwt-token your_jwt_token --l2-url http://localhost:8545 --builder-jwt-token your_jwt_token --builder-url http://localhost:8546 +cargo run --bin rollup-boost -- --l2-jwt-token your_jwt_token --l2-url http://localhost:8545 --builder-jwt-token your_jwt_token --builder-url http://localhost:8546 ``` ## Core System Workflow diff --git a/RELEASE.md b/RELEASE.md index 206b1d03..a93056bc 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -21,7 +21,7 @@ make test git status # should show no changes # Start rollup-boost with the example .env config -cargo run -- +cargo run --bin rollup-boost -- # Call the health endpoint curl localhost:8081/healthz diff --git a/crates/rollup-boost/Cargo.toml b/crates/rollup-boost/Cargo.toml new file mode 100644 index 00000000..a47d68d2 --- /dev/null +++ b/crates/rollup-boost/Cargo.toml @@ -0,0 +1,73 @@ +[package] +name = "rollup-boost" +version = "0.1.0" +edition = "2024" +license = "MIT" + +[dependencies] +tracing.workspace = true +tracing-subscriber.workspace = true +clap.workspace = true +futures.workspace = true +thiserror.workspace = true +serde_json.workspace = true +metrics.workspace = true +tokio.workspace = true + +op-alloy-rpc-types-engine = "0.12.0" +alloy-rpc-types-engine = "0.13.0" +alloy-rpc-types-eth = "0.13.0" +alloy-primitives = { version = "0.8.10", features = ["rand"] } +serde = { version = "1", features = ["derive"] } +jsonrpsee = { version = "0.24", features = ["server", "http-client", "macros"] } +moka = { version = "0.12.10", features = ["future"] } +http = "1.1.0" +dotenvy = "0.15.7" +tower = { version = "0.4.13", features = ["timeout"] } +tower-http = { version = "0.5.2", features = [ + "decompression-full", + "sensitive-headers", +] } +http-body-util = "0.1.2" +hyper = { version = "1.4.1", features = ["full"] } +hyper-util = { version = "0.1", features = ["full"] } +hyper-rustls = { version = "0.27.0", features = ["ring"] } +rustls = { version = "0.23.23", features = ["ring"] } +opentelemetry = { version = "0.28.0", features = ["trace"] } +opentelemetry-otlp = { version = "0.28.0", features = [ + "http-proto", + "http-json", + "reqwest-client", + "trace", + "grpc-tonic", +] } +opentelemetry_sdk = { version = "0.28.0", features = ["rt-tokio"] } +tracing-opentelemetry = "0.29.0" +metrics-exporter-prometheus = "0.16.0" +metrics-util = "0.19.0" +eyre = "0.6.12" +paste = "1.0.15" +parking_lot = "0.12.3" + +[dev-dependencies] +rand = "0.9.0" +time = { version = "0.3.36", features = ["macros", "formatting", "parsing"] } +op-alloy-consensus = "0.12.0" +alloy-eips = { version = "0.13.0", features = ["serde"] } +alloy-consensus = { version = "0.13.0", features = ["serde"] } +anyhow = "1.0" +testcontainers = { version = "0.23.3" } +assert_cmd = "2.0.10" +predicates = "3.1.2" +tokio-util = { version = "0.7.13" } +bytes = "1.2" +reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.3.7" } +ctor = "0.4.1" +reqwest = "0.12.15" + +[[bin]] +name = "rollup-boost" +path = "src/bin/main.rs" + +[lib] +path = "src/lib.rs" diff --git a/src/bin/main.rs b/crates/rollup-boost/src/bin/main.rs similarity index 55% rename from src/bin/main.rs rename to crates/rollup-boost/src/bin/main.rs index 560c6b88..b208ce6e 100644 --- a/src/bin/main.rs +++ b/crates/rollup-boost/src/bin/main.rs @@ -1,10 +1,14 @@ use clap::Parser; use rollup_boost::Args; +use rollup_boost::init_tracing; use dotenvy::dotenv; #[tokio::main] async fn main() -> eyre::Result<()> { dotenv().ok(); - Args::parse().run().await + + let args = Args::parse(); + init_tracing(&args)?; + args.run().await } diff --git a/src/cli.rs b/crates/rollup-boost/src/cli.rs similarity index 99% rename from src/cli.rs rename to crates/rollup-boost/src/cli.rs index 0a210e5e..10528db8 100644 --- a/src/cli.rs +++ b/crates/rollup-boost/src/cli.rs @@ -12,7 +12,7 @@ use crate::{ BlockSelectionPolicy, DebugClient, ProxyLayer, RollupBoostServer, RpcClient, client::rpc::{BuilderArgs, L2ClientArgs}, debug_api::ExecutionMode, - init_metrics, init_tracing, + init_metrics, payload::PayloadSource, probe::ProbeLayer, }; @@ -122,7 +122,6 @@ impl Args { }; } - init_tracing(&self)?; init_metrics(&self)?; let l2_client_args = self.l2_client; diff --git a/src/client/auth.rs b/crates/rollup-boost/src/client/auth.rs similarity index 100% rename from src/client/auth.rs rename to crates/rollup-boost/src/client/auth.rs diff --git a/src/client/http.rs b/crates/rollup-boost/src/client/http.rs similarity index 100% rename from src/client/http.rs rename to crates/rollup-boost/src/client/http.rs diff --git a/src/client/mod.rs b/crates/rollup-boost/src/client/mod.rs similarity index 100% rename from src/client/mod.rs rename to crates/rollup-boost/src/client/mod.rs diff --git a/src/client/rpc.rs b/crates/rollup-boost/src/client/rpc.rs similarity index 100% rename from src/client/rpc.rs rename to crates/rollup-boost/src/client/rpc.rs diff --git a/src/consistent_request.rs b/crates/rollup-boost/src/consistent_request.rs similarity index 100% rename from src/consistent_request.rs rename to crates/rollup-boost/src/consistent_request.rs diff --git a/src/debug_api.rs b/crates/rollup-boost/src/debug_api.rs similarity index 100% rename from src/debug_api.rs rename to crates/rollup-boost/src/debug_api.rs diff --git a/src/health.rs b/crates/rollup-boost/src/health.rs similarity index 100% rename from src/health.rs rename to crates/rollup-boost/src/health.rs diff --git a/src/lib.rs b/crates/rollup-boost/src/lib.rs similarity index 93% rename from src/lib.rs rename to crates/rollup-boost/src/lib.rs index abf73114..ad3f62d0 100644 --- a/src/lib.rs +++ b/crates/rollup-boost/src/lib.rs @@ -27,6 +27,9 @@ pub use probe::*; mod health; pub use health::*; +#[cfg(test)] +pub mod tests; + mod payload; pub use payload::*; diff --git a/src/metrics.rs b/crates/rollup-boost/src/metrics.rs similarity index 100% rename from src/metrics.rs rename to crates/rollup-boost/src/metrics.rs diff --git a/src/payload.rs b/crates/rollup-boost/src/payload.rs similarity index 100% rename from src/payload.rs rename to crates/rollup-boost/src/payload.rs diff --git a/src/probe.rs b/crates/rollup-boost/src/probe.rs similarity index 100% rename from src/probe.rs rename to crates/rollup-boost/src/probe.rs diff --git a/src/proxy.rs b/crates/rollup-boost/src/proxy.rs similarity index 100% rename from src/proxy.rs rename to crates/rollup-boost/src/proxy.rs diff --git a/src/selection.rs b/crates/rollup-boost/src/selection.rs similarity index 100% rename from src/selection.rs rename to crates/rollup-boost/src/selection.rs diff --git a/src/server.rs b/crates/rollup-boost/src/server.rs similarity index 100% rename from src/server.rs rename to crates/rollup-boost/src/server.rs diff --git a/tests/builder_full_delay.rs b/crates/rollup-boost/src/tests/builder_full_delay.rs similarity index 95% rename from tests/builder_full_delay.rs rename to crates/rollup-boost/src/tests/builder_full_delay.rs index 990b22fa..56768f27 100644 --- a/tests/builder_full_delay.rs +++ b/crates/rollup-boost/src/tests/builder_full_delay.rs @@ -1,13 +1,11 @@ -use common::RollupBoostTestHarnessBuilder; -use common::proxy::BuilderProxyHandler; +use super::common::RollupBoostTestHarnessBuilder; +use super::common::proxy::BuilderProxyHandler; use futures::FutureExt; use serde_json::Value; use std::pin::Pin; use std::sync::{Arc, Mutex}; use std::time::Duration; -mod common; - // Create a dynamic handler that delays all the calls by 2 seconds struct DelayHandler { delay: Arc<Mutex<Duration>>, diff --git a/tests/builder_returns_incorrect_block.rs b/crates/rollup-boost/src/tests/builder_returns_incorrect_block.rs similarity index 96% rename from tests/builder_returns_incorrect_block.rs rename to crates/rollup-boost/src/tests/builder_returns_incorrect_block.rs index a8ba6ea1..3f5f84cc 100644 --- a/tests/builder_returns_incorrect_block.rs +++ b/crates/rollup-boost/src/tests/builder_returns_incorrect_block.rs @@ -1,14 +1,12 @@ use std::{pin::Pin, sync::Arc}; +use super::common::{RollupBoostTestHarnessBuilder, proxy::BuilderProxyHandler}; use alloy_primitives::B256; -use common::{RollupBoostTestHarnessBuilder, proxy::BuilderProxyHandler}; use futures::FutureExt as _; use serde_json::Value; use op_alloy_rpc_types_engine::OpExecutionPayloadEnvelopeV3; -mod common; - struct Handler; impl BuilderProxyHandler for Handler { diff --git a/tests/common/mod.rs b/crates/rollup-boost/src/tests/common/mod.rs similarity index 98% rename from tests/common/mod.rs rename to crates/rollup-boost/src/tests/common/mod.rs index 2296f230..f2ce97a2 100644 --- a/tests/common/mod.rs +++ b/crates/rollup-boost/src/tests/common/mod.rs @@ -1,4 +1,8 @@ #![allow(dead_code)] +use crate::DebugClient; +use crate::{AuthLayer, AuthService}; +use crate::{EngineApiClient, OpExecutionPayloadEnvelope, PayloadVersion}; +use crate::{NewPayload, PayloadSource}; use alloy_eips::Encodable2718; use alloy_primitives::{B256, Bytes, TxKind, U256, address, hex}; use alloy_rpc_types_engine::{ExecutionPayload, JwtSecret}; @@ -17,10 +21,6 @@ use op_alloy_consensus::TxDeposit; use op_alloy_rpc_types_engine::OpPayloadAttributes; use parking_lot::Mutex; use proxy::{BuilderProxyHandler, start_proxy_server}; -use rollup_boost::DebugClient; -use rollup_boost::EngineApiClient; -use rollup_boost::{AuthLayer, AuthService}; -use rollup_boost::{NewPayload, OpExecutionPayloadEnvelope, PayloadSource, PayloadVersion}; use serde_json::Value; use services::op_reth::{AUTH_RPC_PORT, OpRethConfig, OpRethImage, OpRethMehods, P2P_PORT}; use services::rollup_boost::{RollupBoost, RollupBoostConfig}; @@ -45,7 +45,7 @@ use tower_http::sensitive_headers::SetSensitiveRequestHeaders; pub const JWT_SECRET: &str = "688f5d737bad920bdfb2fc2f488d6b6209eebda1dae949a8de91398d932c517a"; pub const L2_P2P_ENODE: &str = "3479db4d9217fb5d7a8ed4d61ac36e120b05d36c2eefb795dc42ff2e971f251a2315f5649ea1833271e020b9adc98d5db9973c7ed92d6b2f1f2223088c3d852f"; pub static TEST_DATA: LazyLock<String> = - LazyLock::new(|| format!("{}/tests/common/test_data", env!("CARGO_MANIFEST_DIR"))); + LazyLock::new(|| format!("{}/src/tests/common/test_data", env!("CARGO_MANIFEST_DIR"))); pub mod proxy; pub mod services; @@ -256,7 +256,7 @@ impl RollupBoostTestHarnessBuilder { let timestamp = dt.format(&format)?; let dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("integration_logs") + .join("../../integration_logs") .join(self.test_name.clone()) .join(timestamp); std::fs::create_dir_all(&dir)?; diff --git a/tests/common/proxy.rs b/crates/rollup-boost/src/tests/common/proxy.rs similarity index 100% rename from tests/common/proxy.rs rename to crates/rollup-boost/src/tests/common/proxy.rs diff --git a/tests/common/services/mod.rs b/crates/rollup-boost/src/tests/common/services/mod.rs similarity index 100% rename from tests/common/services/mod.rs rename to crates/rollup-boost/src/tests/common/services/mod.rs diff --git a/tests/common/services/op_reth.rs b/crates/rollup-boost/src/tests/common/services/op_reth.rs similarity index 99% rename from tests/common/services/op_reth.rs rename to crates/rollup-boost/src/tests/common/services/op_reth.rs index 6c58d79d..1b9f4d18 100644 --- a/tests/common/services/op_reth.rs +++ b/crates/rollup-boost/src/tests/common/services/op_reth.rs @@ -5,7 +5,7 @@ use testcontainers::{ core::{ContainerPort, WaitFor}, }; -use crate::common::TEST_DATA; +use crate::tests::common::TEST_DATA; const NAME: &str = "ghcr.io/paradigmxyz/op-reth"; const TAG: &str = "v1.3.12"; diff --git a/tests/common/services/rollup_boost.rs b/crates/rollup-boost/src/tests/common/services/rollup_boost.rs similarity index 71% rename from tests/common/services/rollup_boost.rs rename to crates/rollup-boost/src/tests/common/services/rollup_boost.rs index 4efd3f5c..0f59d175 100644 --- a/tests/common/services/rollup_boost.rs +++ b/crates/rollup-boost/src/tests/common/services/rollup_boost.rs @@ -1,15 +1,18 @@ -use std::time::Duration; +use std::{fs::File, time::Duration}; +use crate::Args; use clap::Parser; -use rollup_boost::Args; use tokio::task::JoinHandle; +use tracing::subscriber::DefaultGuard; +use tracing_subscriber::fmt; -use crate::common::{TEST_DATA, get_available_port}; +use crate::tests::common::{TEST_DATA, get_available_port}; #[derive(Debug)] pub struct RollupBoost { args: Args, pub _handle: JoinHandle<eyre::Result<()>>, + pub _tracing_guard: DefaultGuard, } impl RollupBoost { @@ -42,8 +45,6 @@ impl Default for RollupBoostConfig { &format!("--l2-jwt-path={}/jwt_secret.hex", *TEST_DATA), &format!("--builder-jwt-path={}/jwt_secret.hex", *TEST_DATA), "--log-level=trace", - "--tracing", - "--metrics", ]); args.rpc_port = get_available_port(); @@ -57,6 +58,19 @@ impl Default for RollupBoostConfig { impl RollupBoostConfig { pub async fn start(self) -> RollupBoost { let args = self.args.clone(); + + // Create a custom log subscriber only for this task + let log_file = args.log_file.as_ref().unwrap(); + let file = File::create(log_file).unwrap(); + + let subscriber = fmt::Subscriber::builder() + .with_writer(file) + .with_max_level(tracing::Level::DEBUG) + .with_ansi(false) + .finish(); + + let guard = tracing::subscriber::set_default(subscriber); + let _handle = tokio::spawn(async move { let res = args.clone().run().await; if let Err(e) = &res { @@ -71,6 +85,7 @@ impl RollupBoostConfig { RollupBoost { args: self.args, _handle, + _tracing_guard: guard, } } } diff --git a/tests/common/test_data/genesis.json b/crates/rollup-boost/src/tests/common/test_data/genesis.json similarity index 100% rename from tests/common/test_data/genesis.json rename to crates/rollup-boost/src/tests/common/test_data/genesis.json diff --git a/tests/common/test_data/jwt_secret.hex b/crates/rollup-boost/src/tests/common/test_data/jwt_secret.hex similarity index 100% rename from tests/common/test_data/jwt_secret.hex rename to crates/rollup-boost/src/tests/common/test_data/jwt_secret.hex diff --git a/tests/common/test_data/p2p_secret.hex b/crates/rollup-boost/src/tests/common/test_data/p2p_secret.hex similarity index 100% rename from tests/common/test_data/p2p_secret.hex rename to crates/rollup-boost/src/tests/common/test_data/p2p_secret.hex diff --git a/tests/execution_mode.rs b/crates/rollup-boost/src/tests/execution_mode.rs similarity index 96% rename from tests/execution_mode.rs rename to crates/rollup-boost/src/tests/execution_mode.rs index 9c517b46..8aa17ed4 100644 --- a/tests/execution_mode.rs +++ b/crates/rollup-boost/src/tests/execution_mode.rs @@ -1,15 +1,11 @@ -use common::proxy::BuilderProxyHandler; +use super::common::{RollupBoostTestHarnessBuilder, proxy::BuilderProxyHandler}; +use crate::ExecutionMode; use futures::FutureExt as _; -use rollup_boost::ExecutionMode; use serde_json::Value; use std::pin::Pin; use std::sync::{Arc, Mutex}; use std::time::Duration; -mod common; - -use crate::common::RollupBoostTestHarnessBuilder; - struct CounterHandler { counter: Arc<Mutex<u32>>, } diff --git a/tests/fcu_no_block_time_delay.rs b/crates/rollup-boost/src/tests/fcu_no_block_time_delay.rs similarity index 94% rename from tests/fcu_no_block_time_delay.rs rename to crates/rollup-boost/src/tests/fcu_no_block_time_delay.rs index dbaa666d..1fb316f6 100644 --- a/tests/fcu_no_block_time_delay.rs +++ b/crates/rollup-boost/src/tests/fcu_no_block_time_delay.rs @@ -1,7 +1,5 @@ -mod common; +use super::common::{RollupBoostTestHarnessBuilder, proxy::BuilderProxyHandler}; -use common::RollupBoostTestHarnessBuilder; -use common::proxy::BuilderProxyHandler; use futures::FutureExt; use serde_json::Value; use std::pin::Pin; diff --git a/tests/miner_set_max_da_size.rs b/crates/rollup-boost/src/tests/miner_set_max_da_size.rs similarity index 100% rename from tests/miner_set_max_da_size.rs rename to crates/rollup-boost/src/tests/miner_set_max_da_size.rs diff --git a/crates/rollup-boost/src/tests/mod.rs b/crates/rollup-boost/src/tests/mod.rs new file mode 100644 index 00000000..6a4d924e --- /dev/null +++ b/crates/rollup-boost/src/tests/mod.rs @@ -0,0 +1,11 @@ +mod common; + +mod builder_full_delay; +mod builder_returns_incorrect_block; +mod execution_mode; +mod fcu_no_block_time_delay; +mod no_tx_pool; +mod remote_builder_down; +mod simple; +mod simple_isthmus; +mod simple_isthmus_transition; diff --git a/tests/no_tx_pool.rs b/crates/rollup-boost/src/tests/no_tx_pool.rs similarity index 93% rename from tests/no_tx_pool.rs rename to crates/rollup-boost/src/tests/no_tx_pool.rs index ac0e708c..af23a65c 100644 --- a/tests/no_tx_pool.rs +++ b/crates/rollup-boost/src/tests/no_tx_pool.rs @@ -1,6 +1,4 @@ -mod common; - -use crate::common::RollupBoostTestHarnessBuilder; +use super::common::RollupBoostTestHarnessBuilder; #[tokio::test] async fn no_tx_pool() -> eyre::Result<()> { diff --git a/tests/remote_builder_down.rs b/crates/rollup-boost/src/tests/remote_builder_down.rs similarity index 96% rename from tests/remote_builder_down.rs rename to crates/rollup-boost/src/tests/remote_builder_down.rs index 041f69bb..475d979f 100644 --- a/tests/remote_builder_down.rs +++ b/crates/rollup-boost/src/tests/remote_builder_down.rs @@ -1,10 +1,8 @@ -mod common; - use std::time::Duration; use testcontainers::core::client::docker_client_instance; -use crate::common::RollupBoostTestHarnessBuilder; +use super::common::RollupBoostTestHarnessBuilder; #[tokio::test] async fn remote_builder_down() -> eyre::Result<()> { diff --git a/tests/simple.rs b/crates/rollup-boost/src/tests/simple.rs similarity index 85% rename from tests/simple.rs rename to crates/rollup-boost/src/tests/simple.rs index 29b8c546..89d72070 100644 --- a/tests/simple.rs +++ b/crates/rollup-boost/src/tests/simple.rs @@ -1,6 +1,4 @@ -use common::RollupBoostTestHarnessBuilder; - -mod common; +use super::common::RollupBoostTestHarnessBuilder; #[tokio::test] async fn test_integration_simple() -> eyre::Result<()> { diff --git a/tests/simple_isthmus.rs b/crates/rollup-boost/src/tests/simple_isthmus.rs similarity index 86% rename from tests/simple_isthmus.rs rename to crates/rollup-boost/src/tests/simple_isthmus.rs index 08c01a65..b7fef0ff 100644 --- a/tests/simple_isthmus.rs +++ b/crates/rollup-boost/src/tests/simple_isthmus.rs @@ -1,6 +1,4 @@ -use common::RollupBoostTestHarnessBuilder; - -mod common; +use super::common::RollupBoostTestHarnessBuilder; #[tokio::test] async fn test_integration_simple_isthmus() -> eyre::Result<()> { diff --git a/tests/simple_isthmus_transition.rs b/crates/rollup-boost/src/tests/simple_isthmus_transition.rs similarity index 86% rename from tests/simple_isthmus_transition.rs rename to crates/rollup-boost/src/tests/simple_isthmus_transition.rs index 3ddfcc98..c429c048 100644 --- a/tests/simple_isthmus_transition.rs +++ b/crates/rollup-boost/src/tests/simple_isthmus_transition.rs @@ -1,6 +1,4 @@ -use common::RollupBoostTestHarnessBuilder; - -mod common; +use super::common::RollupBoostTestHarnessBuilder; #[tokio::test] async fn test_integration_simple_isthmus_transition() -> eyre::Result<()> { diff --git a/src/tracing.rs b/crates/rollup-boost/src/tracing.rs similarity index 100% rename from src/tracing.rs rename to crates/rollup-boost/src/tracing.rs diff --git a/websocket-proxy/.dockerignore b/crates/websocket-proxy/.dockerignore similarity index 100% rename from websocket-proxy/.dockerignore rename to crates/websocket-proxy/.dockerignore diff --git a/websocket-proxy/.env.example b/crates/websocket-proxy/.env.example similarity index 100% rename from websocket-proxy/.env.example rename to crates/websocket-proxy/.env.example diff --git a/websocket-proxy/Cargo.lock b/crates/websocket-proxy/Cargo.lock similarity index 100% rename from websocket-proxy/Cargo.lock rename to crates/websocket-proxy/Cargo.lock diff --git a/websocket-proxy/Cargo.toml b/crates/websocket-proxy/Cargo.toml similarity index 67% rename from websocket-proxy/Cargo.toml rename to crates/websocket-proxy/Cargo.toml index 180dbdd7..c14b80f0 100644 --- a/websocket-proxy/Cargo.toml +++ b/crates/websocket-proxy/Cargo.toml @@ -3,30 +3,35 @@ name = "flashblocks-websocket-proxy" version = "0.1.0" edition = "2021" rust-version = "1.85" +license = "MIT" [dependencies] -tokio = { version = "1.44.2", features = ["full"] } +tracing.workspace = true +tracing-subscriber.workspace = true +clap.workspace = true +futures.workspace = true +thiserror.workspace = true +serde_json.workspace = true +metrics.workspace = true +tokio.workspace = true + tokio-tungstenite = { version = "0.26.2", features = ["native-tls"] } -metrics-exporter-prometheus = { version = "0.17.0", features = ["http-listener"]} +metrics-exporter-prometheus = { version = "0.17.0", features = [ + "http-listener", +] } http = "1.2.0" axum = { version = "0.8.1", features = ["ws"] } -tracing = "0.1.41" -clap = { version = "4", features = ["derive", "env"] } dotenvy = "0.15.7" backoff = "0.4.0" -futures = "0.3.31" -tracing-subscriber = { version = "0.3.19", features = ["json", "env-filter"] } -tokio-util = "0.7.12" -reqwest = { version = "0.12.15", default-features = false, features = ["native-tls"] } -metrics = "0.24.1" +reqwest = { version = "0.12.15", default-features = false, features = [ + "native-tls", +] } metrics-derive = "0.1" -thiserror = "2.0.11" -serde_json = "1.0.138" hostname = "0.4.0" redis = "0.30.0" redis-test = { version = "0.10.0", optional = true } uuid = { version = "1.16.0", features = ["v4"] } - +tokio-util = "0.7.12" [dependencies.ring] version = "0.17.12" diff --git a/websocket-proxy/Dockerfile b/crates/websocket-proxy/Dockerfile similarity index 100% rename from websocket-proxy/Dockerfile rename to crates/websocket-proxy/Dockerfile diff --git a/websocket-proxy/README.md b/crates/websocket-proxy/README.md similarity index 100% rename from websocket-proxy/README.md rename to crates/websocket-proxy/README.md diff --git a/websocket-proxy/src/client.rs b/crates/websocket-proxy/src/client.rs similarity index 100% rename from websocket-proxy/src/client.rs rename to crates/websocket-proxy/src/client.rs diff --git a/websocket-proxy/src/integration.rs b/crates/websocket-proxy/src/integration.rs similarity index 100% rename from websocket-proxy/src/integration.rs rename to crates/websocket-proxy/src/integration.rs diff --git a/websocket-proxy/src/main.rs b/crates/websocket-proxy/src/main.rs similarity index 100% rename from websocket-proxy/src/main.rs rename to crates/websocket-proxy/src/main.rs diff --git a/websocket-proxy/src/metrics.rs b/crates/websocket-proxy/src/metrics.rs similarity index 100% rename from websocket-proxy/src/metrics.rs rename to crates/websocket-proxy/src/metrics.rs diff --git a/websocket-proxy/src/rate_limit.rs b/crates/websocket-proxy/src/rate_limit.rs similarity index 100% rename from websocket-proxy/src/rate_limit.rs rename to crates/websocket-proxy/src/rate_limit.rs diff --git a/websocket-proxy/src/registry.rs b/crates/websocket-proxy/src/registry.rs similarity index 100% rename from websocket-proxy/src/registry.rs rename to crates/websocket-proxy/src/registry.rs diff --git a/websocket-proxy/src/server.rs b/crates/websocket-proxy/src/server.rs similarity index 100% rename from websocket-proxy/src/server.rs rename to crates/websocket-proxy/src/server.rs diff --git a/websocket-proxy/src/subscriber.rs b/crates/websocket-proxy/src/subscriber.rs similarity index 100% rename from websocket-proxy/src/subscriber.rs rename to crates/websocket-proxy/src/subscriber.rs diff --git a/deny.toml b/deny.toml index 6efaacda..67b0766b 100644 --- a/deny.toml +++ b/deny.toml @@ -10,6 +10,7 @@ allow = [ "BSD-3-Clause", "Zlib", "OpenSSL", + "CDLA-Permissive-2.0", ] confidence-threshold = 0.8 @@ -17,6 +18,10 @@ confidence-threshold = 0.8 ignore = [ # paste crate is unmaintained "RUSTSEC-2024-0436", + # backoff crate is unmaintained + "RUSTSEC-2025-0012", + # instant crate is unmaintained + "RUSTSEC-2024-0384", ] [bans] diff --git a/docs/running-rollup-boost.md b/docs/running-rollup-boost.md index 4b9c8663..5d3ab65a 100644 --- a/docs/running-rollup-boost.md +++ b/docs/running-rollup-boost.md @@ -11,7 +11,7 @@ To run rollup boost with a regular sequencer setup, change the `--l2` flag in th To configure rollup-boost, set the l2 url to the url of the proposer auth rpc endpoint and the builder url to the builder auth rpc endpoint. ```bash -cargo run -- --l2-url http://localhost:8551 --builder-url http://localhost:8546 +cargo run --bin rollup-boost -- --l2-url http://localhost:8551 --builder-url http://localhost:8546 ``` To set up a builder, you can use [`op-rbuilder`](https://github.com/flashbots/op-rbuilder) with an op-node instance and have rollup-boost point to the builder auth rpc endpoint. It is recommended that boost sync is enabled on rollup-boost to sync the builder with the proposer op-node to remove the p2p networking overhead. In testing, this reduces latency significantly from around 200-300 milliseconds to just 3-4 milliseconds in local environments. @@ -32,11 +32,8 @@ While this does not ensure high availability for the builder, the chain will hav `rollup-boost` supports the standard array of kubernetes probes: -- `/healthz` Returns various status codes to communicate `rollup-boost` health - - 200 OK - The builder is producing blocks - - 206 Partial Content - The l2 is producing blocks, but the builder is not - - 503 Service Unavailable - Neither the l2 or the builder is producing blocks -`op-conductor` should eventually be able to use this signal to switch to a different sequencer in an HA sequencer setup. In a future upgrade to `op-conductor`, A sequencer leader with a healthy (200 OK) EL (`rollup-boost` in our case) could be selected preferentially over one with an unhealthy (206 or 503) EL. If no ELs are healthy, then we can fallback to an EL which is responding with `206 Partial Content`. +- `/healthz` Returns various status codes to communicate `rollup-boost` health - 200 OK - The builder is producing blocks - 206 Partial Content - The l2 is producing blocks, but the builder is not - 503 Service Unavailable - Neither the l2 or the builder is producing blocks + `op-conductor` should eventually be able to use this signal to switch to a different sequencer in an HA sequencer setup. In a future upgrade to `op-conductor`, A sequencer leader with a healthy (200 OK) EL (`rollup-boost` in our case) could be selected preferentially over one with an unhealthy (206 or 503) EL. If no ELs are healthy, then we can fallback to an EL which is responding with `206 Partial Content`. - `/readyz` Used by kubernetes to determine if the service is ready to accept traffic. Should always respond with `200 OK` @@ -58,7 +55,7 @@ To enable metrics, you can set the `--metrics` flag. This will start a metrics s curl http://localhost:9090/metrics ``` -All spans create duration histogram metrics with the name "{span_name}_duration". Currently, this list includes: +All spans create duration histogram metrics with the name "{span_name}\_duration". Currently, this list includes: - fork_choice_updated_v3_duration - get_payload_v3_duration @@ -84,4 +81,4 @@ It is also possible that either the builder or the proposer execution engine are Alternatively, the builder may be syncing with the chain and not have a block to respond with. You can see in the logs the builder is syncing by checking whether the payload_status of builder calls is `SYNCING`. -This is expected if the builder is still syncing with the chain. Chain liveness will not be affected as rollup-boost will use the local payload. Contact the builder operator if the sync status persists as the builder op-node may be offline or not peered correctly with the network. +This is expected if the builder is still syncing with the chain. Chain liveness will not be affected as rollup-boost will use the local payload. Contact the builder operator if the sync status persists as the builder op-node may be offline or not peered correctly with the network.