diff --git a/Cargo.lock b/Cargo.lock index e55be1c7e2..f7e258d1df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -128,7 +128,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -164,7 +164,7 @@ dependencies = [ "futures", "futures-util", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", ] @@ -208,7 +208,7 @@ dependencies = [ "alloy-rlp", "crc", "serde", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -233,7 +233,7 @@ dependencies = [ "alloy-rlp", "borsh", "serde", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -294,7 +294,7 @@ dependencies = [ "http 1.4.0", "serde", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", ] @@ -321,7 +321,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -403,7 +403,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", "url", @@ -451,7 +451,7 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -548,7 +548,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -562,7 +562,7 @@ dependencies = [ "alloy-serde", "serde", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -602,7 +602,7 @@ dependencies = [ "either", "elliptic-curve", "k256", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -620,7 +620,7 @@ dependencies = [ "aws-sdk-kms", "k256", "spki", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", ] @@ -639,7 +639,7 @@ dependencies = [ "coins-bip39", "k256", "rand 0.8.5", - "thiserror 2.0.17", + "thiserror 2.0.18", "zeroize", ] @@ -654,7 +654,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -672,7 +672,7 @@ dependencies = [ "proc-macro2", "quote", "sha3", - "syn 2.0.114", + "syn 2.0.118", "syn-solidity", ] @@ -690,7 +690,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.114", + "syn 2.0.118", "syn-solidity", ] @@ -731,7 +731,7 @@ dependencies = [ "parking_lot", "serde", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tower 0.5.3", "tracing", @@ -799,7 +799,7 @@ dependencies = [ "darling 0.23.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -977,7 +977,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -1015,7 +1015,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -1081,6 +1081,12 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -1137,7 +1143,7 @@ dependencies = [ "serde_json", "serde_nanos", "serde_repr", - "thiserror 2.0.17", + "thiserror 2.0.18", "time", "tokio", "tokio-rustls", @@ -1168,7 +1174,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -1179,7 +1185,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -1216,7 +1222,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -1985,6 +1991,15 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bit-set" version = "0.8.0" @@ -2043,6 +2058,21 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.3.0", + "digest 0.11.3", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -2052,6 +2082,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + [[package]] name = "blst" version = "0.3.16" @@ -2084,7 +2123,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -2124,12 +2163,39 @@ version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + [[package]] name = "byte-slice-cast" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + [[package]] name = "byteorder" version = "1.5.0" @@ -2285,7 +2351,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -2303,6 +2369,12 @@ dependencies = [ "cc", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "coins-bip32" version = "0.12.0" @@ -2329,7 +2401,7 @@ dependencies = [ "coins-bip32", "hmac", "once_cell", - "pbkdf2", + "pbkdf2 0.12.2", "rand 0.8.5", "sha2", "thiserror 1.0.69", @@ -2500,6 +2572,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + [[package]] name = "contracts" version = "0.1.0" @@ -3628,6 +3706,24 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", +] + [[package]] name = "curve25519-dalek" version = "4.1.3" @@ -3639,8 +3735,10 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", + "rand_core 0.6.4", "rustc_version 0.4.1", "subtle", + "zeroize", ] [[package]] @@ -3651,7 +3749,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -3685,7 +3783,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -3699,7 +3797,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -3710,7 +3808,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -3721,7 +3819,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -3802,6 +3900,12 @@ dependencies = [ "serde_core", ] +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + [[package]] name = "derivative" version = "2.2.0" @@ -3840,7 +3944,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", "unicode-xid", ] @@ -3854,7 +3958,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.114", + "syn 2.0.118", "unicode-xid", ] @@ -3873,12 +3977,23 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", + "block-buffer 0.10.4", "const-oid", - "crypto-common", + "crypto-common 0.1.7", "subtle", ] +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.1", + "crypto-common 0.2.2", + "ctutils", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -3887,7 +4002,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -4067,6 +4182,7 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ + "pkcs8", "signature", ] @@ -4078,9 +4194,24 @@ checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", + "rand_core 0.6.4", + "serde", "sha2", "signature", "subtle", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b49a684b133c4980d7ee783936af771516011c8cd15f429dbda77245e282f03" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac", + "sha2", ] [[package]] @@ -4092,7 +4223,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -4150,7 +4281,7 @@ checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -4301,6 +4432,12 @@ dependencies = [ "bytes", ] +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + [[package]] name = "ff" version = "0.13.1" @@ -4323,6 +4460,30 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41" +[[package]] +name = "five8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "059c31d7d36c43fe39d89e55711858b4da8be7eb6dabac23c7289b1a19489406" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -4335,6 +4496,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" version = "1.1.8" @@ -4483,7 +4650,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -4770,7 +4937,7 @@ dependencies = [ "ipnet", "jni 0.22.4", "rand 0.10.1", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tokio", "tracing", @@ -4791,7 +4958,7 @@ dependencies = [ "prefix-trie", "rand 0.10.1", "ring", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tracing", "url", @@ -4818,7 +4985,7 @@ dependencies = [ "resolv-conf", "smallvec", "system-configuration 0.7.0", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", ] @@ -4943,6 +5110,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hybrid-array" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "0.14.32" @@ -5213,7 +5389,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -5373,7 +5549,7 @@ dependencies = [ "jni-sys 0.4.1", "log", "simd_cesu8", - "thiserror 2.0.17", + "thiserror 2.0.18", "walkdir", "windows-link", ] @@ -5388,7 +5564,7 @@ dependencies = [ "quote", "rustc_version 0.4.1", "simd_cesu8", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -5413,7 +5589,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -5625,7 +5801,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -5695,6 +5871,15 @@ version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + [[package]] name = "mimalloc" version = "0.1.48" @@ -5761,7 +5946,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -5823,6 +6008,12 @@ dependencies = [ "data-encoding-macro", ] +[[package]] +name = "multimap" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" + [[package]] name = "native-tls" version = "0.2.14" @@ -6011,9 +6202,10 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -6132,7 +6324,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -6169,7 +6361,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", ] @@ -6199,7 +6391,7 @@ dependencies = [ "opentelemetry_sdk", "prost 0.14.3", "reqwest", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tonic 0.14.4", "tonic-types", @@ -6231,7 +6423,7 @@ dependencies = [ "percent-encoding", "portable-atomic", "rand 0.9.4", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6348,7 +6540,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -6386,6 +6578,21 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "pbkdf2" version = "0.12.2" @@ -6421,6 +6628,17 @@ dependencies = [ "ucd-trie", ] +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap 2.13.0", +] + [[package]] name = "pharos" version = "0.5.3" @@ -6448,7 +6666,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -6619,7 +6837,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -6718,14 +6936,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] name = "proc-macro2" -version = "1.0.105" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -6742,7 +6960,7 @@ dependencies = [ "memchr", "parking_lot", "protobuf", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6763,7 +6981,7 @@ checksum = "710d30cd8d768420cf9d0f1727c2709df928cd509810fcb98dd386580dccf919" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -6815,6 +7033,27 @@ dependencies = [ "prost-derive 0.14.3", ] +[[package]] +name = "prost-build" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" +dependencies = [ + "heck", + "itertools 0.14.0", + "log", + "multimap", + "petgraph", + "prettyplease", + "prost 0.14.3", + "prost-types 0.14.3", + "pulldown-cmark", + "pulldown-cmark-to-cmark", + "regex", + "syn 2.0.118", + "tempfile", +] + [[package]] name = "prost-derive" version = "0.12.6" @@ -6825,7 +7064,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -6838,7 +7077,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -6851,7 +7090,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -6892,6 +7131,70 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "protoc-bin-vendored" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1c381df33c98266b5f08186583660090a4ffa0889e76c7e9a5e175f645a67fa" +dependencies = [ + "protoc-bin-vendored-linux-aarch_64", + "protoc-bin-vendored-linux-ppcle_64", + "protoc-bin-vendored-linux-s390_64", + "protoc-bin-vendored-linux-x86_32", + "protoc-bin-vendored-linux-x86_64", + "protoc-bin-vendored-macos-aarch_64", + "protoc-bin-vendored-macos-x86_64", + "protoc-bin-vendored-win32", +] + +[[package]] +name = "protoc-bin-vendored-linux-aarch_64" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c350df4d49b5b9e3ca79f7e646fde2377b199e13cfa87320308397e1f37e1a4c" + +[[package]] +name = "protoc-bin-vendored-linux-ppcle_64" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55a63e6c7244f19b5c6393f025017eb5d793fd5467823a099740a7a4222440c" + +[[package]] +name = "protoc-bin-vendored-linux-s390_64" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dba5565db4288e935d5330a07c264a4ee8e4a5b4a4e6f4e83fad824cc32f3b0" + +[[package]] +name = "protoc-bin-vendored-linux-x86_32" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8854774b24ee28b7868cd71dccaae8e02a2365e67a4a87a6cd11ee6cdbdf9cf5" + +[[package]] +name = "protoc-bin-vendored-linux-x86_64" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b38b07546580df720fa464ce124c4b03630a6fb83e05c336fea2a241df7e5d78" + +[[package]] +name = "protoc-bin-vendored-macos-aarch_64" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89278a9926ce312e51f1d999fee8825d324d603213344a9a706daa009f1d8092" + +[[package]] +name = "protoc-bin-vendored-macos-x86_64" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81745feda7ccfb9471d7a4de888f0652e806d5795b61480605d4943176299756" + +[[package]] +name = "protoc-bin-vendored-win32" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95067976aca6421a523e491fce939a3e65249bac4b977adee0ee9771568e8aa3" + [[package]] name = "psl-types" version = "2.0.11" @@ -6908,6 +7211,35 @@ dependencies = [ "psl-types", ] +[[package]] +name = "pulldown-cmark" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" +dependencies = [ + "bitflags 2.10.0", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50793def1b900256624a709439404384204a5dc3a6ec580281bfaac35e882e90" +dependencies = [ + "pulldown-cmark", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -6928,7 +7260,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2 0.6.1", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -6950,7 +7282,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -6972,9 +7304,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.43" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -7149,7 +7481,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -7379,7 +7711,7 @@ dependencies = [ "regex", "relative-path", "rustc_version 0.4.1", - "syn 2.0.114", + "syn 2.0.118", "unicode-ident", ] @@ -7754,6 +8086,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + [[package]] name = "serde-ext" version = "0.1.0" @@ -7764,6 +8105,16 @@ dependencies = [ "serde_with", ] +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -7781,7 +8132,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -7825,7 +8176,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -7877,7 +8228,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -7912,6 +8263,12 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + [[package]] name = "sha3" version = "0.10.8" @@ -8135,6 +8492,18 @@ dependencies = [ "url", ] +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + [[package]] name = "slab" version = "0.4.11" @@ -8171,22 +8540,974 @@ dependencies = [ ] [[package]] -name = "solana-indexer" -version = "0.1.0" +name = "solana-account" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385cad928d576683db3afef1b88d00a31a7126cc9f6f3f0c9f6b2d181437f53c" +dependencies = [ + "bincode", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-instruction-error", + "solana-pubkey 4.2.0", + "solana-sdk-ids", + "solana-sysvar", +] [[package]] -name = "solver" -version = "0.1.0" +name = "solana-account-info" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9cf16495d9eb53e3d04e72366a33bb1c20c24e78c171d8b8f5978357b63ae95" dependencies = [ - "alloy", - "anyhow", - "arc-swap", - "async-trait", - "const-hex", - "contracts", - "ethrpc", - "futures", - "hex-literal", + "bincode", + "serde_core", + "solana-address 2.6.1", + "solana-program-error", + "solana-program-memory", +] + +[[package]] +name = "solana-address" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" +dependencies = [ + "solana-address 2.6.1", +] + +[[package]] +name = "solana-address" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c93e262f671bf402e1040e4a7e40b05d81da5956c7681948c975a0997517bb" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "five8", + "five8_const", + "rand 0.9.4", + "serde", + "serde_derive", + "sha2-const-stable", + "solana-atomic-u64", + "solana-define-syscall 5.1.0", + "solana-program-error", + "solana-sanitize", + "solana-sha256-hasher", + "wincode", +] + +[[package]] +name = "solana-atomic-u64" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "085db4906d89324cef2a30840d59eaecf3d4231c560ec7c9f6614a93c652f501" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-big-mod-exp" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" +dependencies = [ + "num-bigint", + "num-traits", + "solana-define-syscall 3.0.0", +] + +[[package]] +name = "solana-blake3-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" +dependencies = [ + "blake3", + "solana-define-syscall 4.0.1", + "solana-hash 4.4.0", +] + +[[package]] +name = "solana-borsh" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c04abbae16f57178a163125805637b8a076175bb5c0002fb04f4792bea901cf7" +dependencies = [ + "borsh", +] + +[[package]] +name = "solana-clock" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0acdace90d96e2c9e70d681465b4fe888b6bcf27c354ae9774e9f8a3b72923d" +dependencies = [ + "serde", + "serde_derive", + "solana-get-sysvar", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[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.2.0", + "solana-stable-layout", +] + +[[package]] +name = "solana-define-syscall" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" + +[[package]] +name = "solana-define-syscall" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" + +[[package]] +name = "solana-define-syscall" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e14a4f604117f379840956a8fc8695e4c84f5b0ebed192f31f60d9b85d581d" + +[[package]] +name = "solana-derivation-path" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff71743072690fdbdfcdc37700ae1cb77485aaad49019473a81aee099b1e0b8c" +dependencies = [ + "derivation-path", + "qstring", + "uriparse", +] + +[[package]] +name = "solana-epoch-info" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e093c84f6ece620a6b10cd036574b0cd51944231ab32d81f80f76d54aba833e6" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-epoch-rewards" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf7eb4986b0b1d6f562b21f75a836f1a6df6e00c275efcef50aab5c144dc59e" +dependencies = [ + "serde", + "serde_derive", + "solana-get-sysvar", + "solana-hash 4.4.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-epoch-rewards-hasher" +version = "3.1.0" +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", +] + +[[package]] +name = "solana-epoch-schedule" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8116e6ffa6002237d5ab5edcbda17f9ba66b6742c45a89c9fb40a94dbacd4c1d" +dependencies = [ + "serde", + "serde_derive", + "solana-get-sysvar", + "solana-program-error", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-epoch-stake" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "027e6d0b9e7daac5b2ac7c3f9ca1b727861121d9ef05084cf435ff736051e7c2" +dependencies = [ + "solana-define-syscall 5.1.0", + "solana-pubkey 4.2.0", +] + +[[package]] +name = "solana-example-mocks" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eb265ff95e28eceda117e2e3d2d2a611ecbbfe911dfeeeecd1521814540ffab" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 4.4.0", + "solana-instruction", + "solana-nonce", + "solana-pubkey 4.2.0", + "solana-sdk-ids", + "solana-system-interface", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-fee-calculator" +version = "3.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef67f01cc6a0c72e99a08d0d484683f995de4c80e9568728fa77d1537f9b7e09" +dependencies = [ + "log", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-fee-structure" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2abdb1223eea8ec64136f39cb1ffcf257e00f915c957c35c0dd9e3f4e700b0" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-get-sysvar" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef3bc859fc036ed490146793557386cbfae614ebba4adc704c37d94350824ed4" +dependencies = [ + "solana-address 2.6.1", + "solana-define-syscall 5.1.0", + "solana-program-error", +] + +[[package]] +name = "solana-hard-forks" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45406eccad36220e52988b024d8daa93e691e38d5d71ad5fec55410cc9cf427d" + +[[package]] +name = "solana-hash" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" +dependencies = [ + "solana-hash 4.4.0", +] + +[[package]] +name = "solana-hash" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe51db00ac3aa9f950d1e6201a126acfa26e6d81bc4a183ba64ec02effcad883" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", + "five8", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wincode", +] + +[[package]] +name = "solana-indexer" +version = "0.1.0" +dependencies = [ + "bytes", + "derive_more 1.0.0", + "solana-sdk", + "thiserror 1.0.69", + "tracing", + "yellowstone-grpc-proto", +] + +[[package]] +name = "solana-inflation" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf104167e42e747602b88e02b25cacfc5de699c3b7cbba60d3250437e6a22ed" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-instruction" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ebb0ffd19263051bc3f683fcc086134b8ff23af894dcb63f7563c7137b42f1" +dependencies = [ + "bincode", + "borsh", + "serde", + "serde_derive", + "solana-define-syscall 5.1.0", + "solana-instruction-error", + "solana-pubkey 4.2.0", +] + +[[package]] +name = "solana-instruction-error" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7d34343838343a3755b7dfb1e438d94c6db2263b519cfe3c2257af932b6e93" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-program-error", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e0732294560e88ecdb2bbc656e67383e9f88c78ec09469cef172f0d28cd1bcd" +dependencies = [ + "bitflags 2.10.0", + "solana-account-info", + "solana-instruction", + "solana-instruction-error", + "solana-program-error", + "solana-sanitize", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-sysvar-id", +] + +[[package]] +name = "solana-keccak-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" +dependencies = [ + "sha3", + "solana-define-syscall 4.0.1", + "solana-hash 4.4.0", +] + +[[package]] +name = "solana-keypair" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "263d614c12aa267a3278703175fd6440552ca61bc960b5a02a4482720c53438b" +dependencies = [ + "ed25519-dalek", + "ed25519-dalek-bip32", + "five8", + "five8_core", + "rand 0.9.4", + "solana-address 2.6.1", + "solana-derivation-path", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-last-restart-slot" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22474b83d3c7c318e1c3a725784fc2d1d03b728e36369e58ce48769a61ed85e" +dependencies = [ + "serde", + "serde_derive", + "solana-get-sysvar", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-message" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94164f9740d40f41568f6f48140a0866251a79a7bce013eb4ffefe12d0e38cc" +dependencies = [ + "blake3", + "serde", + "serde_derive", + "solana-address 2.6.1", + "solana-hash 4.4.0", + "solana-instruction", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-transaction-error", + "wincode", +] + +[[package]] +name = "solana-msg" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726b7cbbc6be6f1c6f29146ac824343b9415133eee8cce156452ad1db93f8008" +dependencies = [ + "solana-define-syscall 5.1.0", +] + +[[package]] +name = "solana-native-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" + +[[package]] +name = "solana-nonce" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95dbc9f2e33b6c10e231df15cb2a3bff9ea7eab6347f9e316fe75c97fd67bbb" +dependencies = [ + "solana-fee-calculator", + "solana-hash 4.4.0", + "solana-pubkey 4.2.0", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-offchain-message" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e2a1141a673f72a05cf406b99e4b2b8a457792b7c01afa07b3f00d4e2de393" +dependencies = [ + "num_enum", + "solana-hash 3.1.0", + "solana-packet", + "solana-pubkey 3.0.0", + "solana-sanitize", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-packet" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edf2f25743c95229ac0fdc32f8f5893ef738dbf332c669e9861d33ddb0f469d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "solana-presigner" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f704eaf825be3180832445b9e4983b875340696e8e7239bf2d535b0f86c14a2" +dependencies = [ + "solana-pubkey 3.0.0", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-program" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778f08fb0eaf52c9a3bef2978247f7fab0ccfddc44cfddb936d5ad9f98ede886" +dependencies = [ + "memoffset", + "solana-account-info", + "solana-big-mod-exp", + "solana-blake3-hasher", + "solana-borsh", + "solana-clock", + "solana-cpi", + "solana-define-syscall 5.1.0", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-epoch-stake", + "solana-example-mocks", + "solana-fee-calculator", + "solana-hash 4.4.0", + "solana-instruction", + "solana-instruction-error", + "solana-instructions-sysvar", + "solana-keccak-hasher", + "solana-last-restart-slot", + "solana-msg", + "solana-native-token", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 4.2.0", + "solana-rent", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-serde-varint", + "solana-serialize-utils", + "solana-sha256-hasher", + "solana-short-vec", + "solana-slot-hashes", + "solana-slot-history", + "solana-stable-layout", + "solana-sysvar", + "solana-sysvar-id", +] + +[[package]] +name = "solana-program-entrypoint" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c9b0a1ff494e05f503a08b3d51150b73aa639544631e510279d6375f290997" +dependencies = [ + "solana-account-info", + "solana-define-syscall 4.0.1", + "solana-program-error", + "solana-pubkey 4.2.0", +] + +[[package]] +name = "solana-program-error" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f04fa578707b3612b095f0c8e19b66a1233f7c42ca8082fcb3b745afcc0add6" +dependencies = [ + "borsh", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-program-memory" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4068648649653c2c50546e9a7fb761791b5ab0cda054c771bb5808d3a4b9eb52" +dependencies = [ + "solana-define-syscall 4.0.1", +] + +[[package]] +name = "solana-program-option" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a88006a9b8594088cec9027ab77caaaa258a2aaa2083d3f086c44b42e50aeab" + +[[package]] +name = "solana-program-pack" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7701cb15b90667ae1c89ef4ac35a59c61e66ce58ddee13d729472af7f41d59" +dependencies = [ + "solana-program-error", +] + +[[package]] +name = "solana-pubkey" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" +dependencies = [ + "solana-address 1.1.0", +] + +[[package]] +name = "solana-pubkey" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7db719574990de7e8b0f55a8593ac92a5ccb42c8ce67b3e4bf05b139d5d9ee71" +dependencies = [ + "rand 0.9.4", + "solana-address 2.6.1", +] + +[[package]] +name = "solana-rent" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39f0d780bf8e8a1fe8b5b5fce1acad6b209485b86dec246e7523d5e4a8b7c7fc" +dependencies = [ + "serde", + "serde_derive", + "solana-get-sysvar", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-sanitize" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" + +[[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-epoch-info", + "solana-epoch-rewards-hasher", + "solana-fee-structure", + "solana-inflation", + "solana-keypair", + "solana-message", + "solana-offchain-message", + "solana-presigner", + "solana-program", + "solana-program-memory", + "solana-pubkey 4.2.0", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-serde", + "solana-serde-varint", + "solana-short-vec", + "solana-shred-version", + "solana-signature", + "solana-signer", + "solana-time-utils", + "solana-transaction", + "solana-transaction-error", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-sdk-ids" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" +dependencies = [ + "solana-address 2.6.1", +] + +[[package]] +name = "solana-sdk-macro" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8765316242300c48242d84a41614cb3388229ec353ba464f6fe62a733e41806f" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a1ad3ed7846631c88c71c5d2f21a2ecb6b61da333d9be173b6b061b35609ae" +dependencies = [ + "k256", + "solana-define-syscall 5.1.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-seed-derivable" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff7bdb72758e3bec33ed0e2658a920f1f35dfb9ed576b951d20d63cb61ecd95c" +dependencies = [ + "solana-derivation-path", +] + +[[package]] +name = "solana-seed-phrase" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc905b200a95f2ea9146e43f2a7181e3aeb55de6bc12afb36462d00a3c7310de" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "sha2", +] + +[[package]] +name = "solana-serde" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709a93cab694c70f40b279d497639788fc2ccbcf9b4aa32273d4b361322c02dd" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "950e5b83e839dc0f92c66afc124bb8f40e89bc90f0579e8ec5499296d27f54e3" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serialize-utils" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761357b0853c9623bf12c1d2314b3d6160a85b087b84c45224fb85766d22616b" +dependencies = [ + "solana-instruction-error", + "solana-pubkey 4.2.0", + "solana-sanitize", +] + +[[package]] +name = "solana-sha256-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" +dependencies = [ + "sha2", + "solana-define-syscall 4.0.1", + "solana-hash 4.4.0", +] + +[[package]] +name = "solana-short-vec" +version = "3.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8250a4495aad49ad20556a607da53bdcb20de78da10b65afbf918b7f1de647" +dependencies = [ + "serde_core", + "wincode", +] + +[[package]] +name = "solana-shred-version" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6c79722e299d957958bf33695f7cd1ef6724ff55563c60fd9e3e24487cccde2" +dependencies = [ + "solana-hard-forks", + "solana-hash 4.4.0", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-signature" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0364c7577c3c82a693ce28a1febc8d1b5d1b0a175fdc2114ae6186b69effe1e" +dependencies = [ + "ed25519-dalek", + "five8", + "rand 0.9.4", + "serde", + "serde-big-array", + "serde_derive", + "solana-sanitize", + "wincode", +] + +[[package]] +name = "solana-signer" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520bd6021163ee517f4bdc7ae03ded904f97e11320001ba0b3355f45eb14f558" +dependencies = [ + "solana-pubkey 4.2.0", + "solana-signature", + "solana-transaction-error", +] + +[[package]] +name = "solana-slot-hashes" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7ce2b4b8911bf2db3de7b6266e67bfc21a6a9f8c566fb096d9782ca2ad16ee" +dependencies = [ + "serde", + "serde_derive", + "solana-get-sysvar", + "solana-hash 4.4.0", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-slot-history" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40427c04d3e808493cb5e3d1a97cef84d7c15cb6f89b15c5684d0d4027105600" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-get-sysvar", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-stable-layout" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9f6a291ba063a37780af29e7db14bdd3dc447584d8ba5b3fc4b88e2bbc982fa" +dependencies = [ + "solana-instruction", + "solana-pubkey 4.2.0", +] + +[[package]] +name = "solana-stake-history" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c736a6aa0e53b9d264d90b06589fc0996f49f882f3e71842ed754fc57ffc1a43" +dependencies = [ + "serde", + "serde_derive", + "solana-clock", + "solana-get-sysvar", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-system-interface" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55b54965bf0b76fa8e2b35376583efddd4d916618cfe595bf48c7d7b55a9e628" +dependencies = [ + "num-traits", + "solana-address 2.6.1", + "solana-msg", + "solana-program-error", +] + +[[package]] +name = "solana-sysvar" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ada7045bbfdd802af08fbc9c7e2b56ddabb20599d22e4c3840fcef5e7afb8324" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-define-syscall 5.1.0", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-get-sysvar", + "solana-hash 4.4.0", + "solana-instruction", + "solana-last-restart-slot", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-pubkey 4.2.0", + "solana-rent", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-history", + "solana-sysvar-id", +] + +[[package]] +name = "solana-sysvar-id" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" +dependencies = [ + "solana-address 2.6.1", + "solana-sdk-ids", +] + +[[package]] +name = "solana-time-utils" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced92c60aa76ec4780a9d93f3bd64dfa916e1b998eacc6f1c110f3f444f02c9" + +[[package]] +name = "solana-transaction" +version = "4.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2509e70bdce879db3e0f56cf97e40edd53742e8f0e6f34d64c46e7900071b53f" +dependencies = [ + "serde", + "serde_derive", + "solana-address 2.6.1", + "solana-hash 4.4.0", + "solana-instruction", + "solana-instruction-error", + "solana-message", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-signer", + "solana-transaction-error", + "wincode", +] + +[[package]] +name = "solana-transaction-error" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "757a648388ab1e7350a806ffceb31ce656dc5b5fe607b9f8209aa56f63040179" +dependencies = [ + "serde", + "serde_derive", + "solana-instruction-error", + "solana-sanitize", +] + +[[package]] +name = "solver" +version = "0.1.0" +dependencies = [ + "alloy", + "anyhow", + "arc-swap", + "async-trait", + "const-hex", + "contracts", + "ethrpc", + "futures", + "hex-literal", "itertools 0.14.0", "liquidity-sources", "maplit", @@ -8349,7 +9670,7 @@ dependencies = [ "serde_json", "sha2", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-stream", "tracing", @@ -8366,7 +9687,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -8389,7 +9710,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.114", + "syn 2.0.118", "tokio", "url", ] @@ -8433,7 +9754,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "whoami", ] @@ -8473,7 +9794,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "whoami", ] @@ -8498,7 +9819,7 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "url", ] @@ -8550,7 +9871,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -8572,9 +9893,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.114" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -8590,7 +9911,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -8616,7 +9937,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -8713,11 +10034,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -8728,18 +10049,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -8901,7 +10222,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -9100,6 +10421,18 @@ dependencies = [ "tracing", ] +[[package]] +name = "tonic-build" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f61875ac5293cf72e6c8cf0158086428c82c37229e98c840878f1706b0322" +dependencies = [ + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.118", +] + [[package]] name = "tonic-prost" version = "0.14.4" @@ -9111,6 +10444,22 @@ dependencies = [ "tonic 0.14.4", ] +[[package]] +name = "tonic-prost-build" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "654e5643eff75d7f8c99197ce1440ed19a3474eada74c12bbac488b2cafdae27" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "prost-types 0.14.3", + "quote", + "syn 2.0.118", + "tempfile", + "tonic-build", +] + [[package]] name = "tonic-types" version = "0.14.5" @@ -9217,7 +10566,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -9320,7 +10669,7 @@ dependencies = [ "rustls", "rustls-pki-types", "sha1", - "thiserror 2.0.17", + "thiserror 2.0.18", "utf-8", ] @@ -9354,6 +10703,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + [[package]] name = "unicode-bidi" version = "0.3.18" @@ -9399,6 +10754,16 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + [[package]] name = "url" version = "2.5.8" @@ -9587,7 +10952,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", "wasm-bindgen-shared", ] @@ -9733,6 +11098,31 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror 2.0.18", + "wincode-derive", +] + +[[package]] +name = "wincode-derive" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15ab90b719560d0fda79c74550ad1c948d17b118765942838055ebaf34d67071" +dependencies = [ + "darling 0.23.0", + "proc-macro2", + "quote", + "syn 2.0.118", +] + [[package]] name = "windows-core" version = "0.62.2" @@ -9754,7 +11144,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -9765,7 +11155,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -10148,7 +11538,7 @@ dependencies = [ "heck", "indexmap 2.13.0", "prettyplease", - "syn 2.0.114", + "syn 2.0.118", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -10164,7 +11554,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -10225,7 +11615,7 @@ dependencies = [ "pharos", "rustc_version 0.4.1", "send_wrapper", - "thiserror 2.0.17", + "thiserror 2.0.18", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -10246,6 +11636,22 @@ version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" +[[package]] +name = "yellowstone-grpc-proto" +version = "12.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91071690a2b0a078a4712ecca7be37aa929b474a74f4f269c61582f8e2a6139" +dependencies = [ + "anyhow", + "prost 0.14.3", + "prost-types 0.14.3", + "protoc-bin-vendored", + "siphasher 1.0.3", + "solana-pubkey 4.2.0", + "thiserror 2.0.18", + "tonic-prost-build", +] + [[package]] name = "yoke" version = "0.8.1" @@ -10265,7 +11671,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", "synstructure", ] @@ -10286,7 +11692,7 @@ checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -10306,7 +11712,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", "synstructure", ] @@ -10327,7 +11733,7 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] @@ -10360,7 +11766,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.118", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 1abc608af3..cbb6bc1df2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,6 +119,7 @@ shared = { path = "crates/shared" } signature-validator = { path = "crates/signature-validator" } simulator = { path = "crates/simulator" } solana-indexer = { path = "crates/solana-indexer" } +solana-sdk = "4" solver = { path = "crates/solver" } solvers = { path = "crates/solvers" } solvers-dto = { path = "crates/solvers-dto" } @@ -147,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 36f20d9afa..c11b2d4d7c 100644 --- a/crates/solana-indexer/Cargo.toml +++ b/crates/solana-indexer/Cargo.toml @@ -15,5 +15,13 @@ path = "src/lib.rs" name = "solana-indexer" path = "src/main.rs" +[dependencies] +bytes = { workspace = true } +derive_more = { workspace = true } +solana-sdk = { workspace = true } +thiserror = { workspace = true } +tracing = { workspace = true } +yellowstone-grpc-proto = { workspace = true } + [lints] workspace = true diff --git a/crates/solana-indexer/src/lib.rs b/crates/solana-indexer/src/lib.rs index 621806e9a0..dcb7fa8832 100644 --- a/crates/solana-indexer/src/lib.rs +++ b/crates/solana-indexer/src/lib.rs @@ -1 +1,3 @@ //! `solana-indexer` — Solana settlement indexer. + +pub mod types; diff --git a/crates/solana-indexer/src/types/channel.rs b/crates/solana-indexer/src/types/channel.rs new file mode 100644 index 0000000000..6775492094 --- /dev/null +++ b/crates/solana-indexer/src/types/channel.rs @@ -0,0 +1,63 @@ +#![expect(dead_code)] +//! Message types passed over the internal channels. +//! +//! The ingester pushes [`StreamUpdate`] into the channel to the decoder; the +//! decoder pushes [`PartialEvent`] / [`PartialHalf`] to the partial-event +//! watchdog. + +use crate::types::{ + Signature, + slot::Slot, + wire::{SubscribeUpdateAccountInfo, SubscribeUpdateTransactionInfo}, +}; + +/// From `Ingester` → `Decoder`. +/// +/// One multiplexed wire message, tagged with the slot the message was observed +/// at. +#[derive(Debug, Clone)] +pub(crate) enum StreamUpdate { + /// A transaction-update slot message. + Tx { + /// Slot the message was observed at. + slot: Slot, + /// Transaction signature. + signature: Signature, + /// Wire message body. + inner: Box, + }, + /// An account-update slot message. + Account { + /// Slot the message was observed at. + slot: Slot, + /// Optional signature linking the write back to its originating + /// transaction. + txn_signature: Option, + /// Wire message body. + inner: Box, + }, +} + +/// From `Decoder` → `PartialEventWatchdog`. +/// +/// The watchdog holds incomplete `(slot, signature)` pairs until both halves +/// arrive; each delivery carries the half that just landed. +#[derive(Debug, Clone, Copy)] +pub(crate) struct PartialEvent { + /// Slot the partial was observed at. + pub slot: Slot, + /// Transaction signature the partial corresponds to. + pub signature: Signature, +} + +/// One of the two halves a [`StreamUpdate`] can produce. +/// +/// The decoder pushes one `PartialEvent` per `StreamUpdate` it processes; the +/// watchdog uses the `(slot, signature)` key to match pairs. +#[derive(Debug, Clone)] +pub(crate) enum PartialHalf { + /// Transaction-update half. + Tx(Box), + /// Account-update half. + Account(Box), +} diff --git a/crates/solana-indexer/src/types/commitment.rs b/crates/solana-indexer/src/types/commitment.rs new file mode 100644 index 0000000000..07cf688514 --- /dev/null +++ b/crates/solana-indexer/src/types/commitment.rs @@ -0,0 +1,81 @@ +#![expect(dead_code)] +//! Commitment-tracking types. +//! +//! This module holds the types we use to track how far a transaction has +//! progressed through Solana's commitment pipeline, plus the row shapes the +//! finalization worker reads and writes. +//! +//! The indexer captures transactions at `confirmed` commitment. A later +//! finalization pass polls `getSignatureStatuses` (whose result is modeled by +//! [`SignatureStatus`]) and either promotes the row to `finalized` or marks it +//! `rolled_back`. [`UnfinalizedRow`] is the shape the finalization worker +//! queries for when sweeping aged confirmed rows, and [`AccountInfo`] holds +//! account snapshots used for recovery when accounts aren't obtained normally +//! through the ingestion stream. + +use { + crate::types::{Signature, slot::Slot}, + bytes::Bytes, + solana_sdk::pubkey::Pubkey, +}; + +/// Commitment level persisted by the indexer. +/// +/// Solana consensus defines `processed`, `confirmed`, and `finalized` +/// commitment levels, but we only store the two durable states plus a terminal +/// failure state for abandoned slots. `processed` is omitted because it +/// reflects the node's latest view and is still rollback-prone. +#[derive(Debug, Clone, Copy)] +pub(crate) enum Commitment { + /// Voted on by a supermajority but can still be rolled back. Watched by the + /// finalization worker. + Confirmed, + /// Rooted by the cluster and considered permanently settled. + Finalized, + /// Never landed, or its slot was abandoned by the cluster. + RolledBack, +} + +impl Commitment { + /// String label used in `solana.*` `commitment` columns. + pub fn as_label(self) -> &'static str { + match self { + Self::Confirmed => "confirmed", + Self::Finalized => "finalized", + Self::RolledBack => "rolled_back", + } + } +} + +/// Result of an RPC `getSignatureStatuses` poll. +#[derive(Debug, Clone, Copy)] +pub(crate) struct SignatureStatus { + /// Slot the transaction landed at, if known. + pub slot: Slot, + /// Confirmation status reported by the RPC. + pub confirmation_status: Commitment, +} + +/// Snapshot of an account at a given slot (from `getAccountInfo`). +#[derive(Debug, Clone)] +pub(crate) struct AccountInfo { + /// Slot the snapshot was read at. + pub slot: Slot, + /// Account data (serialized). + pub data: Bytes, + /// Account owner program. + pub owner: Pubkey, +} + +/// A `solana.*` row that has not yet reached `finalized` commitment — the kind +/// picked up by the aged-row sweep, where `commitment = 'confirmed'` and the +/// row's slot is at least one finalization window behind `LATEST_CHAIN_SLOT`. +#[derive(Debug, Clone)] +pub(crate) struct UnfinalizedRow { + /// Table the row lives in. + pub table: &'static str, + /// Transaction signature. + pub signature: Signature, + /// Slot the row was inserted at. + pub slot: Slot, +} diff --git a/crates/solana-indexer/src/types/dead_letter.rs b/crates/solana-indexer/src/types/dead_letter.rs new file mode 100644 index 0000000000..fe1699d117 --- /dev/null +++ b/crates/solana-indexer/src/types/dead_letter.rs @@ -0,0 +1,47 @@ +#![expect(dead_code)] +//! Dead-letter types: events that failed to persist and were diverted to +//! `solana.dead_letter` for operator follow-up. + +use { + crate::types::{Signature, slot::Slot}, + bytes::Bytes, +}; + +/// A decoded event whose write to `solana.*` failed and was diverted to +/// `solana.dead_letter`. +#[derive(Debug, Clone)] +pub(crate) struct DeadLetterEntry { + /// Slot the event was observed at. + pub slot: Slot, + /// Transaction signature, if the failure was per-transaction. + pub signature: Option, + /// Why the event landed in the dead-letter table. + pub reason: DeadLetterReason, + /// Original raw bytes for replay. + pub raw_bytes: Bytes, +} + +/// Why a row landed in the dead-letter table. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) enum DeadLetterReason { + /// Decoder received both halves but couldn't parse them. + DecoderError, + /// Watchdog gave up: account-update half never arrived. + AccountUpdateMissing, + /// Watchdog gave up: transaction-update half never arrived. + TxUpdateMissing, + /// Settlement landed but no `proposed_solutions` row matched. + SolutionUidUnmatchable, +} + +impl DeadLetterReason { + /// String label used in `solana.dead_letter.reason`. + pub fn as_label(self) -> &'static str { + match self { + Self::DecoderError => "decoder_error", + Self::AccountUpdateMissing => "account_update_missing", + Self::TxUpdateMissing => "tx_update_missing", + Self::SolutionUidUnmatchable => "solution_uid_unmatchable", + } + } +} diff --git a/crates/solana-indexer/src/types/errors.rs b/crates/solana-indexer/src/types/errors.rs new file mode 100644 index 0000000000..27607bc304 --- /dev/null +++ b/crates/solana-indexer/src/types/errors.rs @@ -0,0 +1,58 @@ +#![expect(dead_code)] +//! Error types used across the indexer's domain. + +use {crate::types::slot::Slot, thiserror::Error}; + +/// Failures surfaced from the decoder. +#[derive(Debug, Error, PartialEq, Eq)] +pub(crate) enum DecodeError { + /// The discriminator byte(s) at the start of the instruction data did not + /// match any known instruction on either program. + #[error("unknown instruction discriminator")] + UnknownDiscriminator, + /// The ALT (Address Lookup Table) loaded-address list could not be resolved + /// against the full account list. + #[error("alt resolution failed")] + AltResolutionFailed, + /// The instruction was recognised but its schema did not match the on-chain + /// layout. + #[error("schema mismatch")] + SchemaMismatch, +} + +/// Failures surfaced from the persistence boundary. +#[derive(Debug, Error, PartialEq, Eq)] +pub(crate) enum StoreError { + /// The SQL `ON CONFLICT` clause rejected the write (e.g. watermark + /// regression). + #[error("store conflict")] + Conflict, + /// The store is temporarily unavailable (e.g. connection lost, pool + /// exhausted). The caller is expected to retry. + #[error("store unavailable")] + Unavailable, +} + +/// Failures surfaced from the stream boundary. +#[derive(Debug, Error)] +pub(crate) enum StreamError { + /// The stream has been disconnected by the server. + #[error("stream disconnected")] + Disconnected, + /// The internal mpsc send timed out (backpressure on the decoder). + #[error("stream send timeout")] + SendTimeout, + /// The resume slot is outside the provider's replay window. The caller + /// should reset `from_slot` to `LATEST_CHAIN_SLOT − replay_window`, + /// record the lost range, and retry the subscription. + #[error( + "replay window exceeded: attempted slot {attempted_slot}, earliest replayable \ + {earliest_replayable_slot}" + )] + ReplayWindowExceeded { + /// The slot the subscriber attempted to resume from. + attempted_slot: Slot, + /// The earliest slot the provider can still serve. + earliest_replayable_slot: Slot, + }, +} diff --git a/crates/solana-indexer/src/types/events.rs b/crates/solana-indexer/src/types/events.rs new file mode 100644 index 0000000000..fd56a66d3a --- /dev/null +++ b/crates/solana-indexer/src/types/events.rs @@ -0,0 +1,160 @@ +#![expect(dead_code)] +//! Domain event taxonomy. +//! +//! The settlement program and SolFlow each have their own enum +//! (`SettlementEvent`, `SolFlowEvent`); the decoder's handoff to the +//! persistence step is the sum [`DecodedEvent`]. Per-order accounting is +//! reconstructed from [`TradeDelta`] snapshots. + +use { + crate::types::{Signature, order::OrderUid, slot::Slot}, + solana_sdk::pubkey::Pubkey, +}; + +/// Change in a single order's `amount_withdrawn` and `amount_received` between +/// two consecutive account snapshots. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) struct TradeDelta { + /// Order UID this delta applies to. + pub order_uid: OrderUid, + /// Change in `amount_withdrawn` since the previous snapshot. + pub amount_withdrawn_delta: u64, + /// Change in `amount_received` since the previous snapshot. + pub amount_received_delta: u64, + /// Whether the order is fully filled after this trade. + /// + /// This is **not** a field emitted by the settlement program's event data; + /// it is inferred by the decoder from the order PDA's post-trade snapshot. + /// It is `true` when post-trade `amount_withdrawn` equals the order's full + /// sell amount, or `amount_received` equals the full buy amount. + pub order_fulfilled: bool, +} + +/// Settlement-program events decoded from on-chain instructions. +#[derive(Debug, Clone, PartialEq, Eq)] +pub(crate) enum SettlementEvent { + /// A new order was created on-chain. + OrderCreated { + /// Order UID this order is identified by. + order_uid: OrderUid, + /// Owner of the order. + owner: Pubkey, + /// Address that created the order (relayer / solver). + created_by: Pubkey, + }, + /// An order was closed. + OrderClosed { + /// Order UID this order is identified by. + order_uid: OrderUid, + }, + /// An order was cancelled. + OrderCancelled { + /// Order UID this order is identified by. + order_uid: OrderUid, + }, + /// A settlement was finalized on-chain. + SettlementFinalized { + /// Auction id this settlement belongs to. + auction_id: u64, + /// Solver that won the auction. + solver: Pubkey, + /// Transaction signature. + tx_signature: Signature, + /// Slot the settlement was observed at. + slot: Slot, + /// Per-order accounting deltas. + trades: Vec, + }, + /// A new buffer PDA was created. + BufferCreated { + /// Token the buffer is denominated in. + token: Pubkey, + }, + /// A buffer PDA was used by a transaction. + BufferUsed { + /// Token the buffer is denominated in. + token: Pubkey, + /// Transaction signature that consumed the buffer. + tx_signature: Signature, + }, + /// A manager was updated (e.g. ownership rotation). + ManagerUpdated { + /// Previous manager. + from: Pubkey, + /// New manager. + to: Pubkey, + }, + /// A solver was added to the allow-list. + SolverAdded { + /// Solver that was added. + solver: Pubkey, + }, + /// A solver was removed from the allow-list. + SolverRemoved { + /// Solver that was removed. + solver: Pubkey, + }, + /// Generic solver interaction (instruction observed but not decoded into + /// one of the structured events above). + SolverInteraction { + /// Transaction signature. + tx_signature: Signature, + /// Index of the instruction within the transaction. + ix_index: u16, + }, +} + +/// SolFlow-side events, populates the `solana.sol_flow` table. +/// +/// Note: the paired `solana.orders` row for `OrderEnabled` is written by the +/// settlement-program decode path, not here. +#[derive(Debug, Clone, PartialEq, Eq)] +#[allow(clippy::enum_variant_names)] +pub(crate) enum SolFlowEvent { + /// A new order was created on SolFlow. + OrderCreated { + /// Custodial PDA that holds the wSOL for this order. + custodial_pda: Pubkey, + /// Real owner of the order. + real_owner: Pubkey, + /// Order UID. + order_uid: OrderUid, + /// From `meta.post_token_balances` on the custodial wSOL account. + sol_amount: u64, + }, + /// A `SetUpOrder` instruction on the SolFlow program was observed. + /// + /// The SolFlow order's custodial wSOL PDA has been linked to a + /// settlement-program order via CPI. At this point custody of the wrapped + /// SOL has effectively been transferred to the settlement program, so the + /// SolFlow order is now eligible to be included in auctions and solved. + /// + /// The `enabler` is the signer of the `SetUpOrder` instruction — an + /// unprivileged relayer or participant that pays to set up the SolFlow + /// order, not the SolFlow program account. The settlement program records + /// the on-chain order's `created_by` as this enabler address. + OrderEnabled { + /// Custodial PDA. + custodial_pda: Pubkey, + /// Signer of the `SetUpOrder` instruction that enabled the order. + enabler: Pubkey, + /// Order UID. + order_uid: OrderUid, + }, + /// An order was recovered (e.g. after a stuck-state cleanup). + OrderRecovered { + /// Custodial PDA. + custodial_pda: Pubkey, + /// Slot the recovery was observed at. + slot: Slot, + }, +} + +/// Sum of the two program-side event enums for the persistence step. +#[derive(Debug, Clone, PartialEq, Eq)] +pub(crate) enum DecodedEvent { + /// A settlement-program event. + Settlement(SettlementEvent), + /// A SolFlow event. + SolFlow(SolFlowEvent), +} diff --git a/crates/solana-indexer/src/types/mod.rs b/crates/solana-indexer/src/types/mod.rs new file mode 100644 index 0000000000..ef83c3612e --- /dev/null +++ b/crates/solana-indexer/src/types/mod.rs @@ -0,0 +1,14 @@ +//! Domain types for the Solana settlement indexer. + +pub mod channel; +pub mod commitment; +pub mod dead_letter; +pub mod errors; +pub mod events; +pub mod order; +pub mod recovery; +pub mod slot; +pub mod tx; +pub mod wire; + +pub use solana_sdk::signature::Signature; diff --git a/crates/solana-indexer/src/types/order.rs b/crates/solana-indexer/src/types/order.rs new file mode 100644 index 0000000000..3229099dca --- /dev/null +++ b/crates/solana-indexer/src/types/order.rs @@ -0,0 +1,15 @@ +//! CoW Protocol order identifier. + +use derive_more::{Display, From, Into}; + +/// A 32-byte CoW Protocol order identifier, equal to `hash(intent)`. +/// +/// This is the value used to derive the order PDA seed (`["settlement", +/// hash(intent), "order"]`). SolFlow custody records and trade-delta +/// accounting carry the same bytes as `order_uid`, and the settlement +/// program's order-lifecycle events expose the same value under the +/// `intent_hash` field name. Per the CoW Solana spec there is exactly one +/// such identifier per order. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display, From, Into)] +#[display("OrderUid({_0:?})")] +pub(crate) struct OrderUid(pub [u8; 32]); diff --git a/crates/solana-indexer/src/types/recovery.rs b/crates/solana-indexer/src/types/recovery.rs new file mode 100644 index 0000000000..59ba628623 --- /dev/null +++ b/crates/solana-indexer/src/types/recovery.rs @@ -0,0 +1,35 @@ +#![expect(dead_code)] +//! Recovery-flow types: PDA snapshots and the options struct for +//! `getSignaturesForAddress` backfills. + +use {crate::types::order::OrderUid, solana_sdk::pubkey::Pubkey}; + +/// Current on-chain snapshot of an order PDA, read by `getAccountInfo` for +/// reconciliation. +#[derive(Debug, Clone)] +pub(crate) struct PdaSnapshot { + /// Order UID. + pub order_uid: OrderUid, + /// Cumulative `amount_withdrawn` for the order. + pub amount_withdrawn: u64, + /// Cumulative `amount_received` for the order. + pub amount_received: u64, + /// `true` if the order has been cancelled on-chain. + pub cancelled: bool, + /// Cancellation timestamp (Unix seconds), if cancelled. + pub cancellation_timestamp: Option, +} + +/// Options for the `getSignaturesForAddress` RPC used by the recovery backfill. +#[derive(Debug, Clone, Default)] +pub(crate) struct GetSignaturesOpts { + /// Start slot (inclusive). `None` means "from the tip". + pub from_slot: Option, + /// End slot (inclusive). `None` means "to the tip". + pub to_slot: Option, + /// Cap on the number of signatures returned. + pub limit: Option, + /// Optional address filter (used when back-filling both programs + /// in a single pass). + pub address: Option, +} diff --git a/crates/solana-indexer/src/types/slot.rs b/crates/solana-indexer/src/types/slot.rs new file mode 100644 index 0000000000..1eb1cb3a46 --- /dev/null +++ b/crates/solana-indexer/src/types/slot.rs @@ -0,0 +1,11 @@ +//! Solana ledger slot. + +use derive_more::{Display, From, Into}; + +/// A Solana ledger slot. +/// +/// This is the type used throughout the indexer to represent a Solana ledger +/// slot. +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Display, From, Into)] +#[display("Slot({})", _0)] +pub(crate) struct Slot(pub u64); diff --git a/crates/solana-indexer/src/types/tx.rs b/crates/solana-indexer/src/types/tx.rs new file mode 100644 index 0000000000..ead040a907 --- /dev/null +++ b/crates/solana-indexer/src/types/tx.rs @@ -0,0 +1,57 @@ +#![expect(dead_code)] +//! Per-transaction helper types used by the decoder. +//! +//! These are decoder-side views produced by walking a +//! `SubscribeUpdateTransactionInfo` message. They are not present in +//! `solana-sdk` or `solana-message` because the upstream types carry raw +//! `program_id_index: u8` values, while these views resolve that index +//! against the reconstructed `account_keys` list and tag each instruction +//! with its source (`is_inner`) and position (`ix_index`). + +use { + crate::types::{ + Signature, + slot::Slot, + wire::{SubscribeUpdateAccountInfo, TokenBalance}, + }, + bytes::Bytes, + solana_sdk::pubkey::Pubkey, +}; + +/// A single instruction after resolving `program_id_index` against the full +/// account list. +#[derive(Debug, Clone)] +pub(crate) struct ResolvedInstruction { + /// Resolved program id. + pub program_id: Pubkey, + /// Raw instruction data. + pub data: Bytes, + /// Account indices into the reconstructed account list. + pub accounts: Vec, + /// Index of this instruction within the transaction (outer or + /// inner). + pub ix_index: u16, + /// `true` for CPIs (inner instructions). + pub is_inner: bool, +} + +/// Per-decode-pass context: the reconstructed account list, the slot, the +/// transaction signature, and (when both halves have arrived) the joined +/// account-update snapshot. +#[derive(Debug, Clone)] +pub(crate) struct TxContext { + /// Slot the transaction was observed at. + pub slot: Slot, + /// Transaction signature. + pub signature: Signature, + /// Reconstructed account list (`message.account_keys` ⊕ + /// `meta.loaded_writable_addresses` ⊕ + /// `meta.loaded_readonly_addresses`). + pub account_keys: Vec, + /// Post-execution token balances, copied from `meta.post_token_balances`. + /// The SolFlow `OrderCreated` branch reads the wSOL balance on the + /// custodial PDA here. + pub post_token_balances: Vec, + /// Account-update snapshot, if both halves have arrived. + pub account_snapshot: Option, +} diff --git a/crates/solana-indexer/src/types/wire.rs b/crates/solana-indexer/src/types/wire.rs new file mode 100644 index 0000000000..8db1bf55b6 --- /dev/null +++ b/crates/solana-indexer/src/types/wire.rs @@ -0,0 +1,15 @@ +//! Wire types +//! +//! Re-exports of the `yellowstone-grpc-proto` message types the indexer +//! consumes as its wire-format surface. +pub use yellowstone_grpc_proto::{ + geyser::{SubscribeUpdateAccountInfo, SubscribeUpdateTransactionInfo}, + solana::storage::confirmed_block::{ + CompiledInstruction, + InnerInstructions, + Message, + TokenBalance, + Transaction, + TransactionStatusMeta, + }, +};