From 3b21ebcf12bf1a6ec8948df9b66de978b47d1e00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Guimar=C3=A3es?= Date: Mon, 8 Jun 2026 18:11:52 -0300 Subject: [PATCH 1/4] feat(solana-indexer): traits/ module (port the three traits) Introduces the traits/ module per the PR-sequence plan. The trait surface is intentionally narrow: it covers only what the consumer components need, not the full surface of the underlying library. traits/store.rs: - Store (PostgreSQL boundary) traits/solana_client.rs: - SolanaClient (RPC boundary) We don't need a trait to represent the Yelllowstone gRPC system boundary because that can be represented by a trait bound in the (upcoming) Ingester struct implementation. --- Cargo.lock | 2136 +++++++++++++++-- Cargo.toml | 1 + crates/solana-indexer/Cargo.toml | 1 + crates/solana-indexer/src/lib.rs | 4 + crates/solana-indexer/src/traits/mod.rs | 4 + .../src/traits/solana_client.rs | 41 + crates/solana-indexer/src/traits/store.rs | 73 + crates/solana-indexer/src/types/channel.rs | 4 +- crates/solana-indexer/src/types/recovery.rs | 7 +- 9 files changed, 2078 insertions(+), 193 deletions(-) create mode 100644 crates/solana-indexer/src/traits/mod.rs create mode 100644 crates/solana-indexer/src/traits/solana_client.rs create mode 100644 crates/solana-indexer/src/traits/store.rs diff --git a/Cargo.lock b/Cargo.lock index a0716cc82c..692cdd8b79 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,16 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + [[package]] name = "account-balances" version = "0.1.0" @@ -39,6 +49,70 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common 0.1.7", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.17", +] + +[[package]] +name = "aes-gcm-siv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] + +[[package]] +name = "agave-feature-set" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde74a2d1f2f99a3ea59938d1533c7973c344e47d24c1b645ee81e958c54226a" +dependencies = [ + "ahash", + "solana-epoch-schedule", + "solana-hash 4.2.0", + "solana-keypair", + "solana-pubkey 4.1.0", + "solana-sha256-hasher", + "solana-svm-feature-set", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.4" @@ -393,7 +467,7 @@ dependencies = [ "async-stream", "async-trait", "auto_impl", - "dashmap", + "dashmap 6.1.0", "either", "futures", "futures-utils-wasm", @@ -863,9 +937,9 @@ dependencies = [ [[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 = "app-data" @@ -885,9 +959,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.8.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d03449bb8ca2cc2ef70869af31463d1ae5ccc8fa3e334b307203fbf815207e" +checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" dependencies = [ "rustversion", ] @@ -903,7 +977,7 @@ dependencies = [ "ark-serialize 0.3.0", "ark-std 0.3.0", "derivative", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version 0.3.3", @@ -923,7 +997,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version 0.4.1", @@ -944,7 +1018,7 @@ dependencies = [ "digest 0.10.7", "educe", "itertools 0.13.0", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "zeroize", @@ -986,7 +1060,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "quote", "syn 1.0.109", @@ -998,7 +1072,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -1011,7 +1085,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -1036,7 +1110,7 @@ checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-std 0.4.0", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", ] [[package]] @@ -1048,7 +1122,7 @@ dependencies = [ "ark-std 0.5.0", "arrayvec", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", ] [[package]] @@ -1096,6 +1170,51 @@ dependencies = [ "serde", ] +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "asn1-rs" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f43a50ac4fdca5df8e885c21b835997f0a1cdee65494a6847694a98652d9d8" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror 2.0.18", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "async-compression" version = "0.4.37" @@ -1253,7 +1372,7 @@ dependencies = [ "const-hex", "contracts", "cow-amm", - "dashmap", + "dashmap 6.1.0", "database", "derive_more 1.0.0", "eth-domain-types", @@ -1271,7 +1390,7 @@ dependencies = [ "mimalloc", "mockall", "model", - "num", + "num 0.4.3", "number", "observe", "order-validation", @@ -1937,6 +2056,12 @@ dependencies = [ "match-lookup", ] +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64" version = "0.21.7" @@ -1979,7 +2104,7 @@ checksum = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695" dependencies = [ "autocfg", "libm", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "serde", @@ -2184,6 +2309,9 @@ name = "bytemuck" version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +dependencies = [ + "bytemuck_derive", +] [[package]] name = "bytemuck_derive" @@ -2258,6 +2386,15 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "caps" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd1ddba47aba30b6a889298ad0109c3b8dcb0e8fc993b459daa7067d46f865e0" +dependencies = [ + "libc", +] + [[package]] name = "cc" version = "1.2.52" @@ -2288,6 +2425,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "cfg_eval" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "chacha20" version = "0.10.0" @@ -2320,6 +2468,16 @@ dependencies = [ "windows-link", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common 0.1.7", + "inout", +] + [[package]] name = "clap" version = "4.5.54" @@ -2432,6 +2590,19 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + [[package]] name = "combine" version = "4.6.7" @@ -2490,6 +2661,18 @@ dependencies = [ "url", ] +[[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 = "console-api" version = "0.7.0" @@ -3648,6 +3831,16 @@ 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" @@ -3697,6 +3890,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", + "rand_core 0.6.4", "typenum", ] @@ -3709,6 +3903,15 @@ dependencies = [ "hybrid-array", ] +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + [[package]] name = "ctutils" version = "0.4.2" @@ -3731,6 +3934,7 @@ dependencies = [ "fiat-crypto", "rand_core 0.6.4", "rustc_version 0.4.1", + "serde", "subtle", "zeroize", ] @@ -3816,6 +4020,19 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "dashmap" version = "6.1.0" @@ -3884,6 +4101,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der-parser" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint 0.4.6", + "num-traits", + "rusticata-macros", +] + [[package]] name = "deranged" version = "0.5.5" @@ -3999,6 +4230,29 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "dlopen2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "document-features" version = "0.2.12" @@ -4041,7 +4295,7 @@ dependencies = [ "const-hex", "contracts", "cow-amm", - "dashmap", + "dashmap 6.1.0", "derive_more 1.0.0", "eth-domain-types", "ethrpc", @@ -4058,7 +4312,7 @@ dependencies = [ "mimalloc", "model", "moka", - "num", + "num 0.4.3", "number", "observe", "price-estimation", @@ -4247,6 +4501,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "encoding_rs" version = "0.8.35" @@ -4311,7 +4571,7 @@ dependencies = [ "alloy-primitives", "alloy-rpc-types", "derive_more 1.0.0", - "num", + "num 0.4.3", "number", ] @@ -4396,6 +4656,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "fastbloom" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7f34442dbe69c60fe8eaf58a8cafff81a1f278816d8ab4db255b3bef4ac3c4" +dependencies = [ + "getrandom 0.3.4", + "libm", + "rand 0.9.4", + "siphasher 1.0.3", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -4577,9 +4849,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[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", @@ -4592,9 +4864,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", @@ -4602,15 +4874,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", @@ -4630,15 +4902,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", @@ -4647,15 +4919,15 @@ 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-timer" @@ -4665,9 +4937,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[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", @@ -4677,7 +4949,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -4719,6 +4990,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix", + "windows-link", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -4821,6 +5102,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -4912,6 +5202,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +[[package]] +name = "histogram" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" + [[package]] name = "hkdf" version = "0.12.4" @@ -5103,6 +5399,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", + "webpki-roots 1.0.6", ] [[package]] @@ -5148,7 +5445,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.1", + "socket2 0.5.10", "system-configuration", "tokio", "tower-service", @@ -5337,6 +5634,28 @@ 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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + [[package]] name = "instant" version = "0.1.13" @@ -5435,7 +5754,7 @@ checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", "cfg-if", - "combine", + "combine 4.6.7", "jni-sys", "log", "thiserror 1.0.69", @@ -5469,6 +5788,21 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + [[package]] name = "k256" version = "0.13.4" @@ -5520,9 +5854,9 @@ 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" @@ -5589,7 +5923,7 @@ dependencies = [ "maplit", "mockall", "model", - "num", + "num 0.4.3", "number", "observe", "prometheus", @@ -5738,8 +6072,20 @@ dependencies = [ ] [[package]] -name = "mimalloc" -version = "0.1.48" +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "mimalloc" +version = "0.1.48" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1ee66a4b64c74f4ef288bcbb9192ad9c3feaad75193129ac8509af543894fd8" dependencies = [ @@ -5823,7 +6169,7 @@ dependencies = [ "derive_more 1.0.0", "hex-literal", "maplit", - "num", + "num 0.4.3", "number", "serde", "serde-ext", @@ -5888,6 +6234,19 @@ dependencies = [ "tempfile", ] +[[package]] +name = "nix" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + [[package]] name = "nkeys" version = "0.4.5" @@ -5931,17 +6290,42 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex 0.2.4", + "num-integer", + "num-iter", + "num-rational 0.2.4", + "num-traits", +] + [[package]] name = "num" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ - "num-bigint", - "num-complex", + "num-bigint 0.4.6", + "num-complex 0.4.6", "num-integer", "num-iter", - "num-rational", + "num-rational 0.4.2", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", "num-traits", ] @@ -5971,6 +6355,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + [[package]] name = "num-complex" version = "0.4.6" @@ -5986,6 +6380,17 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -6006,13 +6411,25 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "num-traits", +] + [[package]] name = "num-rational" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", ] @@ -6075,7 +6492,7 @@ dependencies = [ "alloy-primitives", "anyhow", "bigdecimal", - "num", + "num 0.4.3", "ruint", "serde", "serde_with", @@ -6136,6 +6553,15 @@ dependencies = [ "url", ] +[[package]] +name = "oid-registry" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" +dependencies = [ + "asn1-rs", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -6148,6 +6574,12 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "openssl" version = "0.10.75" @@ -6325,7 +6757,7 @@ dependencies = [ "mockall", "model", "multibase", - "num", + "num 0.4.3", "number", "observe", "order-validation", @@ -6448,6 +6880,15 @@ dependencies = [ "hmac", ] +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -6463,6 +6904,15 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num 0.2.1", +] + [[package]] name = "pest" version = "2.8.5" @@ -6553,6 +7003,18 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "opaque-debug", + "universal-hash", +] + [[package]] name = "portable-atomic" version = "1.13.0" @@ -6583,7 +7045,7 @@ dependencies = [ "anyhow", "backtrace", "flate2", - "num", + "num 0.4.3", "paste", "prost 0.13.5", ] @@ -6653,7 +7115,7 @@ dependencies = [ "configs", "const-hex", "contracts", - "dashmap", + "dashmap 6.1.0", "derive_more 1.0.0", "ethrpc", "futures", @@ -6667,7 +7129,7 @@ dependencies = [ "mockall", "model", "moka", - "num", + "num 0.4.3", "number", "observe", "prometheus", @@ -7052,7 +7514,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.6.1", + "socket2 0.5.10", "thiserror 2.0.18", "tokio", "tracing", @@ -7067,6 +7529,7 @@ checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ "aws-lc-rs", "bytes", + "fastbloom", "getrandom 0.3.4", "lru-slab", "rand 0.9.4", @@ -7074,6 +7537,7 @@ dependencies = [ "rustc-hash", "rustls", "rustls-pki-types", + "rustls-platform-verifier", "slab", "thiserror 2.0.18", "tinyvec", @@ -7090,7 +7554,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.1", + "socket2 0.5.10", "tracing", "windows-sys 0.60.2", ] @@ -7239,6 +7703,26 @@ dependencies = [ "tracing", ] +[[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 = "redox_syscall" version = "0.5.18" @@ -7376,16 +7860,21 @@ dependencies = [ "http-body 1.0.1", "http-body-util", "hyper 1.8.1", + "hyper-rustls", "hyper-util", "js-sys", "log", "percent-encoding", "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 1.0.2", "tokio", + "tokio-rustls", "tower 0.5.3", "tower-http", "tower-service", @@ -7393,6 +7882,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "webpki-roots 1.0.6", ] [[package]] @@ -7442,6 +7932,21 @@ dependencies = [ "web-sys", ] +[[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 0.12.28", + "serde", + "thiserror 1.0.69", + "tower-service", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -7547,7 +8052,7 @@ dependencies = [ "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "parity-scale-codec", @@ -7617,6 +8122,15 @@ dependencies = [ "semver 1.0.27", ] +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + [[package]] name = "rustix" version = "1.1.3" @@ -8138,7 +8652,7 @@ dependencies = [ "configs", "const-hex", "contracts", - "dashmap", + "dashmap 6.1.0", "database", "derive_more 1.0.0", "ethrpc", @@ -8153,7 +8667,7 @@ dependencies = [ "mockall", "model", "moka", - "num", + "num 0.4.3", "number", "observe", "order-validation", @@ -8333,19 +8847,37 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "solana-account" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc0ed36decb689413b9da5d57f2be49eea5bebb3cf7897015167b0c4336e731" +dependencies = [ + "bincode", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-instruction-error", + "solana-pubkey 4.1.0", + "solana-sdk-ids", + "solana-sysvar 3.1.1", ] [[package]] name = "solana-account" -version = "4.3.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c1b95bd432efb92837bc38001365e5acb5c0175b199bc447b08a8c320ecf6c" +checksum = "862b95723ec6f2a27451d2fc7f4f8cf1f80a79627dcfed63879aac4ea5fe3bc2" dependencies = [ "bincode", "serde", @@ -8354,9 +8886,66 @@ dependencies = [ "solana-account-info", "solana-clock", "solana-instruction-error", - "solana-pubkey 4.2.0", + "solana-pubkey 4.1.0", + "solana-sdk-ids", + "solana-sysvar 4.0.0", +] + +[[package]] +name = "solana-account-decoder" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff1acff600a621d4445e0610fa71a53bef5390a5e349cfbd30651917593fb57d" +dependencies = [ + "Inflector", + "base64 0.22.1", + "bincode", + "bs58", + "bv", + "serde", + "serde_json", + "solana-account 3.4.0", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-config-interface", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-instruction", + "solana-loader-v3-interface", + "solana-nonce", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 4.1.0", + "solana-rent 3.1.0", "solana-sdk-ids", - "solana-sysvar", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-sysvar 3.1.1", + "solana-vote-interface", + "spl-generic-token", + "spl-token-2022-interface", + "spl-token-group-interface", + "spl-token-interface", + "spl-token-metadata-interface", + "thiserror 2.0.18", + "zstd", +] + +[[package]] +name = "solana-account-decoder-client-types" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb23fe4d32da6381b9a2b1b285c28fb5c9dc29cbbab40c9c1de24d8a2c5086bd" +dependencies = [ + "base64 0.22.1", + "bs58", + "serde", + "serde_json", + "solana-account 3.4.0", + "solana-pubkey 4.1.0", + "zstd", ] [[package]] @@ -8367,7 +8956,7 @@ checksum = "a9cf16495d9eb53e3d04e72366a33bb1c20c24e78c171d8b8f5978357b63ae95" dependencies = [ "bincode", "serde_core", - "solana-address 2.6.1", + "solana-address 2.5.0", "solana-program-error", "solana-program-memory", ] @@ -8378,14 +8967,14 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" dependencies = [ - "solana-address 2.6.1", + "solana-address 2.5.0", ] [[package]] name = "solana-address" -version = "2.6.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c93e262f671bf402e1040e4a7e40b05d81da5956c7681948c975a0997517bb" +checksum = "5f08236dacd0e6dc8234becef58e27c8567856644ef509d7e97957d55a91dc72" dependencies = [ "borsh", "bytemuck", @@ -8399,12 +8988,31 @@ dependencies = [ "sha2-const-stable", "solana-atomic-u64", "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e8df0b083c10ce32490410f3795016b1b5d9b4d094658c0a5e496753645b7cd" +dependencies = [ + "bincode", + "bytemuck", + "serde", + "serde_derive", + "solana-clock", + "solana-instruction", + "solana-instruction-error", + "solana-pubkey 4.1.0", + "solana-sdk-ids", + "solana-slot-hashes", +] + [[package]] name = "solana-atomic-u64" version = "3.0.1" @@ -8420,7 +9028,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "solana-define-syscall 3.0.0", ] @@ -8433,7 +9041,7 @@ checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" dependencies = [ "blake3", "solana-define-syscall 4.0.1", - "solana-hash 4.4.0", + "solana-hash 4.2.0", ] [[package]] @@ -8445,6 +9053,75 @@ dependencies = [ "borsh", ] +[[package]] +name = "solana-client" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f316a7ffb4eb715e1561237b87d51c1ec01275c331308ec9c7ab44f9ad23cc" +dependencies = [ + "async-trait", + "bincode", + "dashmap 5.5.3", + "futures", + "futures-util", + "indexmap 2.13.0", + "indicatif", + "log", + "quinn", + "rayon", + "solana-account 3.4.0", + "solana-client-traits", + "solana-commitment-config", + "solana-connection-cache", + "solana-epoch-info", + "solana-hash 4.2.0", + "solana-instruction", + "solana-keypair", + "solana-measure", + "solana-message 3.1.0", + "solana-net-utils", + "solana-pubkey 4.1.0", + "solana-pubsub-client", + "solana-quic-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-rpc-client-nonce-utils", + "solana-signature", + "solana-signer", + "solana-streamer", + "solana-time-utils", + "solana-tls-utils", + "solana-tpu-client", + "solana-transaction 3.1.0", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-udp-client", + "thiserror 2.0.18", + "tokio", + "tokio-util", +] + +[[package]] +name = "solana-client-traits" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08618ed587e128105510c54ae3e456b9a06d674d8640db75afe66dad65cb4e02" +dependencies = [ + "solana-account 3.4.0", + "solana-commitment-config", + "solana-epoch-info", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keypair", + "solana-message 3.1.0", + "solana-pubkey 3.0.0", + "solana-signature", + "solana-signer", + "solana-system-interface 2.0.0", + "solana-transaction 3.1.0", + "solana-transaction-error", +] + [[package]] name = "solana-clock" version = "3.1.0" @@ -8459,21 +9136,94 @@ dependencies = [ ] [[package]] -name = "solana-cpi" +name = "solana-cluster-type" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" +checksum = "3a494cf8eda7d98d9f0144b288bb409c88308d2e86f15cc1045aa77b83304718" dependencies = [ - "solana-account-info", - "solana-define-syscall 4.0.1", - "solana-instruction", - "solana-program-error", - "solana-pubkey 4.2.0", - "solana-stable-layout", + "solana-hash 4.2.0", ] [[package]] -name = "solana-define-syscall" +name = "solana-commitment-config" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1517aa49dcfa9cb793ef90e7aac81346d62ca4a546bb1a754030a033e3972e1c" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-config-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e401ae56aed512821cc7a0adaa412ff97fecd2dff4602be7b1330d2daec0c4" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account 3.4.0", + "solana-instruction", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "solana-short-vec", + "solana-system-interface 2.0.0", +] + +[[package]] +name = "solana-connection-cache" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dba82683e7a28bdf3ac5fca5be0b13b1b5231ea5e23c63b3a56d2ea273270d" +dependencies = [ + "async-trait", + "bincode", + "crossbeam-channel", + "futures-util", + "indexmap 2.13.0", + "log", + "rand 0.9.4", + "rayon", + "solana-keypair", + "solana-measure", + "solana-metrics", + "solana-time-utils", + "solana-transaction-error", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "solana-cpi" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" +dependencies = [ + "solana-account-info", + "solana-define-syscall 4.0.1", + "solana-instruction", + "solana-program-error", + "solana-pubkey 4.1.0", + "solana-stable-layout", +] + +[[package]] +name = "solana-curve25519" +version = "3.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aff7432cdf2ec6a44ac06b4d64d2ee006f6c0066d6456e032a7fe25be40cd5c" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "solana-define-syscall 3.0.0", + "subtle", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-define-syscall" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" @@ -8513,13 +9263,13 @@ dependencies = [ [[package]] name = "solana-epoch-rewards" -version = "3.0.2" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cddf2388b28291210d9aa60690740733cab527531f06ed153c4d388951e407c" +checksum = "f5e7b0ba210593ba8ddd39d6d234d81795d1671cebf3026baa10d5dc23ac42f0" dependencies = [ "serde", "serde_derive", - "solana-hash 4.4.0", + "solana-hash 4.2.0", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -8532,15 +9282,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ee8beac9bff4db9225e57d532d169b0be5e447f1e6601a2f50f27a01bf5518f" dependencies = [ "siphasher 0.3.11", - "solana-address 2.6.1", - "solana-hash 4.4.0", + "solana-address 2.5.0", + "solana-hash 4.2.0", ] [[package]] name = "solana-epoch-schedule" -version = "3.1.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce264b7b42322325947c4136a09460bf5c73d9aa8262c9b0a2064be63ba8639" +checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" dependencies = [ "serde", "serde_derive", @@ -8556,7 +9306,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "027e6d0b9e7daac5b2ac7c3f9ca1b727861121d9ef05084cf435ff736051e7c2" dependencies = [ "solana-define-syscall 5.1.0", - "solana-pubkey 4.2.0", + "solana-pubkey 4.1.0", ] [[package]] @@ -8567,15 +9317,28 @@ checksum = "0eb265ff95e28eceda117e2e3d2d2a611ecbbfe911dfeeeecd1521814540ffab" dependencies = [ "serde", "serde_derive", - "solana-hash 4.4.0", + "solana-hash 4.2.0", "solana-instruction", "solana-nonce", - "solana-pubkey 4.2.0", + "solana-pubkey 4.1.0", "solana-sdk-ids", - "solana-system-interface", + "solana-system-interface 3.1.0", "thiserror 2.0.18", ] +[[package]] +name = "solana-feature-gate-interface" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ca9b5cbb6f500f7fd73db5bd95640f71a83f04d6121a0e59a43b202dca2731" +dependencies = [ + "serde", + "serde_derive", + "solana-program-error", + "solana-pubkey 4.1.0", + "solana-sdk-ids", +] + [[package]] name = "solana-fee-calculator" version = "3.2.1" @@ -8609,14 +9372,14 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" dependencies = [ - "solana-hash 4.4.0", + "solana-hash 4.2.0", ] [[package]] name = "solana-hash" -version = "4.4.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe51db00ac3aa9f950d1e6201a126acfa26e6d81bc4a183ba64ec02effcad883" +checksum = "8064ea1d591ec791be95245058ca40f4f5345d390c200069d0f79bbf55bfae55" dependencies = [ "borsh", "bytemuck", @@ -8636,6 +9399,7 @@ dependencies = [ "observe", "prometheus", "prometheus-metric-storage", + "solana-client", "solana-sdk", "thiserror 1.0.69", "tracing", @@ -8644,9 +9408,9 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "3.1.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f762559c5f962727efdcb03c61f5cf6c5364645695978fb145d25c88bbacdada" +checksum = "e92f37a14e7c660628752833250dd3dcd8e95309876aee751d7f8769a27947c6" dependencies = [ "serde", "serde_derive", @@ -8654,9 +9418,9 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "3.4.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ebb0ffd19263051bc3f683fcc086134b8ff23af894dcb63f7563c7137b42f1" +checksum = "a97881335fc698deb46c6571945969aae6d93a14e2fff792a368b4fac872f116" dependencies = [ "bincode", "borsh", @@ -8664,7 +9428,7 @@ dependencies = [ "serde_derive", "solana-define-syscall 5.1.0", "solana-instruction-error", - "solana-pubkey 4.2.0", + "solana-pubkey 4.1.0", ] [[package]] @@ -8681,15 +9445,16 @@ dependencies = [ [[package]] name = "solana-instructions-sysvar" -version = "3.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e0732294560e88ecdb2bbc656e67383e9f88c78ec09469cef172f0d28cd1bcd" +checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" dependencies = [ "bitflags 2.10.0", "solana-account-info", "solana-instruction", "solana-instruction-error", "solana-program-error", + "solana-pubkey 3.0.0", "solana-sanitize", "solana-sdk-ids", "solana-serialize-utils", @@ -8704,7 +9469,7 @@ checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" dependencies = [ "sha3", "solana-define-syscall 4.0.1", - "solana-hash 4.4.0", + "solana-hash 4.2.0", ] [[package]] @@ -8718,7 +9483,7 @@ dependencies = [ "five8", "five8_core", "rand 0.9.4", - "solana-address 2.6.1", + "solana-address 2.5.0", "solana-derivation-path", "solana-seed-derivable", "solana-seed-phrase", @@ -8739,17 +9504,57 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-loader-v3-interface" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e0538d4dbc9022e01616f1c58f2db98ece739c5d5ed4a2ef8737a953e76a2d4" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey 4.1.0", + "solana-sdk-ids", +] + +[[package]] +name = "solana-measure" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebf38d1683798dc078c6d060cf283418c20aefc72055d4f1aa9a9dad40b3237f" + [[package]] name = "solana-message" -version = "4.2.1" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0448b1fd891c5f46491e5dc7d9986385ba3c852c340db2911dd29faa01d2b08d" +dependencies = [ + "bincode", + "lazy_static", + "serde", + "serde_derive", + "solana-address 2.5.0", + "solana-hash 4.2.0", + "solana-instruction", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-transaction-error", +] + +[[package]] +name = "solana-message" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705bae842f1d02819db46ae9051613d78576c7cdabc0edb5cba4d7fe9482acaf" +checksum = "6435a6070b6c5898201aae845db328cf3bd3cebc17b55af9b43138da5ced4a85" dependencies = [ "blake3", + "lazy_static", "serde", "serde_derive", - "solana-address 2.6.1", - "solana-hash 4.4.0", + "solana-address 2.5.0", + "solana-hash 4.2.0", "solana-instruction", "solana-sanitize", "solana-sdk-ids", @@ -8758,6 +9563,22 @@ dependencies = [ "wincode", ] +[[package]] +name = "solana-metrics" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc50a91b4ba7244fb3724c989e9fd4a348493dac8ee0779304515cf1eb7b312" +dependencies = [ + "crossbeam-channel", + "gethostname", + "log", + "reqwest 0.12.28", + "solana-cluster-type", + "solana-sha256-hasher", + "solana-time-utils", + "thiserror 2.0.18", +] + [[package]] name = "solana-msg" version = "3.1.0" @@ -8773,18 +9594,52 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" +[[package]] +name = "solana-net-utils" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00275a5d891fe8306e69d899ff5b96efbbe185cc96f8b8c32827c69f345a6b0" +dependencies = [ + "anyhow", + "bincode", + "bytes", + "cfg-if", + "dashmap 5.5.3", + "itertools 0.14.0", + "log", + "nix", + "rand 0.9.4", + "serde", + "socket2 0.6.4", + "solana-serde", + "solana-svm-type-overrides", + "tokio", + "url", +] + [[package]] name = "solana-nonce" -version = "3.2.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95dbc9f2e33b6c10e231df15cb2a3bff9ea7eab6347f9e316fe75c97fd67bbb" +checksum = "cbc469152a63284ef959b80c59cda015262a021da55d3b8fe42171d89c4b64f8" dependencies = [ + "serde", + "serde_derive", "solana-fee-calculator", - "solana-hash 4.4.0", - "solana-pubkey 4.2.0", + "solana-hash 4.2.0", + "solana-pubkey 4.1.0", "solana-sha256-hasher", ] +[[package]] +name = "solana-nullable" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0f95d3028ef0f682bb174b77379c19d5dae2904a649f4a103fe29be7a139980" +dependencies = [ + "bytemuck", +] + [[package]] name = "solana-offchain-message" version = "3.0.0" @@ -8793,7 +9648,7 @@ checksum = "f6e2a1141a673f72a05cf406b99e4b2b8a457792b7c01afa07b3f00d4e2de393" dependencies = [ "num_enum", "solana-hash 3.1.0", - "solana-packet", + "solana-packet 3.0.0", "solana-pubkey 3.0.0", "solana-sanitize", "solana-sha256-hasher", @@ -8810,6 +9665,54 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "solana-packet" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad62e1045c2347a0c0e219a6ceb0abfe904be622920996bfcac8d116fabe3c7" +dependencies = [ + "bincode", + "bitflags 2.10.0", + "cfg_eval", + "serde", + "serde_derive", + "serde_with", + "solana-pubkey 4.1.0", +] + +[[package]] +name = "solana-perf" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2505e28e6b7674d6a69f746b7a926fa8b96ffde74ecccfc26aed244ff5bf6d87" +dependencies = [ + "ahash", + "bincode", + "bv", + "bytes", + "caps", + "curve25519-dalek", + "dlopen2", + "fnv", + "libc", + "log", + "nix", + "num_cpus", + "rand 0.9.4", + "rayon", + "serde", + "solana-hash 4.2.0", + "solana-message 3.1.0", + "solana-metrics", + "solana-packet 4.1.0", + "solana-pubkey 4.1.0", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-time-utils", + "solana-transaction-context", +] + [[package]] name = "solana-presigner" version = "3.0.0" @@ -8840,7 +9743,7 @@ dependencies = [ "solana-epoch-stake", "solana-example-mocks", "solana-fee-calculator", - "solana-hash 4.4.0", + "solana-hash 4.2.0", "solana-instruction", "solana-instruction-error", "solana-instructions-sysvar", @@ -8853,8 +9756,8 @@ dependencies = [ "solana-program-memory", "solana-program-option", "solana-program-pack", - "solana-pubkey 4.2.0", - "solana-rent", + "solana-pubkey 4.1.0", + "solana-rent 4.2.0", "solana-sdk-ids", "solana-secp256k1-recover", "solana-serde-varint", @@ -8864,7 +9767,7 @@ dependencies = [ "solana-slot-hashes", "solana-slot-history", "solana-stable-layout", - "solana-sysvar", + "solana-sysvar 4.0.0", "solana-sysvar-id", ] @@ -8877,7 +9780,7 @@ dependencies = [ "solana-account-info", "solana-define-syscall 4.0.1", "solana-program-error", - "solana-pubkey 4.2.0", + "solana-pubkey 4.1.0", ] [[package]] @@ -8926,12 +9829,80 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "4.2.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7db719574990de7e8b0f55a8593ac92a5ccb42c8ce67b3e4bf05b139d5d9ee71" +checksum = "1b06bd918d60111ee1f97de817113e2040ca0cedb740099ee8d646233f6b906c" dependencies = [ "rand 0.9.4", - "solana-address 2.6.1", + "solana-address 2.5.0", +] + +[[package]] +name = "solana-pubsub-client" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5085b69353c60dd11eb2a28b2984846502c576b53a39a0d9519031fb1c5f31fb" +dependencies = [ + "crossbeam-channel", + "futures-util", + "http 0.2.12", + "log", + "semver 1.0.27", + "serde", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-pubkey 4.1.0", + "solana-rpc-client-types", + "solana-signature", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tungstenite", + "url", +] + +[[package]] +name = "solana-quic-client" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a43fb7fb4b31e56cf44d65d40bba4f4f66d92e248924cd9b9bddc57b0289376" +dependencies = [ + "async-lock", + "async-trait", + "futures", + "itertools 0.14.0", + "log", + "quinn", + "quinn-proto", + "rustls", + "solana-connection-cache", + "solana-keypair", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-pubkey 4.1.0", + "solana-rpc-client-api", + "solana-signer", + "solana-streamer", + "solana-tls-utils", + "solana-transaction-error", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "solana-rent" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e860d5499a705369778647e97d760f7670adfb6fc8419dd3d568deccd46d5487" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -8948,32 +9919,161 @@ dependencies = [ ] [[package]] -name = "solana-sanitize" -version = "3.0.1" +name = "solana-reward-info" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" +checksum = "d8f4c5c5b5599e640c15ead65be499d60f6ee62a5ba7aa7e23f5b0537046ed49" +dependencies = [ + "serde", + "serde_derive", +] [[package]] -name = "solana-sdk" -version = "4.0.1" +name = "solana-rpc-client" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "657e20ea41ba32cad0c493bec60b6d55cc6c30d2c1073b94cfee96dda0d764dd" +checksum = "10dd50b329ce569340c1deab3667d21e26a41e65cc6460e8a5bb8b57aff8420d" dependencies = [ - "bincode", + "async-trait", + "base64 0.22.1", + "bincode", + "bs58", + "futures", + "indicatif", + "log", + "reqwest 0.12.28", + "reqwest-middleware", + "semver 1.0.27", + "serde", + "serde_json", + "solana-account 3.4.0", + "solana-account-decoder", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-epoch-info", + "solana-epoch-schedule", + "solana-feature-gate-interface", + "solana-hash 4.2.0", + "solana-instruction", + "solana-message 3.1.0", + "solana-pubkey 4.1.0", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction 3.1.0", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "solana-vote-interface", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5055bd3bcd46c870ca1a13f06675c1ff0a45f93604e0f88e5c748bcb01dd42fc" +dependencies = [ + "anyhow", + "jsonrpc-core", + "reqwest 0.12.28", + "reqwest-middleware", + "serde", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-rpc-client-types", + "solana-signer", + "solana-transaction-error", + "solana-transaction-status-client-types", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-rpc-client-nonce-utils" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f9c7fdb241c37d6a71e7e3ef7fd5bb5734ef53b72d8208774dc52eca12d241" +dependencies = [ + "solana-account 3.4.0", + "solana-commitment-config", + "solana-hash 4.2.0", + "solana-message 3.1.0", + "solana-nonce", + "solana-pubkey 4.1.0", + "solana-rpc-client", + "solana-sdk-ids", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-rpc-client-types" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2268718c3aed042982b46e2db2ec9bdff704a1030f639410e96065e9a8c621fd" +dependencies = [ + "base64 0.22.1", + "bs58", + "semver 1.0.27", + "serde", + "serde_json", + "solana-account 3.4.0", + "solana-account-decoder-client-types", + "solana-address 2.5.0", + "solana-clock", + "solana-commitment-config", + "solana-fee-calculator", + "solana-inflation", + "solana-reward-info", + "solana-transaction 3.1.0", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "spl-generic-token", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-sanitize" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" + +[[package]] +name = "solana-sbpf" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "733b3657a0fab205102b799dbe17f85d3972cf984232c1b0b108fa6ba438e382" +dependencies = [ + "byteorder", + "combine 3.8.1", + "hash32", + "log", + "rustc-demangle", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-sdk" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "657e20ea41ba32cad0c493bec60b6d55cc6c30d2c1073b94cfee96dda0d764dd" +dependencies = [ + "bincode", "bs58", "serde", - "solana-account", + "solana-account 4.1.0", "solana-epoch-info", "solana-epoch-rewards-hasher", "solana-fee-structure", "solana-inflation", "solana-keypair", - "solana-message", + "solana-message 4.0.0", "solana-offchain-message", "solana-presigner", "solana-program", "solana-program-memory", - "solana-pubkey 4.2.0", + "solana-pubkey 4.1.0", "solana-sanitize", "solana-sdk-ids", "solana-sdk-macro", @@ -8986,7 +10086,7 @@ dependencies = [ "solana-signature", "solana-signer", "solana-time-utils", - "solana-transaction", + "solana-transaction 4.0.0", "solana-transaction-error", "thiserror 2.0.18", ] @@ -8997,7 +10097,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" dependencies = [ - "solana-address 2.6.1", + "solana-address 2.5.0", ] [[package]] @@ -9063,12 +10163,12 @@ dependencies = [ [[package]] name = "solana-serialize-utils" -version = "3.1.2" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761357b0853c9623bf12c1d2314b3d6160a85b087b84c45224fb85766d22616b" +checksum = "5d7cc401931d178472358e6b78dc72d031dc08f752d7410f0e8bd259dd6f02fa" dependencies = [ "solana-instruction-error", - "solana-pubkey 4.2.0", + "solana-pubkey 4.1.0", "solana-sanitize", ] @@ -9080,7 +10180,7 @@ checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" dependencies = [ "sha2", "solana-define-syscall 4.0.1", - "solana-hash 4.4.0", + "solana-hash 4.2.0", ] [[package]] @@ -9090,7 +10190,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d8250a4495aad49ad20556a607da53bdcb20de78da10b65afbf918b7f1de647" dependencies = [ "serde_core", - "wincode", ] [[package]] @@ -9100,15 +10199,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6c79722e299d957958bf33695f7cd1ef6724ff55563c60fd9e3e24487cccde2" dependencies = [ "solana-hard-forks", - "solana-hash 4.4.0", + "solana-hash 4.2.0", "solana-sha256-hasher", ] [[package]] name = "solana-signature" -version = "3.4.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0364c7577c3c82a693ce28a1febc8d1b5d1b0a175fdc2114ae6186b69effe1e" +checksum = "132a93134f1262aa832f1849b83bec6c9945669b866da18661a427943b9e801e" dependencies = [ "ed25519-dalek", "five8", @@ -9122,24 +10221,24 @@ dependencies = [ [[package]] name = "solana-signer" -version = "3.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520bd6021163ee517f4bdc7ae03ded904f97e11320001ba0b3355f45eb14f558" +checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" dependencies = [ - "solana-pubkey 4.2.0", + "solana-pubkey 3.0.0", "solana-signature", "solana-transaction-error", ] [[package]] name = "solana-slot-hashes" -version = "3.0.2" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a57c158c35629f9e302ab385f16b15813f4927a31c27dda72f3df828bb08d93" +checksum = "2585f70191623887329dfb5078da3a00e15e3980ea67f42c2e10b07028419f43" dependencies = [ "serde", "serde_derive", - "solana-hash 4.4.0", + "solana-hash 4.2.0", "solana-sdk-ids", "solana-sysvar-id", ] @@ -9164,21 +10263,151 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9f6a291ba063a37780af29e7db14bdd3dc447584d8ba5b3fc4b88e2bbc982fa" dependencies = [ "solana-instruction", - "solana-pubkey 4.2.0", + "solana-pubkey 4.1.0", +] + +[[package]] +name = "solana-stake-interface" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9bc26191b533f9a6e5a14cca05174119819ced680a80febff2f5051a713f0db" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "solana-cpi", + "solana-instruction", + "solana-program-error", + "solana-pubkey 3.0.0", + "solana-system-interface 2.0.0", + "solana-sysvar 3.1.1", + "solana-sysvar-id", +] + +[[package]] +name = "solana-streamer" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a07932bc815870b57aba2861cbffc976a7c9a89cb189b08930c05571daf409" +dependencies = [ + "arc-swap", + "bytes", + "crossbeam-channel", + "dashmap 5.5.3", + "futures", + "futures-util", + "histogram", + "indexmap 2.13.0", + "itertools 0.14.0", + "libc", + "log", + "nix", + "num_cpus", + "pem", + "percentage", + "quinn", + "quinn-proto", + "rand 0.9.4", + "rustls", + "smallvec", + "socket2 0.6.4", + "solana-keypair", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-packet 4.1.0", + "solana-perf", + "solana-pubkey 4.1.0", + "solana-signature", + "solana-signer", + "solana-time-utils", + "solana-tls-utils", + "solana-transaction-error", + "solana-transaction-metrics-tracker", + "thiserror 2.0.18", + "tokio", + "tokio-util", + "x509-parser", +] + +[[package]] +name = "solana-svm-feature-set" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ea15c0d91403375e3d017cc09780cf138b629abba4ccaaa7cf66b1afea1059" + +[[package]] +name = "solana-svm-type-overrides" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e41661ebf0edcc296b15251c08fee0ad2da3257e6ab86cea2a0a8f6fba642c6" +dependencies = [ + "rand 0.9.4", +] + +[[package]] +name = "solana-system-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey 3.0.0", ] [[package]] name = "solana-system-interface" -version = "3.2.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55b54965bf0b76fa8e2b35376583efddd4d916618cfe595bf48c7d7b55a9e628" +checksum = "a95a6f2e23ed861d6444ad4a6d6896c418d7d101b960787e65a8e33157cee81b" dependencies = [ "num-traits", - "solana-address 2.6.1", + "serde", + "serde_derive", + "solana-address 2.5.0", + "solana-instruction", "solana-msg", "solana-program-error", ] +[[package]] +name = "solana-sysvar" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" +dependencies = [ + "base64 0.22.1", + "bincode", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-define-syscall 4.0.1", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash 4.2.0", + "solana-instruction", + "solana-last-restart-slot", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-pubkey 4.1.0", + "solana-rent 3.1.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-slot-hashes", + "solana-slot-history", + "solana-sysvar-id", +] + [[package]] name = "solana-sysvar" version = "4.0.0" @@ -9198,14 +10427,14 @@ dependencies = [ "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 4.4.0", + "solana-hash 4.2.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", "solana-program-error", "solana-program-memory", - "solana-pubkey 4.2.0", - "solana-rent", + "solana-pubkey 4.1.0", + "solana-rent 4.2.0", "solana-sdk-ids", "solana-sdk-macro", "solana-slot-hashes", @@ -9219,7 +10448,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" dependencies = [ - "solana-address 2.6.1", + "solana-address 2.5.0", "solana-sdk-ids", ] @@ -9229,38 +10458,267 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ced92c60aa76ec4780a9d93f3bd64dfa916e1b998eacc6f1c110f3f444f02c9" +[[package]] +name = "solana-tls-utils" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "066a26be63977ea6c32cb6815fa08e8543ccc83a1d58b469aee1b9c3973b9231" +dependencies = [ + "rustls", + "solana-keypair", + "solana-pubkey 4.1.0", + "solana-signer", + "x509-parser", +] + +[[package]] +name = "solana-tpu-client" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4564457a239ffa434fc92004b0de846779c00e05b106ab2e113f7384e4bf1115" +dependencies = [ + "async-trait", + "bincode", + "futures-util", + "indexmap 2.13.0", + "indicatif", + "log", + "rayon", + "solana-client-traits", + "solana-clock", + "solana-commitment-config", + "solana-connection-cache", + "solana-epoch-schedule", + "solana-measure", + "solana-message 3.1.0", + "solana-net-utils", + "solana-pubkey 4.1.0", + "solana-pubsub-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-signature", + "solana-signer", + "solana-transaction 3.1.0", + "solana-transaction-error", + "thiserror 2.0.18", + "tokio", +] + [[package]] name = "solana-transaction" -version = "4.1.3" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96697cff5075a028265324255efed226099f6d761ca67342b230d09f72cc48d2" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-address 2.5.0", + "solana-hash 4.2.0", + "solana-instruction", + "solana-instruction-error", + "solana-message 3.1.0", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-signer", + "solana-transaction-error", +] + +[[package]] +name = "solana-transaction" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dc0d18f4f109cc1777459271800755705ca6d1aba319934611e1d4f6bb162b5" +dependencies = [ + "serde", + "serde_derive", + "solana-address 2.5.0", + "solana-hash 4.2.0", + "solana-instruction", + "solana-instruction-error", + "solana-message 4.0.0", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-signer", + "solana-transaction-error", + "wincode", +] + +[[package]] +name = "solana-transaction-context" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecefe8b30e334e2891ca82da35becd9a3f4c16021d9ca782e2a82adf31084fa3" +dependencies = [ + "bincode", + "serde", + "solana-account 3.4.0", + "solana-instruction", + "solana-instructions-sysvar", + "solana-pubkey 4.1.0", + "solana-rent 3.1.0", + "solana-sbpf", + "solana-sdk-ids", +] + +[[package]] +name = "solana-transaction-error" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8396904805b0b385b9de115a652fe80fd01e5b98ce0513f4fcd8184ada9bb792" +dependencies = [ + "serde", + "serde_derive", + "solana-instruction-error", + "solana-sanitize", +] + +[[package]] +name = "solana-transaction-metrics-tracker" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bece8b460e55e966a1898cba2fd718a65f7277a388035be0f830123e93057134" +dependencies = [ + "base64 0.22.1", + "bincode", + "log", + "rand 0.9.4", + "solana-packet 4.1.0", + "solana-perf", + "solana-short-vec", + "solana-signature", +] + +[[package]] +name = "solana-transaction-status-client-types" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6886b7bb8fbba5937b4a38fa67ed442d7971629244b8fbd95c7963b2126bc9" +dependencies = [ + "base64 0.22.1", + "bincode", + "bs58", + "serde", + "serde_json", + "solana-account-decoder-client-types", + "solana-commitment-config", + "solana-instruction", + "solana-message 3.1.0", + "solana-pubkey 4.1.0", + "solana-reward-info", + "solana-signature", + "solana-transaction 3.1.0", + "solana-transaction-context", + "solana-transaction-error", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-udp-client" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fc3d4e54fae3c8378e7c556fff74b1866af5ab7fef46234521dc5040eab0ec" +dependencies = [ + "async-trait", + "solana-connection-cache", + "solana-keypair", + "solana-net-utils", + "solana-streamer", + "solana-transaction-error", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "solana-version" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b881755f678e9e88512feb096b9c0b341e4d682eb609f131225907826e684d" +dependencies = [ + "agave-feature-set", + "rand 0.9.4", + "semver 1.0.27", + "serde", + "solana-sanitize", + "solana-serde-varint", +] + +[[package]] +name = "solana-vote-interface" +version = "5.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d444ce30b6b4f9c281ba06061ea96638d063b53c2171b1e41ba02ebff79ed28f" +dependencies = [ + "bincode", + "cfg_eval", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "serde_with", + "solana-clock", + "solana-hash 4.2.0", + "solana-instruction", + "solana-instruction-error", + "solana-pubkey 4.1.0", + "solana-rent 4.2.0", + "solana-sdk-ids", + "solana-serde-varint", + "solana-serialize-utils", + "solana-short-vec", + "solana-system-interface 3.1.0", +] + +[[package]] +name = "solana-zero-copy" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea15126ebdc7e270c50d43884369af9f51d2308156d46a18e351522a164844d" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", +] + +[[package]] +name = "solana-zk-sdk" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d105ecce084206697230226c6b2230401c220feb4dc63e1274d58b38969292" +checksum = "9602bcb1f7af15caef92b91132ec2347e1c51a72ecdbefdaefa3eac4b8711475" dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "getrandom 0.2.17", + "itertools 0.12.1", + "js-sys", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", "serde", "serde_derive", - "solana-address 2.6.1", - "solana-hash 4.4.0", + "serde_json", + "sha3", + "solana-derivation-path", "solana-instruction", - "solana-instruction-error", - "solana-message", - "solana-sanitize", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-short-vec", + "solana-seed-derivable", + "solana-seed-phrase", "solana-signature", "solana-signer", - "solana-transaction-error", - "wincode", -] - -[[package]] -name = "solana-transaction-error" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441d6dcd51100e7d97c3fb3b723e08aa701066ff7afc00026fd8d8e222cb95b" -dependencies = [ - "serde", - "serde_derive", - "solana-instruction-error", - "solana-sanitize", + "subtle", + "thiserror 2.0.18", + "wasm-bindgen", + "zeroize", ] [[package]] @@ -9281,7 +10739,7 @@ dependencies = [ "maplit", "mockall", "model", - "num", + "num 0.4.3", "number", "observe", "prometheus", @@ -9323,7 +10781,7 @@ dependencies = [ "mimalloc", "model", "moka", - "num", + "num 0.4.3", "number", "observe", "price-estimation", @@ -9395,6 +10853,206 @@ dependencies = [ "der", ] +[[package]] +name = "spl-discriminator" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e597c5ff9ed7c74a54dbc47bae2f06e4db8c98f4356ad280200dc11878266db1" +dependencies = [ + "bytemuck", + "solana-program-error", + "solana-sha256-hasher", + "spl-discriminator-derive", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" +dependencies = [ + "quote", + "spl-discriminator-syn", + "syn 2.0.117", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" +dependencies = [ + "proc-macro2", + "quote", + "sha2", + "syn 2.0.117", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-generic-token" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233df81b75ab99b42f002b5cdd6e65a7505ffa930624f7096a7580a56765e9cf" +dependencies = [ + "bytemuck", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "spl-pod" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9c6e142cdf1e7e77f480053ec9f0ce989890768ddf91f619b50f39d1b456f5" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", + "num-derive", + "num-traits", + "num_enum", + "solana-program-error", + "solana-program-option", + "solana-pubkey 3.0.0", + "solana-zero-copy", + "solana-zk-sdk", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-2022-interface" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fcd81188211f4b3c8a5eba7fd534c7142f9dd026123b3472492782cc72f4dc6" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction", + "spl-token-confidential-transfer-proof-generation", + "spl-token-group-interface", + "spl-token-metadata-interface", + "spl-type-length-value", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879a9ebad0d77383d3ea71e7de50503554961ff0f4ef6cbca39ad126e6f6da3a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0cd59fce3dc00f563c6fa364d67c3f200d278eae681f4dc250240afcfe044b1" +dependencies = [ + "curve25519-dalek", + "solana-zk-sdk", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841cbd6f2322d02719be4da1affedbe6495b1048b7b985ec9796032564026e22" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-address 2.5.0", + "solana-instruction", + "solana-nullable", + "solana-program-error", + "solana-zero-copy", + "spl-discriminator", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c564ac05a7c8d8b12e988a37d82695b5ba4db376d07ea98bc4882c81f96c7f3" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c467c7c3bd056f8fe60119e7ec34ddd6f23052c2fa8f1f51999098063b72676" +dependencies = [ + "borsh", + "num-derive", + "num-traits", + "solana-borsh", + "solana-instruction", + "solana-program-error", + "solana-pubkey 3.0.0", + "spl-discriminator", + "spl-pod", + "spl-type-length-value", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-type-length-value" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2504631748c48d2a937414d64a12dcac4588d34bd07d355d648619c189d29435" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-program-error", + "solana-zero-copy", + "spl-discriminator", + "thiserror 2.0.18", +] + [[package]] name = "sqlx" version = "0.8.6" @@ -9553,7 +11211,7 @@ dependencies = [ "log", "md-5", "memchr", - "num-bigint", + "num-bigint 0.4.6", "once_cell", "rand 0.8.5", "serde", @@ -9943,9 +11601,10 @@ dependencies = [ "bytes", "libc", "mio", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.1", + "socket2 0.6.4", "tokio-macros", "tracing", "windows-sys 0.61.2", @@ -10019,6 +11678,7 @@ dependencies = [ "bytes", "futures-core", "futures-sink", + "futures-util", "pin-project-lite", "tokio", ] @@ -10407,6 +12067,7 @@ dependencies = [ "sha1", "thiserror 2.0.18", "utf-8", + "webpki-roots 0.26.11", ] [[package]] @@ -10478,12 +12139,43 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common 0.1.7", + "subtle", +] + +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + [[package]] name = "untrusted" version = "0.9.0" @@ -10578,6 +12270,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + [[package]] name = "vsimd" version = "0.8.0" @@ -10819,6 +12517,22 @@ dependencies = [ "wasite", ] +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + [[package]] name = "winapi-util" version = "0.1.11" @@ -10828,15 +12542,22 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "wincode" -version = "0.5.5" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +checksum = "657690780ce23e6f66576a782ffd88eb353512381817029cc1d7a99154bb6d1f" dependencies = [ "pastey", "proc-macro2", "quote", + "solana-short-vec", "thiserror 2.0.18", "wincode-derive", ] @@ -11360,6 +13081,23 @@ dependencies = [ "tap", ] +[[package]] +name = "x509-parser" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d43b0f71ce057da06bc0851b23ee24f3f86190b07203dd8f567d0b706a185202" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror 2.0.18", + "time", +] + [[package]] name = "xmlparser" version = "0.13.6" @@ -11377,7 +13115,7 @@ dependencies = [ "prost-types 0.14.3", "protoc-bin-vendored", "siphasher 1.0.3", - "solana-pubkey 4.2.0", + "solana-pubkey 4.1.0", "thiserror 2.0.18", "tonic-prost-build", ] @@ -11504,3 +13242,31 @@ name = "zmij" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd8f3f50b848df28f887acb68e41201b5aea6bc8a8dacc00fb40635ff9a72fea" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index 154dafaf86..48737a3aad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,6 +119,7 @@ signature-validator = { path = "crates/signature-validator" } simulator = { path = "crates/simulator" } solana-indexer = { path = "crates/solana-indexer" } solana-sdk = "4" +solana-client = "4" yellowstone-grpc-proto = { version = "12.4.0", default-features = false } solver = { path = "crates/solver" } solvers = { path = "crates/solvers" } diff --git a/crates/solana-indexer/Cargo.toml b/crates/solana-indexer/Cargo.toml index ed98505fc3..b9a034ee97 100644 --- a/crates/solana-indexer/Cargo.toml +++ b/crates/solana-indexer/Cargo.toml @@ -20,6 +20,7 @@ observe = { workspace = true } prometheus = { workspace = true } prometheus-metric-storage = { workspace = true } solana-sdk = { workspace = true } +solana-client = { workspace = true } thiserror = { workspace = true } tracing = { workspace = true } yellowstone-grpc-proto = { workspace = true } diff --git a/crates/solana-indexer/src/lib.rs b/crates/solana-indexer/src/lib.rs index dcb7fa8832..24f37b8f46 100644 --- a/crates/solana-indexer/src/lib.rs +++ b/crates/solana-indexer/src/lib.rs @@ -1,3 +1,7 @@ //! `solana-indexer` — Solana settlement indexer. +#![allow(async_fn_in_trait)] +#![warn(missing_docs)] + +pub mod traits; pub mod types; diff --git a/crates/solana-indexer/src/traits/mod.rs b/crates/solana-indexer/src/traits/mod.rs new file mode 100644 index 0000000000..7511ce32a7 --- /dev/null +++ b/crates/solana-indexer/src/traits/mod.rs @@ -0,0 +1,4 @@ +//! Traits for external dependencies. + +pub mod solana_client; +pub mod store; diff --git a/crates/solana-indexer/src/traits/solana_client.rs b/crates/solana-indexer/src/traits/solana_client.rs new file mode 100644 index 0000000000..7563def328 --- /dev/null +++ b/crates/solana-indexer/src/traits/solana_client.rs @@ -0,0 +1,41 @@ +//! Solana RPC interface for the finalization worker. + +use { + crate::types::{ + commitment::{AccountInfo, SignatureStatus}, + recovery::GetSignaturesOpts, + wire::SubscribeUpdateTransactionInfo, + }, + solana_client::client_error::ClientError, + solana_sdk::{pubkey::Pubkey, signature::Signature}, +}; + +/// Interface for RPC calls the finalization worker needs: +/// promoting confirmed transactions to finalized, sweeping aged rows, +/// and reading account state for recovery. +pub trait SolanaClient { + /// Fetch status for multiple transaction signatures (up to 256). + /// `None` = transaction signature not found. + async fn get_signature_statuses( + &self, + signatures: &[Signature], + ) -> Result>, ClientError>; + + /// Fetch a transaction by its signature. `Ok(None)` = never landed. + async fn get_transaction( + &self, + signature: &Signature, + ) -> Result, ClientError>; + + /// List all transaction signatures for a program address (used for + /// backfill). + async fn get_signatures_for_address( + &self, + address: &Pubkey, + opts: GetSignaturesOpts, + ) -> Result, ClientError>; + + /// Read account data. `Ok(None)` = account does not exist (deleted or not + /// initialized). + async fn get_account_info(&self, address: &Pubkey) -> Result, ClientError>; +} diff --git a/crates/solana-indexer/src/traits/store.rs b/crates/solana-indexer/src/traits/store.rs new file mode 100644 index 0000000000..0e216b2552 --- /dev/null +++ b/crates/solana-indexer/src/traits/store.rs @@ -0,0 +1,73 @@ +//! PostgreSQL persistence layer for decoded events and slot state. + +use { + crate::types::{ + commitment::{Commitment, UnfinalizedRow}, + dead_letter::DeadLetterEntry, + errors::StoreError, + events::DecodedEvent, + recovery::PdaSnapshot, + }, + std::ops::Range, +}; + +/// PostgreSQL persistence. Used by Decoder, Watchdog, and FinalizationWorker. +pub trait Store { + /// Save decoded events and advance the slot watermark atomically. + async fn persist_events( + &self, + events: Vec, + new_watermark: u64, + ) -> Result<(), StoreError>; + + /// Record a slot checkpoint. Rejects downward writes. + async fn write_watermark(&self, slot: u64) -> Result<(), StoreError>; + + /// Read persisted watermark for resuming after reconnect. + async fn read_watermark(&self) -> Result, StoreError>; + + /// Move stale partials (>32 slots behind) to dead letter table. + async fn write_dead_letter(&self, entry: DeadLetterEntry); + + /// Record gaps that fell outside the replay window (write-only in v0.1). + async fn record_lost_slot_range(&self, range: Range); + + /// Primary promotion pass: fetch `confirmed` rows whose `slot` is at or + /// above the finalization-window threshold (`slot >= newer_than_slot`). + /// `limit` caps the batch at 256 (RPC batch size). Returns `Err` on + /// backend failure so the caller can back off rather than + /// silently stall on a dead store. + async fn get_confirmed_rows( + &self, + newer_than_slot: u64, + limit: usize, + ) -> Result, StoreError>; + + /// Safety-net sweep for `confirmed` rows the primary promotion pass missed + /// (i.e. rows that aged past the signature-status retention horizon, + /// ~150 slots behind the chain tip). Returns `Err` on backend failure + /// (see `get_confirmed_rows`). + async fn get_aged_rows( + &self, + retention_horizon_slot: u64, + ) -> Result, StoreError>; + + /// Flip the `commitment` label on a specific row. + /// + /// The row's `table` field tells the implementer which `solana.*` table to + /// UPDATE. + async fn update_commitment( + &self, + row: &UnfinalizedRow, + new_commitment: Commitment, + ) -> Result<(), StoreError>; + + /// Persist a single event during recovery/backfills, not the live ingestion + /// path. + /// + /// Unlike `persist_events`, this does not advance the watermark. + async fn backfill_event(&self, event: DecodedEvent) -> Result<(), StoreError>; + + /// Upsert on-chain PDA state for reconciliation. + async fn upsert_pda_snapshot(&self, snapshot: PdaSnapshot) -> Result<(), StoreError>; +} diff --git a/crates/solana-indexer/src/types/channel.rs b/crates/solana-indexer/src/types/channel.rs index 6d80bfc868..8c9d52fc7b 100644 --- a/crates/solana-indexer/src/types/channel.rs +++ b/crates/solana-indexer/src/types/channel.rs @@ -29,8 +29,8 @@ pub enum StreamUpdate { Account { /// Slot the message was observed at. slot: u64, - /// Optional signature linking the write back to its originating - /// transaction. + /// Optional transaction signature linking the write back to its + /// originating transaction. txn_signature: Option, /// Wire message body. inner: Box, diff --git a/crates/solana-indexer/src/types/recovery.rs b/crates/solana-indexer/src/types/recovery.rs index b4a3795c93..0b6ab783a5 100644 --- a/crates/solana-indexer/src/types/recovery.rs +++ b/crates/solana-indexer/src/types/recovery.rs @@ -1,8 +1,6 @@ //! Recovery-flow types: PDA snapshots and the options struct for //! `getSignaturesForAddress` backfills. -use solana_sdk::pubkey::Pubkey; - /// Current on-chain snapshot of an order PDA, read by `getAccountInfo` for /// reconciliation. #[derive(Debug, Clone)] @@ -26,9 +24,6 @@ pub struct GetSignaturesOpts { pub from_slot: Option, /// End slot (inclusive). `None` means "to the tip". pub to_slot: Option, - /// Cap on the number of signatures returned. + /// Cap on the number of transaction signatures returned. pub limit: Option, - /// Optional address filter (used when back-filling both programs - /// in a single pass). - pub address: Option, } From fbef899bb5f23a7668f6614c9f19bb4040f0130b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Guimar=C3=A3es?= Date: Mon, 8 Jun 2026 22:45:13 -0300 Subject: [PATCH 2/4] Return Result in Store metods --- crates/solana-indexer/src/traits/store.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/solana-indexer/src/traits/store.rs b/crates/solana-indexer/src/traits/store.rs index 0e216b2552..9aff797218 100644 --- a/crates/solana-indexer/src/traits/store.rs +++ b/crates/solana-indexer/src/traits/store.rs @@ -27,10 +27,10 @@ pub trait Store { async fn read_watermark(&self) -> Result, StoreError>; /// Move stale partials (>32 slots behind) to dead letter table. - async fn write_dead_letter(&self, entry: DeadLetterEntry); + async fn write_dead_letter(&self, entry: DeadLetterEntry) -> Result<(), StoreError>; /// Record gaps that fell outside the replay window (write-only in v0.1). - async fn record_lost_slot_range(&self, range: Range); + async fn record_lost_slot_range(&self, range: Range) -> Result<(), StoreError>; /// Primary promotion pass: fetch `confirmed` rows whose `slot` is at or /// above the finalization-window threshold (`slot >= newer_than_slot`). From c73ad1d0de570b97f2d82afaecbf283eff10d37e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Guimar=C3=A3es?= Date: Mon, 8 Jun 2026 22:48:26 -0300 Subject: [PATCH 3/4] fmt toml --- Cargo.toml | 4 ++-- crates/solana-indexer/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 48737a3aad..bfcc8bd5bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -117,10 +117,9 @@ sha2 = "0.10" shared = { path = "crates/shared" } signature-validator = { path = "crates/signature-validator" } simulator = { path = "crates/simulator" } +solana-client = "4" solana-indexer = { path = "crates/solana-indexer" } solana-sdk = "4" -solana-client = "4" -yellowstone-grpc-proto = { version = "12.4.0", default-features = false } solver = { path = "crates/solver" } solvers = { path = "crates/solvers" } solvers-dto = { path = "crates/solvers-dto" } @@ -149,6 +148,7 @@ tracing-subscriber = { version = "0.3.22", features = ["json"] } url = "2.5.0" vergen = "8" winner-selection = { path = "crates/winner-selection" } +yellowstone-grpc-proto = { version = "12.4.0", default-features = false } [workspace.lints] clippy.cast_possible_wrap = "deny" diff --git a/crates/solana-indexer/Cargo.toml b/crates/solana-indexer/Cargo.toml index b9a034ee97..1d871b51c5 100644 --- a/crates/solana-indexer/Cargo.toml +++ b/crates/solana-indexer/Cargo.toml @@ -19,8 +19,8 @@ path = "src/main.rs" observe = { workspace = true } prometheus = { workspace = true } prometheus-metric-storage = { workspace = true } -solana-sdk = { workspace = true } solana-client = { workspace = true } +solana-sdk = { workspace = true } thiserror = { workspace = true } tracing = { workspace = true } yellowstone-grpc-proto = { workspace = true } From 62160e8fc3844cf9d5bf0dc412eeae7f209772a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Guimar=C3=A3es?= Date: Tue, 9 Jun 2026 09:15:06 -0300 Subject: [PATCH 4/4] use RangeInclusive --- crates/solana-indexer/src/traits/store.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/solana-indexer/src/traits/store.rs b/crates/solana-indexer/src/traits/store.rs index 9aff797218..76143937c9 100644 --- a/crates/solana-indexer/src/traits/store.rs +++ b/crates/solana-indexer/src/traits/store.rs @@ -8,7 +8,7 @@ use { events::DecodedEvent, recovery::PdaSnapshot, }, - std::ops::Range, + std::ops::RangeInclusive, }; /// PostgreSQL persistence. Used by Decoder, Watchdog, and FinalizationWorker. @@ -30,7 +30,7 @@ pub trait Store { async fn write_dead_letter(&self, entry: DeadLetterEntry) -> Result<(), StoreError>; /// Record gaps that fell outside the replay window (write-only in v0.1). - async fn record_lost_slot_range(&self, range: Range) -> Result<(), StoreError>; + async fn record_lost_slot_range(&self, range: RangeInclusive) -> Result<(), StoreError>; /// Primary promotion pass: fetch `confirmed` rows whose `slot` is at or /// above the finalization-window threshold (`slot >= newer_than_slot`).