From a867ede5daac4b344caa69be328d2b56626604fd Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Mon, 4 May 2026 08:40:41 -0500 Subject: [PATCH 1/8] update proto --- CHANGELOG.md | 13 + Cargo.lock | 2319 ++++++++----------------------------- Cargo.toml | 66 +- proto/Cargo.toml | 18 +- proto/src/convert_from.rs | 354 ++++++ proto/src/convert_to.rs | 255 ++++ proto/src/lib.rs | 7 +- rust-toolchain.toml | 2 +- shared/Cargo.toml | 2 +- 9 files changed, 1139 insertions(+), 1897 deletions(-) create mode 100644 proto/src/convert_from.rs create mode 100644 proto/src/convert_to.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 96b5f251..2c39a472 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,19 @@ The minor version will be incremented upon a breaking change and the patch versi ### Breaking +## 2026-05-04 + +- richat-cli-v9.0.1 TODO! +- richat-client-v8.1.1 TODO! +- richat-plugin-agave-v8.1.1 TODO! +- richat-proto-v9.0.0 +- richat-v8.1.1 TODO! +- richat-shared-v9.0.0 + +### Breaking + +- richat: upgrade to agave 4.0 ([#210](https://github.com/lamports-dev/richat/pull/210)) + ## 2026-04-30 - richat-v10.0.0 diff --git a/Cargo.lock b/Cargo.lock index d9f25e14..b042f52d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -66,41 +66,27 @@ dependencies = [ [[package]] name = "agave-feature-set" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a78af1c611c18d4a20e0983f033bdd74eaa8f44cee0d3c10ee66873f2630a636" +checksum = "33e41538180f5ded6d08a69c75b4f48c4c6ba8098d7e790b3d694a6bc081fbc7" dependencies = [ "ahash", "solana-epoch-schedule", - "solana-hash 3.1.0", - "solana-pubkey 3.0.0", + "solana-hash 4.3.0", + "solana-keypair", + "solana-pubkey 4.2.0", "solana-sha256-hasher", "solana-svm-feature-set", ] -[[package]] -name = "agave-geyser-plugin-interface" -version = "3.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "097d75b08472b4fbeba26189fd8647f6ab746b56568cf74fbf1414ba9be20279" -dependencies = [ - "log", - "solana-clock", - "solana-hash 3.1.0", - "solana-signature", - "solana-transaction", - "solana-transaction-status", - "thiserror 2.0.18", -] - [[package]] name = "agave-reserved-account-keys" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da12e13d0ae9df8bbedeb505e659d590d938da0becc506f6901eec6aefd0fe9f" +checksum = "5b4ca5cad691b655986da68c0bf4a13f116e3ff0a1df315b854d447338f95f21" dependencies = [ "agave-feature-set", - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", "solana-sdk-ids", ] @@ -126,76 +112,11 @@ dependencies = [ "memchr", ] -[[package]] -name = "alloca" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4" -dependencies = [ - "cc", -] - -[[package]] -name = "anes" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" - -[[package]] -name = "anstream" -version = "0.6.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" - -[[package]] -name = "anstyle-parse" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys 0.60.2", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys 0.60.2", -] - [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "arrayref" @@ -203,12 +124,6 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - [[package]] name = "ascii" version = "0.9.3" @@ -239,7 +154,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", "synstructure", ] @@ -251,7 +166,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -262,7 +177,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -277,37 +192,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" -[[package]] -name = "autotools" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" -dependencies = [ - "cc", -] - -[[package]] -name = "aws-lc-rs" -version = "1.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc" -dependencies = [ - "aws-lc-sys", - "zeroize", -] - -[[package]] -name = "aws-lc-sys" -version = "0.39.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a25cf98105baa966497416dbd42565ce3a8cf8dbfd59803ec9ad46f3126399" -dependencies = [ - "cc", - "cmake", - "dunce", - "fs_extra", -] - [[package]] name = "axum" version = "0.8.8" @@ -317,7 +201,7 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http 1.4.0", + "http", "http-body", "http-body-util", "itoa", @@ -341,7 +225,7 @@ checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http", "http-body", "http-body-util", "mime", @@ -351,12 +235,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -378,45 +256,12 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.72.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.114", -] - [[package]] name = "bitflags" version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -[[package]] -name = "blake3" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", - "cpufeatures", - "digest", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -446,7 +291,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -491,7 +336,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -506,16 +351,6 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" -dependencies = [ - "cc", - "pkg-config", -] - [[package]] name = "cargo-lock" version = "11.0.1" @@ -528,12 +363,6 @@ dependencies = [ "url", ] -[[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - [[package]] name = "cc" version = "1.2.54" @@ -552,15 +381,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-if" version = "1.0.4" @@ -581,34 +401,7 @@ checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", -] - -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", + "syn", ] [[package]] @@ -621,72 +414,6 @@ dependencies = [ "inout", ] -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "clap" -version = "4.5.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.5.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "clap_lex" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" - -[[package]] -name = "cmake" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" -dependencies = [ - "cc", -] - -[[package]] -name = "colorchoice" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" - [[package]] name = "combine" version = "3.8.1" @@ -710,43 +437,12 @@ dependencies = [ "memchr", ] -[[package]] -name = "console" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width", - "windows-sys 0.61.2", -] - -[[package]] -name = "const-hex" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" -dependencies = [ - "cfg-if", - "cpufeatures", - "proptest", - "serde_core", -] - [[package]] name = "const-oid" version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" -[[package]] -name = "constant_time_eq" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" - [[package]] name = "core-foundation" version = "0.10.1" @@ -781,90 +477,12 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "criterion" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d883447757bb0ee46f233e9dc22eb84d93a9508c9b868687b274fc431d886bf" -dependencies = [ - "alloca", - "anes", - "cast", - "ciborium", - "clap", - "criterion-plot", - "itertools 0.13.0", - "num-traits", - "oorandom", - "page_size", - "plotters", - "rayon", - "regex", - "serde", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed943f81ea2faa8dcecbbfa50164acf95d555afec96a27871663b300e387b2e4" -dependencies = [ - "cast", - "itertools 0.13.0", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-queue" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-utils" version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - [[package]] name = "crypto-common" version = "0.1.7" @@ -911,77 +529,76 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] name = "darling" -version = "0.20.11" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.20.11", - "darling_macro 0.20.11", + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] name = "darling" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", + "darling_core 0.23.0", + "darling_macro 0.23.0", ] [[package]] name = "darling_core" -version = "0.20.11" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.114", + "syn", ] [[package]] name = "darling_core" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.114", + "syn", ] [[package]] name = "darling_macro" -version = "0.20.11" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "darling_core 0.20.11", + "darling_core 0.21.3", "quote", - "syn 2.0.114", + "syn", ] [[package]] name = "darling_macro" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core 0.21.3", + "darling_core 0.23.0", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -1015,50 +632,19 @@ dependencies = [ ] [[package]] -name = "deranged" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "derivation-path" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derive_builder" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" -dependencies = [ - "derive_builder_macro", -] - -[[package]] -name = "derive_builder_core" -version = "0.20.2" +name = "deranged" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ - "darling 0.20.11", - "proc-macro2", - "quote", - "syn 2.0.114", + "powerfmt", ] [[package]] -name = "derive_builder_macro" -version = "0.20.2" +name = "derivation-path" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" -dependencies = [ - "derive_builder_core", - "syn 2.0.114", -] +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" [[package]] name = "digest" @@ -1079,15 +665,9 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - [[package]] name = "ed25519" version = "2.2.3" @@ -1106,6 +686,7 @@ checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", + "rand_core 0.6.4", "serde", "sha2", "subtle", @@ -1118,35 +699,6 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - -[[package]] -name = "env_filter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "jiff", - "log", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -1160,7 +712,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1181,26 +733,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "fastwebsockets" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305d3ba574508e27190906d11707dad683e0494e6b85eae9b044cb2734a5e422" -dependencies = [ - "base64 0.21.7", - "bytes", - "http-body-util", - "hyper", - "hyper-util", - "pin-project", - "rand 0.8.5", - "sha1", - "simdutf8", - "thiserror 1.0.69", - "tokio", - "utf-8", -] - [[package]] name = "feature-probe" version = "0.1.1" @@ -1219,22 +751,13 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" -[[package]] -name = "five8" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" -dependencies = [ - "five8_core 0.1.2", -] - [[package]] name = "five8" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" dependencies = [ - "five8_core 1.0.0", + "five8_core", ] [[package]] @@ -1243,27 +766,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" dependencies = [ - "five8_core 1.0.0", + "five8_core", ] -[[package]] -name = "five8_core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" - [[package]] name = "five8_core" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "059c31d7d36c43fe39d89e55711858b4da8be7eb6dabac23c7289b1a19489406" -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "fixedbitset" version = "0.5.7" @@ -1292,12 +803,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - [[package]] name = "form_urlencoded" version = "1.2.2" @@ -1307,12 +812,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - [[package]] name = "futures" version = "0.3.31" @@ -1369,7 +868,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -1439,32 +938,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "git-version" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19" -dependencies = [ - "git-version-macro", -] - -[[package]] -name = "git-version-macro" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - [[package]] name = "h2" version = "0.4.13" @@ -1476,7 +949,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.4.0", + "http", "indexmap", "slab", "tokio", @@ -1484,17 +957,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "half" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" -dependencies = [ - "cfg-if", - "crunchy", - "zerocopy", -] - [[package]] name = "hash32" version = "0.3.1" @@ -1510,7 +972,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "foldhash 0.1.5", + "foldhash", ] [[package]] @@ -1518,15 +980,6 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "foldhash 0.2.0", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "heck" @@ -1543,15 +996,6 @@ dependencies = [ "digest", ] -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "hostname" version = "0.4.2" @@ -1563,17 +1007,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.4.0" @@ -1591,7 +1024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.4.0", + "http", ] [[package]] @@ -1602,7 +1035,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http", "http-body", "pin-project-lite", ] @@ -1652,7 +1085,7 @@ dependencies = [ "futures-channel", "futures-core", "h2", - "http 1.4.0", + "http", "http-body", "httparse", "httpdate", @@ -1670,7 +1103,7 @@ version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "http 1.4.0", + "http", "hyper", "hyper-util", "rustls", @@ -1678,7 +1111,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.5", + "webpki-roots", ] [[package]] @@ -1700,12 +1133,12 @@ version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.4.0", + "http", "http-body", "hyper", "ipnet", @@ -1836,19 +1269,6 @@ dependencies = [ "hashbrown 0.16.1", ] -[[package]] -name = "indicatif" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88" -dependencies = [ - "console", - "portable-atomic", - "unicode-width", - "unit-prefix", - "web-time", -] - [[package]] name = "inout" version = "0.1.4" @@ -1874,21 +1294,6 @@ dependencies = [ "serde", ] -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.12.1" @@ -1898,15 +1303,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.14.0" @@ -1922,30 +1318,6 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" -[[package]] -name = "jiff" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50" -dependencies = [ - "jiff-static", - "log", - "portable-atomic", - "portable-atomic-util", - "serde_core", -] - -[[package]] -name = "jiff-static" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "jni" version = "0.21.1" @@ -2020,22 +1392,12 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc88ff4688e43cc3fa9883a8a95c6fa27aa2e76c96e610b737b6554d650d7fd5" dependencies = [ - "http 1.4.0", + "http", "serde", "serde_json", "thiserror 2.0.18", ] -[[package]] -name = "kanal" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3953adf0cd667798b396c2fa13552d6d9b3269d7dd1154c4c416442d1ff574" -dependencies = [ - "futures-core", - "lock_api", -] - [[package]] name = "keccak" version = "0.1.6" @@ -2057,54 +1419,12 @@ version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" -[[package]] -name = "libloading" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" -dependencies = [ - "cfg-if", - "windows-link", -] - [[package]] name = "libm" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" -[[package]] -name = "librocksdb-sys" -version = "0.17.3+10.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef2a00ee60fe526157c9023edab23943fae1ce2ab6f4abb2a807c1746835de9" -dependencies = [ - "bindgen", - "bzip2-sys", - "cc", - "libc", - "libz-sys", - "lz4-sys", - "zstd-sys", -] - -[[package]] -name = "libz-sys" -version = "1.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" -dependencies = [ - "cc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -2138,22 +1458,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" -[[package]] -name = "lz4-sys" -version = "1.11.1+lz4-1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - [[package]] name = "matchers" version = "0.2.0" @@ -2197,36 +1501,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "metrics-exporter-prometheus" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3589659543c04c7dc5526ec858591015b87cd8746583b51b48ef4353f99dbcda" -dependencies = [ - "base64 0.22.1", - "indexmap", - "metrics", - "metrics-util", - "quanta", - "thiserror 2.0.18", -] - -[[package]] -name = "metrics-util" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdfb1365fea27e6dd9dc1dbc19f570198bc86914533ad639dae939635f096be4" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", - "hashbrown 0.16.1", - "metrics", - "quanta", - "rand 0.9.4", - "rand_xoshiro", - "sketches-ddsketch", -] - [[package]] name = "mime" version = "0.3.17" @@ -2260,12 +1534,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "multimap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" - [[package]] name = "multimap" version = "0.10.1" @@ -2288,7 +1556,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -2315,7 +1583,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -2338,9 +1606,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -2348,23 +1616,14 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.114", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", + "syn", ] [[package]] @@ -2382,18 +1641,6 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - -[[package]] -name = "oorandom" -version = "11.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" - [[package]] name = "opaque-debug" version = "0.3.1" @@ -2404,17 +1651,7 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" name = "openssl-probe" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" - -[[package]] -name = "page_size" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" -dependencies = [ - "libc", - "winapi", -] +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "parking_lot" @@ -2439,6 +1676,12 @@ dependencies = [ "windows-link", ] +[[package]] +name = "pastey" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5a797f0e07bdf071d15742978fc3128ec6c22891c31a3a931513263904c982a" + [[package]] name = "pbkdf2" version = "0.11.0" @@ -2454,7 +1697,7 @@ version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ - "base64 0.22.1", + "base64", "serde_core", ] @@ -2494,7 +1737,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -2507,23 +1750,13 @@ dependencies = [ "sha2", ] -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset 0.4.2", - "indexmap", -] - [[package]] name = "petgraph" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ - "fixedbitset 0.5.7", + "fixedbitset", "hashbrown 0.15.5", "indexmap", ] @@ -2545,7 +1778,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -2576,34 +1809,6 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" -[[package]] -name = "plotters" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" - -[[package]] -name = "plotters-svg" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" -dependencies = [ - "plotters-backend", -] - [[package]] name = "polyval" version = "0.6.2" @@ -2622,15 +1827,6 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" -[[package]] -name = "portable-atomic-util" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" -dependencies = [ - "portable-atomic", -] - [[package]] name = "potential_utf" version = "0.1.4" @@ -2655,16 +1851,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "prettyplease" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" -dependencies = [ - "proc-macro2", - "syn 1.0.109", -] - [[package]] name = "prettyplease" version = "0.2.37" @@ -2672,7 +1858,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.114", + "syn", ] [[package]] @@ -2693,31 +1879,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "proptest" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" -dependencies = [ - "bitflags", - "num-traits", - "rand 0.9.4", - "rand_chacha 0.9.0", - "rand_xorshift", - "regex-syntax", - "unarray", -] - -[[package]] -name = "prost" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" -dependencies = [ - "bytes", - "prost-derive 0.11.9", -] - [[package]] name = "prost" version = "0.14.3" @@ -2725,29 +1886,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", - "prost-derive 0.14.3", -] - -[[package]] -name = "prost-build" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" -dependencies = [ - "bytes", - "heck 0.4.1", - "itertools 0.10.5", - "lazy_static", - "log", - "multimap 0.8.3", - "petgraph 0.6.5", - "prettyplease 0.1.25", - "prost 0.11.9", - "prost-types 0.11.9", - "regex", - "syn 1.0.109", - "tempfile", - "which", + "prost-derive", ] [[package]] @@ -2756,34 +1895,21 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ - "heck 0.5.0", + "heck", "itertools 0.14.0", "log", - "multimap 0.10.1", - "petgraph 0.8.3", - "prettyplease 0.2.37", - "prost 0.14.3", - "prost-types 0.14.3", + "multimap", + "petgraph", + "prettyplease", + "prost", + "prost-types", "pulldown-cmark", "pulldown-cmark-to-cmark", "regex", - "syn 2.0.114", + "syn", "tempfile", ] -[[package]] -name = "prost-derive" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" -dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "prost-derive" version = "0.14.3" @@ -2794,16 +1920,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.114", -] - -[[package]] -name = "prost-types" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" -dependencies = [ - "prost 0.11.9", + "syn", ] [[package]] @@ -2812,16 +1929,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ - "prost 0.14.3", -] - -[[package]] -name = "protobuf-src" -version = "1.1.0+21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" -dependencies = [ - "autotools", + "prost", ] [[package]] @@ -2991,9 +2099,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -3063,24 +2171,6 @@ dependencies = [ "getrandom 0.3.4", ] -[[package]] -name = "rand_xorshift" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" -dependencies = [ - "rand_core 0.9.5", -] - -[[package]] -name = "rand_xoshiro" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" -dependencies = [ - "rand_core 0.9.5", -] - [[package]] name = "raw-cpuid" version = "11.6.0" @@ -3090,26 +2180,6 @@ dependencies = [ "bitflags", ] -[[package]] -name = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - [[package]] name = "rcgen" version = "0.14.7" @@ -3153,253 +2223,73 @@ checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" - -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "http 1.4.0", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "js-sys", - "log", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 1.0.5", -] - -[[package]] -name = "reqwest-middleware" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" -dependencies = [ - "anyhow", - "async-trait", - "http 1.4.0", - "reqwest", - "serde", - "thiserror 1.0.69", - "tower-service", -] - -[[package]] -name = "richat" -version = "10.0.0" -dependencies = [ - "affinity-linux", - "agave-reserved-account-keys", - "anyhow", - "arrayvec", - "cargo-lock", - "clap", - "crossbeam-queue", - "fastwebsockets", - "foldhash 0.2.0", - "futures", - "git-version", - "http-body-util", - "humantime-serde", - "hyper", - "hyper-util", - "jsonrpsee-types", - "kanal", - "maplit", - "metrics", - "metrics-exporter-prometheus", - "prost 0.14.3", - "prost-types 0.14.3", - "quanta", - "rayon", - "richat-client", - "richat-filter", - "richat-metrics", - "richat-proto", - "richat-shared", - "rocksdb", - "rustls", - "serde", - "serde_json", - "signal-hook 0.4.3", - "smallvec", - "solana-account", - "solana-account-decoder", - "solana-clock", - "solana-commitment-config", - "solana-message", - "solana-nohash-hasher", - "solana-pubkey 3.0.0", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status", - "solana-version", - "spl-token-2022-interface", - "thiserror 2.0.18", - "tikv-jemallocator", - "tokio", - "tokio-rustls", - "tokio-util", - "tonic", - "tonic-build 0.14.2", - "tonic-prost", - "tracing", - "vergen", - "zstd", -] - -[[package]] -name = "richat-benches" -version = "1.0.0" -dependencies = [ - "agave-geyser-plugin-interface", - "criterion", - "prost 0.11.9", - "prost 0.14.3", - "prost-types 0.14.3", - "richat-filter", - "richat-plugin-agave", - "richat-proto", - "solana-clock", - "solana-hash 3.1.0", - "solana-message", - "solana-pubkey 3.0.0", - "solana-signature", - "solana-storage-proto", - "solana-transaction", - "solana-transaction-status", -] - -[[package]] -name = "richat-cli" -version = "9.0.2" -dependencies = [ - "agave-geyser-plugin-interface", - "anyhow", - "clap", - "const-hex", - "futures", - "indicatif", - "jsonrpsee-types", - "maplit", - "prost 0.14.3", - "richat-client", - "richat-plugin-agave", - "richat-proto", - "richat-shared", - "rustls", - "serde", - "serde_json", - "serde_yaml", - "solana-account-decoder", - "solana-clock", - "solana-commitment-config", - "solana-hash 3.1.0", - "solana-message", - "solana-pubkey 3.0.0", - "solana-pubsub-client", - "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-status", - "tikv-jemallocator", - "tokio", - "tokio-tungstenite", - "tonic", - "tracing", + "regex-syntax", ] [[package]] -name = "richat-client" -version = "8.1.1" +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ - "anyhow", + "base64", "bytes", - "foldhash 0.2.0", - "futures", - "humantime-serde", + "futures-core", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", "pin-project-lite", - "prost 0.14.3", "quinn", - "richat-proto", - "richat-shared", "rustls", - "rustls-native-certs", - "rustls-pemfile", + "rustls-pki-types", "serde", - "solana-clock", - "thiserror 2.0.18", + "serde_json", + "serde_urlencoded", + "sync_wrapper", "tokio", - "tonic", - "tonic-build 0.14.2", - "tonic-prost", - "tracing", - "webpki-roots 1.0.5", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", ] [[package]] -name = "richat-filter" -version = "8.1.0" +name = "reqwest-middleware" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" dependencies = [ - "arrayvec", - "base64 0.22.1", - "bs58", - "const-hex", - "maplit", - "prost 0.14.3", - "prost-types 0.14.3", - "richat-proto", - "richat-shared", + "anyhow", + "async-trait", + "http", + "reqwest", "serde", - "smallvec", - "solana-account", - "solana-clock", - "solana-commitment-config", - "solana-pubkey 3.0.0", - "solana-signature", - "solana-transaction-status", - "spl-token-2022-interface", - "thiserror 2.0.18", + "thiserror 1.0.69", + "tower-service", ] [[package]] name = "richat-metrics" version = "1.0.1" dependencies = [ - "http 1.4.0", + "http", "http-body-util", "hyper", "hyper-util", @@ -3410,64 +2300,38 @@ dependencies = [ ] [[package]] -name = "richat-plugin-agave" -version = "8.1.1" +name = "richat-proto" +version = "9.0.0" dependencies = [ - "agave-geyser-plugin-interface", "anyhow", "bincode", "cargo-lock", - "clap", - "futures", - "git-version", - "log", - "metrics-exporter-prometheus", - "prost 0.14.3", - "prost-types 0.14.3", - "richat-benches", - "richat-metrics", - "richat-proto", - "richat-shared", - "rustls", - "serde", - "serde_json", - "smallvec", + "prost", + "protoc-bin-vendored", + "solana-account 4.3.0", "solana-account-decoder", "solana-clock", - "solana-logger", + "solana-hash 4.3.0", "solana-message", - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", "solana-signature", "solana-transaction", "solana-transaction-context", "solana-transaction-error", "solana-transaction-status", - "tokio", - "tokio-util", - "vergen", -] - -[[package]] -name = "richat-proto" -version = "8.0.0" -dependencies = [ - "anyhow", - "cargo-lock", - "prost 0.14.3", - "protoc-bin-vendored", "tonic-prost-build", "yellowstone-grpc-proto", ] [[package]] name = "richat-shared" -version = "8.0.1" +version = "9.0.0" dependencies = [ "affinity-linux", "anyhow", - "base64 0.22.1", + "base64", "bs58", - "five8 1.0.0", + "five8", "futures", "hostname", "http-body-util", @@ -3478,7 +2342,7 @@ dependencies = [ "jsonrpc-core", "jsonrpsee-types", "metrics", - "prost 0.14.3", + "prost", "protoc-bin-vendored", "quanta", "quinn", @@ -3493,7 +2357,7 @@ dependencies = [ "serde_yaml", "socket2", "solana-clock", - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", "solana-rpc-client-api", "solana-signature", "thiserror 2.0.18", @@ -3501,7 +2365,7 @@ dependencies = [ "tokio-util", "toml", "tonic", - "tonic-build 0.14.2", + "tonic-build", "tonic-prost", "tracing", "tracing-subscriber", @@ -3521,16 +2385,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rocksdb" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb7af00d2b17dbd07d82c0063e25411959748ff03e8d4f96134c2ff41fce34f" -dependencies = [ - "libc", - "librocksdb-sys", -] - [[package]] name = "rustc-demangle" version = "0.1.27" @@ -3561,19 +2415,6 @@ dependencies = [ "nom", ] -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - [[package]] name = "rustix" version = "1.1.3" @@ -3583,8 +2424,8 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys 0.11.0", - "windows-sys 0.59.0", + "linux-raw-sys", + "windows-sys 0.61.2", ] [[package]] @@ -3593,7 +2434,6 @@ version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ - "aws-lc-rs", "log", "once_cell", "ring", @@ -3652,7 +2492,7 @@ dependencies = [ "security-framework", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3667,7 +2507,6 @@ version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ - "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -3788,7 +2627,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -3827,9 +2666,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.1" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +checksum = "f05839ce67618e14a09b286535c0d9c94e85ef25469b0e13cb4f844e5593eb19" dependencies = [ "serde_core", "serde_with_macros", @@ -3837,14 +2676,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.1" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +checksum = "cf2ebbe86054f9b45bc3881e865683ccfaccce97b9b4cb53f3039d67f355a334" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -3860,17 +2699,6 @@ dependencies = [ "unsafe-libyaml", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2" version = "0.10.9" @@ -3882,11 +2710,17 @@ dependencies = [ "digest", ] +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -3907,36 +2741,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b57709da74f9ff9f4a27dce9526eec25ca8407c45a7887243b031a58935fb8e" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - [[package]] name = "signature" version = "2.2.0" @@ -3952,24 +2756,12 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" -[[package]] -name = "simdutf8" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" - [[package]] name = "siphasher" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" -[[package]] -name = "sketches-ddsketch" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" - [[package]] name = "slab" version = "0.4.11" @@ -3994,9 +2786,9 @@ dependencies = [ [[package]] name = "solana-account" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e0ac2a81ae17e1b3570deb50242ab4cfde50b848b898f57288b6271cc7b71f" +checksum = "efc0ed36decb689413b9da5d57f2be49eea5bebb3cf7897015167b0c4336e731" dependencies = [ "bincode", "serde", @@ -4005,25 +2797,38 @@ dependencies = [ "solana-account-info", "solana-clock", "solana-instruction-error", - "solana-pubkey 4.0.0", + "solana-pubkey 4.2.0", "solana-sdk-ids", "solana-sysvar", ] +[[package]] +name = "solana-account" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87c1b95bd432efb92837bc38001365e5acb5c0175b199bc447b08a8c320ecf6c" +dependencies = [ + "solana-account-info", + "solana-clock", + "solana-instruction-error", + "solana-pubkey 4.2.0", + "solana-sdk-ids", +] + [[package]] name = "solana-account-decoder" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8464b3fc2a2be746bac737762d0641b36ac6abd8011d42ab39fbac347f7f35c4" +checksum = "5b46a77a786c876cba3faff781288ae910723433fe90090d002fbacb7fbfaa4f" dependencies = [ "Inflector", - "base64 0.22.1", + "base64", "bincode", "bs58", "bv", "serde", "serde_json", - "solana-account", + "solana-account 3.4.0", "solana-account-decoder-client-types", "solana-address-lookup-table-interface", "solana-clock", @@ -4035,8 +2840,8 @@ dependencies = [ "solana-nonce", "solana-program-option", "solana-program-pack", - "solana-pubkey 3.0.0", - "solana-rent", + "solana-pubkey 4.2.0", + "solana-rent 3.1.0", "solana-sdk-ids", "solana-slot-hashes", "solana-slot-history", @@ -4054,16 +2859,16 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19c4d25af582526effd2ddb30a6d8d1272ec31ad77dbaa7f83d37dc3d8093867" +checksum = "724476642226b22fb672c90c05c4a5b6a07a7c66ad89eb54ed92244511e88581" dependencies = [ - "base64 0.22.1", + "base64", "bs58", "serde", "serde_json", - "solana-account", - "solana-pubkey 3.0.0", + "solana-account 3.4.0", + "solana-pubkey 4.2.0", "zstd", ] @@ -4073,7 +2878,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc3397241392f5756925029acaa8515dc70fcbe3d8059d4885d7d6533baf64fd" dependencies = [ - "solana-address 2.0.0", + "solana-address 2.6.0", "solana-program-error", "solana-program-memory", ] @@ -4084,35 +2889,38 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" dependencies = [ - "solana-address 2.0.0", + "solana-address 2.6.0", ] [[package]] name = "solana-address" -version = "2.0.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e37320fd2945c5d654b2c6210624a52d66c3f1f73b653ed211ab91a703b35bdd" +checksum = "f1384b52c435a750cc9c538760fc7bb472fd78e65a9900a2d07312c5bb335b72" dependencies = [ "borsh", "bytemuck", "bytemuck_derive", "curve25519-dalek", - "five8 1.0.0", + "five8", "five8_const", "serde", "serde_derive", + "sha2-const-stable", "solana-atomic-u64", - "solana-define-syscall 4.0.1", + "solana-define-syscall 5.1.0", + "solana-nullable", "solana-program-error", "solana-sanitize", "solana-sha256-hasher", + "wincode", ] [[package]] name = "solana-address-lookup-table-interface" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e8df0b083c10ce32490410f3795016b1b5d9b4d094658c0a5e496753645b7cd" +checksum = "115b4f773acc4f3f3cb986b0d335e9845c0368c82b0940410935bc11ae065578" dependencies = [ "bincode", "bytemuck", @@ -4121,7 +2929,7 @@ dependencies = [ "solana-clock", "solana-instruction", "solana-instruction-error", - "solana-pubkey 4.0.0", + "solana-pubkey 4.2.0", "solana-sdk-ids", "solana-slot-hashes", ] @@ -4137,18 +2945,18 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "3.0.0" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc402b16657abbfa9991cd5cbfac5a11d809f7e7d28d3bb291baeb088b39060e" +checksum = "c04abbae16f57178a163125805637b8a076175bb5c0002fb04f4792bea901cf7" dependencies = [ "borsh", ] [[package]] name = "solana-clock" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb62e9381182459a4520b5fe7fb22d423cae736239a6427fc398a88743d0ed59" +checksum = "95cf11109c3b6115cc510f1e31f06fdd52f504271bc24ef5f1249fbbcae5f9f3" dependencies = [ "serde", "serde_derive", @@ -4159,9 +2967,9 @@ dependencies = [ [[package]] name = "solana-commitment-config" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e41a3917076a8b5375809078ae3a6fb76a53e364b596ef8c4265e7f410876f3" +checksum = "1517aa49dcfa9cb793ef90e7aac81346d62ca4a546bb1a754030a033e3972e1c" dependencies = [ "serde", "serde_derive", @@ -4176,12 +2984,12 @@ dependencies = [ "bincode", "serde", "serde_derive", - "solana-account", + "solana-account 3.4.0", "solana-instruction", "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-short-vec", - "solana-system-interface", + "solana-system-interface 2.0.0", ] [[package]] @@ -4194,15 +3002,15 @@ dependencies = [ "solana-define-syscall 4.0.1", "solana-instruction", "solana-program-error", - "solana-pubkey 4.0.0", + "solana-pubkey 4.2.0", "solana-stable-layout", ] [[package]] name = "solana-curve25519" -version = "3.1.7" +version = "3.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d1e80bc1dec29e07019e96eeb7d72aa5ff70780a9ae700d7dd101692456739" +checksum = "5aff7432cdf2ec6a44ac06b4d64d2ee006f6c0066d6456e032a7fe25be40cd5c" dependencies = [ "bytemuck", "bytemuck_derive", @@ -4224,6 +3032,12 @@ version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" +[[package]] +name = "solana-define-syscall" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e14a4f604117f379840956a8fc8695e4c84f5b0ebed192f31f60d9b85d581d" + [[package]] name = "solana-derivation-path" version = "3.0.0" @@ -4264,9 +3078,9 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "3.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a73cc03ca4bed871ca174558108835f8323e85917bb38b9c81c7af2ab853efe" +checksum = "57e8add96b5741573e9f7529c4bb7719cfcfa999c3847a68cdfaef0cb6adf567" dependencies = [ "log", "serde", @@ -4279,19 +3093,18 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" dependencies = [ - "solana-hash 4.0.1", + "solana-hash 4.3.0", ] [[package]] name = "solana-hash" -version = "4.0.1" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5d48a6ee7b91fc7b998944ab026ed7b3e2fc8ee3bc58452644a86c2648152f" +checksum = "f1b113239362cee7093bfb250467138f079a2a03673181dc15bff6ccd677912d" dependencies = [ - "borsh", "bytemuck", "bytemuck_derive", - "five8 1.0.0", + "five8", "serde", "serde_derive", "solana-atomic-u64", @@ -4306,24 +3119,23 @@ checksum = "e92f37a14e7c660628752833250dd3dcd8e95309876aee751d7f8769a27947c6" [[package]] name = "solana-instruction" -version = "3.1.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee1b699a2c1518028a9982e255e0eca10c44d90006542d9d7f9f40dbce3f7c78" +checksum = "37ebb0ffd19263051bc3f683fcc086134b8ff23af894dcb63f7563c7137b42f1" dependencies = [ "bincode", - "borsh", "serde", "serde_derive", - "solana-define-syscall 4.0.1", + "solana-define-syscall 5.1.0", "solana-instruction-error", - "solana-pubkey 4.0.0", + "solana-pubkey 4.2.0", ] [[package]] name = "solana-instruction-error" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04259e03c05faf38a8c24217b5cfe4c90572ae6184ab49cddb1584fdd756d3f" +checksum = "a0b188842592fdf6cb96f55263ae1bf11713ab5114401d1d5a881ed7cc41bef6" dependencies = [ "num-traits", "serde", @@ -4349,6 +3161,22 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-keypair" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "263d614c12aa267a3278703175fd6440552ca61bc960b5a02a4482720c53438b" +dependencies = [ + "ed25519-dalek", + "five8", + "five8_core", + "rand 0.9.4", + "solana-address 2.6.0", + "solana-seed-phrase", + "solana-signature", + "solana-signer", +] + [[package]] name = "solana-last-restart-slot" version = "3.0.0" @@ -4378,45 +3206,30 @@ dependencies = [ [[package]] name = "solana-loader-v3-interface" -version = "6.1.0" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee44c9b1328c5c712c68966fb8de07b47f3e7bac006e74ddd1bb053d3e46e5d" +checksum = "2e0538d4dbc9022e01616f1c58f2db98ece739c5d5ed4a2ef8737a953e76a2d4" dependencies = [ "serde", "serde_bytes", "serde_derive", "solana-instruction", - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", "solana-sdk-ids", - "solana-system-interface", -] - -[[package]] -name = "solana-logger" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef7421d1092680d72065edbf5c7605856719b021bf5f173656c71febcdd5d003" -dependencies = [ - "env_logger", - "lazy_static", - "libc", - "log", - "signal-hook 0.3.18", + "solana-system-interface 3.2.0", ] [[package]] name = "solana-message" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85666605c9fd727f865ed381665db0a8fc29f984a030ecc1e40f43bfb2541623" +checksum = "0448b1fd891c5f46491e5dc7d9986385ba3c852c340db2911dd29faa01d2b08d" dependencies = [ - "bincode", - "blake3", "lazy_static", "serde", "serde_derive", - "solana-address 1.1.0", - "solana-hash 3.1.0", + "solana-address 2.6.0", + "solana-hash 4.3.0", "solana-instruction", "solana-sanitize", "solana-sdk-ids", @@ -4426,33 +3239,36 @@ dependencies = [ [[package]] name = "solana-msg" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "264275c556ea7e22b9d3f87d56305546a38d4eee8ec884f3b126236cb7dcbbb4" +checksum = "726b7cbbc6be6f1c6f29146ac824343b9415133eee8cce156452ad1db93f8008" dependencies = [ - "solana-define-syscall 3.0.0", + "solana-define-syscall 5.1.0", ] -[[package]] -name = "solana-nohash-hasher" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" - [[package]] name = "solana-nonce" -version = "3.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abbdc6c8caf1c08db9f36a50967539d0f72b9f1d4aea04fec5430f532e5afadc" +checksum = "d95dbc9f2e33b6c10e231df15cb2a3bff9ea7eab6347f9e316fe75c97fd67bbb" dependencies = [ "serde", "serde_derive", "solana-fee-calculator", - "solana-hash 3.1.0", - "solana-pubkey 3.0.0", + "solana-hash 4.3.0", + "solana-pubkey 4.2.0", "solana-sha256-hasher", ] +[[package]] +name = "solana-nullable" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da028344c595c7416769ff648d206de7962571291a4cea24c38a60b6f40d53bb" +dependencies = [ + "bytemuck", +] + [[package]] name = "solana-program-entrypoint" version = "3.1.1" @@ -4462,7 +3278,7 @@ dependencies = [ "solana-account-info", "solana-define-syscall 4.0.1", "solana-program-error", - "solana-pubkey 4.0.0", + "solana-pubkey 4.2.0", ] [[package]] @@ -4485,15 +3301,15 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e7b4ddb464f274deb4a497712664c3b612e3f5f82471d4e47710fc4ab1c3095" +checksum = "7a88006a9b8594088cec9027ab77caaaa258a2aaa2083d3f086c44b42e50aeab" [[package]] name = "solana-program-pack" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c169359de21f6034a63ebf96d6b380980307df17a8d371344ff04a883ec4e9d0" +checksum = "3d7701cb15b90667ae1c89ef4ac35a59c61e66ce58ddee13d729472af7f41d59" dependencies = [ "solana-program-error", ] @@ -4503,43 +3319,17 @@ name = "solana-pubkey" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" -dependencies = [ - "solana-address 1.1.0", -] - -[[package]] -name = "solana-pubkey" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f7104d456b58e1418c21a8581e89810278d1190f70f27ece7fc0b2c9282a57" -dependencies = [ - "solana-address 2.0.0", -] - -[[package]] -name = "solana-pubsub-client" -version = "3.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13ee11014415fc24dcd1086566b17f20c2a78f6e5343c28368131948949eb499" -dependencies = [ - "crossbeam-channel", - "futures-util", - "http 0.2.12", - "log", - "semver", - "serde", - "serde_json", - "solana-account-decoder-client-types", - "solana-clock", - "solana-pubkey 3.0.0", - "solana-rpc-client-types", - "solana-signature", - "thiserror 2.0.18", - "tokio", - "tokio-stream", - "tokio-tungstenite", - "tungstenite", - "url", +dependencies = [ + "solana-address 1.1.0", +] + +[[package]] +name = "solana-pubkey" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7db719574990de7e8b0f55a8593ac92a5ccb42c8ce67b3e4bf05b139d5d9ee71" +dependencies = [ + "solana-address 2.6.0", ] [[package]] @@ -4555,11 +3345,20 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-rent" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763fe5c88a76ce18235db595b21d38b7aebf6db56b324cdf9fc96059f4410823" +dependencies = [ + "solana-sdk-macro", +] + [[package]] name = "solana-reward-info" -version = "3.0.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82be7946105c2ee6be9f9ee7bd18a068b558389221d29efa92b906476102bfcc" +checksum = "d8f4c5c5b5599e640c15ead65be499d60f6ee62a5ba7aa7e23f5b0537046ed49" dependencies = [ "serde", "serde_derive", @@ -4567,9 +3366,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d934907c81013f8e561177045340702f957c840abb74a4f16e2b04bc10d4cd50" +checksum = "b8a3c68bbeae45d991900fa7020ddd4a974cf2c428b28b18be0300e8526c204b" dependencies = [ "anyhow", "jsonrpc-core", @@ -4588,18 +3387,18 @@ dependencies = [ [[package]] name = "solana-rpc-client-types" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "169b1197c7a242357478d0a88ed5c3e698cfd6ed0436d2eb710cfea79d1b0b92" +checksum = "174c6e2de935b0c1cf30b007a02f1e1ae4ea62f3b8101502023b372325428757" dependencies = [ - "base64 0.22.1", + "base64", "bs58", "semver", "serde", "serde_json", - "solana-account", + "solana-account 3.4.0", "solana-account-decoder-client-types", - "solana-address 1.1.0", + "solana-address 2.6.0", "solana-clock", "solana-commitment-config", "solana-fee-calculator", @@ -4621,9 +3420,9 @@ checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" [[package]] name = "solana-sbpf" -version = "0.13.1" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15b079e08471a9dbfe1e48b2c7439c85aa2a055cbd54eddd8bd257b0a7dbb29" +checksum = "733b3657a0fab205102b799dbe17f85d3972cf984232c1b0b108fa6ba438e382" dependencies = [ "byteorder", "combine 3.8.1", @@ -4639,7 +3438,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" dependencies = [ - "solana-address 2.0.0", + "solana-address 2.6.0", ] [[package]] @@ -4651,7 +3450,7 @@ dependencies = [ "bs58", "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -4674,20 +3473,11 @@ dependencies = [ "sha2", ] -[[package]] -name = "solana-serde" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709a93cab694c70f40b279d497639788fc2ccbcf9b4aa32273d4b361322c02dd" -dependencies = [ - "serde", -] - [[package]] name = "solana-serde-varint" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5174c57d5ff3c1995f274d17156964664566e2cde18a07bba1586d35a70d3b" +checksum = "950e5b83e839dc0f92c66afc124bb8f40e89bc90f0579e8ec5499296d27f54e3" dependencies = [ "serde", ] @@ -4711,30 +3501,31 @@ checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" dependencies = [ "sha2", "solana-define-syscall 4.0.1", - "solana-hash 4.0.1", + "solana-hash 4.3.0", ] [[package]] name = "solana-short-vec" -version = "3.1.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79fb1809a32cfcf7d9c47b7070a92fa17cdb620ab5829e9a8a9ff9d138a7a175" +checksum = "2bb8cc883fc7b8ce4a7814cb1441b48c06437049ec11847005cf63bcfa85c546" dependencies = [ "serde_core", ] [[package]] name = "solana-signature" -version = "3.1.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb8057cc0e9f7b5e89883d49de6f407df655bb6f3a71d0b7baf9986a2218fd9" +checksum = "e7a73c6e97cc2108be0adf6a6ea326434f8398df9d7eed81da2a4548b69e971c" dependencies = [ "ed25519-dalek", - "five8 0.2.1", + "five8", "serde", "serde-big-array", "serde_derive", "solana-sanitize", + "wincode", ] [[package]] @@ -4750,13 +3541,13 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80a293f952293281443c04f4d96afd9d547721923d596e92b4377ed2360f1746" +checksum = "2585f70191623887329dfb5078da3a00e15e3980ea67f42c2e10b07028419f43" dependencies = [ "serde", "serde_derive", - "solana-hash 3.1.0", + "solana-hash 4.3.0", "solana-sdk-ids", "solana-sysvar-id", ] @@ -4776,12 +3567,12 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1da74507795b6e8fb60b7c7306c0c36e2c315805d16eaaf479452661234685ac" +checksum = "c9f6a291ba063a37780af29e7db14bdd3dc447584d8ba5b3fc4b88e2bbc982fa" dependencies = [ "solana-instruction", - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", ] [[package]] @@ -4798,55 +3589,45 @@ dependencies = [ "solana-instruction", "solana-program-error", "solana-pubkey 3.0.0", - "solana-system-interface", + "solana-system-interface 2.0.0", "solana-sysvar", "solana-sysvar-id", ] [[package]] -name = "solana-storage-proto" -version = "3.1.7" +name = "solana-svm-feature-set" +version = "4.0.0-rc.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ada78631678a5a5139d6491bb8729143192c6afd30945dd8cddd974b174d7f7" + +[[package]] +name = "solana-system-interface" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cec12e75747b78ef0822cd6953eade5d3935dce843c71666e7fe65ae1cbe1cd" +checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" dependencies = [ - "bincode", - "bs58", - "prost 0.11.9", - "protobuf-src", + "num-traits", "serde", - "solana-account-decoder", - "solana-hash 3.1.0", + "serde_derive", "solana-instruction", - "solana-message", + "solana-msg", + "solana-program-error", "solana-pubkey 3.0.0", - "solana-serde", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-transaction-status", - "tonic-build 0.9.2", ] -[[package]] -name = "solana-svm-feature-set" -version = "3.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91a5fd5b82b7abe74f286179380469ea577f56a9d986a6071ed75b6276b42c64" - [[package]] name = "solana-system-interface" -version = "2.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" +checksum = "55b54965bf0b76fa8e2b35376583efddd4d916618cfe595bf48c7d7b55a9e628" dependencies = [ "num-traits", "serde", "serde_derive", + "solana-address 2.6.0", "solana-instruction", "solana-msg", "solana-program-error", - "solana-pubkey 3.0.0", ] [[package]] @@ -4855,7 +3636,7 @@ version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" dependencies = [ - "base64 0.22.1", + "base64", "bincode", "lazy_static", "serde", @@ -4866,14 +3647,14 @@ dependencies = [ "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 4.0.1", + "solana-hash 4.3.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", "solana-program-error", "solana-program-memory", - "solana-pubkey 4.0.0", - "solana-rent", + "solana-pubkey 4.2.0", + "solana-rent 3.1.0", "solana-sdk-ids", "solana-sdk-macro", "solana-slot-hashes", @@ -4887,21 +3668,20 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" dependencies = [ - "solana-address 2.0.0", + "solana-address 2.6.0", "solana-sdk-ids", ] [[package]] name = "solana-transaction" -version = "3.0.2" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ceb2efbf427a91b884709ffac4dac29117752ce1e37e9ae04977e450aa0bb76" +checksum = "96697cff5075a028265324255efed226099f6d761ca67342b230d09f72cc48d2" dependencies = [ - "bincode", "serde", "serde_derive", - "solana-address 2.0.0", - "solana-hash 4.0.1", + "solana-address 2.6.0", + "solana-hash 4.3.0", "solana-instruction", "solana-instruction-error", "solana-message", @@ -4909,32 +3689,31 @@ dependencies = [ "solana-sdk-ids", "solana-short-vec", "solana-signature", - "solana-signer", "solana-transaction-error", ] [[package]] name = "solana-transaction-context" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cc4d1cd3ae46f1e93740cc6faa7fed82d921cbe9a82f93b103a323cbd432b12" +checksum = "9ee065d9e0a7d374c012d541083b1e72832a7f016ac2ab493f535d07fa89c26d" dependencies = [ "bincode", "serde", - "solana-account", + "solana-account 3.4.0", "solana-instruction", "solana-instructions-sysvar", - "solana-pubkey 3.0.0", - "solana-rent", + "solana-pubkey 4.2.0", + "solana-rent 3.1.0", "solana-sbpf", "solana-sdk-ids", ] [[package]] name = "solana-transaction-error" -version = "3.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4222065402340d7e6aec9dc3e54d22992ddcf923d91edcd815443c2bfca3144a" +checksum = "4a2165ad25b694c654d5395fc7a049452a192376e4c96a7fad05580f6ba5ba1c" dependencies = [ "serde", "serde_derive", @@ -4944,13 +3723,13 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b55b56dbd62b33fee7f6bc84d256d807ff0a3808d14d6d7f27d1fa82bf4ecbe" +checksum = "404b5057815311b17d79ebff956d366562d68a09d75313d0b64c5a71c4cafa7c" dependencies = [ "Inflector", "agave-reserved-account-keys", - "base64 0.22.1", + "base64", "bincode", "borsh", "bs58", @@ -4960,18 +3739,18 @@ dependencies = [ "solana-account-decoder", "solana-address-lookup-table-interface", "solana-clock", - "solana-hash 3.1.0", + "solana-hash 4.3.0", "solana-instruction", "solana-loader-v2-interface", "solana-loader-v3-interface", "solana-message", "solana-program-option", - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", "solana-reward-info", "solana-sdk-ids", "solana-signature", "solana-stake-interface", - "solana-system-interface", + "solana-system-interface 3.2.0", "solana-transaction", "solana-transaction-error", "solana-transaction-status-client-types", @@ -4987,11 +3766,11 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc89888b2e96c03339c388447134bd64ac6d5a30d9286f74b82593129b702a93" +checksum = "14125d6b1dffa49b12adea3b763eff35ab83ad2aaff27dacee6ea2c9068a3256" dependencies = [ - "base64 0.22.1", + "base64", "bincode", "bs58", "serde", @@ -5000,7 +3779,7 @@ dependencies = [ "solana-commitment-config", "solana-instruction", "solana-message", - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", "solana-reward-info", "solana-signature", "solana-transaction", @@ -5011,12 +3790,12 @@ dependencies = [ [[package]] name = "solana-version" -version = "3.1.7" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f496e1623d5e687c1a65bc4fcd17cab819998232863ee038749d625857c04888" +checksum = "05a72745825b1cf786bfd14024a0f52e15b5b95c7eb58152af6608804cd0fa95" dependencies = [ "agave-feature-set", - "rand 0.8.5", + "rand 0.9.4", "semver", "serde", "solana-sanitize", @@ -5025,9 +3804,9 @@ dependencies = [ [[package]] name = "solana-vote-interface" -version = "4.0.4" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6e123e16bfdd7a81d71b4c4699e0b29580b619f4cd2ef5b6aae1eb85e8979f" +checksum = "d444ce30b6b4f9c281ba06061ea96638d063b53c2171b1e41ba02ebff79ed28f" dependencies = [ "bincode", "cfg_eval", @@ -5037,16 +3816,27 @@ dependencies = [ "serde_derive", "serde_with", "solana-clock", - "solana-hash 3.1.0", + "solana-hash 4.3.0", "solana-instruction", "solana-instruction-error", - "solana-pubkey 3.0.0", - "solana-rent", + "solana-pubkey 4.2.0", + "solana-rent 4.0.0", "solana-sdk-ids", "solana-serde-varint", "solana-serialize-utils", "solana-short-vec", - "solana-system-interface", + "solana-system-interface 3.2.0", +] + +[[package]] +name = "solana-zero-copy" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5a91404c7de468dd80658cdb5d894ec803d1092ea6e2bfdf84eee6f07559c0d" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", ] [[package]] @@ -5056,7 +3846,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9602bcb1f7af15caef92b91132ec2347e1c51a72ecdbefdaefa3eac4b8711475" dependencies = [ "aes-gcm-siv", - "base64 0.22.1", + "base64", "bincode", "bytemuck", "bytemuck_derive", @@ -5109,9 +3899,9 @@ dependencies = [ [[package]] name = "spl-discriminator" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d48cc11459e265d5b501534144266620289720b4c44522a47bc6b63cd295d2f3" +checksum = "e597c5ff9ed7c74a54dbc47bae2f06e4db8c98f4356ad280200dc11878266db1" dependencies = [ "bytemuck", "solana-program-error", @@ -5127,7 +3917,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.114", + "syn", ] [[package]] @@ -5139,7 +3929,7 @@ dependencies = [ "proc-macro2", "quote", "sha2", - "syn 2.0.114", + "syn", "thiserror 1.0.69", ] @@ -5165,9 +3955,9 @@ dependencies = [ [[package]] name = "spl-pod" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1233fdecd7461611d69bb87bc2e95af742df47291975d21232a0be8217da9de" +checksum = "2f9c6e142cdf1e7e77f480053ec9f0ce989890768ddf91f619b50f39d1b456f5" dependencies = [ "borsh", "bytemuck", @@ -5178,6 +3968,7 @@ dependencies = [ "solana-program-error", "solana-program-option", "solana-pubkey 3.0.0", + "solana-zero-copy", "solana-zk-sdk", "thiserror 2.0.18", ] @@ -5243,19 +4034,20 @@ dependencies = [ [[package]] name = "spl-token-group-interface" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "452d0f758af20caaa10d9a6f7608232e000d4c74462f248540b3d2ddfa419776" +checksum = "841cbd6f2322d02719be4da1affedbe6495b1048b7b985ec9796032564026e22" dependencies = [ "bytemuck", "num-derive", "num-traits", "num_enum", + "solana-address 2.6.0", "solana-instruction", + "solana-nullable", "solana-program-error", - "solana-pubkey 3.0.0", + "solana-zero-copy", "spl-discriminator", - "spl-pod", "thiserror 2.0.18", ] @@ -5336,20 +4128,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "1.0.109" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -5373,7 +4154,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -5385,8 +4166,8 @@ dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.3", - "windows-sys 0.59.0", + "rustix", + "windows-sys 0.61.2", ] [[package]] @@ -5415,7 +4196,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -5426,7 +4207,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -5438,26 +4219,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "tikv-jemalloc-sys" -version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "tikv-jemallocator" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" -dependencies = [ - "libc", - "tikv-jemalloc-sys", -] - [[package]] name = "time" version = "0.3.41" @@ -5466,9 +4227,7 @@ checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -5501,16 +4260,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "tinyvec" version = "1.10.0" @@ -5535,9 +4284,7 @@ dependencies = [ "bytes", "libc", "mio", - "parking_lot", "pin-project-lite", - "signal-hook-registry", "socket2", "tokio-macros", "windows-sys 0.61.2", @@ -5551,7 +4298,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -5575,22 +4322,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-tungstenite" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" -dependencies = [ - "futures-util", - "log", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tungstenite", - "webpki-roots 0.26.11", -] - [[package]] name = "tokio-util" version = "0.7.18" @@ -5663,11 +4394,11 @@ checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ "async-trait", "axum", - "base64 0.22.1", + "base64", "bytes", "flate2", "h2", - "http 1.4.0", + "http", "http-body", "http-body-util", "hyper", @@ -5688,29 +4419,16 @@ dependencies = [ "zstd", ] -[[package]] -name = "tonic-build" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" -dependencies = [ - "prettyplease 0.1.25", - "proc-macro2", - "prost-build 0.11.9", - "quote", - "syn 1.0.109", -] - [[package]] name = "tonic-build" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c40aaccc9f9eccf2cd82ebc111adc13030d23e887244bc9cfa5d1d636049de3" dependencies = [ - "prettyplease 0.2.37", + "prettyplease", "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -5720,7 +4438,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" dependencies = [ "bytes", - "prost 0.14.3", + "prost", "tonic", ] @@ -5730,14 +4448,14 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4a16cba4043dc3ff43fcb3f96b4c5c154c64cbd18ca8dce2ab2c6a451d058a2" dependencies = [ - "prettyplease 0.2.37", + "prettyplease", "proc-macro2", - "prost-build 0.14.3", - "prost-types 0.14.3", + "prost-build", + "prost-types", "quote", - "syn 2.0.114", + "syn", "tempfile", - "tonic-build 0.14.2", + "tonic-build", ] [[package]] @@ -5768,7 +4486,7 @@ dependencies = [ "bitflags", "bytes", "futures-util", - "http 1.4.0", + "http", "http-body", "iri-string", "pin-project-lite", @@ -5809,7 +4527,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -5870,26 +4588,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "tungstenite" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" -dependencies = [ - "bytes", - "data-encoding", - "http 1.4.0", - "httparse", - "log", - "rand 0.9.4", - "rustls", - "rustls-pki-types", - "sha1", - "thiserror 2.0.18", - "utf-8", - "webpki-roots 0.26.11", -] - [[package]] name = "typenum" version = "1.19.0" @@ -5902,12 +4600,6 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - [[package]] name = "unicase" version = "2.9.0" @@ -5920,18 +4612,6 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[package]] -name = "unit-prefix" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" - [[package]] name = "universal-hash" version = "0.5.1" @@ -5985,61 +4665,18 @@ dependencies = [ "serde", ] -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - [[package]] name = "utf8_iter" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - [[package]] name = "valuable" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "vergen" -version = "9.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f25fc8f8f05df455c7941e87f093ad22522a9ff33d7a027774815acf6f0639" -dependencies = [ - "anyhow", - "derive_builder", - "rustc_version", - "rustversion", - "time", - "vergen-lib", -] - -[[package]] -name = "vergen-lib" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b07e6010c0f3e59fcb164e0163834597da68d1f864e2b8ca49f74de01e9c166" -dependencies = [ - "anyhow", - "derive_builder", - "rustversion", -] - [[package]] name = "version_check" version = "0.9.5" @@ -6132,7 +4769,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.114", + "syn", "wasm-bindgen-shared", ] @@ -6174,15 +4811,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "webpki-roots" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.5", -] - [[package]] name = "webpki-roots" version = "1.0.5" @@ -6192,18 +4820,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - [[package]] name = "winapi" version = "0.3.9" @@ -6226,7 +4842,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6235,6 +4851,31 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "wincode" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c754f1fc41250f2f742a27ba0fcc9f73df1dec23f6878490770855d43c322d" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror 2.0.18", + "wincode-derive", +] + +[[package]] +name = "wincode-derive" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e070787599c7c067b89598cd3eda440cca1b69eda9e0ff7c725fc8679ce9eb4" +dependencies = [ + "darling 0.21.3", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -6259,15 +4900,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" @@ -6522,36 +5154,15 @@ dependencies = [ [[package]] name = "yellowstone-grpc-proto" -version = "11.0.0" +version = "12.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc56c7739daf7410bf6ef04ce71ce9b9a22483ef73b78a873815f87e9a8d1d2f" +checksum = "acdd7a11b9c4c36114101f4a1002344d2fd947cb5b30e5725ee41197e2b3555a" dependencies = [ - "agave-geyser-plugin-interface", "anyhow", - "base64 0.22.1", - "bincode", - "bs58", - "bytes", - "prost 0.14.3", - "prost-types 0.14.3", + "prost", + "prost-types", "protoc-bin-vendored", - "serde", - "smallvec", - "solana-account", - "solana-account-decoder", - "solana-clock", - "solana-hash 4.0.1", - "solana-message", - "solana-pubkey 4.0.0", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-transaction-status", - "spl-token-2022-interface", - "thiserror 2.0.18", "tonic", - "tonic-build 0.14.2", "tonic-prost", "tonic-prost-build", ] @@ -6575,7 +5186,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", "synstructure", ] @@ -6596,7 +5207,7 @@ checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -6616,7 +5227,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", "synstructure", ] @@ -6637,7 +5248,7 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] @@ -6670,7 +5281,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index f1f5b291..35f9f921 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,14 +1,14 @@ [workspace] resolver = "2" members = [ - "benches", - "cli", - "client", - "filter", - "metrics", - "plugin-agave", + # "benches", + # "cli", + # "client", + # "filter", + # "metrics", + # "plugin-agave", "proto", - "richat", + # "richat", "shared", ] @@ -23,8 +23,8 @@ publish = false [workspace.dependencies] affinity-linux = "1.0.0" -agave-geyser-plugin-interface = "~3.1.0" -agave-reserved-account-keys = "~3.1.0" +agave-geyser-plugin-interface = "~4.0.0-rc.0" # agave repo +agave-reserved-account-keys = "~4.0.0-rc.0" # agave repo anyhow = "1.0.62" arrayvec = "0.7.6" base64 = "0.22.1" @@ -67,13 +67,13 @@ quinn = "0.11.6" rayon = "1.10.0" rcgen = "0.14.0" regex = "1.11.1" -richat-benches = { path = "benches", version = "1.0.0" } -richat-client = { path = "client", version = "8.1.1" } -richat-filter = { path = "filter", version = "8.1.0" } +# richat-benches = { path = "benches", version = "1.0.0" } +# richat-client = { path = "client", version = "8.1.1" } +# richat-filter = { path = "filter", version = "8.1.0" } richat-metrics = { path = "metrics", version = "1.0.1" } -richat-plugin-agave = { path = "plugin-agave", version = "8.1.1" } -richat-proto = { path = "proto", version = "8.0.0" } -richat-shared = { path = "shared", version = "8.0.1", default-features = false } +# richat-plugin-agave = { path = "plugin-agave", version = "9.0.0" } +richat-proto = { path = "proto", version = "9.0.0" } +richat-shared = { path = "shared", version = "9.0.0", default-features = false } rocksdb = "0.24.0" rustls = { version = "0.23.36", default-features = false } rustls-native-certs = "0.8.3" @@ -84,25 +84,25 @@ serde_yaml = "0.9.33" signal-hook = "0.4.3" smallvec = "1.13.2" socket2 = "0.6.0" -solana-account = "3.0.0" -solana-account-decoder = "~3.1.0" -solana-clock = "3.0.0" -solana-commitment-config = "3.0.0" -solana-hash = "3.0.0" +solana-account = "4.3.0" +solana-account-decoder = "~4.0.0-rc.0" # agave repo +solana-clock = "3.0.1" +solana-commitment-config = "3.1.1" +solana-hash = "4.3.0" solana-logger = "3.0.0" -solana-message = "3.0.0" +solana-message = "4.1.1" solana-nohash-hasher = "0.2.1" -solana-pubkey = "3.0.0" -solana-pubsub-client = "~3.1.0" -solana-rpc-client-api = "~3.1.0" -solana-signature = "3.1.0" -solana-storage-proto = "~3.1.0" -solana-transaction = "3.0.0" -solana-transaction-context = "~3.1.0" -solana-transaction-error = "3.0.0" -solana-transaction-status = "~3.1.0" -solana-version = "~3.1.0" -spl-token-2022-interface = "2.0.0" +solana-pubkey = "4.2.0" +solana-pubsub-client = "~4.0.0-rc.0" # agave repo +solana-rpc-client-api = "~4.0.0-rc.0" # agave repo +solana-signature = "3.4.0" +solana-storage-proto = "~4.0.0-rc.0" # agave repo +solana-transaction = "4.1.1" +solana-transaction-context = "~4.0.0-rc.0" # agave repo +solana-transaction-error = "3.2.0" +solana-transaction-status = "~4.0.0-rc.0" # agave repo +solana-version = "~4.0.0-rc.0" # agave repo +spl-token-2022-interface = "2.1.0" thiserror = "2.0.7" tikv-jemallocator = { version = "0.6.0", features = ["unprefixed_malloc_on_supported_platforms"] } tokio = "1.42.0" @@ -118,7 +118,7 @@ tracing = "0.1.41" tracing-subscriber = "0.3.19" vergen = "9.0.2" webpki-roots = "1.0.1" -yellowstone-grpc-proto = "11.0.0" +yellowstone-grpc-proto = "12.3.0" zstd = "0.13.3" [workspace.lints.clippy] diff --git a/proto/Cargo.toml b/proto/Cargo.toml index 5b049325..a3500793 100644 --- a/proto/Cargo.toml +++ b/proto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "richat-proto" -version = "8.0.0" +version = "9.0.0" authors = { workspace = true } edition = { workspace = true } description = "Richat Proto" @@ -11,7 +11,19 @@ keywords = { workspace = true } publish = true [dependencies] +bincode = { workspace = true } prost = { workspace = true } +solana-account = { workspace = true } +solana-account-decoder = { workspace = true, features = ["agave-unstable-api"] } +solana-clock = { workspace = true } +solana-hash = { workspace = true } +solana-message = "3.1.0" +solana-pubkey = { workspace = true } +solana-signature = { workspace = true } +solana-transaction = "3.1.0" +solana-transaction-context = { workspace = true, features = ["agave-unstable-api"] } +solana-transaction-error = { workspace = true } +solana-transaction-status = { workspace = true, features = ["agave-unstable-api"] } yellowstone-grpc-proto = { workspace = true } [build-dependencies] @@ -20,9 +32,5 @@ cargo-lock = { workspace = true } protoc-bin-vendored = { workspace = true } tonic-prost-build = { workspace = true } -[features] -default = [] -yellowstone-grpc-plugin = ["yellowstone-grpc-proto/plugin"] - [lints] workspace = true diff --git a/proto/src/convert_from.rs b/proto/src/convert_from.rs new file mode 100644 index 00000000..53f664ec --- /dev/null +++ b/proto/src/convert_from.rs @@ -0,0 +1,354 @@ +use { + solana_account::Account, + solana_account_decoder::parse_token::UiTokenAmount, + solana_hash::{HASH_BYTES, Hash}, + solana_message::{ + Message, MessageHeader, VersionedMessage, + compiled_instruction::CompiledInstruction, + v0::{LoadedAddresses, Message as MessageV0, MessageAddressTableLookup}, + }, + solana_pubkey::Pubkey, + solana_signature::Signature, + solana_transaction::versioned::VersionedTransaction, + solana_transaction_context::transaction::TransactionReturnData, + solana_transaction_error::TransactionError, + solana_transaction_status::{ + ConfirmedBlock, InnerInstruction, InnerInstructions, Reward, RewardType, + RewardsAndNumPartitions, TransactionStatusMeta, TransactionTokenBalance, + TransactionWithStatusMeta, VersionedTransactionWithStatusMeta, + }, + yellowstone_grpc_proto::prelude as proto, +}; + +type CreateResult = Result; + +pub fn create_block(block: proto::SubscribeUpdateBlock) -> CreateResult { + let mut transactions = vec![]; + for tx in block.transactions { + transactions.push(create_tx_with_meta(tx)?); + } + + let block_rewards = block.rewards.ok_or("failed to get rewards")?; + let mut rewards = vec![]; + for reward in block_rewards.rewards { + rewards.push(create_reward(reward)?); + } + + Ok(ConfirmedBlock { + previous_blockhash: block.parent_blockhash, + blockhash: block.blockhash, + parent_slot: block.parent_slot, + transactions, + rewards, + num_partitions: block_rewards.num_partitions.map(|msg| msg.num_partitions), + block_time: Some( + block + .block_time + .map(|wrapper| wrapper.timestamp) + .ok_or("failed to get block_time")?, + ), + block_height: Some( + block + .block_height + .map(|wrapper| wrapper.block_height) + .ok_or("failed to get block_height")?, + ), + }) +} + +pub fn create_tx_with_meta( + tx: proto::SubscribeUpdateTransactionInfo, +) -> CreateResult { + let meta = tx.meta.ok_or("failed to get transaction meta")?; + let tx = tx + .transaction + .ok_or("failed to get transaction transaction")?; + + Ok(TransactionWithStatusMeta::Complete( + VersionedTransactionWithStatusMeta { + transaction: create_tx_versioned(tx)?, + meta: create_tx_meta(meta)?, + }, + )) +} + +pub fn create_tx_versioned(tx: proto::Transaction) -> CreateResult { + let mut signatures = Vec::with_capacity(tx.signatures.len()); + for signature in tx.signatures { + signatures.push(match Signature::try_from(signature.as_slice()) { + Ok(signature) => signature, + Err(_error) => return Err("failed to parse Signature"), + }); + } + + Ok(VersionedTransaction { + signatures, + message: create_message(tx.message.ok_or("failed to get message")?)?, + }) +} + +pub fn create_message(message: proto::Message) -> CreateResult { + let header = message.header.ok_or("failed to get MessageHeader")?; + let header = MessageHeader { + num_required_signatures: header + .num_required_signatures + .try_into() + .map_err(|_| "failed to parse num_required_signatures")?, + num_readonly_signed_accounts: header + .num_readonly_signed_accounts + .try_into() + .map_err(|_| "failed to parse num_readonly_signed_accounts")?, + num_readonly_unsigned_accounts: header + .num_readonly_unsigned_accounts + .try_into() + .map_err(|_| "failed to parse num_readonly_unsigned_accounts")?, + }; + + if message.recent_blockhash.len() != HASH_BYTES { + return Err("failed to parse hash"); + } + + Ok(if message.versioned { + let mut address_table_lookups = Vec::with_capacity(message.address_table_lookups.len()); + for table in message.address_table_lookups { + address_table_lookups.push(MessageAddressTableLookup { + account_key: Pubkey::try_from(table.account_key.as_slice()) + .map_err(|_| "failed to parse Pubkey")?, + writable_indexes: table.writable_indexes, + readonly_indexes: table.readonly_indexes, + }); + } + + VersionedMessage::V0(MessageV0 { + header, + account_keys: create_pubkey_vec(message.account_keys)?, + recent_blockhash: Hash::new_from_array( + <[u8; HASH_BYTES]>::try_from(message.recent_blockhash.as_slice()).unwrap(), + ), + instructions: create_message_instructions(message.instructions)?, + address_table_lookups, + }) + } else { + VersionedMessage::Legacy(Message { + header, + account_keys: create_pubkey_vec(message.account_keys)?, + recent_blockhash: Hash::new_from_array( + <[u8; HASH_BYTES]>::try_from(message.recent_blockhash.as_slice()).unwrap(), + ), + instructions: create_message_instructions(message.instructions)?, + }) + }) +} + +pub fn create_message_instructions( + ixs: Vec, +) -> CreateResult> { + ixs.into_iter().map(create_message_instruction).collect() +} + +pub fn create_message_instruction( + ix: proto::CompiledInstruction, +) -> CreateResult { + Ok(CompiledInstruction { + program_id_index: ix + .program_id_index + .try_into() + .map_err(|_| "failed to decode CompiledInstruction.program_id_index)")?, + accounts: ix.accounts, + data: ix.data, + }) +} + +pub fn create_tx_meta(meta: proto::TransactionStatusMeta) -> CreateResult { + let meta_status = match create_tx_error(meta.err.as_ref())? { + Some(err) => Err(err), + None => Ok(()), + }; + let meta_rewards = meta + .rewards + .into_iter() + .map(create_reward) + .collect::, _>>()?; + + Ok(TransactionStatusMeta { + status: meta_status, + fee: meta.fee, + pre_balances: meta.pre_balances, + post_balances: meta.post_balances, + inner_instructions: Some(create_meta_inner_instructions(meta.inner_instructions)?), + log_messages: Some(meta.log_messages), + pre_token_balances: Some(create_token_balances(meta.pre_token_balances)?), + post_token_balances: Some(create_token_balances(meta.post_token_balances)?), + rewards: Some(meta_rewards), + loaded_addresses: create_loaded_addresses( + meta.loaded_writable_addresses, + meta.loaded_readonly_addresses, + )?, + return_data: if meta.return_data_none { + None + } else { + let data = meta.return_data.ok_or("failed to get return_data")?; + Some(TransactionReturnData { + program_id: Pubkey::try_from(data.program_id.as_slice()) + .map_err(|_| "failed to parse program_id")?, + data: data.data, + }) + }, + compute_units_consumed: meta.compute_units_consumed, + cost_units: meta.cost_units, + }) +} + +pub fn create_tx_error( + err: Option<&proto::TransactionError>, +) -> CreateResult> { + err.map(|err| bincode::deserialize::(&err.err)) + .transpose() + .map_err(|_| "failed to decode TransactionError") +} + +pub fn create_meta_inner_instructions( + ixs: Vec, +) -> CreateResult> { + ixs.into_iter().map(create_meta_inner_instruction).collect() +} + +pub fn create_meta_inner_instruction( + ix: proto::InnerInstructions, +) -> CreateResult { + let mut instructions = vec![]; + for ix in ix.instructions { + instructions.push(InnerInstruction { + instruction: CompiledInstruction { + program_id_index: ix + .program_id_index + .try_into() + .map_err(|_| "failed to decode CompiledInstruction.program_id_index)")?, + accounts: ix.accounts, + data: ix.data, + }, + stack_height: ix.stack_height, + }); + } + Ok(InnerInstructions { + index: ix + .index + .try_into() + .map_err(|_| "failed to decode InnerInstructions.index")?, + instructions, + }) +} + +pub fn create_rewards_obj(rewards: proto::Rewards) -> CreateResult { + Ok(RewardsAndNumPartitions { + rewards: rewards + .rewards + .into_iter() + .map(create_reward) + .collect::>()?, + num_partitions: rewards.num_partitions.map(|wrapper| wrapper.num_partitions), + }) +} + +pub fn create_reward(reward: proto::Reward) -> CreateResult { + Ok(Reward { + pubkey: reward.pubkey, + lamports: reward.lamports, + post_balance: reward.post_balance, + reward_type: match proto::RewardType::try_from(reward.reward_type) + .map_err(|_| "failed to parse reward_type")? + { + proto::RewardType::Unspecified => None, + proto::RewardType::Fee => Some(RewardType::Fee), + proto::RewardType::Rent => Some(RewardType::Rent), + proto::RewardType::Staking => Some(RewardType::Staking), + proto::RewardType::Voting => Some(RewardType::Voting), + }, + commission: if reward.commission.is_empty() { + None + } else { + Some( + reward + .commission + .parse() + .map_err(|_| "failed to parse reward commission")?, + ) + }, + commission_bps: if reward.commission_bps.is_empty() { + None + } else { + Some( + reward + .commission_bps + .parse() + .map_err(|_| "failed to parse reward commission_bps")?, + ) + }, + }) +} + +pub fn create_token_balances( + balances: Vec, +) -> CreateResult> { + let mut vec = Vec::with_capacity(balances.len()); + for balance in balances { + let ui_amount = balance + .ui_token_amount + .ok_or("failed to get ui_token_amount")?; + vec.push(TransactionTokenBalance { + account_index: balance + .account_index + .try_into() + .map_err(|_| "failed to parse account_index")?, + mint: balance.mint, + ui_token_amount: UiTokenAmount { + ui_amount: Some(ui_amount.ui_amount), + decimals: ui_amount + .decimals + .try_into() + .map_err(|_| "failed to parse decimals")?, + amount: ui_amount.amount, + ui_amount_string: ui_amount.ui_amount_string, + }, + owner: balance.owner, + program_id: balance.program_id, + }); + } + Ok(vec) +} + +pub fn create_loaded_addresses( + writable: Vec>, + readonly: Vec>, +) -> CreateResult { + Ok(LoadedAddresses { + writable: create_pubkey_vec(writable)?, + readonly: create_pubkey_vec(readonly)?, + }) +} + +pub fn create_pubkey_vec(pubkeys: Vec>) -> CreateResult> { + pubkeys + .iter() + .map(|pubkey| create_pubkey(pubkey.as_slice())) + .collect() +} + +pub fn create_pubkey(pubkey: &[u8]) -> CreateResult { + Pubkey::try_from(pubkey).map_err(|_| "failed to parse Pubkey") +} + +pub fn create_account( + mut account: proto::SubscribeUpdateAccountInfo, +) -> CreateResult<(Pubkey, Account)> { + let pubkey = create_pubkey(&account.pubkey)?; + let account_data = std::mem::take(&mut account.data); + let account = Account { + lamports: account.lamports, + data: account_data, + owner: create_pubkey(&account.owner)?, + executable: account.executable, + rent_epoch: account.rent_epoch, + }; + Ok((pubkey, account)) +} diff --git a/proto/src/convert_to.rs b/proto/src/convert_to.rs new file mode 100644 index 00000000..1a0463cf --- /dev/null +++ b/proto/src/convert_to.rs @@ -0,0 +1,255 @@ +use { + solana_clock::UnixTimestamp, + solana_message::{ + MessageHeader, VersionedMessage, compiled_instruction::CompiledInstruction, + v0::MessageAddressTableLookup, + }, + solana_pubkey::Pubkey, + solana_signature::Signature, + solana_transaction::versioned::VersionedTransaction, + solana_transaction_context::transaction::TransactionReturnData, + solana_transaction_error::TransactionError, + solana_transaction_status::{ + InnerInstruction, InnerInstructions, Reward, RewardType, TransactionStatusMeta, + TransactionTokenBalance, + }, + yellowstone_grpc_proto::prelude as proto, +}; + +pub fn create_transaction(tx: &VersionedTransaction) -> proto::Transaction { + proto::Transaction { + signatures: tx + .signatures + .iter() + .map(|signature| >::as_ref(signature).into()) + .collect(), + message: Some(create_message(&tx.message)), + } +} + +pub fn create_message(message: &VersionedMessage) -> proto::Message { + match message { + VersionedMessage::Legacy(message) => proto::Message { + header: Some(create_header(&message.header)), + account_keys: create_pubkeys(&message.account_keys), + recent_blockhash: message.recent_blockhash.to_bytes().into(), + instructions: create_instructions(&message.instructions), + versioned: false, + address_table_lookups: vec![], + }, + VersionedMessage::V0(message) => proto::Message { + header: Some(create_header(&message.header)), + account_keys: create_pubkeys(&message.account_keys), + recent_blockhash: message.recent_blockhash.to_bytes().into(), + instructions: create_instructions(&message.instructions), + versioned: true, + address_table_lookups: create_lookups(&message.address_table_lookups), + }, + } +} + +pub const fn create_header(header: &MessageHeader) -> proto::MessageHeader { + proto::MessageHeader { + num_required_signatures: header.num_required_signatures as u32, + num_readonly_signed_accounts: header.num_readonly_signed_accounts as u32, + num_readonly_unsigned_accounts: header.num_readonly_unsigned_accounts as u32, + } +} + +pub fn create_pubkeys(pubkeys: &[Pubkey]) -> Vec> { + pubkeys + .iter() + .map(|key| >::as_ref(key).into()) + .collect() +} + +pub fn create_instructions(ixs: &[CompiledInstruction]) -> Vec { + ixs.iter().map(create_instruction).collect() +} + +pub fn create_instruction(ix: &CompiledInstruction) -> proto::CompiledInstruction { + proto::CompiledInstruction { + program_id_index: ix.program_id_index as u32, + accounts: ix.accounts.clone(), + data: ix.data.clone(), + } +} + +pub fn create_lookups( + lookups: &[MessageAddressTableLookup], +) -> Vec { + lookups.iter().map(create_lookup).collect() +} + +pub fn create_lookup(lookup: &MessageAddressTableLookup) -> proto::MessageAddressTableLookup { + proto::MessageAddressTableLookup { + account_key: >::as_ref(&lookup.account_key).into(), + writable_indexes: lookup.writable_indexes.clone(), + readonly_indexes: lookup.readonly_indexes.clone(), + } +} + +pub fn create_transaction_meta(meta: &TransactionStatusMeta) -> proto::TransactionStatusMeta { + let TransactionStatusMeta { + status, + fee, + pre_balances, + post_balances, + inner_instructions, + log_messages, + pre_token_balances, + post_token_balances, + rewards, + loaded_addresses, + return_data, + compute_units_consumed, + cost_units, + } = meta; + let err = create_transaction_error(status); + let inner_instructions_none = inner_instructions.is_none(); + let inner_instructions = inner_instructions + .as_deref() + .map(create_inner_instructions_vec) + .unwrap_or_default(); + let log_messages_none = log_messages.is_none(); + let log_messages = log_messages.clone().unwrap_or_default(); + let pre_token_balances = pre_token_balances + .as_deref() + .map(create_token_balances) + .unwrap_or_default(); + let post_token_balances = post_token_balances + .as_deref() + .map(create_token_balances) + .unwrap_or_default(); + let rewards = rewards.as_deref().map(create_rewards).unwrap_or_default(); + let loaded_writable_addresses = create_pubkeys(&loaded_addresses.writable); + let loaded_readonly_addresses = create_pubkeys(&loaded_addresses.readonly); + + proto::TransactionStatusMeta { + err, + fee: *fee, + pre_balances: pre_balances.clone(), + post_balances: post_balances.clone(), + inner_instructions, + inner_instructions_none, + log_messages, + log_messages_none, + pre_token_balances, + post_token_balances, + rewards, + loaded_writable_addresses, + loaded_readonly_addresses, + return_data: return_data.as_ref().map(create_return_data), + return_data_none: return_data.is_none(), + compute_units_consumed: *compute_units_consumed, + cost_units: *cost_units, + } +} + +pub fn create_transaction_error( + status: &Result<(), TransactionError>, +) -> Option { + match status { + Ok(()) => None, + Err(err) => Some(proto::TransactionError { + err: bincode::serialize(&err).expect("transaction error to serialize to bytes"), + }), + } +} + +pub fn create_inner_instructions_vec(ixs: &[InnerInstructions]) -> Vec { + ixs.iter().map(create_inner_instructions).collect() +} + +pub fn create_inner_instructions(instructions: &InnerInstructions) -> proto::InnerInstructions { + proto::InnerInstructions { + index: instructions.index as u32, + instructions: create_inner_instruction_vec(&instructions.instructions), + } +} + +pub fn create_inner_instruction_vec(ixs: &[InnerInstruction]) -> Vec { + ixs.iter().map(create_inner_instruction).collect() +} + +pub fn create_inner_instruction(instruction: &InnerInstruction) -> proto::InnerInstruction { + proto::InnerInstruction { + program_id_index: instruction.instruction.program_id_index as u32, + accounts: instruction.instruction.accounts.clone(), + data: instruction.instruction.data.clone(), + stack_height: instruction.stack_height, + } +} + +pub fn create_token_balances(balances: &[TransactionTokenBalance]) -> Vec { + balances.iter().map(create_token_balance).collect() +} + +pub fn create_token_balance(balance: &TransactionTokenBalance) -> proto::TokenBalance { + proto::TokenBalance { + account_index: balance.account_index as u32, + mint: balance.mint.clone(), + ui_token_amount: Some(proto::UiTokenAmount { + ui_amount: balance.ui_token_amount.ui_amount.unwrap_or_default(), + decimals: balance.ui_token_amount.decimals as u32, + amount: balance.ui_token_amount.amount.clone(), + ui_amount_string: balance.ui_token_amount.ui_amount_string.clone(), + }), + owner: balance.owner.clone(), + program_id: balance.program_id.clone(), + } +} + +pub fn create_rewards_obj(rewards: &[Reward], num_partitions: Option) -> proto::Rewards { + proto::Rewards { + rewards: create_rewards(rewards), + num_partitions: num_partitions.map(create_num_partitions), + } +} + +pub fn create_rewards(rewards: &[Reward]) -> Vec { + rewards.iter().map(create_reward).collect() +} + +pub fn create_reward(reward: &Reward) -> proto::Reward { + proto::Reward { + pubkey: reward.pubkey.clone(), + lamports: reward.lamports, + post_balance: reward.post_balance, + reward_type: create_reward_type(reward.reward_type) as i32, + commission: reward.commission.map(|c| c.to_string()).unwrap_or_default(), + commission_bps: reward + .commission_bps + .map(|c| c.to_string()) + .unwrap_or_default(), + } +} + +pub const fn create_reward_type(reward_type: Option) -> proto::RewardType { + match reward_type { + None => proto::RewardType::Unspecified, + Some(RewardType::Fee) => proto::RewardType::Fee, + Some(RewardType::Rent) => proto::RewardType::Rent, + Some(RewardType::Staking) => proto::RewardType::Staking, + Some(RewardType::Voting) => proto::RewardType::Voting, + } +} + +pub const fn create_num_partitions(num_partitions: u64) -> proto::NumPartitions { + proto::NumPartitions { num_partitions } +} + +pub fn create_return_data(return_data: &TransactionReturnData) -> proto::ReturnData { + proto::ReturnData { + program_id: return_data.program_id.to_bytes().into(), + data: return_data.data.clone(), + } +} + +pub const fn create_block_height(block_height: u64) -> proto::BlockHeight { + proto::BlockHeight { block_height } +} + +pub const fn create_timestamp(timestamp: UnixTimestamp) -> proto::UnixTimestamp { + proto::UnixTimestamp { timestamp } +} diff --git a/proto/src/lib.rs b/proto/src/lib.rs index 2156133d..79e83b53 100644 --- a/proto/src/lib.rs +++ b/proto/src/lib.rs @@ -1,8 +1,9 @@ -#[cfg(feature = "yellowstone-grpc-plugin")] -pub use yellowstone_grpc_proto::plugin; -pub use yellowstone_grpc_proto::{convert_from, convert_to, geyser, solana}; +pub use yellowstone_grpc_proto::{geyser, solana}; pub mod richat { #![allow(clippy::missing_const_for_fn)] include!(concat!(env!("OUT_DIR"), "/richat.rs")); } + +pub mod convert_from; +pub mod convert_to; diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e32c3c1f..07701953 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "1.86.0" # agave v3.0 +channel = "1.93.1" # agave v4.0 components = ["clippy", "rustfmt"] targets = [] profile = "minimal" diff --git a/shared/Cargo.toml b/shared/Cargo.toml index 2e13ae52..5d08c2d5 100644 --- a/shared/Cargo.toml +++ b/shared/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "richat-shared" -version = "8.0.1" +version = "9.0.0" authors = { workspace = true } edition = { workspace = true } description = "Richat Shared code" From 7ad8a916fab29668b6939810d49dc2c38980b24f Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Mon, 4 May 2026 09:47:57 -0500 Subject: [PATCH 2/8] update deps --- Cargo.lock | 916 +++++++++++++++++++++++--------------- Cargo.toml | 6 +- proto/Cargo.toml | 6 +- proto/src/convert_from.rs | 107 ++++- proto/src/convert_to.rs | 8 +- 5 files changed, 670 insertions(+), 373 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b042f52d..ed279bfc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -72,7 +72,7 @@ checksum = "33e41538180f5ded6d08a69c75b4f48c4c6ba8098d7e790b3d694a6bc081fbc7" dependencies = [ "ahash", "solana-epoch-schedule", - "solana-hash 4.3.0", + "solana-hash", "solana-keypair", "solana-pubkey 4.2.0", "solana-sha256-hasher", @@ -194,9 +194,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" dependencies = [ "axum-core", "bytes", @@ -258,9 +258,9 @@ dependencies = [ [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" [[package]] name = "block-buffer" @@ -273,19 +273,20 @@ dependencies = [ [[package]] name = "borsh" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" dependencies = [ "borsh-derive", + "bytes", "cfg_aliases", ] [[package]] name = "borsh-derive" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" dependencies = [ "once_cell", "proc-macro-crate", @@ -305,9 +306,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "bv" @@ -321,9 +322,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" dependencies = [ "bytemuck_derive", ] @@ -359,15 +360,15 @@ checksum = "63585cdf8572aa7adf0e30a253f988f2b77233bfac1973d52efb6dd53a75920e" dependencies = [ "semver", "serde", - "toml", + "toml 0.9.12+spec-1.1.0", "url", ] [[package]] name = "cc" -version = "1.2.54" +version = "1.2.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583" +checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" dependencies = [ "find-msvc-tools", "jobserver", @@ -603,9 +604,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" +checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "der" @@ -633,9 +634,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", ] @@ -729,9 +730,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "feature-probe" @@ -747,9 +748,9 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "find-msvc-tools" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "five8" @@ -783,9 +784,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -814,9 +815,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -829,9 +830,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -839,15 +840,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -856,15 +857,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", @@ -873,21 +874,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -897,7 +898,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -933,11 +933,24 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + [[package]] name = "h2" version = "0.4.13" @@ -977,9 +990,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" [[package]] name = "heck" @@ -1076,9 +1089,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" dependencies = [ "atomic-waker", "bytes", @@ -1091,7 +1104,6 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -1099,15 +1111,14 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.7" +version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ "http", "hyper", "hyper-util", "rustls", - "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", @@ -1129,14 +1140,13 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "base64", "bytes", "futures-channel", - "futures-core", "futures-util", "http", "http-body", @@ -1153,12 +1163,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -1166,9 +1177,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -1179,9 +1190,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -1193,15 +1204,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -1213,15 +1224,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -1232,6 +1243,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -1251,9 +1268,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -1261,12 +1278,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.0", + "serde", + "serde_core", ] [[package]] @@ -1280,15 +1299,15 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "iri-string" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" dependencies = [ "memchr", "serde", @@ -1314,9 +1333,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jni" @@ -1327,7 +1346,7 @@ dependencies = [ "cesu8", "cfg-if", "combine 4.6.7", - "jni-sys", + "jni-sys 0.3.1", "log", "thiserror 1.0.69", "walkdir", @@ -1336,9 +1355,31 @@ dependencies = [ [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] [[package]] name = "jobserver" @@ -1352,23 +1393,24 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "a1840c94c045fbcf8ba2812c95db44499f7c64910a912551aaaa541decebcacf" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] [[package]] name = "json5" -version = "0.4.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +checksum = "733a844dbd6fef128e98cb4487b887cb55454d92cd9994b1bafe004fabbe670c" dependencies = [ - "pest", - "pest_derive", "serde", + "ucd-trie", ] [[package]] @@ -1413,11 +1455,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" -version = "0.2.180" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libm" @@ -1427,15 +1475,15 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "lock_api" @@ -1475,9 +1523,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "merlin" @@ -1493,12 +1541,12 @@ dependencies = [ [[package]] name = "metrics" -version = "0.24.3" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5312e9ba3771cfa961b585728215e3d972c950a3eed9252aa093d6301277e8" +checksum = "ff56c2e7dce6bd462e3b8919986a617027481b1dcc703175b58cf9dd98a2f071" dependencies = [ - "ahash", "portable-atomic", + "rapidhash", ] [[package]] @@ -1525,9 +1573,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", "wasi", @@ -1571,9 +1619,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-derive" @@ -1637,9 +1685,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "opaque-debug" @@ -1707,49 +1755,6 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" -[[package]] -name = "pest" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" -dependencies = [ - "memchr", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f9dbced329c441fa79d80472764b1a2c7e57123553b8519b36663a2fb234ed" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb96d5051a78f44f43c8f712d8e810adb0ebf923fc9ed2655a7f66f63ba8ee5" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602113b5b5e8621770cfd490cfd90b9f84ab29bd2b0e49ad83eb6d186cef2365" -dependencies = [ - "pest", - "sha2", -] - [[package]] name = "petgraph" version = "0.8.3" @@ -1763,18 +1768,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", @@ -1783,15 +1788,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" @@ -1805,9 +1804,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] name = "polyval" @@ -1823,15 +1822,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] @@ -1863,9 +1862,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ "toml_edit", ] @@ -1998,9 +1997,9 @@ checksum = "95067976aca6421a523e491fce939a3e65249bac4b977adee0ee9771568e8aa3" [[package]] name = "pulldown-cmark" -version = "0.13.0" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" +checksum = "7c3a14896dfa883796f1cb410461aef38810ea05f2b2c33c5aded3649095fdad" dependencies = [ "bitflags", "memchr", @@ -2112,11 +2111,17 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -2171,6 +2176,15 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rapidhash" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59" +dependencies = [ + "rustversion", +] + [[package]] name = "raw-cpuid" version = "11.6.0" @@ -2205,9 +2219,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -2217,9 +2231,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -2228,9 +2242,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "reqwest" @@ -2311,11 +2325,13 @@ dependencies = [ "solana-account 4.3.0", "solana-account-decoder", "solana-clock", - "solana-hash 4.3.0", - "solana-message", + "solana-hash", + "solana-message 3.1.0", + "solana-message 4.1.1", "solana-pubkey 4.2.0", "solana-signature", - "solana-transaction", + "solana-transaction 3.1.0", + "solana-transaction 4.1.1", "solana-transaction-context", "solana-transaction-error", "solana-transaction-status", @@ -2363,7 +2379,7 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tokio-util", - "toml", + "toml 1.1.2+spec-1.1.0", "tonic", "tonic-build", "tonic-prost", @@ -2393,9 +2409,9 @@ checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "rustc_version" @@ -2417,9 +2433,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags", "errno", @@ -2430,9 +2446,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" dependencies = [ "log", "once_cell", @@ -2466,9 +2482,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" dependencies = [ "web-time", "zeroize", @@ -2520,9 +2536,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -2535,9 +2551,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -2550,9 +2566,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "3.5.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ "bitflags", "core-foundation", @@ -2563,9 +2579,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.15.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -2573,9 +2589,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -2645,9 +2661,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] @@ -2752,21 +2768,21 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" @@ -2776,12 +2792,12 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -2874,9 +2890,9 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc3397241392f5756925029acaa8515dc70fcbe3d8059d4885d7d6533baf64fd" +checksum = "a9cf16495d9eb53e3d04e72366a33bb1c20c24e78c171d8b8f5978357b63ae95" dependencies = [ "solana-address 2.6.0", "solana-program-error", @@ -2936,9 +2952,9 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a933ff1e50aff72d02173cfcd7511bd8540b027ee720b75f353f594f834216d0" +checksum = "085db4906d89324cef2a30840d59eaecf3d4231c560ec7c9f6614a93c652f501" dependencies = [ "parking_lot", ] @@ -3051,13 +3067,13 @@ dependencies = [ [[package]] name = "solana-epoch-rewards" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b319a4ed70390af911090c020571f0ff1f4ec432522d05ab89f5c08080381995" +checksum = "f5e7b0ba210593ba8ddd39d6d234d81795d1671cebf3026baa10d5dc23ac42f0" dependencies = [ "serde", "serde_derive", - "solana-hash 3.1.0", + "solana-hash", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -3065,9 +3081,9 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" +checksum = "9ce264b7b42322325947c4136a09460bf5c73d9aa8262c9b0a2064be63ba8639" dependencies = [ "serde", "serde_derive", @@ -3087,15 +3103,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "solana-hash" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" -dependencies = [ - "solana-hash 4.3.0", -] - [[package]] name = "solana-hash" version = "4.3.0" @@ -3107,15 +3114,14 @@ dependencies = [ "five8", "serde", "serde_derive", - "solana-atomic-u64", "solana-sanitize", ] [[package]] name = "solana-inflation" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e92f37a14e7c660628752833250dd3dcd8e95309876aee751d7f8769a27947c6" +checksum = "f762559c5f962727efdcb03c61f5cf6c5364645695978fb145d25c88bbacdada" [[package]] name = "solana-instruction" @@ -3229,7 +3235,7 @@ dependencies = [ "serde", "serde_derive", "solana-address 2.6.0", - "solana-hash 4.3.0", + "solana-hash", "solana-instruction", "solana-sanitize", "solana-sdk-ids", @@ -3237,6 +3243,21 @@ dependencies = [ "solana-transaction-error", ] +[[package]] +name = "solana-message" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a634d1db65a393d4e87ec49ef97c8dfb12201e2ba9e5faf87ff34e632f29e509" +dependencies = [ + "lazy_static", + "solana-address 2.6.0", + "solana-hash", + "solana-instruction", + "solana-sanitize", + "solana-sdk-ids", + "solana-transaction-error", +] + [[package]] name = "solana-msg" version = "3.1.0" @@ -3255,7 +3276,7 @@ dependencies = [ "serde", "serde_derive", "solana-fee-calculator", - "solana-hash 4.3.0", + "solana-hash", "solana-pubkey 4.2.0", "solana-sha256-hasher", ] @@ -3283,9 +3304,9 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" +checksum = "4f04fa578707b3612b095f0c8e19b66a1233f7c42ca8082fcb3b745afcc0add6" dependencies = [ "borsh", ] @@ -3347,9 +3368,9 @@ dependencies = [ [[package]] name = "solana-rent" -version = "4.0.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763fe5c88a76ce18235db595b21d38b7aebf6db56b324cdf9fc96059f4410823" +checksum = "f9809b081e99bc142ce803bcd7ee18306759ce3b30a96a9da3f6f41c45e50ef0" dependencies = [ "solana-sdk-macro", ] @@ -3404,7 +3425,7 @@ dependencies = [ "solana-fee-calculator", "solana-inflation", "solana-reward-info", - "solana-transaction", + "solana-transaction 3.1.0", "solana-transaction-error", "solana-transaction-status-client-types", "solana-version", @@ -3443,9 +3464,9 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6430000e97083460b71d9fbadc52a2ab2f88f53b3a4c5e58c5ae3640a0e8c00" +checksum = "8765316242300c48242d84a41614cb3388229ec353ba464f6fe62a733e41806f" dependencies = [ "bs58", "proc-macro2", @@ -3484,12 +3505,12 @@ dependencies = [ [[package]] name = "solana-serialize-utils" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e41dd8feea239516c623a02f0a81c2367f4b604d7965237fed0751aeec33ed" +checksum = "5d7cc401931d178472358e6b78dc72d031dc08f752d7410f0e8bd259dd6f02fa" dependencies = [ "solana-instruction-error", - "solana-pubkey 3.0.0", + "solana-pubkey 4.2.0", "solana-sanitize", ] @@ -3501,7 +3522,7 @@ checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" dependencies = [ "sha2", "solana-define-syscall 4.0.1", - "solana-hash 4.3.0", + "solana-hash", ] [[package]] @@ -3547,7 +3568,7 @@ checksum = "2585f70191623887329dfb5078da3a00e15e3980ea67f42c2e10b07028419f43" dependencies = [ "serde", "serde_derive", - "solana-hash 4.3.0", + "solana-hash", "solana-sdk-ids", "solana-sysvar-id", ] @@ -3647,7 +3668,7 @@ dependencies = [ "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 4.3.0", + "solana-hash", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", @@ -3681,10 +3702,10 @@ dependencies = [ "serde", "serde_derive", "solana-address 2.6.0", - "solana-hash 4.3.0", + "solana-hash", "solana-instruction", "solana-instruction-error", - "solana-message", + "solana-message 3.1.0", "solana-sanitize", "solana-sdk-ids", "solana-short-vec", @@ -3692,6 +3713,23 @@ dependencies = [ "solana-transaction-error", ] +[[package]] +name = "solana-transaction" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98253cefd62dea714b67926d3d918c3b9f7d66993f1f2322ac7549ea991dc3e" +dependencies = [ + "solana-address 2.6.0", + "solana-hash", + "solana-instruction", + "solana-instruction-error", + "solana-message 4.1.1", + "solana-sanitize", + "solana-sdk-ids", + "solana-signature", + "solana-transaction-error", +] + [[package]] name = "solana-transaction-context" version = "4.0.0-rc.0" @@ -3739,11 +3777,11 @@ dependencies = [ "solana-account-decoder", "solana-address-lookup-table-interface", "solana-clock", - "solana-hash 4.3.0", + "solana-hash", "solana-instruction", "solana-loader-v2-interface", "solana-loader-v3-interface", - "solana-message", + "solana-message 3.1.0", "solana-program-option", "solana-pubkey 4.2.0", "solana-reward-info", @@ -3751,7 +3789,7 @@ dependencies = [ "solana-signature", "solana-stake-interface", "solana-system-interface 3.2.0", - "solana-transaction", + "solana-transaction 3.1.0", "solana-transaction-error", "solana-transaction-status-client-types", "solana-vote-interface", @@ -3778,11 +3816,11 @@ dependencies = [ "solana-account-decoder-client-types", "solana-commitment-config", "solana-instruction", - "solana-message", + "solana-message 3.1.0", "solana-pubkey 4.2.0", "solana-reward-info", "solana-signature", - "solana-transaction", + "solana-transaction 3.1.0", "solana-transaction-context", "solana-transaction-error", "thiserror 2.0.18", @@ -3816,11 +3854,11 @@ dependencies = [ "serde_derive", "serde_with", "solana-clock", - "solana-hash 4.3.0", + "solana-hash", "solana-instruction", "solana-instruction-error", "solana-pubkey 4.2.0", - "solana-rent 4.0.0", + "solana-rent 4.2.0", "solana-sdk-ids", "solana-serde-varint", "solana-serialize-utils", @@ -3857,7 +3895,7 @@ dependencies = [ "merlin", "num-derive", "num-traits", - "rand 0.8.5", + "rand 0.8.6", "serde", "serde_derive", "serde_json", @@ -4092,19 +4130,18 @@ dependencies = [ [[package]] name = "spl-type-length-value" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca20a1a19f4507a98ca4b28ff5ed54cac9b9d34ed27863e2bde50a3238f9a6ac" +checksum = "2504631748c48d2a937414d64a12dcac4588d34bd07d355d648619c189d29435" dependencies = [ "bytemuck", "num-derive", "num-traits", "num_enum", "solana-account-info", - "solana-msg", "solana-program-error", + "solana-zero-copy", "spl-discriminator", - "spl-pod", "thiserror 2.0.18", ] @@ -4159,12 +4196,12 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.24.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.2", "once_cell", "rustix", "windows-sys 0.61.2", @@ -4221,30 +4258,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -4252,9 +4289,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "zerovec", @@ -4262,9 +4299,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -4277,9 +4314,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.49.0" +version = "1.52.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "110a78583f19d5cdb2c5ccf321d1290344e71313c6c37d43520d386027d18386" dependencies = [ "bytes", "libc", @@ -4292,9 +4329,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", @@ -4337,17 +4374,32 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.11+spec-1.1.0" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", "toml_writer", - "winnow", + "winnow 1.0.2", ] [[package]] @@ -4359,38 +4411,47 @@ dependencies = [ "serde_core", ] +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" +version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ "indexmap", - "toml_datetime", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow", + "winnow 1.0.2", ] [[package]] name = "toml_parser" -version = "1.0.6+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.2", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tonic" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" dependencies = [ "async-trait", "axum", @@ -4421,9 +4482,9 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40aaccc9f9eccf2cd82ebc111adc13030d23e887244bc9cfa5d1d636049de3" +checksum = "1882ac3bf5ef12877d7ed57aad87e75154c11931c2ba7e6cde5e22d63522c734" dependencies = [ "prettyplease", "proc-macro2", @@ -4433,9 +4494,9 @@ dependencies = [ [[package]] name = "tonic-prost" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" dependencies = [ "bytes", "prost", @@ -4444,9 +4505,9 @@ dependencies = [ [[package]] name = "tonic-prost-build" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a16cba4043dc3ff43fcb3f96b4c5c154c64cbd18ca8dce2ab2c6a451d058a2" +checksum = "f3144df636917574672e93d0f56d7edec49f90305749c668df5101751bb8f95a" dependencies = [ "prettyplease", "proc-macro2", @@ -4563,9 +4624,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -4590,9 +4651,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" [[package]] name = "ucd-trie" @@ -4608,9 +4669,15 @@ checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -4716,18 +4783,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.2+wasi-0.2.9" +version = "1.0.3+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +dependencies = [ + "wit-bindgen 0.57.1", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "wit-bindgen", + "wit-bindgen 0.51.0", ] [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "df52b6d9b87e0c74c9edfa1eb2d9bf85e5d63515474513aa50fa181b3c4f5db1" dependencies = [ "cfg-if", "once_cell", @@ -4738,23 +4814,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "af934872acec734c2d80e6617bbb5ff4f12b052dd8e6332b0817bce889516084" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "78b1041f495fb322e64aca85f5756b2172e35cd459376e67f2a6c9dffcedb103" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4762,9 +4834,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "9dcd0ff20416988a18ac686d4d4d0f6aae9ebf08a389ff5d29012b05af2a1b41" dependencies = [ "bumpalo", "proc-macro2", @@ -4775,18 +4847,52 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "49757b3c82ebf16c57d69365a142940b384176c24df52a087fb748e2085359ea" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "2eadbac71025cd7b0834f20d1fe8472e8495821b4e9801eb0a60bd1f19827602" dependencies = [ "js-sys", "wasm-bindgen", @@ -4804,18 +4910,18 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "1.0.5" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" +checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" dependencies = [ "rustls-pki-types", ] [[package]] name = "webpki-roots" -version = "1.0.5" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" dependencies = [ "rustls-pki-types", ] @@ -5106,9 +5212,15 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + +[[package]] +name = "winnow" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" dependencies = [ "memchr", ] @@ -5118,18 +5230,106 @@ name = "wit-bindgen" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "x509-parser" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3e137310115a65136898d2079f003ce33331a6c4b0d51f1531d1be082b6425" +checksum = "d43b0f71ce057da06bc0851b23ee24f3f86190b07203dd8f567d0b706a185202" dependencies = [ "asn1-rs", "data-encoding", @@ -5169,9 +5369,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -5180,9 +5380,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", @@ -5192,18 +5392,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.33" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.33" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" dependencies = [ "proc-macro2", "quote", @@ -5212,18 +5412,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", @@ -5253,9 +5453,9 @@ dependencies = [ [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -5264,9 +5464,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -5275,9 +5475,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", @@ -5286,9 +5486,9 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.16" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zstd" diff --git a/Cargo.toml b/Cargo.toml index 35f9f921..471a2d26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ humantime-serde = "1.1.1" hyper = "1.4.1" hyper-util = "0.1.7" indicatif = "0.18.0" -json5 = "0.4.1" +json5 = "1.3.1" jsonrpc-core = "18.0.0" jsonrpsee-types = "0.26.0" kanal = "0.1.1" @@ -91,6 +91,7 @@ solana-commitment-config = "3.1.1" solana-hash = "4.3.0" solana-logger = "3.0.0" solana-message = "4.1.1" +solana-message-v3 = { package = "solana-message", version = "3.1.0" } solana-nohash-hasher = "0.2.1" solana-pubkey = "4.2.0" solana-pubsub-client = "~4.0.0-rc.0" # agave repo @@ -100,6 +101,7 @@ solana-storage-proto = "~4.0.0-rc.0" # agave repo solana-transaction = "4.1.1" solana-transaction-context = "~4.0.0-rc.0" # agave repo solana-transaction-error = "3.2.0" +solana-transaction-v3 = { package = "solana-transaction", version = "3.1.0" } solana-transaction-status = "~4.0.0-rc.0" # agave repo solana-version = "~4.0.0-rc.0" # agave repo spl-token-2022-interface = "2.1.0" @@ -109,7 +111,7 @@ tokio = "1.42.0" tokio-rustls = "0.26.1" tokio-tungstenite = "0.28.0" tokio-util = "0.7.16" -toml = "0.9.11" +toml = "1.1.2" tonic = "0.14.1" tonic-build = "0.14.1" tonic-prost = "0.14.1" diff --git a/proto/Cargo.toml b/proto/Cargo.toml index a3500793..af6d9060 100644 --- a/proto/Cargo.toml +++ b/proto/Cargo.toml @@ -17,12 +17,14 @@ solana-account = { workspace = true } solana-account-decoder = { workspace = true, features = ["agave-unstable-api"] } solana-clock = { workspace = true } solana-hash = { workspace = true } -solana-message = "3.1.0" +solana-message = { workspace = true } +solana-message-v3 = { workspace = true } solana-pubkey = { workspace = true } solana-signature = { workspace = true } -solana-transaction = "3.1.0" +solana-transaction = { workspace = true } solana-transaction-context = { workspace = true, features = ["agave-unstable-api"] } solana-transaction-error = { workspace = true } +solana-transaction-v3 = { workspace = true } solana-transaction-status = { workspace = true, features = ["agave-unstable-api"] } yellowstone-grpc-proto = { workspace = true } diff --git a/proto/src/convert_from.rs b/proto/src/convert_from.rs index 53f664ec..086adb49 100644 --- a/proto/src/convert_from.rs +++ b/proto/src/convert_from.rs @@ -7,6 +7,15 @@ use { compiled_instruction::CompiledInstruction, v0::{LoadedAddresses, Message as MessageV0, MessageAddressTableLookup}, }, + solana_message_v3::{ + Message as StatusMessage, MessageHeader as StatusMessageHeader, + VersionedMessage as StatusVersionedMessage, + compiled_instruction::CompiledInstruction as StatusCompiledInstruction, + v0::{ + LoadedAddresses as StatusLoadedAddresses, Message as StatusMessageV0, + MessageAddressTableLookup as StatusMessageAddressTableLookup, + }, + }, solana_pubkey::Pubkey, solana_signature::Signature, solana_transaction::versioned::VersionedTransaction, @@ -17,6 +26,7 @@ use { RewardsAndNumPartitions, TransactionStatusMeta, TransactionTokenBalance, TransactionWithStatusMeta, VersionedTransactionWithStatusMeta, }, + solana_transaction_v3::versioned::VersionedTransaction as StatusVersionedTransaction, yellowstone_grpc_proto::prelude as proto, }; @@ -66,12 +76,97 @@ pub fn create_tx_with_meta( Ok(TransactionWithStatusMeta::Complete( VersionedTransactionWithStatusMeta { - transaction: create_tx_versioned(tx)?, + transaction: create_status_tx_versioned(tx)?, meta: create_tx_meta(meta)?, }, )) } +fn create_status_tx_versioned(tx: proto::Transaction) -> CreateResult { + let mut signatures = Vec::with_capacity(tx.signatures.len()); + for signature in tx.signatures { + signatures.push(match Signature::try_from(signature.as_slice()) { + Ok(signature) => signature, + Err(_error) => return Err("failed to parse Signature"), + }); + } + + Ok(StatusVersionedTransaction { + signatures, + message: create_status_message(tx.message.ok_or("failed to get message")?)?, + }) +} + +fn create_status_message(message: proto::Message) -> CreateResult { + let header = message.header.ok_or("failed to get MessageHeader")?; + let header = StatusMessageHeader { + num_required_signatures: header + .num_required_signatures + .try_into() + .map_err(|_| "failed to parse num_required_signatures")?, + num_readonly_signed_accounts: header + .num_readonly_signed_accounts + .try_into() + .map_err(|_| "failed to parse num_readonly_signed_accounts")?, + num_readonly_unsigned_accounts: header + .num_readonly_unsigned_accounts + .try_into() + .map_err(|_| "failed to parse num_readonly_unsigned_accounts")?, + }; + + if message.recent_blockhash.len() != HASH_BYTES { + return Err("failed to parse hash"); + } + + Ok(if message.versioned { + let mut address_table_lookups = Vec::with_capacity(message.address_table_lookups.len()); + for table in message.address_table_lookups { + address_table_lookups.push(StatusMessageAddressTableLookup { + account_key: Pubkey::try_from(table.account_key.as_slice()) + .map_err(|_| "failed to parse Pubkey")?, + writable_indexes: table.writable_indexes, + readonly_indexes: table.readonly_indexes, + }); + } + + StatusVersionedMessage::V0(StatusMessageV0 { + header, + account_keys: create_pubkey_vec(message.account_keys)?, + recent_blockhash: Hash::new_from_array( + <[u8; HASH_BYTES]>::try_from(message.recent_blockhash.as_slice()).unwrap(), + ), + instructions: create_status_message_instructions(message.instructions)?, + address_table_lookups, + }) + } else { + StatusVersionedMessage::Legacy(StatusMessage { + header, + account_keys: create_pubkey_vec(message.account_keys)?, + recent_blockhash: Hash::new_from_array( + <[u8; HASH_BYTES]>::try_from(message.recent_blockhash.as_slice()).unwrap(), + ), + instructions: create_status_message_instructions(message.instructions)?, + }) + }) +} + +fn create_status_message_instructions( + ixs: Vec, +) -> CreateResult> { + ixs.into_iter() + .map(|ix| { + Ok(StatusCompiledInstruction { + program_id_index: ix + .program_id_index + .try_into() + .map_err(|_| "failed to decode CompiledInstruction.program_id_index)")?, + accounts: ix.accounts, + data: ix.data, + }) + }) + .collect() +} + pub fn create_tx_versioned(tx: proto::Transaction) -> CreateResult { let mut signatures = Vec::with_capacity(tx.signatures.len()); for signature in tx.signatures { @@ -180,10 +275,10 @@ pub fn create_tx_meta(meta: proto::TransactionStatusMeta) -> CreateResult proto::Message { versioned: true, address_table_lookups: create_lookups(&message.address_table_lookups), }, + VersionedMessage::V1(_) => unimplemented!("V1 transaction messages are not supported"), } } @@ -56,11 +57,8 @@ pub const fn create_header(header: &MessageHeader) -> proto::MessageHeader { } } -pub fn create_pubkeys(pubkeys: &[Pubkey]) -> Vec> { - pubkeys - .iter() - .map(|key| >::as_ref(key).into()) - .collect() +pub fn create_pubkeys>(pubkeys: &[T]) -> Vec> { + pubkeys.iter().map(|key| key.as_ref().into()).collect() } pub fn create_instructions(ixs: &[CompiledInstruction]) -> Vec { From 74b0ba3e036d6003b27657595111b04dedc99401 Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Mon, 4 May 2026 09:54:28 -0500 Subject: [PATCH 3/8] update filter --- CHANGELOG.md | 1 + Cargo.lock | 79 +++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 4 +-- filter/Cargo.toml | 2 +- filter/src/message.rs | 13 +++---- shared/src/config.rs | 29 ++++++++-------- 6 files changed, 101 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c39a472..18fc1b2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The minor version will be incremented upon a breaking change and the patch versi - richat-cli-v9.0.1 TODO! - richat-client-v8.1.1 TODO! +- richat-filter-v9.0.0 - richat-plugin-agave-v8.1.1 TODO! - richat-proto-v9.0.0 - richat-v8.1.1 TODO! diff --git a/Cargo.lock b/Cargo.lock index ed279bfc..83beb278 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -124,6 +124,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "ascii" version = "0.9.3" @@ -438,6 +444,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "const-hex" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20d9a563d167a9cce0f94153382b33cb6eded6dfabff03c69ad65a28ea1514e0" +dependencies = [ + "cfg-if", + "cpufeatures", + "proptest", + "serde_core", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -1506,6 +1524,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + [[package]] name = "matchers" version = "0.2.0" @@ -1878,6 +1902,21 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "proptest" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" +dependencies = [ + "bitflags", + "num-traits", + "rand 0.9.4", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax", + "unarray", +] + [[package]] name = "prost" version = "0.14.3" @@ -2176,6 +2215,15 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.5", +] + [[package]] name = "rapidhash" version = "4.4.1" @@ -2299,6 +2347,31 @@ dependencies = [ "tower-service", ] +[[package]] +name = "richat-filter" +version = "9.0.0" +dependencies = [ + "arrayvec", + "base64", + "bs58", + "const-hex", + "maplit", + "prost", + "prost-types", + "richat-proto", + "richat-shared", + "serde", + "smallvec", + "solana-account 4.3.0", + "solana-clock", + "solana-commitment-config", + "solana-pubkey 4.2.0", + "solana-signature", + "solana-transaction-status", + "spl-token-2022-interface", + "thiserror 2.0.18", +] + [[package]] name = "richat-metrics" version = "1.0.1" @@ -4661,6 +4734,12 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + [[package]] name = "unicase" version = "2.9.0" diff --git a/Cargo.toml b/Cargo.toml index 471a2d26..4e450adb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = [ # "benches", # "cli", # "client", - # "filter", + "filter", # "metrics", # "plugin-agave", "proto", @@ -69,7 +69,7 @@ rcgen = "0.14.0" regex = "1.11.1" # richat-benches = { path = "benches", version = "1.0.0" } # richat-client = { path = "client", version = "8.1.1" } -# richat-filter = { path = "filter", version = "8.1.0" } +richat-filter = { path = "filter", version = "9.0.0" } richat-metrics = { path = "metrics", version = "1.0.1" } # richat-plugin-agave = { path = "plugin-agave", version = "9.0.0" } richat-proto = { path = "proto", version = "9.0.0" } diff --git a/filter/Cargo.toml b/filter/Cargo.toml index 65c9d008..0bd0e875 100644 --- a/filter/Cargo.toml +++ b/filter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "richat-filter" -version = "8.1.0" +version = "9.0.0" authors = { workspace = true } edition = { workspace = true } description = "Richat Filters" diff --git a/filter/src/message.rs b/filter/src/message.rs index 8be753df..8db79d48 100644 --- a/filter/src/message.rs +++ b/filter/src/message.rs @@ -1011,15 +1011,10 @@ impl MessageTransaction { pub fn as_versioned_transaction_with_status_meta( &self, ) -> Result { - Ok(VersionedTransactionWithStatusMeta { - transaction: convert_from::create_tx_versioned( - self.transaction()? - .transaction - .clone() - .ok_or("FieldNotDefined")?, - )?, - meta: convert_from::create_tx_meta(self.transaction_meta()?.clone())?, - }) + match convert_from::create_tx_with_meta(self.transaction()?.clone())? { + TransactionWithStatusMeta::Complete(tx) => Ok(tx), + TransactionWithStatusMeta::MissingMetadata(_) => Err("FieldNotDefined"), + } } pub const fn account_keys(&self) -> &HashSet { diff --git a/shared/src/config.rs b/shared/src/config.rs index b078346e..6cf7501d 100644 --- a/shared/src/config.rs +++ b/shared/src/config.rs @@ -358,22 +358,21 @@ pub fn parse_taskset(taskset: &str) -> Result, String> { let mut vec = set.into_iter().collect::>(); vec.sort(); - if !vec.is_empty() { - if let Some(cores) = affinity_linux::get_thread_affinity() + if !vec.is_empty() + && let Some(cores) = affinity_linux::get_thread_affinity() .map_err(|error| format!("failed to get allowed cpus: {error:?}"))? - { - let mut cores = cores.into_iter().collect::>(); - cores.sort(); - - for core in vec.iter_mut() { - if let Some(actual_core) = cores.get(*core) { - *core = *actual_core; - } else { - return Err(format!( - "we don't have core {core}, available cores: {:?}", - (0..cores.len()).collect::>() - )); - } + { + let mut cores = cores.into_iter().collect::>(); + cores.sort(); + + for core in vec.iter_mut() { + if let Some(actual_core) = cores.get(*core) { + *core = *actual_core; + } else { + return Err(format!( + "we don't have core {core}, available cores: {:?}", + (0..cores.len()).collect::>() + )); } } } From 1b6c39d87ea3c2cb6dc611fd902e47f74a5f1a02 Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Mon, 4 May 2026 10:05:38 -0500 Subject: [PATCH 4/8] update plugin-agave + benches --- CHANGELOG.md | 2 +- Cargo.lock | 1279 +++++++++++++++-- Cargo.toml | 8 +- benches/Cargo.toml | 6 +- benches/src/lib.rs | 18 +- plugin-agave/Cargo.toml | 6 +- .../src/protobuf/encoding/transaction.rs | 6 +- plugin-agave/src/protobuf/message.rs | 2 +- proto/src/convert_to.rs | 69 +- shared/src/transports/quic.rs | 58 +- 10 files changed, 1304 insertions(+), 150 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18fc1b2e..1ceda693 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ The minor version will be incremented upon a breaking change and the patch versi - richat-cli-v9.0.1 TODO! - richat-client-v8.1.1 TODO! - richat-filter-v9.0.0 -- richat-plugin-agave-v8.1.1 TODO! +- richat-plugin-agave-v9.0.0 - richat-proto-v9.0.0 - richat-v8.1.1 TODO! - richat-shared-v9.0.0 diff --git a/Cargo.lock b/Cargo.lock index 83beb278..e0f8624f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,7 +24,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "generic-array", ] @@ -36,7 +36,7 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -79,6 +79,21 @@ dependencies = [ "solana-svm-feature-set", ] +[[package]] +name = "agave-geyser-plugin-interface" +version = "4.0.0-rc.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b13c527405e04f1c9296d315916a4908ff6f733e733ff5b27a6bef1cf9bb3f2" +dependencies = [ + "log", + "solana-clock", + "solana-hash", + "solana-signature", + "solana-transaction 3.1.0", + "solana-transaction-status", + "thiserror 2.0.18", +] + [[package]] name = "agave-reserved-account-keys" version = "4.0.0-rc.0" @@ -112,6 +127,71 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloca" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4" +dependencies = [ + "cc", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + [[package]] name = "anyhow" version = "1.0.102" @@ -160,7 +240,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -172,7 +252,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -183,7 +263,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -198,6 +278,37 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "autotools" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" +dependencies = [ + "cc", +] + +[[package]] +name = "aws-lc-rs" +version = "1.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec6fb3fe69024a75fa7e1bfb48aa6cf59706a101658ea01bfd33b2b248a038f" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f50037ee5e1e41e7b8f9d161680a725bd1626cb6f8c7e901f91f942850852fe7" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "axum" version = "0.8.9" @@ -268,6 +379,21 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +[[package]] +name = "blake3" +version = "1.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.3.0", + "digest 0.11.3", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -277,6 +403,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +dependencies = [ + "hybrid-array", +] + [[package]] name = "borsh" version = "1.6.1" @@ -298,7 +433,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -343,7 +478,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -370,6 +505,12 @@ dependencies = [ "url", ] +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + [[package]] name = "cc" version = "1.2.61" @@ -408,7 +549,34 @@ checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", ] [[package]] @@ -417,10 +585,71 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "inout", ] +[[package]] +name = "clap" +version = "4.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "clap_lex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + +[[package]] +name = "cmake" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" +dependencies = [ + "cc", +] + +[[package]] +name = "cmov" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746" + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + [[package]] name = "combine" version = "3.8.1" @@ -451,7 +680,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20d9a563d167a9cce0f94153382b33cb6eded6dfabff03c69ad65a28ea1514e0" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "proptest", "serde_core", ] @@ -462,6 +691,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + [[package]] name = "core-foundation" version = "0.10.1" @@ -487,6 +722,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -496,12 +740,72 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "criterion" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "950046b2aa2492f9a536f5f4f9a3de7b9e2476e575e05bd6c333371add4d98f3" +dependencies = [ + "alloca", + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "itertools 0.13.0", + "num-traits", + "oorandom", + "page_size", + "plotters", + "rayon", + "regex", + "serde", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d80a2f4f5b554395e47b5d8305bc3d27813bacb73493eb1001e8f76dae29ea" +dependencies = [ + "cast", + "itertools 0.13.0", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + [[package]] name = "crypto-common" version = "0.1.7" @@ -513,6 +817,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" +dependencies = [ + "hybrid-array", +] + [[package]] name = "ctr" version = "0.9.2" @@ -522,6 +835,15 @@ dependencies = [ "cipher", ] +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", +] + [[package]] name = "curve25519-dalek" version = "4.1.3" @@ -529,9 +851,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "curve25519-dalek-derive", - "digest", + "digest 0.10.7", "fiat-crypto", "rand_core 0.6.4", "rustc_version", @@ -548,7 +870,17 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", ] [[package]] @@ -571,6 +903,20 @@ dependencies = [ "darling_macro 0.23.0", ] +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", +] + [[package]] name = "darling_core" version = "0.21.3" @@ -582,7 +928,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.117", ] [[package]] @@ -595,7 +941,18 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn 2.0.117", ] [[package]] @@ -606,7 +963,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -617,7 +974,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -665,17 +1022,59 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.117", +] + [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "crypto-common", + "block-buffer 0.10.4", + "crypto-common 0.1.7", "subtle", ] +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.0", + "crypto-common 0.2.1", + "ctutils", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -684,9 +1083,15 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "ed25519" version = "2.2.3" @@ -718,6 +1123,29 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "env_filter" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -734,6 +1162,17 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "evmap" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8874945f036109c72242964c1174cf99434e30cfa45bf45fedc983f50046f8" +dependencies = [ + "hashbag", + "left-right", + "smallvec", +] + [[package]] name = "fastbloom" version = "0.14.1" @@ -794,6 +1233,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "059c31d7d36c43fe39d89e55711858b4da8be7eb6dabac23c7289b1a19489406" +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "fixedbitset" version = "0.5.7" @@ -822,6 +1267,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -831,6 +1282,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "futures" version = "0.3.32" @@ -887,7 +1344,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -919,6 +1376,21 @@ dependencies = [ "slab", ] +[[package]] +name = "generator" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +dependencies = [ + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows-link", + "windows-result", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -969,6 +1441,26 @@ dependencies = [ "wasip3", ] +[[package]] +name = "git-version" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19" +dependencies = [ + "git-version-macro", +] + +[[package]] +name = "git-version-macro" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "h2" version = "0.4.13" @@ -988,6 +1480,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + [[package]] name = "hash32" version = "0.3.1" @@ -997,13 +1500,28 @@ dependencies = [ "byteorder", ] +[[package]] +name = "hashbag" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7040a10f52cba493ddb09926e15d10a9d8a28043708a405931fe4c6f19fac064" + [[package]] name = "hashbrown" version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "foldhash", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "foldhash 0.2.0", ] [[package]] @@ -1012,6 +1530,12 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -1024,7 +1548,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.2", ] [[package]] @@ -1105,6 +1638,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hybrid-array" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d46837a0ed51fe95bd3b05de33cd64a1ee88fc797477ca48446872504507c5" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "1.9.0" @@ -1331,6 +1873,21 @@ dependencies = [ "serde", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -1340,6 +1897,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.14.0" @@ -1355,6 +1921,30 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" +[[package]] +name = "jiff" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "jni" version = "0.21.1" @@ -1396,7 +1986,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1464,7 +2054,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -1479,6 +2069,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" +[[package]] +name = "left-right" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0c21e4c8ff95f487fb34e6f9182875f42c84cef966d29216bf115d9bba835a" +dependencies = [ + "crossbeam-utils", + "loom", + "slab", +] + [[package]] name = "libc" version = "0.2.186" @@ -1491,6 +2092,12 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -1518,6 +2125,19 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + [[package]] name = "lru-slab" version = "0.1.2" @@ -1573,6 +2193,38 @@ dependencies = [ "rapidhash", ] +[[package]] +name = "metrics-exporter-prometheus" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db0d8f1fc9e62caebd0319e11eaec5822b0186c171568f0480b46a0137f9108" +dependencies = [ + "base64", + "evmap", + "indexmap", + "metrics", + "metrics-util", + "quanta", + "thiserror 2.0.18", +] + +[[package]] +name = "metrics-util" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e56997f084e57b045edf17c3ed8ba7f9f779c670df8206dfd1c736f4c02dc4a" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.16.1", + "metrics", + "quanta", + "rand 0.9.4", + "rand_xoshiro", + "rapidhash", + "sketches-ddsketch", +] + [[package]] name = "mime" version = "0.3.17" @@ -1606,6 +2258,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + [[package]] name = "multimap" version = "0.10.1" @@ -1655,7 +2313,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1695,7 +2353,16 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", ] [[package]] @@ -1713,6 +2380,18 @@ version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "oorandom" +version = "11.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" + [[package]] name = "opaque-debug" version = "0.3.1" @@ -1725,6 +2404,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +[[package]] +name = "page_size" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1760,7 +2449,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -1779,13 +2468,23 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset 0.4.2", + "indexmap", +] + [[package]] name = "petgraph" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ - "fixedbitset", + "fixedbitset 0.5.7", "hashbrown 0.15.5", "indexmap", ] @@ -1807,7 +2506,7 @@ checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1817,21 +2516,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] -name = "pkcs8" -version = "0.10.2" +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ - "der", - "spki", + "plotters-backend", ] -[[package]] -name = "pkg-config" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" - [[package]] name = "polyval" version = "0.6.2" @@ -1839,7 +2566,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "opaque-debug", "universal-hash", ] @@ -1850,6 +2577,15 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +[[package]] +name = "portable-atomic-util" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +dependencies = [ + "portable-atomic", +] + [[package]] name = "potential_utf" version = "0.1.5" @@ -1874,6 +2610,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + [[package]] name = "prettyplease" version = "0.2.37" @@ -1881,7 +2627,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.117", ] [[package]] @@ -1917,6 +2663,16 @@ dependencies = [ "unarray", ] +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive 0.11.9", +] + [[package]] name = "prost" version = "0.14.3" @@ -1924,7 +2680,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.14.3", +] + +[[package]] +name = "prost-build" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +dependencies = [ + "bytes", + "heck 0.4.1", + "itertools 0.10.5", + "lazy_static", + "log", + "multimap 0.8.3", + "petgraph 0.6.5", + "prettyplease 0.1.25", + "prost 0.11.9", + "prost-types 0.11.9", + "regex", + "syn 1.0.109", + "tempfile", + "which", ] [[package]] @@ -1933,21 +2711,34 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ - "heck", + "heck 0.5.0", "itertools 0.14.0", "log", - "multimap", - "petgraph", - "prettyplease", - "prost", - "prost-types", + "multimap 0.10.1", + "petgraph 0.8.3", + "prettyplease 0.2.37", + "prost 0.14.3", + "prost-types 0.14.3", "pulldown-cmark", "pulldown-cmark-to-cmark", "regex", - "syn", + "syn 2.0.117", "tempfile", ] +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "prost-derive" version = "0.14.3" @@ -1958,7 +2749,16 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "prost-types" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +dependencies = [ + "prost 0.11.9", ] [[package]] @@ -1967,7 +2767,16 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ - "prost", + "prost 0.14.3", +] + +[[package]] +name = "protobuf-src" +version = "1.1.0+21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" +dependencies = [ + "autotools", ] [[package]] @@ -2224,6 +3033,15 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand_xoshiro" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" +dependencies = [ + "rand_core 0.9.5", +] + [[package]] name = "rapidhash" version = "4.4.1" @@ -2242,6 +3060,26 @@ dependencies = [ "bitflags", ] +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "rcgen" version = "0.14.7" @@ -2347,6 +3185,28 @@ dependencies = [ "tower-service", ] +[[package]] +name = "richat-benches" +version = "1.0.0" +dependencies = [ + "agave-geyser-plugin-interface", + "criterion", + "prost 0.11.9", + "prost 0.14.3", + "prost-types 0.14.3", + "richat-filter", + "richat-plugin-agave", + "richat-proto", + "solana-clock", + "solana-hash", + "solana-message 3.1.0", + "solana-pubkey 4.2.0", + "solana-signature", + "solana-storage-proto", + "solana-transaction 3.1.0", + "solana-transaction-status", +] + [[package]] name = "richat-filter" version = "9.0.0" @@ -2356,8 +3216,8 @@ dependencies = [ "bs58", "const-hex", "maplit", - "prost", - "prost-types", + "prost 0.14.3", + "prost-types 0.14.3", "richat-proto", "richat-shared", "serde", @@ -2386,6 +3246,44 @@ dependencies = [ "tracing", ] +[[package]] +name = "richat-plugin-agave" +version = "9.0.0" +dependencies = [ + "agave-geyser-plugin-interface", + "anyhow", + "bincode", + "cargo-lock", + "clap", + "futures", + "git-version", + "log", + "metrics-exporter-prometheus", + "prost 0.14.3", + "prost-types 0.14.3", + "richat-benches", + "richat-metrics", + "richat-proto", + "richat-shared", + "rustls", + "serde", + "serde_json", + "smallvec", + "solana-account-decoder", + "solana-clock", + "solana-logger", + "solana-message 3.1.0", + "solana-pubkey 4.2.0", + "solana-signature", + "solana-transaction 3.1.0", + "solana-transaction-context", + "solana-transaction-error", + "solana-transaction-status", + "tokio", + "tokio-util", + "vergen", +] + [[package]] name = "richat-proto" version = "9.0.0" @@ -2393,7 +3291,7 @@ dependencies = [ "anyhow", "bincode", "cargo-lock", - "prost", + "prost 0.14.3", "protoc-bin-vendored", "solana-account 4.3.0", "solana-account-decoder", @@ -2431,7 +3329,7 @@ dependencies = [ "jsonrpc-core", "jsonrpsee-types", "metrics", - "prost", + "prost 0.14.3", "protoc-bin-vendored", "quanta", "quinn", @@ -2454,7 +3352,7 @@ dependencies = [ "tokio-util", "toml 1.1.2+spec-1.1.0", "tonic", - "tonic-build", + "tonic-build 0.14.5", "tonic-prost", "tracing", "tracing-subscriber", @@ -2504,6 +3402,19 @@ dependencies = [ "nom", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.52.0", +] + [[package]] name = "rustix" version = "1.1.4" @@ -2513,7 +3424,7 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] @@ -2523,6 +3434,7 @@ version = "0.23.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" dependencies = [ + "aws-lc-rs", "log", "once_cell", "ring", @@ -2596,6 +3508,7 @@ version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -2631,6 +3544,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -2716,7 +3635,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2772,7 +3691,7 @@ dependencies = [ "darling 0.23.0", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2795,8 +3714,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", - "digest", + "cpufeatures 0.2.17", + "digest 0.10.7", ] [[package]] @@ -2811,7 +3730,7 @@ version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ - "digest", + "digest 0.10.7", "keccak", ] @@ -2830,6 +3749,26 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + [[package]] name = "signature" version = "2.2.0" @@ -2851,6 +3790,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" +[[package]] +name = "sketches-ddsketch" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6f73aeb92d671e0cc4dca167e59b2deb6387c375391bc99ee743f326994a2b" + [[package]] name = "slab" version = "0.4.12" @@ -3187,6 +4132,7 @@ dependencies = [ "five8", "serde", "serde_derive", + "solana-atomic-u64", "solana-sanitize", ] @@ -3298,12 +4244,27 @@ dependencies = [ "solana-system-interface 3.2.0", ] +[[package]] +name = "solana-logger" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef7421d1092680d72065edbf5c7605856719b021bf5f173656c71febcdd5d003" +dependencies = [ + "env_logger", + "lazy_static", + "libc", + "log", + "signal-hook", +] + [[package]] name = "solana-message" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0448b1fd891c5f46491e5dc7d9986385ba3c852c340db2911dd29faa01d2b08d" dependencies = [ + "bincode", + "blake3", "lazy_static", "serde", "serde_derive", @@ -3544,7 +4505,7 @@ dependencies = [ "bs58", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3567,6 +4528,15 @@ dependencies = [ "sha2", ] +[[package]] +name = "solana-serde" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709a93cab694c70f40b279d497639788fc2ccbcf9b4aa32273d4b361322c02dd" +dependencies = [ + "serde", +] + [[package]] name = "solana-serde-varint" version = "3.0.1" @@ -3688,6 +4658,31 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-storage-proto" +version = "4.0.0-rc.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87bd43d90ee4f6d4f873bc52857b579f9469e2d9161e59b36a9cf8faf2e63a42" +dependencies = [ + "bincode", + "bs58", + "prost 0.11.9", + "protobuf-src", + "serde", + "solana-account-decoder", + "solana-hash", + "solana-instruction", + "solana-message 3.1.0", + "solana-pubkey 4.2.0", + "solana-serde", + "solana-signature", + "solana-transaction 3.1.0", + "solana-transaction-context", + "solana-transaction-error", + "solana-transaction-status", + "tonic-build 0.9.2", +] + [[package]] name = "solana-svm-feature-set" version = "4.0.0-rc.0" @@ -3772,6 +4767,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96697cff5075a028265324255efed226099f6d761ca67342b230d09f72cc48d2" dependencies = [ + "bincode", "serde", "serde_derive", "solana-address 2.6.0", @@ -3783,6 +4779,7 @@ dependencies = [ "solana-sdk-ids", "solana-short-vec", "solana-signature", + "solana-signer", "solana-transaction-error", ] @@ -4028,7 +5025,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn", - "syn", + "syn 2.0.117", ] [[package]] @@ -4040,7 +5037,7 @@ dependencies = [ "proc-macro2", "quote", "sha2", - "syn", + "syn 2.0.117", "thiserror 1.0.69", ] @@ -4236,6 +5233,17 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.117" @@ -4264,7 +5272,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4276,7 +5284,7 @@ dependencies = [ "fastrand", "getrandom 0.4.2", "once_cell", - "rustix", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -4306,7 +5314,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4317,7 +5325,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4337,7 +5345,9 @@ checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", + "libc", "num-conv", + "num_threads", "powerfmt", "serde_core", "time-core", @@ -4370,6 +5380,16 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "tinyvec" version = "1.11.0" @@ -4408,7 +5428,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4553,16 +5573,29 @@ dependencies = [ "zstd", ] +[[package]] +name = "tonic-build" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" +dependencies = [ + "prettyplease 0.1.25", + "proc-macro2", + "prost-build 0.11.9", + "quote", + "syn 1.0.109", +] + [[package]] name = "tonic-build" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1882ac3bf5ef12877d7ed57aad87e75154c11931c2ba7e6cde5e22d63522c734" dependencies = [ - "prettyplease", + "prettyplease 0.2.37", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4572,7 +5605,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" dependencies = [ "bytes", - "prost", + "prost 0.14.3", "tonic", ] @@ -4582,14 +5615,14 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3144df636917574672e93d0f56d7edec49f90305749c668df5101751bb8f95a" dependencies = [ - "prettyplease", + "prettyplease 0.2.37", "proc-macro2", - "prost-build", - "prost-types", + "prost-build 0.14.3", + "prost-types 0.14.3", "quote", - "syn", + "syn 2.0.117", "tempfile", - "tonic-build", + "tonic-build 0.14.5", ] [[package]] @@ -4661,7 +5694,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4764,7 +5797,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "subtle", ] @@ -4817,12 +5850,43 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "valuable" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "vergen" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b849a1f6d8639e8de261e81ee0fc881e3e3620db1af9f2e0da015d4382ceaf75" +dependencies = [ + "anyhow", + "derive_builder", + "rustc_version", + "rustversion", + "time", + "vergen-lib", +] + +[[package]] +name = "vergen-lib" +version = "9.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b34a29ba7e9c59e62f229ae1932fb1b8fb8a6fdcc99215a641913f5f5a59a569" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", +] + [[package]] name = "version_check" version = "0.9.5" @@ -4920,7 +5984,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wasm-bindgen-shared", ] @@ -5005,6 +6069,18 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.44", +] + [[package]] name = "winapi" version = "0.3.9" @@ -5058,7 +6134,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5067,6 +6143,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -5326,7 +6411,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ "anyhow", - "heck", + "heck 0.5.0", "wit-parser", ] @@ -5337,10 +6422,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", - "heck", + "heck 0.5.0", "indexmap", - "prettyplease", - "syn", + "prettyplease 0.2.37", + "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -5353,10 +6438,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" dependencies = [ "anyhow", - "prettyplease", + "prettyplease 0.2.37", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -5438,8 +6523,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acdd7a11b9c4c36114101f4a1002344d2fd947cb5b30e5725ee41197e2b3555a" dependencies = [ "anyhow", - "prost", - "prost-types", + "prost 0.14.3", + "prost-types 0.14.3", "protoc-bin-vendored", "tonic", "tonic-prost", @@ -5465,7 +6550,7 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -5486,7 +6571,7 @@ checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5506,7 +6591,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -5527,7 +6612,7 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5560,7 +6645,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 4e450adb..61c1a291 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ [workspace] resolver = "2" members = [ - # "benches", + "benches", # "cli", # "client", "filter", # "metrics", - # "plugin-agave", + "plugin-agave", "proto", # "richat", "shared", @@ -67,11 +67,11 @@ quinn = "0.11.6" rayon = "1.10.0" rcgen = "0.14.0" regex = "1.11.1" -# richat-benches = { path = "benches", version = "1.0.0" } +richat-benches = { path = "benches", version = "1.0.0" } # richat-client = { path = "client", version = "8.1.1" } richat-filter = { path = "filter", version = "9.0.0" } richat-metrics = { path = "metrics", version = "1.0.1" } -# richat-plugin-agave = { path = "plugin-agave", version = "9.0.0" } +richat-plugin-agave = { path = "plugin-agave", version = "9.0.0" } richat-proto = { path = "proto", version = "9.0.0" } richat-shared = { path = "shared", version = "9.0.0", default-features = false } rocksdb = "0.24.0" diff --git a/benches/Cargo.toml b/benches/Cargo.toml index f2a04629..6cabd48a 100644 --- a/benches/Cargo.toml +++ b/benches/Cargo.toml @@ -27,12 +27,12 @@ prost_011 = { workspace = true } richat-proto = { workspace = true } solana-clock = { workspace = true } solana-hash = { workspace = true } -solana-message = { workspace = true } +solana-message-v3 = { workspace = true } solana-pubkey = { workspace = true } solana-signature = { workspace = true } solana-storage-proto = { workspace = true, features = ["agave-unstable-api"] } -solana-transaction = { workspace = true, features = ["dev-context-only-utils"] } solana-transaction-status = { workspace = true } +solana-transaction-v3 = { workspace = true, features = ["dev-context-only-utils"] } [dev-dependencies] criterion = { workspace = true } @@ -40,7 +40,7 @@ prost = { workspace = true } prost-types = { workspace = true } richat-filter = { workspace = true } richat-plugin-agave = { workspace = true } -richat-proto = { workspace = true, features = ["yellowstone-grpc-plugin"] } +richat-proto = { workspace = true } [lints] workspace = true diff --git a/benches/src/lib.rs b/benches/src/lib.rs index ae5f92bd..1bb960e0 100644 --- a/benches/src/lib.rs +++ b/benches/src/lib.rs @@ -15,17 +15,17 @@ pub mod fixtures { }, solana_clock::Slot, solana_hash::{HASH_BYTES, Hash}, - solana_message::{SimpleAddressLoader, v0::LoadedAddresses}, + solana_message_v3::{SimpleAddressLoader, v0::LoadedAddresses}, solana_pubkey::Pubkey, solana_signature::Signature, solana_storage_proto::convert::generated, - solana_transaction::{ - sanitized::{MessageHash, SanitizedTransaction}, - versioned::VersionedTransaction, - }, solana_transaction_status::{ ConfirmedBlock, RewardsAndNumPartitions, TransactionStatusMeta, }, + solana_transaction_v3::{ + sanitized::{MessageHash, SanitizedTransaction}, + versioned::VersionedTransaction, + }, std::{collections::HashSet, fs}, }; @@ -68,7 +68,7 @@ pub mod fixtures { } impl GeneratedAccount { - pub fn to_replica(&self) -> (Slot, ReplicaAccountInfoV3) { + pub fn to_replica(&self) -> (Slot, ReplicaAccountInfoV3<'_>) { let replica = ReplicaAccountInfoV3 { pubkey: self.pubkey.as_ref(), lamports: self.lamports, @@ -180,7 +180,7 @@ pub mod fixtures { } impl GeneratedBlockMeta { - pub fn to_replica(&self) -> ReplicaBlockInfoV4 { + pub fn to_replica(&self) -> ReplicaBlockInfoV4<'_> { ReplicaBlockInfoV4 { parent_slot: self.block.parent_slot, slot: self.slot, @@ -393,7 +393,9 @@ pub mod fixtures { transaction: Some(SubscribeUpdateTransactionInfo { signature: self.signature.as_ref().to_vec(), is_vote: self.is_vote, - transaction: Some(convert_to::create_transaction(&self.versioned_transaction)), + transaction: Some(convert_to::create_status_transaction( + &self.versioned_transaction, + )), meta: Some(convert_to::create_transaction_meta( &self.transaction_status_meta, )), diff --git a/plugin-agave/Cargo.toml b/plugin-agave/Cargo.toml index 786b0c5e..7c58d784 100644 --- a/plugin-agave/Cargo.toml +++ b/plugin-agave/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "richat-plugin-agave" -version = "8.1.1" +version = "9.0.0" authors = { workspace = true } edition = { workspace = true } description = "Richat Agave Geyser Plugin" @@ -38,13 +38,13 @@ smallvec = { workspace = true } solana-account-decoder = { workspace = true } solana-clock = { workspace = true } solana-logger = { workspace = true } -solana-message = { workspace = true } +solana-message-v3 = { workspace = true } solana-pubkey = { workspace = true } solana-signature = { workspace = true } -solana-transaction = { workspace = true } solana-transaction-context = { workspace = true } solana-transaction-error = { workspace = true } solana-transaction-status = { workspace = true } +solana-transaction-v3 = { workspace = true } tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } tokio-util = { workspace = true } diff --git a/plugin-agave/src/protobuf/encoding/transaction.rs b/plugin-agave/src/protobuf/encoding/transaction.rs index e909da96..afb1a7fa 100644 --- a/plugin-agave/src/protobuf/encoding/transaction.rs +++ b/plugin-agave/src/protobuf/encoding/transaction.rs @@ -8,18 +8,18 @@ use { }, solana_account_decoder::parse_token::UiTokenAmount, solana_clock::Slot, - solana_message::{ + solana_message_v3::{ MessageHeader, VersionedMessage, compiled_instruction::CompiledInstruction, v0::MessageAddressTableLookup, }, solana_pubkey::{PUBKEY_BYTES, Pubkey}, solana_signature::{SIGNATURE_BYTES, Signature}, - solana_transaction::versioned::VersionedTransaction, - solana_transaction_context::TransactionReturnData, + solana_transaction_context::transaction::TransactionReturnData, solana_transaction_error::TransactionError, solana_transaction_status::{ InnerInstruction, InnerInstructions, TransactionStatusMeta, TransactionTokenBalance, }, + solana_transaction_v3::versioned::VersionedTransaction, std::{cell::RefCell, marker::PhantomData, ops::Deref}, }; diff --git a/plugin-agave/src/protobuf/message.rs b/plugin-agave/src/protobuf/message.rs index 54d5df93..91c07d17 100644 --- a/plugin-agave/src/protobuf/message.rs +++ b/plugin-agave/src/protobuf/message.rs @@ -126,7 +126,7 @@ impl ProtobufMessage<'_> { transaction: Some(SubscribeUpdateTransactionInfo { signature: transaction.signature.as_ref().to_vec(), is_vote: transaction.is_vote, - transaction: Some(convert_to::create_transaction( + transaction: Some(convert_to::create_status_transaction( transaction.transaction, )), meta: Some(convert_to::create_transaction_meta( diff --git a/proto/src/convert_to.rs b/proto/src/convert_to.rs index d9e646ab..bb03e33b 100644 --- a/proto/src/convert_to.rs +++ b/proto/src/convert_to.rs @@ -4,6 +4,11 @@ use { MessageHeader, VersionedMessage, compiled_instruction::CompiledInstruction, v0::MessageAddressTableLookup, }, + solana_message_v3::{ + MessageHeader as StatusMessageHeader, VersionedMessage as StatusVersionedMessage, + compiled_instruction::CompiledInstruction as StatusCompiledInstruction, + v0::MessageAddressTableLookup as StatusMessageAddressTableLookup, + }, solana_pubkey::Pubkey, solana_signature::Signature, solana_transaction::versioned::VersionedTransaction, @@ -13,6 +18,7 @@ use { InnerInstruction, InnerInstructions, Reward, RewardType, TransactionStatusMeta, TransactionTokenBalance, }, + solana_transaction_v3::versioned::VersionedTransaction as StatusVersionedTransaction, yellowstone_grpc_proto::prelude as proto, }; @@ -21,12 +27,40 @@ pub fn create_transaction(tx: &VersionedTransaction) -> proto::Transaction { signatures: tx .signatures .iter() - .map(|signature| >::as_ref(signature).into()) + .map(|signature| signature.as_ref().into()) .collect(), message: Some(create_message(&tx.message)), } } +pub fn create_status_transaction(tx: &StatusVersionedTransaction) -> proto::Transaction { + proto::Transaction { + signatures: tx + .signatures + .iter() + .map(|signature| >::as_ref(signature).into()) + .collect(), + message: Some(match &tx.message { + StatusVersionedMessage::Legacy(message) => proto::Message { + header: Some(create_status_header(&message.header)), + account_keys: create_pubkeys(&message.account_keys), + recent_blockhash: message.recent_blockhash.to_bytes().into(), + instructions: create_status_instructions(&message.instructions), + versioned: false, + address_table_lookups: vec![], + }, + StatusVersionedMessage::V0(message) => proto::Message { + header: Some(create_status_header(&message.header)), + account_keys: create_pubkeys(&message.account_keys), + recent_blockhash: message.recent_blockhash.to_bytes().into(), + instructions: create_status_instructions(&message.instructions), + versioned: true, + address_table_lookups: create_status_lookups(&message.address_table_lookups), + }, + }), + } +} + pub fn create_message(message: &VersionedMessage) -> proto::Message { match message { VersionedMessage::Legacy(message) => proto::Message { @@ -49,6 +83,14 @@ pub fn create_message(message: &VersionedMessage) -> proto::Message { } } +pub const fn create_status_header(header: &StatusMessageHeader) -> proto::MessageHeader { + proto::MessageHeader { + num_required_signatures: header.num_required_signatures as u32, + num_readonly_signed_accounts: header.num_readonly_signed_accounts as u32, + num_readonly_unsigned_accounts: header.num_readonly_unsigned_accounts as u32, + } +} + pub const fn create_header(header: &MessageHeader) -> proto::MessageHeader { proto::MessageHeader { num_required_signatures: header.num_required_signatures as u32, @@ -65,6 +107,18 @@ pub fn create_instructions(ixs: &[CompiledInstruction]) -> Vec Vec { + ixs.iter() + .map(|ix| proto::CompiledInstruction { + program_id_index: ix.program_id_index as u32, + accounts: ix.accounts.clone(), + data: ix.data.clone(), + }) + .collect() +} + pub fn create_instruction(ix: &CompiledInstruction) -> proto::CompiledInstruction { proto::CompiledInstruction { program_id_index: ix.program_id_index as u32, @@ -79,6 +133,19 @@ pub fn create_lookups( lookups.iter().map(create_lookup).collect() } +fn create_status_lookups( + lookups: &[StatusMessageAddressTableLookup], +) -> Vec { + lookups + .iter() + .map(|lookup| proto::MessageAddressTableLookup { + account_key: lookup.account_key.as_ref().into(), + writable_indexes: lookup.writable_indexes.clone(), + readonly_indexes: lookup.readonly_indexes.clone(), + }) + .collect() +} + pub fn create_lookup(lookup: &MessageAddressTableLookup) -> proto::MessageAddressTableLookup { proto::MessageAddressTableLookup { account_key: >::as_ref(&lookup.account_key).into(), diff --git a/shared/src/transports/quic.rs b/shared/src/transports/quic.rs index d3c9704b..4c07f8a2 100644 --- a/shared/src/transports/quic.rs +++ b/shared/src/transports/quic.rs @@ -255,26 +255,26 @@ impl QuicServer { let mut next_message: Option = None; let mut set = JoinSet::new(); loop { - if msg_id - msg_ids.first().copied().unwrap_or(msg_id) < max_backlog { - if let Some(message) = next_message.take() { - if let Some(mut stream) = streams.pop_front() { - msg_ids.insert(msg_id); - set.spawn(async move { - WriteVectored::new( - &mut stream, - &mut [ - IoSlice::new(&msg_id.to_be_bytes()), - IoSlice::new(&(message.len() as u64).to_be_bytes()), - IoSlice::new(&message), - ], - ) - .await?; - Ok::<_, ConnectionError>((msg_id, stream)) - }); - msg_id += 1; - } else { - next_message = Some(message); - } + if msg_id - msg_ids.first().copied().unwrap_or(msg_id) < max_backlog + && let Some(message) = next_message.take() + { + if let Some(mut stream) = streams.pop_front() { + msg_ids.insert(msg_id); + set.spawn(async move { + WriteVectored::new( + &mut stream, + &mut [ + IoSlice::new(&msg_id.to_be_bytes()), + IoSlice::new(&(message.len() as u64).to_be_bytes()), + IoSlice::new(&message), + ], + ) + .await?; + Ok::<_, ConnectionError>((msg_id, stream)) + }); + msg_id += 1; + } else { + next_message = Some(message); } } @@ -371,21 +371,21 @@ impl QuicServer { } = Message::decode(buf.as_slice())?; // verify access token - if !x_tokens.is_empty() { - if let Some(error) = match x_token { + if !x_tokens.is_empty() + && let Some(error) = match x_token { Some(x_token) if !x_tokens.contains(&x_token) => { Some(QuicSubscribeResponseError::XTokenInvalid as i32) } None => Some(QuicSubscribeResponseError::XTokenRequired as i32), _ => None, - } { - let msg = QuicSubscribeResponse { - error: Some(error), - version, - ..Default::default() - }; - return Ok((send, msg, None)); } + { + let msg = QuicSubscribeResponse { + error: Some(error), + version, + ..Default::default() + }; + return Ok((send, msg, None)); } // validate number of streams From c66503382c1b41f5c36c548aea62cda34956971e Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Mon, 4 May 2026 10:14:06 -0500 Subject: [PATCH 5/8] update filter + benches --- Cargo.lock | 2 - benches/Cargo.toml | 2 - benches/benches/encode-geyser/account.rs | 70 +------------------- benches/benches/encode-geyser/block_meta.rs | 59 +---------------- benches/benches/encode-geyser/entry.rs | 63 +----------------- benches/benches/encode-geyser/slot.rs | 29 +------- benches/benches/encode-geyser/transaction.rs | 52 --------------- filter/src/filter.rs | 40 +++++------ filter/src/message.rs | 8 +-- 9 files changed, 31 insertions(+), 294 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e0f8624f..1d2cc68e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3192,8 +3192,6 @@ dependencies = [ "agave-geyser-plugin-interface", "criterion", "prost 0.11.9", - "prost 0.14.3", - "prost-types 0.14.3", "richat-filter", "richat-plugin-agave", "richat-proto", diff --git a/benches/Cargo.toml b/benches/Cargo.toml index 6cabd48a..1d1df3b2 100644 --- a/benches/Cargo.toml +++ b/benches/Cargo.toml @@ -36,8 +36,6 @@ solana-transaction-v3 = { workspace = true, features = ["dev-context-only-utils" [dev-dependencies] criterion = { workspace = true } -prost = { workspace = true } -prost-types = { workspace = true } richat-filter = { workspace = true } richat-plugin-agave = { workspace = true } richat-proto = { workspace = true } diff --git a/benches/benches/encode-geyser/account.rs b/benches/benches/encode-geyser/account.rs index a10b2bb6..9243c85c 100644 --- a/benches/benches/encode-geyser/account.rs +++ b/benches/benches/encode-geyser/account.rs @@ -1,16 +1,7 @@ use { criterion::Criterion, - prost::Message, - prost_types::Timestamp, richat_benches::fixtures::generate_accounts, richat_plugin_agave::protobuf::{ProtobufEncoder, ProtobufMessage}, - richat_proto::plugin::{ - filter::{ - FilterAccountsDataSlice, - message::{FilteredUpdate, FilteredUpdateFilters, FilteredUpdateOneof}, - }, - message::MessageAccount, - }, std::{hint::black_box, time::SystemTime}, }; @@ -22,26 +13,6 @@ pub fn bench_encode_accounts(criterion: &mut Criterion) { .map(|acc| acc.to_replica()) .collect::>(); - let grpc_replicas = accounts_replica - .iter() - .cloned() - .map(|account| { - ( - account, - FilterAccountsDataSlice::new(&[], usize::MAX).unwrap(), - ) - }) - .collect::>(); - let grpc_messages = grpc_replicas - .iter() - .map(|((slot, account), data_slice)| { - ( - MessageAccount::from_geyser(account, *slot, false), - data_slice.clone(), - ) - }) - .collect::>(); - criterion .benchmark_group("encode_accounts") .bench_with_input("richat/prost", &accounts_replica, |criterion, accounts| { @@ -73,44 +44,5 @@ pub fn bench_encode_accounts(criterion: &mut Criterion) { } }) }) - }) - .bench_with_input( - "dragons-mouth/encoding-only", - &grpc_messages, - |criterion, grpc_messages| { - let created_at = Timestamp::from(SystemTime::now()); - criterion.iter(|| { - #[allow(clippy::unit_arg)] - black_box({ - for (message, data_slice) in grpc_messages { - let update = FilteredUpdate { - filters: FilteredUpdateFilters::new(), - message: FilteredUpdateOneof::account(message, data_slice.clone()), - created_at, - }; - update.encode_to_vec(); - } - }) - }); - }, - ) - .bench_with_input( - "dragons-mouth/full-pipeline", - &grpc_replicas, - |criterion, grpc_replicas| { - let created_at = Timestamp::from(SystemTime::now()); - criterion.iter(|| { - #[allow(clippy::unit_arg)] - black_box(for ((slot, account), data_slice) in grpc_replicas { - let message = MessageAccount::from_geyser(account, *slot, false); - let update = FilteredUpdate { - filters: FilteredUpdateFilters::new(), - message: FilteredUpdateOneof::account(&message, data_slice.clone()), - created_at, - }; - update.encode_to_vec(); - }) - }); - }, - ); + }); } diff --git a/benches/benches/encode-geyser/block_meta.rs b/benches/benches/encode-geyser/block_meta.rs index 2f6723d8..96cb3a4f 100644 --- a/benches/benches/encode-geyser/block_meta.rs +++ b/benches/benches/encode-geyser/block_meta.rs @@ -1,14 +1,8 @@ use { - criterion::{BatchSize, Criterion}, - prost::Message, - prost_types::Timestamp, + criterion::Criterion, richat_benches::fixtures::generate_block_metas, richat_plugin_agave::protobuf::{ProtobufEncoder, ProtobufMessage}, - richat_proto::plugin::{ - filter::message::{FilteredUpdate, FilteredUpdateFilters, FilteredUpdateOneof}, - message::MessageBlockMeta, - }, - std::{hint::black_box, sync::Arc, time::SystemTime}, + std::{hint::black_box, time::SystemTime}, }; pub fn bench_encode_block_metas(criterion: &mut Criterion) { @@ -19,12 +13,6 @@ pub fn bench_encode_block_metas(criterion: &mut Criterion) { .map(|b| b.to_replica()) .collect::>(); - let blocks_meta_grpc = blocks_meta_replica - .iter() - .map(MessageBlockMeta::from_geyser) - .map(Arc::new) - .collect::>(); - criterion .benchmark_group("encode_block_meta") .bench_with_input( @@ -58,48 +46,5 @@ pub fn bench_encode_block_metas(criterion: &mut Criterion) { }) }) }, - ) - .bench_with_input( - "dragons-mouth/encoding-only", - &blocks_meta_grpc, - |criterion, messages| { - let created_at = Timestamp::from(SystemTime::now()); - criterion.iter_batched( - || messages.to_owned(), - |messages| { - #[allow(clippy::unit_arg)] - black_box({ - for message in messages { - let update = FilteredUpdate { - filters: FilteredUpdateFilters::new(), - message: FilteredUpdateOneof::block_meta(message), - created_at, - }; - update.encode_to_vec(); - } - }) - }, - BatchSize::LargeInput, - ); - }, - ) - .bench_with_input( - "dragons-mouth/full-pipeline", - &blocks_meta_replica, - |criterion, block_metas| { - let created_at = Timestamp::from(SystemTime::now()); - criterion.iter(|| { - #[allow(clippy::unit_arg)] - black_box(for blockinfo in block_metas { - let message = MessageBlockMeta::from_geyser(blockinfo); - let update = FilteredUpdate { - filters: FilteredUpdateFilters::new(), - message: FilteredUpdateOneof::block_meta(Arc::new(message)), - created_at, - }; - update.encode_to_vec(); - }) - }); - }, ); } diff --git a/benches/benches/encode-geyser/entry.rs b/benches/benches/encode-geyser/entry.rs index b1ecaaf7..4de46cd9 100644 --- a/benches/benches/encode-geyser/entry.rs +++ b/benches/benches/encode-geyser/entry.rs @@ -1,14 +1,8 @@ use { - criterion::{BatchSize, Criterion}, - prost::Message, - prost_types::Timestamp, + criterion::Criterion, richat_benches::fixtures::generate_entries, richat_plugin_agave::protobuf::{ProtobufEncoder, ProtobufMessage}, - richat_proto::plugin::{ - filter::message::{FilteredUpdate, FilteredUpdateFilters, FilteredUpdateOneof}, - message::MessageEntry, - }, - std::{hint::black_box, sync::Arc, time::SystemTime}, + std::{hint::black_box, time::SystemTime}, }; pub fn bench_encode_entries(criterion: &mut Criterion) { @@ -16,12 +10,6 @@ pub fn bench_encode_entries(criterion: &mut Criterion) { let entries_replica = entries.iter().map(|e| e.to_replica()).collect::>(); - let entries_grpc = entries_replica - .iter() - .map(MessageEntry::from_geyser) - .map(Arc::new) - .collect::>(); - criterion .benchmark_group("encode_entry") .bench_with_input("richat/prost", &entries_replica, |criterion, entries| { @@ -47,50 +35,5 @@ pub fn bench_encode_entries(criterion: &mut Criterion) { } }) }); - }) - .bench_with_input( - "dragons-mouth/encoding-only", - &entries_grpc, - |criterion, entry_messages| { - let created_at = Timestamp::from(SystemTime::now()); - criterion.iter_batched( - || entry_messages.to_owned(), - |entry_messages| { - #[allow(clippy::unit_arg)] - black_box({ - for message in entry_messages { - let update = FilteredUpdate { - filters: FilteredUpdateFilters::new(), - message: FilteredUpdateOneof::entry(message), - created_at, - }; - update.encode_to_vec(); - } - }) - }, - BatchSize::LargeInput, - ); - }, - ) - .bench_with_input( - "dragons-mouth/full-pipeline", - &entries_replica, - |criterion, entries| { - let created_at = Timestamp::from(SystemTime::now()); - criterion.iter(|| { - #[allow(clippy::unit_arg)] - black_box({ - for entry in entries { - let message = MessageEntry::from_geyser(entry); - let update = FilteredUpdate { - filters: FilteredUpdateFilters::new(), - message: FilteredUpdateOneof::entry(Arc::new(message)), - created_at, - }; - update.encode_to_vec(); - } - }) - }); - }, - ); + }); } diff --git a/benches/benches/encode-geyser/slot.rs b/benches/benches/encode-geyser/slot.rs index 6c4a75dc..cd354729 100644 --- a/benches/benches/encode-geyser/slot.rs +++ b/benches/benches/encode-geyser/slot.rs @@ -1,13 +1,7 @@ use { criterion::Criterion, - prost::Message, - prost_types::Timestamp, richat_benches::fixtures::generate_slots, richat_plugin_agave::protobuf::{ProtobufEncoder, ProtobufMessage}, - richat_proto::plugin::{ - filter::message::{FilteredUpdate, FilteredUpdateFilters, FilteredUpdateOneof}, - message::MessageSlot, - }, std::{hint::black_box, time::SystemTime}, }; @@ -49,26 +43,5 @@ pub fn bench_encode_slot(criterion: &mut Criterion) { } }) }); - }) - .bench_with_input( - "dragons-mouth/full-pipeline", - &slots_replica, - |criterion, slots| { - let created_at = Timestamp::from(SystemTime::now()); - criterion.iter(|| { - #[allow(clippy::unit_arg)] - black_box({ - for (slot, parent, status) in slots { - let message = MessageSlot::from_geyser(*slot, *parent, status); - let update = FilteredUpdate { - filters: FilteredUpdateFilters::new(), - message: FilteredUpdateOneof::slot(message), - created_at, - }; - update.encode_to_vec(); - } - }) - }); - }, - ); + }); } diff --git a/benches/benches/encode-geyser/transaction.rs b/benches/benches/encode-geyser/transaction.rs index dac516ae..b279430e 100644 --- a/benches/benches/encode-geyser/transaction.rs +++ b/benches/benches/encode-geyser/transaction.rs @@ -1,13 +1,7 @@ use { criterion::Criterion, - prost::Message, - prost_types::Timestamp, richat_benches::fixtures::generate_transactions, richat_plugin_agave::protobuf::{ProtobufEncoder, ProtobufMessage}, - richat_proto::plugin::{ - filter::message::{FilteredUpdate, FilteredUpdateFilters, FilteredUpdateOneof}, - message::MessageTransaction, - }, std::{hint::black_box, time::SystemTime}, }; @@ -19,11 +13,6 @@ pub fn bench_encode_transactions(criterion: &mut Criterion) { .map(|tx| tx.to_replica()) .collect::>(); - let transactions_grpc = transactions_replica - .iter() - .map(|(slot, transaction)| MessageTransaction::from_geyser(transaction, *slot)) - .collect::>(); - criterion .benchmark_group("encode_transaction") .bench_with_input( @@ -63,46 +52,5 @@ pub fn bench_encode_transactions(criterion: &mut Criterion) { }) }); }, - ) - .bench_with_input( - "dragons-mouth/encoding-only", - &transactions_grpc, - |criterion, transaction_messages| { - let created_at = Timestamp::from(SystemTime::now()); - criterion.iter(|| { - #[allow(clippy::unit_arg)] - black_box({ - for message in transaction_messages { - let update = FilteredUpdate { - filters: FilteredUpdateFilters::new(), - message: FilteredUpdateOneof::transaction(message), - created_at, - }; - update.encode_to_vec(); - } - }) - }); - }, - ) - .bench_with_input( - "dragons-mouth/full-pipeline", - &transactions_replica, - |criterion, transactions| { - let created_at = Timestamp::from(SystemTime::now()); - criterion.iter(|| { - #[allow(clippy::unit_arg)] - black_box({ - for (slot, transaction) in transactions { - let message = MessageTransaction::from_geyser(transaction, *slot); - let update = FilteredUpdate { - filters: FilteredUpdateFilters::new(), - message: FilteredUpdateOneof::transaction(&message), - created_at, - }; - update.encode_to_vec(); - } - }) - }); - }, ); } diff --git a/filter/src/filter.rs b/filter/src/filter.rs index 496dad37..6071ed7e 100644 --- a/filter/src/filter.rs +++ b/filter/src/filter.rs @@ -409,16 +409,16 @@ impl FilterAccounts { return None; } - if let Some(filters) = &filter.filters { - if !filters.is_match(msg_lamports, msg_data) { - return None; - } + if let Some(filters) = &filter.filters + && !filters.is_match(msg_lamports, msg_data) + { + return None; } - if let Some(nonempty_txn_signature) = filter.nonempty_txn_signature { - if nonempty_txn_signature != msg_nonempty_txn_signature { - return None; - } + if let Some(nonempty_txn_signature) = filter.nonempty_txn_signature + && nonempty_txn_signature != msg_nonempty_txn_signature + { + return None; } Some(name.as_ref()) @@ -538,22 +538,22 @@ impl FilterTransactions { .filters .iter() .filter_map(|(name, filter)| { - if let Some(is_vote) = filter.vote { - if is_vote != msg_vote { - return None; - } + if let Some(is_vote) = filter.vote + && is_vote != msg_vote + { + return None; } - if let Some(is_failed) = filter.failed { - if is_failed != msg_failed { - return None; - } + if let Some(is_failed) = filter.failed + && is_failed != msg_failed + { + return None; } - if let Some(signature) = &filter.signature { - if signature.as_ref() != msg_signature { - return None; - } + if let Some(signature) = &filter.signature + && signature.as_ref() != msg_signature + { + return None; } if !filter.account_include.is_empty() diff --git a/filter/src/message.rs b/filter/src/message.rs index 8db79d48..d43782f5 100644 --- a/filter/src/message.rs +++ b/filter/src/message.rs @@ -574,7 +574,7 @@ impl MessageSlot { } } - pub fn size(&self) -> usize { + pub const fn size(&self) -> usize { match self { Self::Limited { buffer, .. } => buffer.len() + 64, Self::Prost { size, .. } => *size, @@ -660,7 +660,7 @@ impl MessageAccount { } } - pub fn size(&self) -> usize { + pub const fn size(&self) -> usize { match self { Self::Limited { buffer, .. } => buffer.len() + PUBKEY_BYTES * 2 + 86, Self::Prost { size, .. } => *size, @@ -1064,7 +1064,7 @@ impl MessageEntry { } } - pub fn size(&self) -> usize { + pub const fn size(&self) -> usize { match self { Self::Limited { buffer, .. } => buffer.len() + 52, Self::Prost { size, .. } => *size, @@ -1128,7 +1128,7 @@ impl MessageBlockMeta { } } - pub fn size(&self) -> usize { + pub const fn size(&self) -> usize { match self { Self::Limited { buffer, .. } => buffer.len() * 2, Self::Prost { size, .. } => *size, From 547fe3be4c3ea9b65b8e46892130a7ff756aba61 Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Mon, 4 May 2026 10:15:32 -0500 Subject: [PATCH 6/8] update client+cli --- CHANGELOG.md | 4 +- Cargo.lock | 283 ++++++++++++++++++++++++++++++++++++--- Cargo.toml | 8 +- cli/Cargo.toml | 6 +- cli/src/stream_richat.rs | 39 +++--- cli/src/track.rs | 8 +- client/Cargo.toml | 2 +- 7 files changed, 301 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ceda693..e399fd69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,8 +18,8 @@ The minor version will be incremented upon a breaking change and the patch versi ## 2026-05-04 -- richat-cli-v9.0.1 TODO! -- richat-client-v8.1.1 TODO! +- richat-cli-v10.0.0 +- richat-client-v9.0.0 - richat-filter-v9.0.0 - richat-plugin-agave-v9.0.0 - richat-proto-v9.0.0 diff --git a/Cargo.lock b/Cargo.lock index 1d2cc68e..397474b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -318,7 +318,7 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http", + "http 1.4.0", "http-body", "http-body-util", "itoa", @@ -342,7 +342,7 @@ checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http", + "http 1.4.0", "http-body", "http-body-util", "mime", @@ -673,6 +673,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "console" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" +dependencies = [ + "encode_unicode", + "libc", + "unicode-width", + "windows-sys 0.61.2", +] + [[package]] name = "const-hex" version = "1.19.0" @@ -775,6 +787,15 @@ dependencies = [ "itertools 0.13.0", ] +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -1123,6 +1144,12 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "env_filter" version = "1.0.1" @@ -1472,7 +1499,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http", + "http 1.4.0", "indexmap", "slab", "tokio", @@ -1571,6 +1598,17 @@ dependencies = [ "windows-link", ] +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http" version = "1.4.0" @@ -1588,7 +1626,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http", + "http 1.4.0", ] [[package]] @@ -1599,7 +1637,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http", + "http 1.4.0", "http-body", "pin-project-lite", ] @@ -1658,7 +1696,7 @@ dependencies = [ "futures-channel", "futures-core", "h2", - "http", + "http 1.4.0", "http-body", "httparse", "httpdate", @@ -1675,14 +1713,14 @@ version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http", + "http 1.4.0", "hyper", "hyper-util", "rustls", "tokio", "tokio-rustls", "tower-service", - "webpki-roots", + "webpki-roots 1.0.7", ] [[package]] @@ -1708,7 +1746,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http", + "http 1.4.0", "http-body", "hyper", "ipnet", @@ -1848,6 +1886,19 @@ dependencies = [ "serde_core", ] +[[package]] +name = "indicatif" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb" +dependencies = [ + "console", + "portable-atomic", + "unicode-width", + "unit-prefix", + "web-time", +] + [[package]] name = "inout" version = "0.1.4" @@ -2042,7 +2093,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc88ff4688e43cc3fa9883a8a95c6fa27aa2e76c96e610b737b6554d650d7fd5" dependencies = [ - "http", + "http 1.4.0", "serde", "serde_json", "thiserror 2.0.18", @@ -3141,7 +3192,7 @@ dependencies = [ "base64", "bytes", "futures-core", - "http", + "http 1.4.0", "http-body", "http-body-util", "hyper", @@ -3167,7 +3218,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", + "webpki-roots 1.0.7", ] [[package]] @@ -3178,7 +3229,7 @@ checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" dependencies = [ "anyhow", "async-trait", - "http", + "http 1.4.0", "reqwest", "serde", "thiserror 1.0.69", @@ -3205,6 +3256,73 @@ dependencies = [ "solana-transaction-status", ] +[[package]] +name = "richat-cli" +version = "10.0.0" +dependencies = [ + "agave-geyser-plugin-interface", + "anyhow", + "clap", + "const-hex", + "futures", + "indicatif", + "jsonrpsee-types", + "maplit", + "prost 0.14.3", + "richat-client", + "richat-plugin-agave", + "richat-proto", + "richat-shared", + "rustls", + "serde", + "serde_json", + "serde_yaml", + "solana-account-decoder", + "solana-clock", + "solana-commitment-config", + "solana-hash", + "solana-message 3.1.0", + "solana-pubkey 4.2.0", + "solana-pubsub-client", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction 3.1.0", + "solana-transaction-status", + "tikv-jemallocator", + "tokio", + "tokio-tungstenite", + "tonic", + "tracing", +] + +[[package]] +name = "richat-client" +version = "9.0.0" +dependencies = [ + "anyhow", + "bytes", + "foldhash 0.2.0", + "futures", + "humantime-serde", + "pin-project-lite", + "prost 0.14.3", + "quinn", + "richat-proto", + "richat-shared", + "rustls", + "rustls-native-certs", + "rustls-pemfile", + "serde", + "solana-clock", + "thiserror 2.0.18", + "tokio", + "tonic", + "tonic-build 0.14.5", + "tonic-prost", + "tracing", + "webpki-roots 1.0.7", +] + [[package]] name = "richat-filter" version = "9.0.0" @@ -3234,7 +3352,7 @@ dependencies = [ name = "richat-metrics" version = "1.0.1" dependencies = [ - "http", + "http 1.4.0", "http-body-util", "hyper", "hyper-util", @@ -3410,7 +3528,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3705,6 +3823,17 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.10.7", +] + [[package]] name = "sha2" version = "0.10.9" @@ -4385,6 +4514,32 @@ dependencies = [ "solana-address 2.6.0", ] +[[package]] +name = "solana-pubsub-client" +version = "4.0.0-rc.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a996e62922602d7a3c9abe85879994025f2ca2004e909709d30fb182325a21d" +dependencies = [ + "crossbeam-channel", + "futures-util", + "http 0.2.12", + "log", + "semver", + "serde", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-pubkey 4.2.0", + "solana-rpc-client-types", + "solana-signature", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tungstenite", + "url", +] + [[package]] name = "solana-rent" version = "3.1.0" @@ -5335,6 +5490,26 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "tikv-jemalloc-sys" +version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + [[package]] name = "time" version = "0.3.47" @@ -5412,7 +5587,9 @@ dependencies = [ "bytes", "libc", "mio", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "socket2", "tokio-macros", "windows-sys 0.61.2", @@ -5450,6 +5627,22 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots 0.26.11", +] + [[package]] name = "tokio-util" version = "0.7.18" @@ -5550,7 +5743,7 @@ dependencies = [ "bytes", "flate2", "h2", - "http", + "http 1.4.0", "http-body", "http-body-util", "hyper", @@ -5651,7 +5844,7 @@ dependencies = [ "bitflags", "bytes", "futures-util", - "http", + "http 1.4.0", "http-body", "iri-string", "pin-project-lite", @@ -5753,6 +5946,26 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http 1.4.0", + "httparse", + "log", + "rand 0.9.4", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror 2.0.18", + "utf-8", + "webpki-roots 0.26.11", +] + [[package]] name = "typenum" version = "1.20.0" @@ -5783,12 +5996,24 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unit-prefix" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" + [[package]] name = "universal-hash" version = "0.5.1" @@ -5842,6 +6067,12 @@ dependencies = [ "serde", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -6058,6 +6289,15 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.7", +] + [[package]] name = "webpki-roots" version = "1.0.7" @@ -6168,6 +6408,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.60.2" diff --git a/Cargo.toml b/Cargo.toml index 61c1a291..bcbc8bd8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,10 +2,10 @@ resolver = "2" members = [ "benches", - # "cli", - # "client", + "cli", + "client", "filter", - # "metrics", + "metrics", "plugin-agave", "proto", # "richat", @@ -68,7 +68,7 @@ rayon = "1.10.0" rcgen = "0.14.0" regex = "1.11.1" richat-benches = { path = "benches", version = "1.0.0" } -# richat-client = { path = "client", version = "8.1.1" } +richat-client = { path = "client", version = "9.0.0" } richat-filter = { path = "filter", version = "9.0.0" } richat-metrics = { path = "metrics", version = "1.0.1" } richat-plugin-agave = { path = "plugin-agave", version = "9.0.0" } diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 1f36ff40..351a4e84 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "richat-cli" -version = "9.0.2" +version = "10.0.0" authors = { workspace = true } edition = { workspace = true } description = "Richat Cli Tool" @@ -32,13 +32,13 @@ solana-account-decoder = { workspace = true } solana-clock = { workspace = true } solana-commitment-config = { workspace = true } solana-hash = { workspace = true } -solana-message = { workspace = true } +solana-message-v3 = { workspace = true } solana-pubkey = { workspace = true } solana-pubsub-client = { workspace = true } solana-rpc-client-api = { workspace = true } solana-signature = { workspace = true } -solana-transaction = { workspace = true, features = ["dev-context-only-utils"] } solana-transaction-status = { workspace = true } +solana-transaction-v3 = { workspace = true, features = ["dev-context-only-utils"] } tikv-jemallocator = { workspace = true } tokio = { workspace = true } tokio-tungstenite = { workspace = true, features = ["rustls"] } diff --git a/cli/src/stream_richat.rs b/cli/src/stream_richat.rs index f57ad4d7..0153b90f 100644 --- a/cli/src/stream_richat.rs +++ b/cli/src/stream_richat.rs @@ -25,8 +25,9 @@ use { }, richat_shared::transports::{grpc::ConfigGrpcServer, quic::ConfigQuicServer}, solana_clock::Slot, - solana_message::{LegacyMessage, Message, SanitizedMessage}, - solana_transaction::sanitized::SanitizedTransaction, + solana_message_v3::{LegacyMessage, Message, SanitizedMessage}, + solana_transaction_status::TransactionWithStatusMeta, + solana_transaction_v3::sanitized::SanitizedTransaction, std::{collections::HashSet, net::SocketAddr, path::PathBuf, sync::Arc, time::Duration}, tonic::service::Interceptor, tracing::info, @@ -405,26 +406,28 @@ fn convert_prost_to_raw(msg: &SubscribeUpdate) -> anyhow::Result> transaction: Some(tx), slot, })) => { - let value = tx - .transaction - .clone() - .ok_or(anyhow::anyhow!("no tx message"))?; - let versioned_transaction = - convert_from::create_tx_versioned(value).map_err(|error| anyhow::anyhow!(error))?; - - let value = tx.meta.clone().ok_or(anyhow::anyhow!("no meta message"))?; - let transaction_status_meta = - convert_from::create_tx_meta(value).map_err(|error| anyhow::anyhow!(error))?; + let tx_with_meta = match convert_from::create_tx_with_meta(tx.clone()) + .map_err(|error| anyhow::anyhow!(error))? + { + TransactionWithStatusMeta::Complete(tx_with_meta) => tx_with_meta, + TransactionWithStatusMeta::MissingMetadata(_) => { + anyhow::bail!("missing transaction metadata") + } + }; + let versioned_transaction = tx_with_meta.transaction; + let transaction_status_meta = tx_with_meta.meta; + let signature = tx + .signature + .as_slice() + .try_into() + .context("failed to create signature")?; + let message_hash = versioned_transaction.message.hash(); let msg = ProtobufMessage::Transaction { slot: *slot, transaction: &ReplicaTransactionInfoV3 { - signature: &tx - .signature - .as_slice() - .try_into() - .context("failed to create signature")?, - message_hash: &versioned_transaction.message.hash(), + signature: &signature, + message_hash: &message_hash, is_vote: tx.is_vote, transaction: &versioned_transaction, transaction_status_meta: &transaction_status_meta, diff --git a/cli/src/track.rs b/cli/src/track.rs index 581f3c0c..21a4d7f8 100644 --- a/cli/src/track.rs +++ b/cli/src/track.rs @@ -137,10 +137,10 @@ impl ConfigSource { } } - if let UpdateOneof::Slot(SubscribeUpdateSlot { slot, status, .. }) = update { - if status == CommitmentLevel::Finalized as i32 { - storage.clear(slot); - } + if let UpdateOneof::Slot(SubscribeUpdateSlot { slot, status, .. }) = update + && status == CommitmentLevel::Finalized as i32 + { + storage.clear(slot); } } } diff --git a/client/Cargo.toml b/client/Cargo.toml index 47fc10e9..22b0ec0c 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "richat-client" -version = "8.1.1" +version = "9.0.0" authors = { workspace = true } edition = { workspace = true } description = "Richat Client Library" From b62ecc4bea11d420a53dc7ef6812c0a492dcfacd Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Mon, 4 May 2026 10:33:17 -0500 Subject: [PATCH 7/8] update richat --- CHANGELOG.md | 2 +- Cargo.lock | 282 ++++++++++++++++++++++++++++-- Cargo.toml | 3 +- richat/Cargo.toml | 5 +- richat/src/channel.rs | 155 ++++++++-------- richat/src/pubsub/filter.rs | 24 +-- richat/src/pubsub/notification.rs | 4 +- richat/src/pubsub/server.rs | 20 +-- richat/src/pubsub/solana.rs | 38 ++-- richat/src/pubsub/tracker.rs | 76 +++++--- richat/src/storage/mod.rs | 8 +- richat/src/storage/segments.rs | 20 +-- 12 files changed, 456 insertions(+), 181 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e399fd69..71cd1574 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ The minor version will be incremented upon a breaking change and the patch versi - richat-filter-v9.0.0 - richat-plugin-agave-v9.0.0 - richat-proto-v9.0.0 -- richat-v8.1.1 TODO! +- richat-v11.0.0 - richat-shared-v9.0.0 ### Breaking diff --git a/Cargo.lock b/Cargo.lock index 397474b5..cb7bad45 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -352,6 +352,12 @@ dependencies = [ "tower-service", ] +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + [[package]] name = "base64" version = "0.22.1" @@ -373,6 +379,24 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.117", +] + [[package]] name = "bitflags" version = "2.11.1" @@ -493,6 +517,16 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + [[package]] name = "cargo-lock" version = "11.0.1" @@ -529,6 +563,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.4" @@ -589,6 +632,17 @@ dependencies = [ "inout", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" version = "4.6.1" @@ -815,6 +869,15 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -1218,6 +1281,26 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +[[package]] +name = "fastwebsockets" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "305d3ba574508e27190906d11707dad683e0494e6b85eae9b044cb2734a5e422" +dependencies = [ + "base64 0.21.7", + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "pin-project", + "rand 0.8.6", + "sha1", + "simdutf8", + "thiserror 1.0.69", + "tokio", + "utf-8", +] + [[package]] name = "feature-probe" version = "0.1.1" @@ -1488,6 +1571,12 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + [[package]] name = "h2" version = "0.4.13" @@ -1742,7 +1831,7 @@ version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "futures-channel", "futures-util", @@ -2099,6 +2188,16 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "kanal" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3953adf0cd667798b396c2fa13552d6d9b3269d7dd1154c4c416442d1ff574" +dependencies = [ + "futures-core", + "lock_api", +] + [[package]] name = "keccak" version = "0.1.6" @@ -2137,12 +2236,48 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + [[package]] name = "libm" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" +[[package]] +name = "librocksdb-sys" +version = "0.17.3+10.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef2a00ee60fe526157c9023edab23943fae1ce2ab6f4abb2a807c1746835de9" +dependencies = [ + "bindgen", + "bzip2-sys", + "cc", + "libc", + "libz-sys", + "lz4-sys", + "zstd-sys", +] + +[[package]] +name = "libz-sys" +version = "1.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc3a226e576f50782b3305c5ccf458698f92798987f551c6a02efe8276721e22" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -2195,6 +2330,16 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "lz4-sys" +version = "1.11.1+lz4-1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "maplit" version = "1.0.2" @@ -2250,7 +2395,7 @@ version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db0d8f1fc9e62caebd0319e11eaec5822b0186c171568f0480b46a0137f9108" dependencies = [ - "base64", + "base64 0.22.1", "evmap", "indexmap", "metrics", @@ -2509,7 +2654,7 @@ version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ - "base64", + "base64 0.22.1", "serde_core", ] @@ -3189,7 +3334,7 @@ version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "futures-core", "http 1.4.0", @@ -3236,6 +3381,75 @@ dependencies = [ "tower-service", ] +[[package]] +name = "richat" +version = "11.0.0" +dependencies = [ + "affinity-linux", + "agave-reserved-account-keys", + "anyhow", + "arrayvec", + "cargo-lock", + "clap", + "crossbeam-queue", + "fastwebsockets", + "foldhash 0.2.0", + "futures", + "git-version", + "http-body-util", + "humantime-serde", + "hyper", + "hyper-util", + "jsonrpsee-types", + "kanal", + "maplit", + "metrics", + "metrics-exporter-prometheus", + "prost 0.14.3", + "prost-types 0.14.3", + "quanta", + "rayon", + "richat-client", + "richat-filter", + "richat-metrics", + "richat-proto", + "richat-shared", + "rocksdb", + "rustls", + "serde", + "serde_json", + "signal-hook 0.4.4", + "smallvec", + "solana-account 3.4.0", + "solana-account 4.3.0", + "solana-account-decoder", + "solana-clock", + "solana-commitment-config", + "solana-message 3.1.0", + "solana-message 4.1.1", + "solana-nohash-hasher", + "solana-pubkey 4.2.0", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction 3.1.0", + "solana-transaction 4.1.1", + "solana-transaction-error", + "solana-transaction-status", + "solana-version", + "spl-token-2022-interface", + "thiserror 2.0.18", + "tikv-jemallocator", + "tokio", + "tokio-rustls", + "tokio-util", + "tonic", + "tonic-build 0.14.5", + "tonic-prost", + "tracing", + "vergen", + "zstd", +] + [[package]] name = "richat-benches" version = "1.0.0" @@ -3328,7 +3542,7 @@ name = "richat-filter" version = "9.0.0" dependencies = [ "arrayvec", - "base64", + "base64 0.22.1", "bs58", "const-hex", "maplit", @@ -3432,7 +3646,7 @@ version = "9.0.0" dependencies = [ "affinity-linux", "anyhow", - "base64", + "base64 0.22.1", "bs58", "five8", "futures", @@ -3488,6 +3702,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rocksdb" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddb7af00d2b17dbd07d82c0063e25411959748ff03e8d4f96134c2ff41fce34f" +dependencies = [ + "libc", + "librocksdb-sys", +] + [[package]] name = "rustc-demangle" version = "0.1.27" @@ -3886,6 +4110,16 @@ dependencies = [ "signal-hook-registry", ] +[[package]] +name = "signal-hook" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a0c28ca5908dbdbcd52e6fdaa00358ab88637f8ab33e1f188dd510eb44b53d" +dependencies = [ + "libc", + "signal-hook-registry", +] + [[package]] name = "signal-hook-registry" version = "1.4.8" @@ -3911,6 +4145,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "siphasher" version = "1.0.3" @@ -3983,7 +4223,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b46a77a786c876cba3faff781288ae910723433fe90090d002fbacb7fbfaa4f" dependencies = [ "Inflector", - "base64", + "base64 0.22.1", "bincode", "bs58", "bv", @@ -4024,7 +4264,7 @@ version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "724476642226b22fb672c90c05c4a5b6a07a7c66ad89eb54ed92244511e88581" dependencies = [ - "base64", + "base64 0.22.1", "bs58", "serde", "serde_json", @@ -4381,7 +4621,7 @@ dependencies = [ "lazy_static", "libc", "log", - "signal-hook", + "signal-hook 0.3.18", ] [[package]] @@ -4428,6 +4668,12 @@ dependencies = [ "solana-define-syscall 5.1.0", ] +[[package]] +name = "solana-nohash-hasher" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" + [[package]] name = "solana-nonce" version = "3.2.0" @@ -4599,7 +4845,7 @@ version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "174c6e2de935b0c1cf30b007a02f1e1ae4ea62f3b8101502023b372325428757" dependencies = [ - "base64", + "base64 0.22.1", "bs58", "semver", "serde", @@ -4878,7 +5124,7 @@ version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" dependencies = [ - "base64", + "base64 0.22.1", "bincode", "lazy_static", "serde", @@ -4990,7 +5236,7 @@ checksum = "404b5057815311b17d79ebff956d366562d68a09d75313d0b64c5a71c4cafa7c" dependencies = [ "Inflector", "agave-reserved-account-keys", - "base64", + "base64 0.22.1", "bincode", "borsh", "bs58", @@ -5031,7 +5277,7 @@ version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14125d6b1dffa49b12adea3b763eff35ab83ad2aaff27dacee6ea2c9068a3256" dependencies = [ - "base64", + "base64 0.22.1", "bincode", "bs58", "serde", @@ -5107,7 +5353,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9602bcb1f7af15caef92b91132ec2347e1c51a72ecdbefdaefa3eac4b8711475" dependencies = [ "aes-gcm-siv", - "base64", + "base64 0.22.1", "bincode", "bytemuck", "bytemuck_derive", @@ -5739,7 +5985,7 @@ checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" dependencies = [ "async-trait", "axum", - "base64", + "base64 0.22.1", "bytes", "flate2", "h2", @@ -6091,6 +6337,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "vergen" version = "9.1.0" diff --git a/Cargo.toml b/Cargo.toml index bcbc8bd8..ef49b1ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ members = [ "metrics", "plugin-agave", "proto", - # "richat", + "richat", "shared", ] @@ -86,6 +86,7 @@ smallvec = "1.13.2" socket2 = "0.6.0" solana-account = "4.3.0" solana-account-decoder = "~4.0.0-rc.0" # agave repo +solana-account-v3 = { package = "solana-account", version = "3.4.0" } solana-clock = "3.0.1" solana-commitment-config = "3.1.1" solana-hash = "4.3.0" diff --git a/richat/Cargo.toml b/richat/Cargo.toml index eb0c1c5a..cd7d7dca 100644 --- a/richat/Cargo.toml +++ b/richat/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "richat" -version = "10.0.0" +version = "11.0.0" authors = { workspace = true } edition = { workspace = true } description = "Richat App" @@ -46,9 +46,11 @@ signal-hook = { workspace = true } smallvec = { workspace = true } solana-account = { workspace = true } solana-account-decoder = { workspace = true } +solana-account-v3 = { workspace = true } solana-clock = { workspace = true } solana-commitment-config = { workspace = true } solana-message = { workspace = true } +solana-message-v3 = { workspace = true } solana-nohash-hasher = { workspace = true } solana-pubkey = { workspace = true } solana-rpc-client-api = { workspace = true } @@ -56,6 +58,7 @@ solana-signature = { workspace = true } solana-transaction = { workspace = true } solana-transaction-error = { workspace = true } solana-transaction-status = { workspace = true } +solana-transaction-v3 = { workspace = true } solana-version = { workspace = true } spl-token-2022-interface = { workspace = true } thiserror = { workspace = true } diff --git a/richat/src/channel.rs b/richat/src/channel.rs index 1a03dd30..651d2d52 100644 --- a/richat/src/channel.rs +++ b/richat/src/channel.rs @@ -639,10 +639,10 @@ impl Sender { let block_message = slot_info.get_block_message(&message); for message in [Some(message), block_message].into_iter().flatten() { - if let Some(messages) = &mut replay.messages { - if !messages.insert(message.get_id(self.hasher.build_hasher())) { - continue; - } + if let Some(messages) = &mut replay.messages + && !messages.insert(message.get_id(self.hasher.build_hasher())) + { + continue; } // update metrics, push messages to confirmed / finalized @@ -683,11 +683,11 @@ impl Sender { // push messages to confirmed if msg.status() == SlotStatus::SlotConfirmed { self.slot_confirmed = slot; - if let Some(shared) = self.confirmed.as_mut() { - if let Some(slot_info) = self.slots.get(&slot) { - for message in slot_info.get_messages_cloned() { - shared.push(slot, message, None); - } + if let Some(shared) = self.confirmed.as_mut() + && let Some(slot_info) = self.slots.get(&slot) + { + for message in slot_info.get_messages_cloned() { + shared.push(slot, message, None); } } } @@ -697,38 +697,38 @@ impl Sender { clean_after_finalized = true; self.slot_finalized = slot; self.global_replay_from_slot.store(slot + 1); - if let Some(shared) = self.finalized.as_mut() { - if let Some(mut slot_info) = self.slots.remove(&slot) { - for message in slot_info.get_messages_owned() { - shared.push(slot, message, None); - } + if let Some(shared) = self.finalized.as_mut() + && let Some(mut slot_info) = self.slots.remove(&slot) + { + for message in slot_info.get_messages_owned() { + shared.push(slot, message, None); } } } } else { // push to confirmed (if we received SlotStatus or message after it) - if slot <= self.slot_confirmed { - if let Some(shared) = self.confirmed.as_mut() { - shared.push(slot, message.clone(), None); - } + if slot <= self.slot_confirmed + && let Some(shared) = self.confirmed.as_mut() + { + shared.push(slot, message.clone(), None); } } // push to storage let mut replay_index = None; - if let Some(storage) = &self.storage { - if !matches!(&message, ParsedMessage::Block(_)) { - storage.push_message( - slot_init, - slot, - slot_index_head, - self.index, - message.clone(), - ); - slot_init = false; - replay_index = Some(self.index); - self.index += 1; - } + if let Some(storage) = &self.storage + && !matches!(&message, ParsedMessage::Block(_)) + { + storage.push_message( + slot_init, + slot, + slot_index_head, + self.index, + message.clone(), + ); + slot_init = false; + replay_index = Some(self.index); + self.index += 1; } // push to processed @@ -754,16 +754,16 @@ impl Sender { } } while replay_lock.len() > self.storage_max_slots { - if let Some((slot, _replay)) = replay_lock.pop_first() { - if let Some(storage) = &self.storage { - let until = replay_lock - .values() - .take(300) - .map(|replay| replay.head) - .min(); - - storage.trim_messages(slot, until); - } + if let Some((slot, _replay)) = replay_lock.pop_first() + && let Some(storage) = &self.storage + { + let until = replay_lock + .values() + .take(300) + .map(|replay| replay.head) + .min(); + + storage.trim_messages(slot, until); } } } @@ -1173,13 +1173,13 @@ impl SlotInfo { fn get_block_message(&mut self, message: &ParsedMessage) -> Option { // mark as landed - if let ParsedMessage::Slot(message) = message { - if matches!( + if let ParsedMessage::Slot(message) = message + && matches!( message.status(), SlotStatus::SlotConfirmed | SlotStatus::SlotFinalized - ) { - self.landed = true; - } + ) + { + self.landed = true; } // report error if block already created @@ -1247,38 +1247,37 @@ impl SlotInfo { } // attempt to create Block - if let Some(block_meta) = &self.block_meta { - if block_meta.executed_transaction_count() as usize == self.transactions_count - && block_meta.entries_count() as usize == self.entries_count - { - self.block_created = true; - - let accounts = self - .messages - .iter() - .filter_map(|item| item.as_ref().and_then(|item| item.get_account())) - .collect(); - let transactions = self - .messages - .iter() - .filter_map(|item| item.as_ref().and_then(|item| item.get_transaction())) - .collect(); - let entries = self - .messages - .iter() - .filter_map(|item| item.as_ref().and_then(|item| item.get_entry())) - .collect(); - let block = ParsedMessage::Block(Arc::new(Message::unchecked_create_block( - accounts, - transactions, - entries, - Arc::clone(block_meta), - block_meta.created_at(), - ))); - self.messages.push(Some(block.clone())); - - return Some(block); - } + if let Some(block_meta) = &self.block_meta + && block_meta.executed_transaction_count() as usize == self.transactions_count + && block_meta.entries_count() as usize == self.entries_count + { + self.block_created = true; + + let accounts = self + .messages + .iter() + .filter_map(|item| item.as_ref().and_then(|item| item.get_account())) + .collect(); + let transactions = self + .messages + .iter() + .filter_map(|item| item.as_ref().and_then(|item| item.get_transaction())) + .collect(); + let entries = self + .messages + .iter() + .filter_map(|item| item.as_ref().and_then(|item| item.get_entry())) + .collect(); + let block = ParsedMessage::Block(Arc::new(Message::unchecked_create_block( + accounts, + transactions, + entries, + Arc::clone(block_meta), + block_meta.created_at(), + ))); + self.messages.push(Some(block.clone())); + + return Some(block); } None diff --git a/richat/src/pubsub/filter.rs b/richat/src/pubsub/filter.rs index 055073c7..c8ff69f5 100644 --- a/richat/src/pubsub/filter.rs +++ b/richat/src/pubsub/filter.rs @@ -37,22 +37,22 @@ impl Hash for TransactionFilter { impl TransactionFilter { pub fn matches(&self, message: &MessageTransaction) -> bool { - if let Some(vote) = self.vote { - if vote != message.vote() { - return false; - } + if let Some(vote) = self.vote + && vote != message.vote() + { + return false; } - if let Some(failed) = self.failed { - if failed != message.failed() { - return false; - } + if let Some(failed) = self.failed + && failed != message.failed() + { + return false; } - if let Some(filter_signature) = &self.signature { - if filter_signature.as_ref() != message.signature_ref() { - return false; - } + if let Some(filter_signature) = &self.signature + && filter_signature.as_ref() != message.signature_ref() + { + return false; } if !self.account_include.is_empty() diff --git a/richat/src/pubsub/notification.rs b/richat/src/pubsub/notification.rs index aaabc501..dd69ee94 100644 --- a/richat/src/pubsub/notification.rs +++ b/richat/src/pubsub/notification.rs @@ -10,9 +10,8 @@ use { richat_shared::five8::signature_encode, serde::Serialize, solana_clock::Slot, - solana_message::{VersionedMessage, v0::LoadedMessage}, + solana_message_v3::{VersionedMessage, v0::LoadedMessage}, solana_rpc_client_api::response::{Response as RpcResponse, RpcResponseContext}, - solana_transaction::versioned::TransactionVersion, solana_transaction_status::{ BlockEncodingOptions, EncodeError, EncodedTransaction, EncodedTransactionWithStatusMeta, TransactionDetails, TransactionStatusMeta, UiAccountsList, UiConfirmedBlock, @@ -20,6 +19,7 @@ use { option_serializer::OptionSerializer, parse_accounts::{parse_legacy_message_accounts, parse_v0_message_accounts}, }, + solana_transaction_v3::versioned::TransactionVersion, std::{ collections::VecDeque, sync::{Arc, Weak}, diff --git a/richat/src/pubsub/server.rs b/richat/src/pubsub/server.rs index 52279d0d..57d49a49 100644 --- a/richat/src/pubsub/server.rs +++ b/richat/src/pubsub/server.rs @@ -311,7 +311,7 @@ impl PubSubServer { let version = solana_version::Version::default(); Ok(serde_json::to_value(&RpcVersionInfo { solana_core: version.to_string(), - feature_set: Some(version.feature_set), + feature_set: Some(version.feature_set()), }) .expect("json serialization never fail")) }, @@ -383,15 +383,15 @@ impl PubSubServer { }, message = notifications.recv() => match message { Ok(notification) if subscriptions.contains_key(¬ification.subscription_id) => { - if notification.is_final { - if let Some(method) = subscriptions.remove(¬ification.subscription_id) { - gauge!( - metrics::PUBSUB_SUBSCRIPTIONS_TOTAL, - "x_subscription_id" => Arc::clone(&x_subscription_id), - "method" => method.as_str() - ) - .decrement(1); - } + if notification.is_final + && let Some(method) = subscriptions.remove(¬ification.subscription_id) + { + gauge!( + metrics::PUBSUB_SUBSCRIPTIONS_TOTAL, + "x_subscription_id" => Arc::clone(&x_subscription_id), + "method" => method.as_str() + ) + .decrement(1); } match notification.json.upgrade() { diff --git a/richat/src/pubsub/solana.rs b/richat/src/pubsub/solana.rs index 496e42a5..c88eb7ad 100644 --- a/richat/src/pubsub/solana.rs +++ b/richat/src/pubsub/solana.rs @@ -514,13 +514,13 @@ impl SubscribeConfig { message.account_keys().iter().any(|key| key == pubkey) } }; - if filtered { - if let (Ok(error), Ok(tx_meta)) = ( + if filtered + && let (Ok(error), Ok(tx_meta)) = ( convert_from::create_tx_error(message.error().as_ref()), message.transaction_meta(), - ) { - return Some((error, tx_meta.log_messages.clone())); - } + ) + { + return Some((error, tx_meta.log_messages.clone())); } } None @@ -632,12 +632,12 @@ fn param_filters( if let Err(error) = filter.verify() { return Err(invalid_params(error.to_string())); } - if let RpcFilterType::Memcmp(memcmp) = &mut filter { - if let Err(error) = memcmp.convert_to_raw_bytes() { - return Err(invalid_params(format!( - "Invalid Request: failed to decode memcmp filter: {error}" - ))); - } + if let RpcFilterType::Memcmp(memcmp) = &mut filter + && let Err(error) = memcmp.convert_to_raw_bytes() + { + return Err(invalid_params(format!( + "Invalid Request: failed to decode memcmp filter: {error}" + ))); } verified_filters.push(filter); } @@ -657,14 +657,14 @@ where } fn expect_no_params(params: Option>) -> Result<(), ErrorObjectOwned> { - if let Some(params) = params { - if params.get().trim() != "[]" { - return Err(ErrorObject::owned( - ErrorCode::InvalidParams.code(), - "Invalid parameters: No parameters were expected", - Some(format!("{params:?}")), - )); - } + if let Some(params) = params + && params.get().trim() != "[]" + { + return Err(ErrorObject::owned( + ErrorCode::InvalidParams.code(), + "Invalid parameters: No parameters were expected", + Some(format!("{params:?}")), + )); } Ok(()) diff --git a/richat/src/pubsub/tracker.rs b/richat/src/pubsub/tracker.rs index 317fd782..ff1786f2 100644 --- a/richat/src/pubsub/tracker.rs +++ b/richat/src/pubsub/tracker.rs @@ -17,13 +17,15 @@ use { ThreadPoolBuilder, iter::{IntoParallelIterator, ParallelIterator}, }, - richat_filter::message::{MessageSlot, MessageTransaction}, + richat_filter::message::{MessageAccount, MessageSlot, MessageTransaction}, richat_proto::{convert_from, geyser::SlotStatus}, richat_shared::five8::{pubkey_encode, signature_encode}, solana_account_decoder::encode_ui_account, + solana_account_v3::ReadableAccount as StatusReadableAccount, solana_clock::Slot, solana_commitment_config::CommitmentLevel, solana_nohash_hasher::IntMap, + solana_pubkey::Pubkey, solana_rpc_client_api::response::{ ProcessedSignatureResult, RpcKeyedAccount, RpcLogsResponse, RpcSignatureResult, SlotInfo, SlotTransactionStats, SlotUpdate, @@ -39,6 +41,30 @@ use { tokio::sync::oneshot, }; +struct UiReadableAccount<'a>(&'a MessageAccount); + +impl StatusReadableAccount for UiReadableAccount<'_> { + fn lamports(&self) -> u64 { + solana_account::ReadableAccount::lamports(self.0) + } + + fn data(&self) -> &[u8] { + solana_account::ReadableAccount::data(self.0) + } + + fn owner(&self) -> &Pubkey { + solana_account::ReadableAccount::owner(self.0) + } + + fn executable(&self) -> bool { + solana_account::ReadableAccount::executable(self.0) + } + + fn rent_epoch(&self) -> u64 { + solana_account::ReadableAccount::rent_epoch(self.0) + } +} + #[allow(clippy::large_enum_variant)] #[derive(Debug)] pub enum ClientRequest { @@ -154,24 +180,18 @@ impl Subscriptions { signature, commitment, } = &config + && let Some((slot, err)) = signatures.get(signature, commitment.commitment) { - if let Some((slot, err)) = signatures.get(signature, commitment.commitment) { - is_final = true; - let json = RpcNotification::serialize_with_context( - "signatureNotification", - subscription_id, - slot, - RpcSignatureResult::ProcessedSignature(ProcessedSignatureResult { - err: err.map(Into::into), - }), - ); - notifications.push( - subscription_id, - SubscribeMethod::Signature, - is_final, - json, - ); - } + is_final = true; + let json = RpcNotification::serialize_with_context( + "signatureNotification", + subscription_id, + slot, + RpcSignatureResult::ProcessedSignature(ProcessedSignatureResult { + err: err.map(Into::into), + }), + ); + notifications.push(subscription_id, SubscribeMethod::Signature, is_final, json); } if !is_final { @@ -365,10 +385,10 @@ pub fn subscriptions_worker( if let Some(message) = receiver.try_recv(commitment, *head)? { *head += 1; // ignore Slot messages for any commitment except processed - if commitment != CommitmentLevel::Processed { - if let ParsedMessage::Slot(_) = &message { - continue; - } + if commitment != CommitmentLevel::Processed + && let ParsedMessage::Slot(_) = &message + { + continue; } messages.push(message); } else { @@ -376,8 +396,8 @@ pub fn subscriptions_worker( } } for message in messages.iter() { - if commitment == CommitmentLevel::Processed { - if let Some((message, stats)) = match &message { + if commitment == CommitmentLevel::Processed + && let Some((message, stats)) = match &message { ParsedMessage::Slot(message) if message.status() == SlotStatus::SlotProcessed => { @@ -437,9 +457,9 @@ pub fn subscriptions_worker( ) } _ => None, - } { - messages_extra.push((message, stats)); } + { + messages_extra.push((message, stats)); } for method in SubscribeMethod::get_message_methods(message) { @@ -484,7 +504,7 @@ pub fn subscriptions_worker( message.slot(), encode_ui_account( message.pubkey(), - message.as_ref(), + &UiReadableAccount(message.as_ref()), encoding, None, data_slice, @@ -505,7 +525,7 @@ pub fn subscriptions_worker( pubkey: pubkey_encode(&(*message.pubkey()).to_bytes()), // TODO: use `.as_bytes()` from 2.2 account: encode_ui_account( message.pubkey(), - message.as_ref(), + &UiReadableAccount(message.as_ref()), encoding, None, data_slice, diff --git a/richat/src/storage/mod.rs b/richat/src/storage/mod.rs index 852c44fc..5729cb69 100644 --- a/richat/src/storage/mod.rs +++ b/richat/src/storage/mod.rs @@ -404,10 +404,10 @@ impl ReplayQueue { fn pop_next(queue: &Mutex, prev_request: Option) -> Option { let mut locked = mutex_lock(queue); - if locked.len > 0 { - if let Some(request) = prev_request { - locked.requests.push_back(request); - } + if locked.len > 0 + && let Some(request) = prev_request + { + locked.requests.push_back(request); } locked.requests.pop_front() } diff --git a/richat/src/storage/segments.rs b/richat/src/storage/segments.rs index 9cfdb797..496928c1 100644 --- a/richat/src/storage/segments.rs +++ b/richat/src/storage/segments.rs @@ -303,10 +303,10 @@ impl PendingChunkMeta { first_index: head, }); } - if let ParsedMessage::Slot(message) = message { - if message.status() == SlotStatus::SlotFinalized { - self.pending_finalized.insert(slot); - } + if let ParsedMessage::Slot(message) = message + && message.status() == SlotStatus::SlotFinalized + { + self.pending_finalized.insert(slot); } self.record_count += 1; @@ -785,12 +785,12 @@ impl SegmentWriter { let mut updated_slots = Vec::with_capacity(pending_finalized.len()); for slot in pending_finalized { - if let Some(meta) = catalog.slots.get(slot) { - if !new_slots.iter().any(|new_meta| new_meta.slot == *slot) { - let mut meta = *meta; - meta.finalized = true; - updated_slots.push(meta); - } + if let Some(meta) = catalog.slots.get(slot) + && !new_slots.iter().any(|new_meta| new_meta.slot == *slot) + { + let mut meta = *meta; + meta.finalized = true; + updated_slots.push(meta); } } From a9e699bb6d949c4c09a971f27c88c05c1b398969 Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Mon, 4 May 2026 10:34:12 -0500 Subject: [PATCH 8/8] update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71cd1574..ac5c44eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,7 @@ The minor version will be incremented upon a breaking change and the patch versi ### Breaking -- richat: upgrade to agave 4.0 ([#210](https://github.com/lamports-dev/richat/pull/210)) +- richat: upgrade to agave 4.0 ([#211](https://github.com/lamports-dev/richat/pull/211)) ## 2026-04-30