From 582e3e12b1b7a05e233b5cdaf79362be66b05c2f Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Fri, 28 Feb 2025 20:20:34 +0000 Subject: [PATCH 01/12] add new prover config variant --- crates/prover-config/src/lib.rs | 33 +++++++++++++++++++ .../prover_config_sindri_prover.toml | 4 +++ .../tests/validate_deserialize.rs | 16 ++++++++- 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 crates/prover-config/tests/fixtures/validate_config/prover_config_sindri_prover.toml diff --git a/crates/prover-config/src/lib.rs b/crates/prover-config/src/lib.rs index 522a37f9..de2107ee 100644 --- a/crates/prover-config/src/lib.rs +++ b/crates/prover-config/src/lib.rs @@ -12,6 +12,7 @@ pub enum ProverType { CpuProver(CpuProverConfig), GpuProver(GpuProverConfig), MockProver(MockProverConfig), + SindriProver(SindriProverConfig), } impl Default for ProverType { @@ -156,6 +157,38 @@ impl Default for MockProverConfig { } } +#[serde_as] +#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)] +#[serde(rename_all = "kebab-case")] +pub struct SindriProverConfig { + #[serde_as(as = "Option")] + pub proving_request_timeout: Option, + + #[serde(default = "default_network_proving_timeout")] + #[serde(with = "crate::with::HumanDuration")] + pub proving_timeout: Duration, +} + +impl SindriProverConfig { + // This constant represents the number of second added to the proving_timeout + pub const DEFAULT_PROVING_TIMEOUT_PADDING: Duration = Duration::from_secs(1); + + pub fn get_proving_request_timeout(&self) -> Duration { + self.proving_request_timeout + .unwrap_or_else(|| self.proving_timeout + Self::DEFAULT_PROVING_TIMEOUT_PADDING) + } +} + +impl Default for SindriProverConfig { + fn default() -> Self { + Self { + proving_request_timeout: None, + proving_timeout: default_network_proving_timeout(), + } + } +} + + pub const fn default_max_concurrency_limit() -> usize { 100 } diff --git a/crates/prover-config/tests/fixtures/validate_config/prover_config_sindri_prover.toml b/crates/prover-config/tests/fixtures/validate_config/prover_config_sindri_prover.toml new file mode 100644 index 00000000..4e88299d --- /dev/null +++ b/crates/prover-config/tests/fixtures/validate_config/prover_config_sindri_prover.toml @@ -0,0 +1,4 @@ + +[primary-prover.sindri-prover] +proving-request-timeout = "5m" +proving-timeout = "10m" diff --git a/crates/prover-config/tests/validate_deserialize.rs b/crates/prover-config/tests/validate_deserialize.rs index 73aaf81d..200ecd09 100644 --- a/crates/prover-config/tests/validate_deserialize.rs +++ b/crates/prover-config/tests/validate_deserialize.rs @@ -1,5 +1,5 @@ use pretty_assertions::assert_eq; -use prover_config::{CpuProverConfig, MockProverConfig, NetworkProverConfig, ProverType}; +use prover_config::{CpuProverConfig, MockProverConfig, NetworkProverConfig, ProverType, SindriProverConfig}; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] @@ -75,3 +75,17 @@ fn mock_prover() { }) ); } + +#[test] +fn sindri_prover() { + let input = "./tests/fixtures/validate_config/prover_config_sindri_prover.toml"; + let config: TestConfig = toml::from_str(&std::fs::read_to_string(input).unwrap()).unwrap(); + + assert_eq!( + config.primary_prover, + ProverType::SindriProver(SindriProverConfig { + proving_request_timeout: Some(std::time::Duration::from_secs(300)), + proving_timeout: std::time::Duration::from_secs(600), + }) + ); +} From f69eefdf78e94cea220994bac7ddf81c8decca90 Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Fri, 28 Feb 2025 20:53:07 +0000 Subject: [PATCH 02/12] executor implementation --- Cargo.lock | 342 ++++++++++++++++++++++++++++-- Cargo.toml | 1 + crates/prover-executor/Cargo.toml | 1 + crates/prover-executor/src/lib.rs | 59 ++++++ 4 files changed, 382 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index def677fe..26bf96b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -665,7 +665,7 @@ dependencies = [ "futures", "futures-utils-wasm", "lru 0.13.0", - "parking_lot", + "parking_lot 0.12.3", "pin-project", "reqwest", "serde", @@ -1359,6 +1359,20 @@ dependencies = [ "serde_json", ] +[[package]] +name = "async-compression" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310c9bcae737a48ef5cdee3174184e6d548b292739ede61a1f955ef76a738861" +dependencies = [ + "futures-core", + "memchr", + "pin-project-lite", + "tokio", + "zstd", + "zstd-safe", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -1619,7 +1633,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags", + "bitflags 2.8.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1648,6 +1662,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.8.0" @@ -1720,6 +1740,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "bstr" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "buildstructor" version = "0.5.4" @@ -2070,6 +2100,15 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + [[package]] name = "crossbeam-channel" version = "0.5.14" @@ -2188,7 +2227,7 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core", + "parking_lot_core 0.9.10", ] [[package]] @@ -2601,6 +2640,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + [[package]] name = "fixed-hash" version = "0.8.0" @@ -2619,6 +2670,16 @@ version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" +[[package]] +name = "flate2" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -2836,7 +2897,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" dependencies = [ - "bitflags", + "bitflags 2.8.0", "libc", "libgit2-sys", "log", @@ -2849,6 +2910,19 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +[[package]] +name = "globset" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + [[package]] name = "gloo-net" version = "0.6.0" @@ -3343,6 +3417,22 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "ignore" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.9", + "same-file", + "walkdir", + "winapi-util", +] + [[package]] name = "impl-codec" version = "0.6.0" @@ -3427,6 +3517,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] @@ -3594,7 +3687,7 @@ dependencies = [ "http-body", "http-body-util", "jsonrpsee-types", - "parking_lot", + "parking_lot 0.12.3", "pin-project", "rand 0.8.5", "rustc-hash 2.1.1", @@ -3804,8 +3897,9 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags", + "bitflags 2.8.0", "libc", + "redox_syscall 0.5.9", ] [[package]] @@ -3911,6 +4005,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -4016,7 +4120,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags", + "bitflags 2.8.0", "cfg-if", "cfg_aliases", "libc", @@ -4263,7 +4367,7 @@ version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "bitflags", + "bitflags 2.8.0", "cfg-if", "foreign-types", "libc", @@ -4657,6 +4761,17 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + [[package]] name = "parking_lot" version = "0.12.3" @@ -4664,7 +4779,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core", + "parking_lot_core 0.9.10", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", ] [[package]] @@ -4675,7 +4804,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.9", "smallvec", "windows-targets 0.52.6", ] @@ -4997,7 +5126,7 @@ dependencies = [ "fnv", "lazy_static", "memchr", - "parking_lot", + "parking_lot 0.12.3", "protobuf", "thiserror 1.0.69", ] @@ -5052,7 +5181,7 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set", "bit-vec", - "bitflags", + "bitflags 2.8.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -5177,6 +5306,7 @@ dependencies = [ "prover-engine", "prover-logger", "serde", + "sindri", "sp1-prover", "sp1-sdk", "thiserror 2.0.11", @@ -5390,13 +5520,22 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_syscall" version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" dependencies = [ - "bitflags", + "bitflags 2.8.0", ] [[package]] @@ -5466,6 +5605,7 @@ version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ + "async-compression", "base64", "bytes", "encoding_rs", @@ -5483,6 +5623,7 @@ dependencies = [ "js-sys", "log", "mime", + "mime_guess", "native-tls", "once_cell", "percent-encoding", @@ -5526,6 +5667,37 @@ dependencies = [ "tower-service", ] +[[package]] +name = "reqwest-retry" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c73e4195a6bfbcb174b790d9b3407ab90646976c55de58a6515da25d851178" +dependencies = [ + "anyhow", + "async-trait", + "futures", + "getrandom 0.2.15", + "http", + "hyper", + "parking_lot 0.11.2", + "reqwest", + "reqwest-middleware", + "retry-policies", + "thiserror 1.0.69", + "tokio", + "tracing", + "wasm-timer", +] + +[[package]] +name = "retry-policies" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5875471e6cab2871bc150ecb8c727db5113c9338cc3354dc5ee3425b6aa40a1c" +dependencies = [ + "rand 0.8.5", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -5560,6 +5732,28 @@ dependencies = [ "rustc-hex", ] +[[package]] +name = "rmp" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + [[package]] name = "route-recognizer" version = "0.3.1" @@ -5687,7 +5881,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", @@ -5897,7 +6091,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags", + "bitflags 2.8.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -5911,7 +6105,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags", + "bitflags 2.8.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -6009,6 +6203,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "serde_spanned" version = "0.6.8" @@ -6069,7 +6274,7 @@ dependencies = [ "futures", "log", "once_cell", - "parking_lot", + "parking_lot 0.12.3", "scc", "serial_test_derive", ] @@ -6177,6 +6382,48 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" +[[package]] +name = "sindri" +version = "0.2.0" +source = "git+https://github.com/Sindri-Labs/sindri-rust?tag=v0.2.0#863a6175fbd2329623875dfce7aa5bf5b66b70f2" +dependencies = [ + "async-compression", + "async-trait", + "base64", + "flate2", + "http", + "ignore", + "rand 0.8.5", + "regex", + "reqwest", + "reqwest-middleware", + "reqwest-retry", + "rmp-serde", + "serde_json", + "sindri-openapi", + "sp1-sdk", + "tar", + "tokio", + "tokio-util", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sindri-openapi" +version = "1.17.6" +source = "git+https://github.com/Sindri-Labs/sindri-rust?tag=v0.2.0#863a6175fbd2329623875dfce7aa5bf5b66b70f2" +dependencies = [ + "reqwest", + "reqwest-middleware", + "serde", + "serde_json", + "serde_repr", + "serde_with", + "url", + "uuid", +] + [[package]] name = "size" version = "0.4.1" @@ -6885,7 +7132,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags", + "bitflags 2.8.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -6906,6 +7153,17 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tar" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +dependencies = [ + "filetime", + "libc", + "xattr", +] + [[package]] name = "tempfile" version = "3.17.1" @@ -7071,7 +7329,7 @@ dependencies = [ "bytes", "libc", "mio", - "parking_lot", + "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", "socket2", @@ -7527,6 +7785,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + [[package]] name = "unicode-ident" version = "1.0.17" @@ -7587,6 +7851,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" +dependencies = [ + "getrandom 0.3.1", + "serde", +] + [[package]] name = "valuable" version = "0.1.1" @@ -7754,6 +8028,21 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.11.2", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wasmtimer" version = "0.4.1" @@ -7762,7 +8051,7 @@ checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" dependencies = [ "futures", "js-sys", - "parking_lot", + "parking_lot 0.12.3", "pin-utils", "slab", "wasm-bindgen", @@ -8055,7 +8344,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags", + "bitflags 2.8.0", ] [[package]] @@ -8098,6 +8387,17 @@ dependencies = [ "tap", ] +[[package]] +name = "xattr" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + [[package]] name = "yansi" version = "1.0.1" diff --git a/Cargo.toml b/Cargo.toml index 6fdb3bf4..51a13025 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -88,6 +88,7 @@ rstest = "0.22.0" test-log = "0.2.16" # SP1 dependencies +sindri = { git = "https://github.com/Sindri-Labs/sindri-rust", tag="v0.2.0", features = ["sp1-v4"] } sp1-core-machine = "=4.0.0" sp1-sdk = { version="=4.0.0", features = ["native-gnark"] } sp1-prover = "=4.0.0" diff --git a/crates/prover-executor/Cargo.toml b/crates/prover-executor/Cargo.toml index e9b03e97..d8573adf 100644 --- a/crates/prover-executor/Cargo.toml +++ b/crates/prover-executor/Cargo.toml @@ -26,6 +26,7 @@ prover-engine.workspace = true prover-logger.workspace = true prover-config.workspace = true +sindri = { workspace = true, features = ["sp1-v4"] } sp1-sdk = { workspace = true, features = ["native-gnark"] } sp1-prover = { workspace = true, features = ["native-gnark"] } diff --git a/crates/prover-executor/src/lib.rs b/crates/prover-executor/src/lib.rs index a8dbb4a7..b42c5619 100644 --- a/crates/prover-executor/src/lib.rs +++ b/crates/prover-executor/src/lib.rs @@ -6,8 +6,14 @@ use std::{ }; pub use error::Error; +use error::ProofVerificationError; use futures::{Future, TryFutureExt}; use prover_config::ProverType; +use sindri::{ + client::SindriClient, + integrations::sp1_v4::SP1ProofInfo, + ProofInput, +}; use sp1_sdk::{ network::{prover::NetworkProver, FulfillmentStrategy}, CpuProver, Prover, ProverClient, SP1ProofWithPublicValues, SP1ProvingKey, SP1Stdin, @@ -137,6 +143,7 @@ impl Executor { ) } ProverType::GpuProver(_) => todo!(), + ProverType::SindriProver(_) => todo!(), } } @@ -293,3 +300,55 @@ impl Service for NetworkExecutor { Box::pin(fut) } } + +#[derive(Clone)] +struct SindriExecutor { + prover: Arc, + verification_key: SP1VerifyingKey, + timeout: Duration, +} + +impl Service for SindriExecutor { + type Response = Response; + + type Error = Error; + + type Future = Pin> + Send>>; + + fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { + Poll::Ready(Ok(())) + } + + fn call(&mut self, req: Request) -> Self::Future { + let prover = self.prover.clone(); + let stdin = req.stdin; + + let verification_key = self.verification_key.clone(); + let timeout = self.timeout; + + debug!("Proving with network prover with timeout: {:?}", timeout); + let fut = async move { + debug!("Starting the proving of the requested MultiBatchHeader"); + + let circuit_id = "pessimistic-proof"; + let proof_input = ProofInput::try_from(stdin).map_err(|error| Error::ProverFailed(error.to_string()))?; + let proof_response = prover + .prove_circuit_blocking(circuit_id, proof_input, None, None, None) + .map_err(|error| Error::ProverFailed(error.to_string()))?; + + let proof = proof_response + .to_sp1_proof_with_public() + .map_err(|error| Error::ProverFailed(error.to_string()))?; + + debug!("Proving completed. Verifying the proof..."); + proof_response + .verify_sp1_proof_locally(&verification_key) + .map_err(|error| Error::ProofVerificationFailed(ProofVerificationError::Plonk(error.to_string())))?; + + debug!("Proof verification completed successfully"); + Ok(Response { proof }) + }; + + Box::pin(fut) + } +} From db7140c1e2b1fdc25bbdd7472b4b755187d33fbc Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Fri, 28 Feb 2025 21:11:16 +0000 Subject: [PATCH 03/12] prover init --- crates/prover-executor/src/lib.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/crates/prover-executor/src/lib.rs b/crates/prover-executor/src/lib.rs index b42c5619..de094519 100644 --- a/crates/prover-executor/src/lib.rs +++ b/crates/prover-executor/src/lib.rs @@ -143,7 +143,20 @@ impl Executor { ) } ProverType::GpuProver(_) => todo!(), - ProverType::SindriProver(_) => todo!(), + ProverType::SindriProver(sindri_prover_config) => { + debug!("Creating Sindri prover executor..."); + let mut sindri_client = SindriClient::default(); + sindri_client.polling_options.timeout = Some(sindri_prover_config.proving_timeout); + let verification_key = Self::get_vkey(program); + Self::build_network_service( + sindri_prover_config.get_proving_request_timeout(), + SindriExecutor { + prover: Arc::new(sindri_client), + verification_key, + timeout: sindri_prover_config.proving_timeout, + }, + ) + }, } } From b66181a71377f738a0caf59863bdbfc11b165580 Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Fri, 28 Feb 2025 21:52:42 +0000 Subject: [PATCH 04/12] add project name and tag to config --- crates/prover-config/src/lib.rs | 16 ++++++++++++++++ .../prover_config_sindri_prover.toml | 2 ++ .../prover-config/tests/validate_deserialize.rs | 2 ++ 3 files changed, 20 insertions(+) diff --git a/crates/prover-config/src/lib.rs b/crates/prover-config/src/lib.rs index de2107ee..77cb6a89 100644 --- a/crates/prover-config/src/lib.rs +++ b/crates/prover-config/src/lib.rs @@ -167,6 +167,12 @@ pub struct SindriProverConfig { #[serde(default = "default_network_proving_timeout")] #[serde(with = "crate::with::HumanDuration")] pub proving_timeout: Duration, + + #[serde(default = "default_sindri_project_name")] + pub project_name: String, + + #[serde(default = "default_sindri_project_tag")] + pub project_tag: String, } impl SindriProverConfig { @@ -184,6 +190,8 @@ impl Default for SindriProverConfig { Self { proving_request_timeout: None, proving_timeout: default_network_proving_timeout(), + project_name: default_sindri_project_name(), + project_tag: default_sindri_project_tag(), } } } @@ -200,3 +208,11 @@ const fn default_local_proving_timeout() -> Duration { const fn default_network_proving_timeout() -> Duration { Duration::from_secs(60 * 5) } + +fn default_sindri_project_name() -> String { + "pessimistic-proof".to_string() +} + +fn default_sindri_project_tag() -> String { + "latest".to_string() +} diff --git a/crates/prover-config/tests/fixtures/validate_config/prover_config_sindri_prover.toml b/crates/prover-config/tests/fixtures/validate_config/prover_config_sindri_prover.toml index 4e88299d..ed3fae52 100644 --- a/crates/prover-config/tests/fixtures/validate_config/prover_config_sindri_prover.toml +++ b/crates/prover-config/tests/fixtures/validate_config/prover_config_sindri_prover.toml @@ -2,3 +2,5 @@ [primary-prover.sindri-prover] proving-request-timeout = "5m" proving-timeout = "10m" +project-name = "pessimistic-proof" +project-tag = "latest" diff --git a/crates/prover-config/tests/validate_deserialize.rs b/crates/prover-config/tests/validate_deserialize.rs index 200ecd09..a75fcb4e 100644 --- a/crates/prover-config/tests/validate_deserialize.rs +++ b/crates/prover-config/tests/validate_deserialize.rs @@ -86,6 +86,8 @@ fn sindri_prover() { ProverType::SindriProver(SindriProverConfig { proving_request_timeout: Some(std::time::Duration::from_secs(300)), proving_timeout: std::time::Duration::from_secs(600), + project_name: "pessimistic-proof".to_string(), + project_tag: "latest".to_string(), }) ); } From e007679acf87a81c2eeb0d5e45f670f854e5d512 Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Fri, 28 Feb 2025 21:59:26 +0000 Subject: [PATCH 05/12] pass project name and tag to executor --- crates/prover-executor/src/lib.rs | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/crates/prover-executor/src/lib.rs b/crates/prover-executor/src/lib.rs index de094519..7ef9c8d1 100644 --- a/crates/prover-executor/src/lib.rs +++ b/crates/prover-executor/src/lib.rs @@ -9,11 +9,7 @@ pub use error::Error; use error::ProofVerificationError; use futures::{Future, TryFutureExt}; use prover_config::ProverType; -use sindri::{ - client::SindriClient, - integrations::sp1_v4::SP1ProofInfo, - ProofInput, -}; +use sindri::{client::SindriClient, integrations::sp1_v4::SP1ProofInfo, ProofInput}; use sp1_sdk::{ network::{prover::NetworkProver, FulfillmentStrategy}, CpuProver, Prover, ProverClient, SP1ProofWithPublicValues, SP1ProvingKey, SP1Stdin, @@ -154,9 +150,11 @@ impl Executor { prover: Arc::new(sindri_client), verification_key, timeout: sindri_prover_config.proving_timeout, + project_name: sindri_prover_config.project_name.clone(), + project_tag: sindri_prover_config.project_tag.clone(), }, ) - }, + } } } @@ -319,6 +317,8 @@ struct SindriExecutor { prover: Arc, verification_key: SP1VerifyingKey, timeout: Duration, + project_name: String, + project_tag: String, } impl Service for SindriExecutor { @@ -335,18 +335,25 @@ impl Service for SindriExecutor { fn call(&mut self, req: Request) -> Self::Future { let prover = self.prover.clone(); let stdin = req.stdin; - let verification_key = self.verification_key.clone(); let timeout = self.timeout; + let project_name = self.project_name.clone(); + let project_tag = self.project_tag.clone(); debug!("Proving with network prover with timeout: {:?}", timeout); let fut = async move { debug!("Starting the proving of the requested MultiBatchHeader"); - let circuit_id = "pessimistic-proof"; - let proof_input = ProofInput::try_from(stdin).map_err(|error| Error::ProverFailed(error.to_string()))?; + let proof_input = ProofInput::try_from(stdin) + .map_err(|error| Error::ProverFailed(error.to_string()))?; let proof_response = prover - .prove_circuit_blocking(circuit_id, proof_input, None, None, None) + .prove_circuit_blocking( + &format!("{}:{}", project_name, project_tag), + proof_input, + None, + None, + None, + ) .map_err(|error| Error::ProverFailed(error.to_string()))?; let proof = proof_response @@ -356,7 +363,9 @@ impl Service for SindriExecutor { debug!("Proving completed. Verifying the proof..."); proof_response .verify_sp1_proof_locally(&verification_key) - .map_err(|error| Error::ProofVerificationFailed(ProofVerificationError::Plonk(error.to_string())))?; + .map_err(|error| { + Error::ProofVerificationFailed(ProofVerificationError::Plonk(error.to_string())) + })?; debug!("Proof verification completed successfully"); Ok(Response { proof }) From d70f0ec26424fc5903ac6a1c5baffb7f81a84a31 Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Sun, 2 Mar 2025 17:21:15 +0000 Subject: [PATCH 06/12] lint --- crates/prover-config/src/lib.rs | 1 - crates/prover-config/tests/validate_deserialize.rs | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/prover-config/src/lib.rs b/crates/prover-config/src/lib.rs index 77cb6a89..9542cab6 100644 --- a/crates/prover-config/src/lib.rs +++ b/crates/prover-config/src/lib.rs @@ -196,7 +196,6 @@ impl Default for SindriProverConfig { } } - pub const fn default_max_concurrency_limit() -> usize { 100 } diff --git a/crates/prover-config/tests/validate_deserialize.rs b/crates/prover-config/tests/validate_deserialize.rs index a75fcb4e..f62dbc0d 100644 --- a/crates/prover-config/tests/validate_deserialize.rs +++ b/crates/prover-config/tests/validate_deserialize.rs @@ -1,5 +1,7 @@ use pretty_assertions::assert_eq; -use prover_config::{CpuProverConfig, MockProverConfig, NetworkProverConfig, ProverType, SindriProverConfig}; +use prover_config::{ + CpuProverConfig, MockProverConfig, NetworkProverConfig, ProverType, SindriProverConfig, +}; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] From 9662d46d19a446b511a85cd9dfa2043ae144baeb Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Sun, 2 Mar 2025 20:20:00 +0000 Subject: [PATCH 07/12] executor never needed blocking --- crates/prover-executor/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/prover-executor/src/lib.rs b/crates/prover-executor/src/lib.rs index 7ef9c8d1..061a5db1 100644 --- a/crates/prover-executor/src/lib.rs +++ b/crates/prover-executor/src/lib.rs @@ -347,13 +347,14 @@ impl Service for SindriExecutor { let proof_input = ProofInput::try_from(stdin) .map_err(|error| Error::ProverFailed(error.to_string()))?; let proof_response = prover - .prove_circuit_blocking( + .prove_circuit( &format!("{}:{}", project_name, project_tag), proof_input, None, None, None, ) + .await .map_err(|error| Error::ProverFailed(error.to_string()))?; let proof = proof_response From 6c21a171eb81578c34394ce6745e8735fb27c33d Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Sun, 2 Mar 2025 23:26:48 +0000 Subject: [PATCH 08/12] makefile deploy --- Makefile.elf.toml | 30 +++++++++++++++++++++++ crates/aggchain-proof-program/sindri.json | 8 ++++++ 2 files changed, 38 insertions(+) create mode 100644 crates/aggchain-proof-program/sindri.json diff --git a/Makefile.elf.toml b/Makefile.elf.toml index 596c7766..a652d127 100644 --- a/Makefile.elf.toml +++ b/Makefile.elf.toml @@ -36,6 +36,36 @@ args = [ "-vv", ] +[tasks.install-sindri-cli] +description = "Install Sindri CLI" +command = "cargo" +args = [ + "install", + "--git", + "https://github.com/Sindri-Labs/sindri-rust", + "--tag", + "v0.2.0", + "sindri-cli" +] + +[tasks.ap-elf-sindri-upload] +description = "Upload ELF file to Sindri" +dependencies = [ + "ap-elf", + "install-sindri-cli" +] +cwd = "crates/aggchain-proof-program" +command = "cargo" +args = [ + "sindri", + "deploy", + ".", + "--api-key", + "${SINDRI_API_KEY}", + #"--tags", + #"${SINDRI_PROJECT_TAG}, +] + [tasks.sp1-toolchain-shell] description = "Drop into an interactive shell in sp1 build environment image" dependencies = ["sp1-toolchain-image"] diff --git a/crates/aggchain-proof-program/sindri.json b/crates/aggchain-proof-program/sindri.json new file mode 100644 index 00000000..ca7ac09c --- /dev/null +++ b/crates/aggchain-proof-program/sindri.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://sindri.app/api/v1/sindri-manifest-schema.json", + "name": "pessimistic-proof", + "circuitType": "sp1", + "provingScheme": "plonk", + "sp1Version": "4.0.0", + "elfPath": "elf/riscv32im-succinct-zkvm-elf" + } From e9f9d5f5cd39f4f15ca7fea85f1c9921c8a10939 Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Sun, 2 Mar 2025 23:41:14 +0000 Subject: [PATCH 09/12] missed quotation --- Makefile.elf.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.elf.toml b/Makefile.elf.toml index a652d127..34fcd610 100644 --- a/Makefile.elf.toml +++ b/Makefile.elf.toml @@ -63,7 +63,7 @@ args = [ "--api-key", "${SINDRI_API_KEY}", #"--tags", - #"${SINDRI_PROJECT_TAG}, + #"${SINDRI_PROJECT_TAG}", ] [tasks.sp1-toolchain-shell] From 6f739a55f743ca3aaa11b6a6c5c200cffe732305 Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Mon, 3 Mar 2025 13:38:22 +0000 Subject: [PATCH 10/12] forward error in ProofInfo --- crates/prover-executor/src/lib.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/crates/prover-executor/src/lib.rs b/crates/prover-executor/src/lib.rs index 061a5db1..02a4b05e 100644 --- a/crates/prover-executor/src/lib.rs +++ b/crates/prover-executor/src/lib.rs @@ -9,7 +9,7 @@ pub use error::Error; use error::ProofVerificationError; use futures::{Future, TryFutureExt}; use prover_config::ProverType; -use sindri::{client::SindriClient, integrations::sp1_v4::SP1ProofInfo, ProofInput}; +use sindri::{client::SindriClient, integrations::sp1_v4::SP1ProofInfo, JobStatus, ProofInput}; use sp1_sdk::{ network::{prover::NetworkProver, FulfillmentStrategy}, CpuProver, Prover, ProverClient, SP1ProofWithPublicValues, SP1ProvingKey, SP1Stdin, @@ -344,8 +344,13 @@ impl Service for SindriExecutor { let fut = async move { debug!("Starting the proving of the requested MultiBatchHeader"); + // Convert Sp1Stdin type to the Sindri client's ProofInput type let proof_input = ProofInput::try_from(stdin) .map_err(|error| Error::ProverFailed(error.to_string()))?; + + // Submit the proof request, and poll until the job is completed or a + // timeout occurs. The Sindri client was passed the timeout parameter + // upon creation let proof_response = prover .prove_circuit( &format!("{}:{}", project_name, project_tag), @@ -357,6 +362,17 @@ impl Service for SindriExecutor { .await .map_err(|error| Error::ProverFailed(error.to_string()))?; + // If the Sindri job completed with an error, retrieve the error message + if proof_response.status == JobStatus::Failed { + return Err(Error::ProverFailed( + proof_response.error.flatten().unwrap_or( + "Sindri job was marked as failed. No error message was provided." + .to_string(), + ), + )); + } + + // Convert the proof response to a SP1 proof with public values let proof = proof_response .to_sp1_proof_with_public() .map_err(|error| Error::ProverFailed(error.to_string()))?; From 3d220a7e077e6076d9317c20436ba813635dd082 Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Mon, 17 Mar 2025 13:56:04 +0000 Subject: [PATCH 11/12] update sindri deps to cargo --- Cargo.toml | 2 +- Makefile.elf.toml | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 639600f0..14834292 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,7 +94,7 @@ rstest = "0.22.0" test-log = "0.2.16" # SP1 dependencies -sindri = { git = "https://github.com/Sindri-Labs/sindri-rust", tag="v0.2.0", features = ["sp1-v4"] } +sindri = { version = "0.2.2", features = ["sp1-v4"] } sp1-core-machine = "=4.1.2" sp1-sdk = "=4.1.2" sp1-prover = "=4.1.2" diff --git a/Makefile.elf.toml b/Makefile.elf.toml index 34fcd610..6757847d 100644 --- a/Makefile.elf.toml +++ b/Makefile.elf.toml @@ -41,11 +41,9 @@ description = "Install Sindri CLI" command = "cargo" args = [ "install", - "--git", - "https://github.com/Sindri-Labs/sindri-rust", - "--tag", - "v0.2.0", - "sindri-cli" + "sindri-cli@0.2.2" + "--force", + "--locked" ] [tasks.ap-elf-sindri-upload] From 4686ef84d086e591839ea7da01ca788faf7e3670 Mon Sep 17 00:00:00 2001 From: Katie McKeon Date: Mon, 17 Mar 2025 14:00:31 +0000 Subject: [PATCH 12/12] recompile w sindri for lock --- Cargo.lock | 120 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 102 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 494c5aa1..eb0c060a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1224,6 +1224,20 @@ dependencies = [ "serde_json", ] +[[package]] +name = "async-compression" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cf008e5e1a9e9e22a7d3c9a4992e21a350290069e36d8fb72304ed17e8f2d2" +dependencies = [ + "futures-core", + "memchr", + "pin-project-lite", + "tokio", + "zstd", + "zstd-safe", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -1494,7 +1508,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags", + "bitflags 2.9.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1523,6 +1537,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.9.0" @@ -2872,7 +2892,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fda788993cc341f69012feba8bf45c0ba4f3291fcc08e214b4d5a7332d88aff" dependencies = [ - "bitflags", + "bitflags 2.9.0", "libc", "libgit2-sys", "log", @@ -3886,7 +3906,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags", + "bitflags 2.9.0", "libc", "redox_syscall 0.5.9", ] @@ -4158,7 +4178,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags", + "bitflags 2.9.0", "cfg-if", "cfg_aliases", "libc", @@ -4444,7 +4464,7 @@ version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "bitflags", + "bitflags 2.9.0", "cfg-if", "foreign-types", "libc", @@ -5269,7 +5289,7 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set", "bit-vec", - "bitflags", + "bitflags 2.9.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -5623,7 +5643,7 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" dependencies = [ - "bitflags", + "bitflags 2.9.0", ] [[package]] @@ -5755,6 +5775,28 @@ dependencies = [ "tower-service", ] +[[package]] +name = "reqwest-retry" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c73e4195a6bfbcb174b790d9b3407ab90646976c55de58a6515da25d851178" +dependencies = [ + "anyhow", + "async-trait", + "futures", + "getrandom 0.2.15", + "http", + "hyper", + "parking_lot 0.11.2", + "reqwest", + "reqwest-middleware", + "retry-policies", + "thiserror 1.0.69", + "tokio", + "tracing", + "wasm-timer", +] + [[package]] name = "reth-chainspec" version = "1.2.0" @@ -6200,6 +6242,15 @@ dependencies = [ "zstd", ] +[[package]] +name = "retry-policies" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5875471e6cab2871bc150ecb8c727db5113c9338cc3354dc5ee3425b6aa40a1c" +dependencies = [ + "rand 0.8.5", +] + [[package]] name = "revm" version = "19.5.0" @@ -6256,7 +6307,7 @@ dependencies = [ "alloy-eip7702", "alloy-primitives", "auto_impl", - "bitflags", + "bitflags 2.9.0", "bitvec", "c-kzg", "cfg-if", @@ -6569,7 +6620,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags", + "bitflags 2.9.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -6586,7 +6637,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.9.3", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6813,7 +6864,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags", + "bitflags 2.9.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -6827,7 +6878,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags", + "bitflags 2.9.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -6926,6 +6977,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "serde_spanned" version = "0.6.8" @@ -7106,8 +7168,9 @@ checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] name = "sindri" -version = "0.2.0" -source = "git+https://github.com/Sindri-Labs/sindri-rust?tag=v0.2.0#863a6175fbd2329623875dfce7aa5bf5b66b70f2" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cec007e10040e581e2b07a0596bed34b716ca28a28e68d5b1c94a4583ab64824" dependencies = [ "async-compression", "async-trait", @@ -7133,8 +7196,9 @@ dependencies = [ [[package]] name = "sindri-openapi" -version = "1.17.6" -source = "git+https://github.com/Sindri-Labs/sindri-rust?tag=v0.2.0#863a6175fbd2329623875dfce7aa5bf5b66b70f2" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2689041201888d3421dae969322a23ecd907f64640d1631e2abccf6d13f7a9d" dependencies = [ "reqwest", "reqwest-middleware", @@ -7926,7 +7990,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags", + "bitflags 2.9.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -8696,6 +8760,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" +dependencies = [ + "getrandom 0.3.1", + "serde", +] + [[package]] name = "valuable" version = "0.1.1" @@ -9211,7 +9285,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags", + "bitflags 2.9.0", ] [[package]] @@ -9254,6 +9328,16 @@ dependencies = [ "tap", ] +[[package]] +name = "xattr" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" +dependencies = [ + "libc", + "rustix 1.0.2", +] + [[package]] name = "yansi" version = "1.0.1"