From cd1c8046ffecc4671b9eb2dcdcc68873a97ea2c9 Mon Sep 17 00:00:00 2001 From: Avi Dessauer Date: Tue, 24 Sep 2024 15:33:02 -0700 Subject: [PATCH] Initial SP1 support (WIP) The proofs work, but it's not yet integrated with the main server. --- kairos-sp1/Cargo.lock | 6717 ++++++++++++++++++++ kairos-sp1/Cargo.toml | 6 + kairos-sp1/elf/riscv32im-succinct-zkvm-elf | Bin 0 -> 236804 bytes kairos-sp1/program/Cargo.toml | 9 + kairos-sp1/program/src/main.rs | 18 + kairos-sp1/rust-toolchain.toml | 3 + kairos-sp1/server/Cargo.toml | 37 + kairos-sp1/server/build.rs | 5 + kairos-sp1/server/src/main.rs | 262 + 9 files changed, 7057 insertions(+) create mode 100644 kairos-sp1/Cargo.lock create mode 100644 kairos-sp1/Cargo.toml create mode 100755 kairos-sp1/elf/riscv32im-succinct-zkvm-elf create mode 100644 kairos-sp1/program/Cargo.toml create mode 100644 kairos-sp1/program/src/main.rs create mode 100644 kairos-sp1/rust-toolchain.toml create mode 100644 kairos-sp1/server/Cargo.toml create mode 100644 kairos-sp1/server/build.rs create mode 100644 kairos-sp1/server/src/main.rs diff --git a/kairos-sp1/Cargo.lock b/kairos-sp1/Cargo.lock new file mode 100644 index 00000000..f7a2593f --- /dev/null +++ b/kairos-sp1/Cargo.lock @@ -0,0 +1,6717 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "alloy-primitives" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "hex-literal", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +dependencies = [ + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck 0.5.0", + "indexmap 2.3.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.72", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" +dependencies = [ + "const-hex", + "dunce", + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.72", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-types" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.4.0", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-trait" +version = "0.1.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.0", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "axum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-extra" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0be6ea09c9b96cb5076af0de2e383bd2bc0c18f827cf1967bdd353e0b910d733" +dependencies = [ + "axum", + "axum-core", + "axum-macros", + "bytes", + "form_urlencoded", + "futures-util", + "headers", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_html_form", + "serde_json", + "serde_path_to_error", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", +] + +[[package]] +name = "base16" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.72", + "which", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "rayon-core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "bls12_381" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" +dependencies = [ + "ff 0.12.1", + "group 0.12.1", + "pairing", + "rand_core", + "subtle", +] + +[[package]] +name = "borsh" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.72", + "syn_derive", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2", + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "bytemuck" +version = "1.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "casper-types" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ce58aaaae19aa6e8d71aab1afed5d1b345470f36695ade5cfcc42cb9a04c78f" +dependencies = [ + "base16", + "base64 0.13.1", + "bitflags 1.3.2", + "blake2 0.9.2", + "ed25519-dalek", + "hex", + "hex_fmt", + "k256", + "num", + "num-derive", + "num-integer", + "num-rational", + "num-traits", + "rand", + "serde", + "serde_bytes", + "serde_json", + "uint", +] + +[[package]] +name = "cc" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.6", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "clap_lex" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array 0.14.7", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2", + "sha3", + "thiserror", +] + +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + +[[package]] +name = "const-hex" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array 0.14.7", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array 0.14.7", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "ctrlc" +version = "3.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" +dependencies = [ + "nix", + "windows-sys 0.59.0", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version 0.4.0", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.72", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "dashu" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b3e5ac1e23ff1995ef05b912e2b012a8784506987a2651552db2c73fb3d7e0" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-macros", + "dashu-ratio", + "rustversion", +] + +[[package]] +name = "dashu-base" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b80bf6b85aa68c58ffea2ddb040109943049ce3fbdf4385d0380aef08ef289" + +[[package]] +name = "dashu-float" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85078445a8dbd2e1bd21f04a816f352db8d333643f0c9b78ca7c3d1df71063e7" +dependencies = [ + "dashu-base", + "dashu-int", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-int" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee99d08031ca34a4d044efbbb21dff9b8c54bb9d8c82a189187c0651ffdb9fbf" +dependencies = [ + "cfg-if", + "dashu-base", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93381c3ef6366766f6e9ed9cf09e4ef9dec69499baf04f0c60e70d653cf0ab10" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-ratio", + "paste", + "proc-macro2", + "quote", + "rustversion", +] + +[[package]] +name = "dashu-ratio" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e33b04dd7ce1ccf8a02a69d3419e354f2bbfdf4eb911a0b7465487248764c9" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "num-modular", + "num-order", + "rustversion", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 2.0.72", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek", + "ed25519", + "serde", + "sha2", + "subtle", + "zeroize", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elf" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff 0.13.0", + "generic-array 0.14.7", + "group 0.13.0", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand", + "rlp", + "serde", + "sha3", + "zeroize", +] + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", + "uuid", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-middleware", + "ethers-providers", + "ethers-signers", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "serde", + "serde_json", + "syn 2.0.72", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.72", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array 0.14.7", + "k256", + "num_enum 0.7.3", + "once_cell", + "open-fastrlp", + "rand", + "rlp", + "serde", + "serde_json", + "strum", + "syn 2.0.72", + "tempfile", + "thiserror", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http 0.2.12", + "instant", + "jsonwebtoken", + "once_cell", + "pin-project", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand", + "sha2", + "thiserror", + "tracing", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core", + "subtle", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f54704be45ed286151c5e11531316eaef5b8f5af7d597b806fdb8af108d84a" +dependencies = [ + "addchain", + "cfg-if", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "generic-array" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96512db27971c2c3eece70a1e106fbe6c87760234e31e8f7e5634912fe52794a" +dependencies = [ + "serde", + "typenum", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + +[[package]] +name = "git2" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +dependencies = [ + "bitflags 2.6.0", + "libc", + "libgit2-sys", + "log", + "url", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff 0.12.1", + "memuse", + "rand_core", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.0", + "rand_core", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.3.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.3.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "halo2" +version = "0.1.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a23c779b38253fe1538102da44ad5bd5378495a61d2c4ee18d64eaa61ae5995" +dependencies = [ + "halo2_proofs", +] + +[[package]] +name = "halo2_proofs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "pasta_curves 0.4.1", + "rand_core", + "rayon", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "headers" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9" +dependencies = [ + "base64 0.21.7", + "bytes", + "headers-core", + "http 1.1.0", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.1.0", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hex_fmt" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.4.1", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "jubjub" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" +dependencies = [ + "bitvec", + "bls12_381", + "ff 0.12.1", + "group 0.12.1", + "rand_core", + "subtle", +] + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "kairos-batch-logic-sp1" +version = "0.1.0" +dependencies = [ + "kairos-circuit-logic", + "sp1-zkvm", +] + +[[package]] +name = "kairos-circuit-logic" +version = "0.1.0" +dependencies = [ + "borsh", + "kairos-trie", + "proptest", + "serde", + "sha2", + "test-strategy", +] + +[[package]] +name = "kairos-sp1-server" +version = "0.1.0" +dependencies = [ + "axum", + "axum-extra", + "casper-types", + "dotenvy", + "kairos-circuit-logic", + "kairos-trie", + "proptest", + "serde", + "serde_json", + "sp1-helper", + "sp1-sdk", + "test-strategy", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "kairos-trie" +version = "0.1.0" +source = "git+https://github.com/cspr-rad/kairos-trie#e649cb702d12f4711714fc37d44a2186b20007f0" +dependencies = [ + "bumpalo", + "digest 0.10.7", + "ouroboros", + "serde", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422fbc7ff2f2f5bdffeb07718e5a5324dca72b0c9293d50df4026652385e3314" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libgit2-sys" +version = "0.17.0+1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "libz-sys" +version = "1.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memuse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2145869435ace5ea6ea3d35f59be559317ec9a0d04e1812d5f185a87b6d36f1a" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi", + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive 0.7.3", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.36.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "oneshot" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e296cf87e61c9cfc1a61c3c63a0f7f286ed4554e0e22be84e8a38e1d264a2a29" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl" +version = "0.10.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ouroboros" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "944fa20996a25aded6b4795c6d63f10014a7a83f8be9828a11860b08c5fc4a67" +dependencies = [ + "aliasable", + "ouroboros_macro", + "static_assertions", +] + +[[package]] +name = "ouroboros_macro" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39b0deead1528fd0e5947a8546a9642a9777c25f6e1e26f34c97b204bbb465bd" +dependencies = [ + "heck 0.4.1", + "itertools 0.12.1", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p3-air" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e909ef66fa5d77ff0fd3cb5af4b33b27fa6fb68d02b9b1e70edbc29383e565" +dependencies = [ + "p3-field", + "p3-matrix", +] + +[[package]] +name = "p3-baby-bear" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46965470aac1cddfe52f535424b59d52f2fffef0fdeb9dbed19da39b1d8f048a" +dependencies = [ + "num-bigint 0.4.6", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-blake3" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36ef32d6ea21dd5cf9fec8a31bf0c64e6ceee8901dbf50966b83a443093c2aba" +dependencies = [ + "blake3", + "p3-symmetric", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3edfca6be3b3109adf8e3330baec30c3fc5f9f4d63d27aaec1b471ca51ed67" +dependencies = [ + "ff 0.13.0", + "num-bigint 0.4.6", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-challenger" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6662ea899a5d848b60c699944491d72757873b5e1fd46798e4712f90a03a4e9" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-commit" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc3563918b5cc44ef5280bf9b51753e70dc78802de25e3fb81ed6c94617ccb6e" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-field", + "p3-matrix", + "p3-util", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510095701819d83c9509fe825bbf1ebfe50426ae75149df5fe1dcfd18261323a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1977a0a65789f719aa824119c332c4676b000bdbfe94d312fb6244a70d601" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util", + "rand", + "serde", +] + +[[package]] +name = "p3-fri" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22ddb958f200d9289cc73ff68847b0167ca0c14557b791dd9e318f98c2d1b28" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-interpolation", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-interpolation" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d032cda212f6b408d7d5b0b9a8270a9455acb93742fe55a0880d82be8e90e500" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-util", +] + +[[package]] +name = "p3-keccak" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c56abdd5a8a780049d2f8e92cea1df57b55a2ef50a40d1103f2732f7a00e4b1" +dependencies = [ + "p3-symmetric", + "tiny-keccak", +] + +[[package]] +name = "p3-keccak-air" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8398f1694ccc38513df0b8cab5f9ef7325423f27cd9e4fa20bdc77d5079cf1b" +dependencies = [ + "p3-air", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", + "tracing-forest", + "tracing-subscriber", +] + +[[package]] +name = "p3-matrix" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d548ee0b834f8e2ebc5037073acd101a3b0ca41a2d1d28a15ba0ccd9059495b0" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55f5575d3d61bedb3e05681abb0f36b8bb339d65aa395d50756bfa64e9cd3f46" +dependencies = [ + "rayon", +] + +[[package]] +name = "p3-mds" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6e57ed310d59245f93e24ee805ea7aa16fc9c505551b76a15f5e50f29d177e" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af46b41cba75d483ec8a553cbab1d2d794935ae3403d75394acfa4fb2c977cce" +dependencies = [ + "itertools 0.12.1", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-poseidon2" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adaba6f14c197203530e233badce0ca1126ba3bf3c9ff766505b497bdad0bee1" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand", +] + +[[package]] +name = "p3-symmetric" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ecc4282566eb14f48be7707f6745c4dff6be664984d59ec0fb1849cd82b5c2" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-uni-stark" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1af5c038b22b058bf1d49fb1ea3dd6c240a3e46c3278fde5c444e0034f7ffe37" +dependencies = [ + "itertools 0.12.1", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "postcard", + "serde", + "tracing", + "tracing-forest", + "tracing-subscriber", +] + +[[package]] +name = "p3-util" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79f3fef0e00d9d7246385e758c4cd39b4efcbbcea31752471491ab502631385e" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +dependencies = [ + "group 0.12.1", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pasta_curves" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "lazy_static", + "rand", + "static_assertions", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff 0.13.0", + "group 0.13.0", + "lazy_static", + "rand", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.0", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "portable-atomic" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" + +[[package]] +name = "postcard" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +dependencies = [ + "cobs", + "embedded-io", + "serde", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +dependencies = [ + "proc-macro2", + "syn 2.0.72", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", + "version_check", + "yansi", +] + +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.4", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "prost-types" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +dependencies = [ + "prost", +] + +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quinn" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.0.0", + "rustls", + "socket2", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" +dependencies = [ + "bytes", + "rand", + "ring 0.17.8", + "rustc-hash 2.0.0", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +dependencies = [ + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rayon-scan" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f87cc11a0140b4b0da0ffc889885760c61b13672d80a908920b2c0df078fa14" +dependencies = [ + "rayon", +] + +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.30", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration", + "tokio", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "winreg 0.52.0", +] + +[[package]] +name = "reqwest-middleware" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39346a33ddfe6be00cbc17a34ce996818b97b230b87229f10114693becca1268" +dependencies = [ + "anyhow", + "async-trait", + "http 1.1.0", + "reqwest 0.12.5", + "serde", + "thiserror", + "tower-service", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rrs-succinct" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" +dependencies = [ + "downcast-rs", + "num_enum 0.5.11", + "paste", +] + +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint 0.4.6", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.23", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.23.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +dependencies = [ + "once_cell", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +dependencies = [ + "ring 0.17.8", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scc" +version = "2.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d777f59627453628a9a5be1ee8d948745b94b1dfc2d0c3099cbd9e08ab89e7c" +dependencies = [ + "sdd", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2", +] + +[[package]] +name = "sdd" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "177258b64c0faaa9ffd3c65cd3262c2bc7e2588dbbd9c1641d0346145c1bbda8" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "serde_html_form" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de514ef58196f1fc96dcaef80fe6170a1ce6215df9687a93fe8300e773fefc5" +dependencies = [ + "form_urlencoded", + "indexmap 2.3.0", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_json" +version = "1.0.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.3.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "serial_test" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" +dependencies = [ + "futures", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d79b758b7cb2085612b11a235055e485605a5103faccdd633f35bd7aee69dd" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "sp1-build" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8216e07a9c463c6ee091cdc817cfc10c25446cfd4d020812818177e0a3d1c943" +dependencies = [ + "anyhow", + "cargo_metadata", + "chrono", + "clap", + "dirs", +] + +[[package]] +name = "sp1-core-executor" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9855631556145c827f959527a2f60cb2c6ededfb42afcee49e41dab5f507ce7b" +dependencies = [ + "bincode", + "bytemuck", + "elf", + "enum-map", + "eyre", + "generic-array 1.1.0", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "log", + "nohash-hasher", + "num", + "p3-field", + "p3-keccak-air", + "p3-maybe-rayon", + "rand", + "rrs-succinct", + "serde", + "serde_with", + "sp1-curves", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "strum", + "strum_macros", + "thiserror", + "tiny-keccak", + "tracing", + "typenum", + "vec_map", +] + +[[package]] +name = "sp1-core-machine" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d9c51416ef52b258fa637538c02a2ac06ecaeec79d075c620013a77f035dee" +dependencies = [ + "anyhow", + "arrayref", + "bincode", + "blake3", + "bytemuck", + "cfg-if", + "curve25519-dalek", + "elf", + "elliptic-curve", + "generic-array 1.1.0", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "k256", + "log", + "nohash-hasher", + "num", + "num-bigint 0.4.6", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-blake3", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-keccak", + "p3-keccak-air", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rand", + "rayon-scan", + "rrs-succinct", + "serde", + "serde_with", + "size", + "snowbridge-amcl", + "sp1-core-executor", + "sp1-curves", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "strum", + "strum_macros", + "tempfile", + "thiserror", + "tracing", + "tracing-forest", + "tracing-subscriber", + "typenum", + "web-time", +] + +[[package]] +name = "sp1-cuda" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36205719710ef078ad070fd2b1456c9929b5b6c5fb98aecfca32e0d7f39464ac" +dependencies = [ + "bincode", + "ctrlc", + "prost", + "prost-types", + "serde", + "serde_json", + "sp1-core-machine", + "sp1-prover", + "sp1-stark", + "tokio", + "tracing", + "tracing-subscriber", + "twirp-rs", +] + +[[package]] +name = "sp1-curves" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c33d4d3f5e3590cc8c8d8a3d074097020bc0be0b9dd35fe43e04c586440c85" +dependencies = [ + "curve25519-dalek", + "dashu", + "elliptic-curve", + "generic-array 1.1.0", + "itertools 0.13.0", + "k256", + "num", + "p3-field", + "serde", + "snowbridge-amcl", + "sp1-primitives", + "sp1-stark", + "typenum", +] + +[[package]] +name = "sp1-derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e33825340e1b21b37a29f5304fbd18a1c7c97ba1376fa35b7c017fd95dd627e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-helper" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f08124c62d09764810783355cff518477e3f36c8e83343623859afeca6f3eeb" +dependencies = [ + "sp1-build", +] + +[[package]] +name = "sp1-lib" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413956de14568d7fb462213b9505ad4607d75c875301b9eca567cfb2e58eaac1" +dependencies = [ + "anyhow", + "bincode", + "cfg-if", + "hex", + "serde", + "snowbridge-amcl", +] + +[[package]] +name = "sp1-primitives" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbeba375fe59917f162f1808c280d2e39e4698dc7eeac83936b6e70c2f8dbbc" +dependencies = [ + "itertools 0.13.0", + "lazy_static", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", +] + +[[package]] +name = "sp1-prover" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "166e9f9fd29ecdfd4fd452d49052abdfbe735317f00016e94fde8410f90b4134" +dependencies = [ + "anyhow", + "bincode", + "clap", + "dirs", + "hex", + "itertools 0.13.0", + "num-bigint 0.4.6", + "oneshot", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-field", + "p3-matrix", + "rayon", + "serde", + "serde_json", + "serial_test", + "sp1-core-executor", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-circuit", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-recursion-program", + "sp1-stark", + "subtle-encoding", + "tempfile", + "thiserror", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sp1-recursion-circuit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3ccdda16cd078f32c6707212b8e8f3e423992eeff6ace898d3e15bf94e78a16" +dependencies = [ + "bincode", + "itertools 0.13.0", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-util", + "serde", + "sp1-core-machine", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-derive", + "sp1-recursion-program", + "sp1-stark", +] + +[[package]] +name = "sp1-recursion-compiler" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae17b6c8506b3521e78450cf28f76c2426b5b2f132bb89660d3d61eb155439c4" +dependencies = [ + "backtrace", + "itertools 0.13.0", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "rayon", + "serde", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-core", + "sp1-recursion-core-v2", + "sp1-recursion-derive", + "sp1-stark", + "tracing", + "vec_map", +] + +[[package]] +name = "sp1-recursion-core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8414c3d16cd2fedd293989cef601915d4e1efab662e3a08923606970dc8ae7e6" +dependencies = [ + "arrayref", + "backtrace", + "ff 0.13.0", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "serde", + "serde_with", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "tracing", + "zkhash", +] + +[[package]] +name = "sp1-recursion-core-v2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d0a2af67ca6f7db964b7f1ffdb48f6e26f10e3cc027a11bdd17b224f8747650" +dependencies = [ + "arrayref", + "backtrace", + "ff 0.13.0", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "serde", + "serde_with", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-recursion-core", + "sp1-stark", + "static_assertions", + "thiserror", + "tracing", + "vec_map", + "zkhash", +] + +[[package]] +name = "sp1-recursion-derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4921db3912a60ee3896242ce336203066377e6eddd1c26d099e8bf6b9c470a21" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-recursion-gnark-ffi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718b2e92bfd3ce91fcef2ac0b3a8d31746dbc3ad4071f3bec45aa2e5e025adb1" +dependencies = [ + "anyhow", + "bincode", + "bindgen", + "cc", + "cfg-if", + "hex", + "log", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-symmetric", + "rand", + "serde", + "serde_json", + "sha2", + "sp1-core-machine", + "sp1-recursion-compiler", + "sp1-stark", + "tempfile", +] + +[[package]] +name = "sp1-recursion-program" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676661b42f5d55c64932ad400ec920bd8b8098b1500b13c483a541bf3b396dd1" +dependencies = [ + "itertools 0.13.0", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "rand", + "serde", + "sp1-core-executor", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-stark", + "stacker", + "tracing", +] + +[[package]] +name = "sp1-sdk" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b289585392a3639f6541bce32dd89e03e7893f42e9b9bcf6bee7d54183d5e05" +dependencies = [ + "alloy-sol-types", + "anyhow", + "async-trait", + "bincode", + "cfg-if", + "dirs", + "ethers", + "futures", + "getrandom", + "hashbrown 0.14.5", + "hex", + "indicatif", + "itertools 0.13.0", + "log", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "prost", + "reqwest 0.12.5", + "reqwest-middleware", + "serde", + "serde_json", + "sha2", + "sp1-core-executor", + "sp1-core-machine", + "sp1-cuda", + "sp1-prover", + "sp1-stark", + "strum", + "strum_macros", + "sysinfo", + "tempfile", + "thiserror", + "tokio", + "tracing", + "twirp-rs", + "vergen", +] + +[[package]] +name = "sp1-stark" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4048fc99a6c1123f5040b5ade1ae2839ca1be421e4c427fc7d1fd9bbf6e174f5" +dependencies = [ + "arrayref", + "getrandom", + "hashbrown 0.14.5", + "itertools 0.13.0", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rayon-scan", + "serde", + "sp1-derive", + "sp1-primitives", + "sysinfo", + "tracing", +] + +[[package]] +name = "sp1-zkvm" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66c525f67cfd3f65950f01c713a72c41a5d44d289155644c8ace4ec264098039" +dependencies = [ + "bincode", + "cfg-if", + "getrandom", + "lazy_static", + "libm", + "once_cell", + "rand", + "serde", + "sha2", + "sp1-lib", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stacker" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "winapi", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "structmeta" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ad9e09554f0456d67a69c1584c9798ba733a5b50349a6c0d0948710523922d" +dependencies = [ + "proc-macro2", + "quote", + "structmeta-derive", + "syn 2.0.72", +] + +[[package]] +name = "structmeta-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a60bcaff7397072dca0017d1db428e30d5002e00b6847703e2e42005c95fbe00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.72", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "subtle-encoding" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +dependencies = [ + "zeroize", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "test-strategy" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8361c808554228ad09bfed70f5c823caf8a3450b6881cc3a38eb57e8c08c1d9" +dependencies = [ + "proc-macro2", + "quote", + "structmeta", + "syn 2.0.72", +] + +[[package]] +name = "thiserror" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.39.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.20", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.3.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.3.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +dependencies = [ + "indexmap 2.3.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.18", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-forest" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" +dependencies = [ + "ansi_term", + "smallvec", + "thiserror", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "twirp-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa3161d8eee0abcad4e762f4215381a430cc1281870d575b0f1e4fbfc74b8ce" +dependencies = [ + "async-trait", + "axum", + "bytes", + "futures", + "http 1.1.0", + "http-body-util", + "hyper 1.4.1", + "prost", + "reqwest 0.12.5", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower", + "url", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +dependencies = [ + "serde", +] + +[[package]] +name = "vergen" +version = "8.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" +dependencies = [ + "anyhow", + "cfg-if", + "git2", + "rustversion", + "time", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.72", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.0", + "send_wrapper 0.6.0", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" +dependencies = [ + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bitvec", + "blake2 0.10.6", + "bls12_381", + "byteorder", + "cfg-if", + "group 0.12.1", + "group 0.13.0", + "halo2", + "hex", + "jubjub", + "lazy_static", + "pasta_curves 0.5.1", + "rand", + "serde", + "sha2", + "sha3", + "subtle", +] diff --git a/kairos-sp1/Cargo.toml b/kairos-sp1/Cargo.toml new file mode 100644 index 00000000..f14f5c96 --- /dev/null +++ b/kairos-sp1/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] +members = [ + "program", + "server" +] +resolver = "2" diff --git a/kairos-sp1/elf/riscv32im-succinct-zkvm-elf b/kairos-sp1/elf/riscv32im-succinct-zkvm-elf new file mode 100755 index 0000000000000000000000000000000000000000..4120f1d560f0ba80170e10f68a6b1b3e69d9e663 GIT binary patch literal 236804 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�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

FZdSgb-?{qHeaB)M1NWO^X?CY{1EQ9 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 C)9%6m literal 0 HcmV?d00001 diff --git a/kairos-sp1/program/Cargo.toml b/kairos-sp1/program/Cargo.toml new file mode 100644 index 00000000..c1aa281f --- /dev/null +++ b/kairos-sp1/program/Cargo.toml @@ -0,0 +1,9 @@ +[package] +version = "0.1.0" +name = "kairos-batch-logic-sp1" +edition = "2021" + +[dependencies] +kairos-circuit-logic = { path = "../../kairos-prover/kairos-circuit-logic", features = ["serde", "borsh"], default-features = false } + +sp1-zkvm = "2.0.0" diff --git a/kairos-sp1/program/src/main.rs b/kairos-sp1/program/src/main.rs new file mode 100644 index 00000000..16b2cdc4 --- /dev/null +++ b/kairos-sp1/program/src/main.rs @@ -0,0 +1,18 @@ +#![cfg_attr(target_os = "zkvm", no_main)] + +#[cfg(target_os = "zkvm")] +sp1_zkvm::entrypoint!(main); + +use kairos_circuit_logic::ProofInputs; + +pub fn main() { + let proof_inputs: ProofInputs = sp1_zkvm::io::read(); + + let output = proof_inputs + .run_batch_proof_logic() + .unwrap() + .borsh_serialize() + .unwrap(); + + sp1_zkvm::io::commit_slice(&output); +} diff --git a/kairos-sp1/rust-toolchain.toml b/kairos-sp1/rust-toolchain.toml new file mode 100644 index 00000000..3415d6b9 --- /dev/null +++ b/kairos-sp1/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.79.0" +components = ["llvm-tools", "rustc-dev"] \ No newline at end of file diff --git a/kairos-sp1/server/Cargo.toml b/kairos-sp1/server/Cargo.toml new file mode 100644 index 00000000..3f8c8602 --- /dev/null +++ b/kairos-sp1/server/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "kairos-sp1-server" +version = "0.1.0" +edition = "2021" + +[features] +cuda = ["sp1-sdk/cuda"] + +[dependencies] +sp1-sdk = "2.0.0" + +kairos-circuit-logic = { path = "../../kairos-prover/kairos-circuit-logic", features = ["serde", "borsh"], default-features = false } + +serde_json = { version = "1" } +serde = { version = "1", default-features = false, features = ["derive"] } + +tokio = { version = "1", features = ["rt-multi-thread", "tracing", "macros"] } +axum = { version = "0.7", features = ["tracing"] } +axum-extra = { version = "0.9", features = [ + "typed-routing", + "typed-header", + "json-deserializer", +] } + +dotenvy = "0.15" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } + +[build-dependencies] +sp1-helper = "2.0.0" + +[dev-dependencies] +kairos-trie = { git = "https://github.com/cspr-rad/kairos-trie", features = ["serde"] } +kairos-circuit-logic = { path = "../../kairos-prover/kairos-circuit-logic", features = ["serde", "test-logic", "arbitrary" ], default-features = false } +test-strategy = { version = "0.3" } +proptest = { version = "1" } +casper-types = "4.0" diff --git a/kairos-sp1/server/build.rs b/kairos-sp1/server/build.rs new file mode 100644 index 00000000..bc5f0259 --- /dev/null +++ b/kairos-sp1/server/build.rs @@ -0,0 +1,5 @@ +use sp1_helper::build_program_with_args; + +fn main() { + build_program_with_args("../program", Default::default()) +} diff --git a/kairos-sp1/server/src/main.rs b/kairos-sp1/server/src/main.rs new file mode 100644 index 00000000..b39857c4 --- /dev/null +++ b/kairos-sp1/server/src/main.rs @@ -0,0 +1,262 @@ +use std::time::Instant; + +use axum::{http::StatusCode, Json}; +use axum_extra::routing::{RouterExt, TypedPath}; +use kairos_circuit_logic::{ProofInputs, ProofOutputs}; + +use sp1_sdk::{SP1ProofWithPublicValues, SP1Stdin}; +// These constants represent the RISC-V ELF and the image ID generated by risc0-build. +// The ELF is used for proving and the ID is used for verification. +use tracing::level_filters::LevelFilter; +use tracing_subscriber::{prelude::*, EnvFilter}; + +pub const PROVE_BATCH_ELF: &[u8] = include_bytes!("../../elf/riscv32im-succinct-zkvm-elf"); + +#[tokio::main] +async fn main() { + let _ = dotenvy::dotenv(); + // Initialize tracing. In order to view logs, run `RUST_LOG=info cargo run` + tracing_subscriber::registry() + .with( + EnvFilter::try_from_default_env() + .unwrap_or_else(|_| "info,kairos_sp1_server=info".into()), + ) + .with(tracing_subscriber::fmt::layer()) + .init(); + + let socket_addr = std::env::var("KAIROS_SP1_PROVER_SERVER_SOCKET_ADDR") + .expect("Failed to fetch environment variable KAIROS_SP1_PROVER_SERVER_SOCKET_ADDR"); + let socket_addr = socket_addr + .parse::() + .expect("Failed to parse KAIROS_SP1_PROVER_SERVER_SOCKET_ADDR"); + + let app = axum::Router::new() + .typed_post(prove_batch_route) + .with_state(()); + + tracing::info!("starting http server on `{}`", socket_addr); + let listener = tokio::net::TcpListener::bind(socket_addr).await.unwrap(); + tracing::info!("listening on `{}`", socket_addr); + axum::serve(listener, app).await.unwrap() +} + +#[derive(TypedPath, Debug, Clone, Copy)] +#[typed_path("/api/v1/prove/batch")] +pub struct ProveBatch; + +pub async fn prove_batch_route( + _: ProveBatch, + proof_inputs: Json, +) -> Result, (StatusCode, String)> { + let proof = tokio::task::spawn_blocking(move || prove_execution(proof_inputs.0)) + .await + .map_err(|e| { + let e = format!("Error while joining proving task: {e}"); + tracing::error!(e); + (StatusCode::INTERNAL_SERVER_ERROR, e) + })?; + + let proof = proof.map_err(|e| { + let e = format!("Error while proving batch: {e}"); + tracing::error!(e); + (StatusCode::INTERNAL_SERVER_ERROR, e) + })?; + + Ok(Json(proof)) +} + +fn prove_execution( + proof_inputs: kairos_circuit_logic::ProofInputs, +) -> Result<(ProofOutputs, SP1ProofWithPublicValues), String> { + let timestamp = Instant::now(); + + let client = sp1_sdk::ProverClient::local(); + + // Setup the inputs. + let mut stdin = SP1Stdin::new(); + stdin.write(&proof_inputs); + + let (pk, vk) = client.setup(PROVE_BATCH_ELF); + + let proof = client + .prove(&pk, stdin) + .run() + .map_err(|e| format!("Failed to prove execution: {e}"))?; + + tracing::info!("Proved batch: {}s", timestamp.elapsed().as_secs_f64()); + + let timestamp = Instant::now(); + + tracing::info!("Verified batch: {}s", timestamp.elapsed().as_secs_f64()); + + client + .verify(&proof, &vk) + .map_err(|e| format!("Failed to verify proof: {e}"))?; + + // this panics if deserialization fails + let proof_outputs: &[u8] = proof.public_values.as_slice(); + let proof_outputs = ProofOutputs::borsh_deserialize(proof_outputs)?; + + Ok((proof_outputs, proof)) +} + +pub fn test_setup() { + let _ = tracing_subscriber::fmt() + .with_env_filter( + EnvFilter::builder() + .with_default_directive(LevelFilter::INFO.into()) + .from_env_lossy(), + ) + .try_init(); + + if cfg!(feature = "disable-dev-mode") { + std::env::set_var("RISC0_DEV_MODE", "0"); + } +} + +#[cfg(test)] +mod tests { + use std::rc::Rc; + + use casper_types::{bytesrepr::ToBytes, AsymmetricType}; + use kairos_trie::{stored::memory_db::MemoryDb, TrieRoot}; + use proptest::prelude::*; + + use kairos_circuit_logic::{ + account_trie::{test_logic::test_prove_batch, Account}, + transactions::{ + arbitrary::RandomBatches, KairosTransaction, L1Deposit, Signed, Transfer, Withdraw, + }, + }; + + use crate::test_setup; + + #[test] + fn test_prove_simple_batches() { + test_setup(); + + let alice_public_key = include_bytes!("../../../testdata/users/user-2/public_key_hex"); + let alice_public_key = casper_types::PublicKey::from_hex(alice_public_key) + .expect("Failed to parse public key") + .to_bytes() + .expect("Failed to convert public key to bytes"); + + let bob_public_key = include_bytes!("../../../testdata/users/user-3/public_key_hex"); + let bob_public_key = casper_types::PublicKey::from_hex(bob_public_key) + .expect("Failed to parse public key") + .to_bytes() + .expect("Failed to convert public key to bytes"); + + let batches = vec![ + vec![ + KairosTransaction::Deposit(L1Deposit { + recipient: alice_public_key.clone(), + amount: 10, + }), + KairosTransaction::Transfer(Signed { + public_key: alice_public_key.clone(), + transaction: Transfer { + recipient: bob_public_key.clone(), + amount: 5, + }, + nonce: 0, + }), + KairosTransaction::Withdraw(Signed { + public_key: alice_public_key.clone(), + transaction: Withdraw { amount: 5 }, + nonce: 1, + }), + ], + vec![ + KairosTransaction::Transfer(Signed { + public_key: bob_public_key.clone(), + transaction: Transfer { + recipient: alice_public_key.clone(), + amount: 2, + }, + nonce: 0, + }), + KairosTransaction::Withdraw(Signed { + public_key: bob_public_key.clone(), + transaction: Withdraw { amount: 3 }, + nonce: 1, + }), + KairosTransaction::Withdraw(Signed { + public_key: alice_public_key.clone(), + transaction: Withdraw { amount: 2 }, + nonce: 2, + }), + ], + ]; + + test_prove_batch( + TrieRoot::Empty, + Rc::new(MemoryDb::::empty()), + batches, + |(batch_num, proof_inputs)| { + let (proof_outputs, receipt) = + crate::prove_execution(proof_inputs).expect("Failed to prove execution"); + + if cfg!(feature = "write-test-proofs") { + let proof_file = std::fs::File::create(format!( + "test_prove_simple_batches_{batch_num}.json" + )) + .expect("Failed to create proof file"); + + serde_json::to_writer(proof_file, &receipt) + .expect("Failed to write proof file"); + }; + + Ok(proof_outputs) + }, + ); + } + + #[test_strategy::proptest(ProptestConfig::default(), cases = if cfg!(feature = "disable-dev-mode") { 2 } else { 40 })] + fn proptest_prove_batches( + #[any(batch_size = 5..=10, batch_count = 2..=4, initial_l2_accounts = 10_000..=100_000)] + args: RandomBatches, + ) { + test_setup(); + let batches = args.filter_success(); + + proptest::prop_assume!(batches.len() >= 2); + + test_prove_batch( + args.initial_trie, + args.trie_db, + batches, + |(_, proof_inputs)| { + tracing::info!( + "Proving batch of size: {}, over trie of {} accounts.", + proof_inputs.transactions.len(), + args.initial_state.l2.len() + ); + + let (proof_outputs, receipt) = + crate::prove_execution(proof_inputs).expect("Failed to prove execution"); + + // if cfg!(feature = "write-test-proofs") { + // use std::hash::{DefaultHasher, Hasher}; + + // let mut hasher = DefaultHasher::new(); + // hasher.write(&receipt.journal.bytes); + // let journal_hash = hasher.finish(); + + // let proof_path = format!( + // "proptest_prove_batches-proof-journal-{:x}.json", + // journal_hash + // ); + + // let proof_file = + // std::fs::File::create(proof_path).expect("Failed to create proof file"); + + // serde_json::to_writer(proof_file, &receipt) + // .expect("Failed to write proof file"); + // } + + Ok(proof_outputs) + }, + ) + } +}