From bf4cdf8529c3a509f9e030d35ef4b152ea9c2261 Mon Sep 17 00:00:00 2001 From: nomaxg Date: Mon, 5 Aug 2024 16:59:31 +0200 Subject: [PATCH 01/27] support for multiple l1 providers for state proofs, compiles with many sloppy clones --- Cargo.lock | 886 +++++++++---------- hotshot-state-prover/src/bin/state-prover.rs | 8 +- hotshot-state-prover/src/service.rs | 174 ++-- sequencer/src/bin/espresso-dev-node.rs | 125 ++- 4 files changed, 622 insertions(+), 571 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f8b2e637e1..1171e1e641 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -113,7 +113,7 @@ dependencies = [ "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", @@ -163,33 +163,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -492,9 +492,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" @@ -513,9 +513,9 @@ dependencies = [ [[package]] name = "asn1-rs" -version = "0.6.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +checksum = "22ad1373757efa0f70ec53939aabc7152e1591cb485208052993070ac8d2429d" dependencies = [ "asn1-rs-derive", "asn1-rs-impl", @@ -529,13 +529,13 @@ dependencies = [ [[package]] name = "asn1-rs-derive" -version = "0.5.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", "synstructure 0.13.1", ] @@ -547,7 +547,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -633,9 +633,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" dependencies = [ "async-task", "concurrent-queue", @@ -721,7 +721,7 @@ dependencies = [ "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.7.2", + "polling 3.7.1", "rustix 0.38.34", "slab", "tracing", @@ -796,9 +796,9 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.9" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" +checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" dependencies = [ "async-io 2.3.3", "async-lock 3.4.0", @@ -888,7 +888,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -912,13 +912,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -954,7 +954,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4057f2c32adbb2fc158e22fb38433c8e9bbf76b75a4732c7c0cbaf695fb65568" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures-sink", "futures-util", "memchr", @@ -967,7 +967,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures-sink", "futures-util", "memchr", @@ -1021,7 +1021,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -1038,7 +1038,7 @@ checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -1050,11 +1050,11 @@ dependencies = [ "async-trait", "axum-core", "bitflags 1.3.2", - "bytes 1.7.1", + "bytes 1.6.0", "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.29", "itoa", "matchit", "memchr", @@ -1076,7 +1076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", - "bytes 1.7.1", + "bytes 1.6.0", "futures-util", "http 0.2.12", "http-body 0.4.6", @@ -1194,9 +1194,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" dependencies = [ "serde", ] @@ -1225,9 +1225,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" dependencies = [ "arrayref", "arrayvec", @@ -1269,9 +1269,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.13" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +checksum = "62dc83a094a71d43eeadd254b1ec2d24cb6a0bb6cadce00df51f0db594711a32" dependencies = [ "cc", "glob", @@ -1323,7 +1323,7 @@ dependencies = [ "sequencer", "sequencer-utils", "serde", - "snafu 0.8.4", + "snafu 0.8.3", "surf", "surf-disco", "tide-disco", @@ -1381,9 +1381,9 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" [[package]] name = "bytes" -version = "1.7.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" dependencies = [ "serde", ] @@ -1476,12 +1476,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.7" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -1598,7 +1599,7 @@ dependencies = [ "rcgen 0.13.1", "redis", "rkyv", - "rustls 0.23.12", + "rustls 0.23.10", "rustls-pki-types", "sqlx", "thiserror", @@ -1632,7 +1633,7 @@ dependencies = [ "rcgen 0.13.1", "redis", "rkyv", - "rustls 0.23.12", + "rustls 0.23.10", "rustls-pki-types", "sqlx", "thiserror", @@ -1661,7 +1662,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-targets 0.52.5", ] [[package]] @@ -1685,9 +1686,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.13" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" +checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" dependencies = [ "clap_builder", "clap_derive", @@ -1695,9 +1696,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.13" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" +checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" dependencies = [ "anstream", "anstyle", @@ -1707,21 +1708,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "cld" @@ -1810,9 +1811,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "combine" @@ -1820,7 +1821,7 @@ version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures-core", "memchr", "pin-project-lite 0.2.14", @@ -2265,9 +2266,9 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.4.74+curl-8.9.0" +version = "0.4.72+curl-8.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8af10b986114528fcdc4b63b6f5f021b7057618411046a4de2ba0f0149a097bf" +checksum = "29cbdc8314c447d11e8fd156dcdd031d9e02a7a976163e396b548c03153bc9ea" dependencies = [ "cc", "libc", @@ -2281,15 +2282,16 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", + "platforms", "rustc_version 0.4.0", "subtle", "zeroize", @@ -2303,7 +2305,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -2345,15 +2347,15 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", "synstructure 0.13.1", ] [[package]] name = "darling" -version = "0.20.10" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ "darling_core", "darling_macro", @@ -2361,27 +2363,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -2478,7 +2480,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -2499,7 +2501,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -2509,20 +2511,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] name = "derive_more" -version = "0.99.18" +version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case 0.4.0", "proc-macro2", "quote", "rustc_version 0.4.0", - "syn 2.0.72", + "syn 1.0.109", ] [[package]] @@ -2653,7 +2655,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -2747,9 +2749,9 @@ dependencies = [ [[package]] name = "edit-distance" -version = "2.1.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853fc7035888bd1c9320f3a05bfe7f344f49b8766a4bb4209b1ac5f0503d9577" +checksum = "bbbaaaf38131deb9ca518a274a45bfdb8771f139517b073b16c2d3d32ae5037b" [[package]] name = "either" @@ -2810,7 +2812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" dependencies = [ "base64 0.21.7", - "bytes 1.7.1", + "bytes 1.6.0", "hex", "k256", "log", @@ -2830,7 +2832,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -2861,9 +2863,9 @@ dependencies = [ [[package]] name = "escargot" -version = "0.5.12" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c000f23e9d459aef148b7267e02b03b94a0aaacf4ec64c65612f67e02f525fb6" +checksum = "650eb5f6eeda986377996e9ed570cbc20cc16d30440696f82f129c863e4e3e83" dependencies = [ "log", "once_cell", @@ -2929,7 +2931,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "snafu 0.8.4", + "snafu 0.8.3", "static_assertions", "surf-disco", "tagged-base64", @@ -3088,7 +3090,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.72", + "syn 2.0.66", "toml", "walkdir", ] @@ -3106,7 +3108,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -3116,7 +3118,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" dependencies = [ "arrayvec", - "bytes 1.7.1", + "bytes 1.6.0", "cargo_metadata", "chrono", "const-hex", @@ -3132,7 +3134,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.72", + "syn 2.0.66", "tempfile", "thiserror", "tiny-keccak", @@ -3192,7 +3194,7 @@ dependencies = [ "async-trait", "auto_impl", "base64 0.21.7", - "bytes 1.7.1", + "bytes 1.6.0", "const-hex", "enr", "ethers-core", @@ -3579,7 +3581,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -3589,7 +3591,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" dependencies = [ "futures-io", - "rustls 0.23.12", + "rustls 0.23.10", "rustls-pki-types", ] @@ -3751,13 +3753,13 @@ version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "fnv", "futures-core", "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.3.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -3771,12 +3773,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" dependencies = [ "atomic-waker", - "bytes 1.7.1", + "bytes 1.6.0", "fnv", "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.3.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -3849,7 +3851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ "base64 0.21.7", - "bytes 1.7.1", + "bytes 1.6.0", "headers-core", "http 0.2.12", "httpdate", @@ -3887,12 +3889,6 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - [[package]] name = "hex" version = "0.4.3" @@ -4068,13 +4064,13 @@ dependencies = [ "jf-signature", "libp2p-identity", "libp2p-networking", - "lru 0.12.4", + "lru 0.12.3", "num_enum", "portpicker", "rand 0.8.5", "serde", "sha2 0.10.8", - "snafu 0.8.4", + "snafu 0.8.3", "surf-disco", "time 0.3.36", "tokio", @@ -4094,7 +4090,7 @@ dependencies = [ "futures", "hotshot-types", "serde", - "snafu 0.8.4", + "snafu 0.8.3", "tagged-base64", "tide-disco", "toml", @@ -4121,10 +4117,10 @@ dependencies = [ "hotshot-builder-api", "hotshot-events-service", "hotshot-types", - "lru 0.12.4", + "lru 0.12.3", "serde", "sha2 0.10.8", - "snafu 0.8.4", + "snafu 0.8.3", "surf-disco", "tagged-base64", "tide-disco", @@ -4171,7 +4167,7 @@ dependencies = [ "hotshot-types", "rand 0.8.5", "serde", - "snafu 0.8.4", + "snafu 0.8.3", "tagged-base64", "tide-disco", "toml", @@ -4204,7 +4200,7 @@ dependencies = [ "serde", "sha2 0.10.8", "sha3", - "snafu 0.8.4", + "snafu 0.8.3", "time 0.3.36", "tokio", "tracing", @@ -4239,7 +4235,7 @@ dependencies = [ "derive_builder", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -4310,7 +4306,7 @@ dependencies = [ "refinery", "serde", "serde_json", - "snafu 0.8.4", + "snafu 0.8.3", "spin_sleep", "surf-disco", "tagged-base64", @@ -4383,7 +4379,7 @@ dependencies = [ "reqwest 0.12.5", "sequencer-utils", "serde", - "snafu 0.8.4", + "snafu 0.8.3", "surf-disco", "tide-disco", "time 0.3.36", @@ -4434,7 +4430,7 @@ dependencies = [ "rand 0.8.5", "serde", "sha2 0.10.8", - "snafu 0.8.4", + "snafu 0.8.3", "surf-disco", "tagged-base64", "time 0.3.36", @@ -4472,14 +4468,14 @@ dependencies = [ "hotshot-types", "jf-signature", "jf-vid", - "lru 0.12.4", + "lru 0.12.3", "portpicker", "rand 0.8.5", "reqwest 0.12.5", "serde", "sha2 0.10.8", "sha3", - "snafu 0.8.4", + "snafu 0.8.3", "tagged-base64", "tide-disco", "tokio", @@ -4531,7 +4527,7 @@ dependencies = [ "reqwest 0.12.5", "serde", "sha2 0.10.8", - "snafu 0.8.4", + "snafu 0.8.3", "tagged-base64", "time 0.3.36", "tokio", @@ -4548,7 +4544,7 @@ version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "fnv", "itoa", ] @@ -4559,7 +4555,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "fnv", "itoa", ] @@ -4570,18 +4566,18 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "http 0.2.12", "pin-project-lite 0.2.14", ] [[package]] name = "http-body" -version = "1.0.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "http 1.1.0", ] @@ -4591,10 +4587,10 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures-util", "http 1.1.0", - "http-body 1.0.1", + "http-body 1.0.0", "pin-project-lite 0.2.14", ] @@ -4636,9 +4632,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "d0e7a4dd27b9476dc40cb050d3632d3bba3a70ddbff012285f7f8559a1e7e545" [[package]] name = "httpdate" @@ -4654,11 +4650,11 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures-channel", "futures-core", "futures-util", @@ -4678,16 +4674,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures-channel", "futures-util", "h2 0.4.5", "http 1.1.0", - "http-body 1.0.1", + "http-body 1.0.0", "httparse", "itoa", "pin-project-lite 0.2.14", @@ -4704,7 +4700,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.29", "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", @@ -4718,9 +4714,9 @@ checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.4.1", + "hyper 1.3.1", "hyper-util", - "rustls 0.23.12", + "rustls 0.23.10", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -4733,7 +4729,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.30", + "hyper 0.14.29", "pin-project-lite 0.2.14", "tokio", "tokio-io-timeout", @@ -4745,9 +4741,9 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "http-body-util", - "hyper 1.4.1", + "hyper 1.3.1", "hyper-util", "native-tls", "tokio", @@ -4757,16 +4753,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.1", - "hyper 1.4.1", + "http-body 1.0.0", + "hyper 1.3.1", "pin-project-lite 0.2.14", "socket2 0.5.7", "tokio", @@ -4862,10 +4858,10 @@ checksum = "064d90fec10d541084e7b39ead8875a5a80d9114a2b18791565253bae25f49e4" dependencies = [ "async-trait", "attohttpc", - "bytes 1.7.1", + "bytes 1.6.0", "futures", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.29", "log", "rand 0.8.5", "tokio", @@ -4913,18 +4909,18 @@ dependencies = [ [[package]] name = "include_dir" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" dependencies = [ "include_dir_macros", ] [[package]] name = "include_dir_macros" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ "proc-macro2", "quote", @@ -4949,9 +4945,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.3.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -4979,7 +4975,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f97967975f448f1a7ddb12b0bc41069d09ed6a1c161a92687e057325db35d413" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", ] [[package]] @@ -4997,7 +4993,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", "windows-sys 0.48.0", ] @@ -5022,9 +5018,9 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "isahc" @@ -5319,9 +5315,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] @@ -5434,11 +5430,11 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.5.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" dependencies = [ - "spin 0.9.8", + "spin 0.5.2", ] [[package]] @@ -5469,7 +5465,7 @@ version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "681fb3f183edfbedd7a57d32ebe5dcdc0b9f94061185acf3c30249349cc6fc99" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "either", "futures", "futures-timer", @@ -5544,14 +5540,15 @@ dependencies = [ [[package]] name = "libp2p-core" -version = "0.41.3" +version = "0.41.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5a8920cbd8540059a01950c1e5c96ea8d89eb50c51cd366fc18bdf540a6e48f" +checksum = "8130a8269e65a2554d55131c770bdf4bcd94d2b8d4efb24ca23699be65066c05" dependencies = [ "either", "fnv", "futures", "futures-timer", + "instant", "libp2p-identity", "multiaddr", "multihash", @@ -5568,7 +5565,6 @@ dependencies = [ "tracing", "unsigned-varint 0.8.0", "void", - "web-time", ] [[package]] @@ -5597,7 +5593,7 @@ dependencies = [ "asynchronous-codec 0.7.0", "base64 0.21.7", "byteorder", - "bytes 1.7.1", + "bytes 1.6.0", "either", "fnv", "futures", @@ -5634,7 +5630,7 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "lru 0.12.4", + "lru 0.12.3", "quick-protobuf", "quick-protobuf-codec 0.3.1", "smallvec", @@ -5672,7 +5668,7 @@ checksum = "5cc5767727d062c4eac74dd812c998f0e488008e82cce9c33b463d38423f9ad2" dependencies = [ "arrayvec", "asynchronous-codec 0.7.0", - "bytes 1.7.1", + "bytes 1.6.0", "either", "fnv", "futures", @@ -5760,7 +5756,7 @@ dependencies = [ "serde", "serde_bytes", "serde_json", - "snafu 0.8.4", + "snafu 0.8.3", "tokio", "tokio-stream", "tracing", @@ -5774,7 +5770,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c67296ad4e092e23f92aea3d2bdb6f24eab79c0929ed816dfb460ea2f4567d2b" dependencies = [ "async-std", - "bytes 1.7.1", + "bytes 1.6.0", "futures", "futures-timer", "if-watch", @@ -5785,7 +5781,7 @@ dependencies = [ "quinn", "rand 0.8.5", "ring 0.17.8", - "rustls 0.23.12", + "rustls 0.23.10", "socket2 0.5.7", "thiserror", "tokio", @@ -5829,7 +5825,7 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm-derive", - "lru 0.12.4", + "lru 0.12.3", "multistream-select", "once_cell", "rand 0.8.5", @@ -5848,7 +5844,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -5871,9 +5867,9 @@ dependencies = [ [[package]] name = "libp2p-tls" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b7b831e55ce2aa6c354e6861a85fdd4dd0a2b97d5e276fabac0e4810a71776" +checksum = "251b17aebdd29df7e8f80e4d94b782fae42e934c49086e1a81ba23b60a8314f2" dependencies = [ "futures", "futures-rustls", @@ -5881,7 +5877,7 @@ dependencies = [ "libp2p-identity", "rcgen 0.11.3", "ring 0.17.8", - "rustls 0.23.12", + "rustls 0.23.10", "rustls-webpki 0.101.7", "thiserror", "x509-parser", @@ -5910,7 +5906,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "libc", ] @@ -6027,9 +6023,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" dependencies = [ "value-bag", ] @@ -6055,9 +6051,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.4" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" dependencies = [ "hashbrown 0.14.5", ] @@ -6155,7 +6151,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -6217,9 +6213,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.5" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ "mime", "unicase", @@ -6233,23 +6229,22 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", ] [[package]] name = "mio" -version = "1.0.1" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ - "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -6305,7 +6300,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures", "log", "pin-project", @@ -6408,7 +6403,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures", "log", "netlink-packet-core", @@ -6424,7 +6419,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416060d346fbaf1f23f9512963e3e878f1a78e707cb699ba9215761754244307" dependencies = [ "async-io 1.13.0", - "bytes 1.7.1", + "bytes 1.6.0", "futures", "libc", "log", @@ -6484,9 +6479,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.6" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ "num-integer", "num-traits", @@ -6571,29 +6566,29 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", ] [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -6643,7 +6638,7 @@ checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" dependencies = [ "arrayvec", "auto_impl", - "bytes 1.7.1", + "bytes 1.6.0", "ethereum-types", "open-fastrlp-derive", ] @@ -6654,7 +6649,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "proc-macro2", "quote", "syn 1.0.109", @@ -6662,11 +6657,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "cfg-if", "foreign-types", "libc", @@ -6683,7 +6678,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -6694,9 +6689,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ "cc", "libc", @@ -6782,9 +6777,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall 0.5.2", "smallvec", - "windows-targets 0.52.6", + "windows-targets 0.52.5", ] [[package]] @@ -6874,9 +6869,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" dependencies = [ "memchr", "thiserror", @@ -6885,9 +6880,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.11" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" dependencies = [ "pest", "pest_generator", @@ -6895,22 +6890,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.11" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] name = "pest_meta" -version = "2.7.11" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" dependencies = [ "once_cell", "pest", @@ -6924,7 +6919,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.3.0", + "indexmap 2.2.6", ] [[package]] @@ -6967,7 +6962,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -7005,7 +7000,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -7070,6 +7065,12 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + [[package]] name = "polling" version = "2.8.0" @@ -7088,13 +7089,13 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.2" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +checksum = "5e6a007746f34ed64099e88783b0ae369eaa3da6392868ba262e2af9b8fbaea1" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi", "pin-project-lite 0.2.14", "rustix 0.38.34", "tracing", @@ -7136,13 +7137,13 @@ dependencies = [ [[package]] name = "postgres-protocol" -version = "0.6.7" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acda0ebdebc28befa84bee35e651e4c5f09073d668c7aed4cf7e23c3cda84b23" +checksum = "49b6c5ef183cd3ab4ba005f1ca64c21e8bd97ce4699cfea9e8d9a2c4958ca520" dependencies = [ - "base64 0.22.1", + "base64 0.21.7", "byteorder", - "bytes 1.7.1", + "bytes 1.6.0", "fallible-iterator", "hmac 0.12.1", "md-5", @@ -7154,12 +7155,12 @@ dependencies = [ [[package]] name = "postgres-types" -version = "0.2.7" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02048d9e032fb3cc3413bbf7b83a15d84a5d419778e2628751896d856498eee9" +checksum = "8d2234cdee9408b523530a9b6d2d6b373d1db34f6a8e51dc03ded1828d7fb67c" dependencies = [ "bit-vec", - "bytes 1.7.1", + "bytes 1.6.0", "fallible-iterator", "postgres-protocol", "serde", @@ -7175,12 +7176,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.18" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee4364d9f3b902ef14fab8a1ddffb783a1cb6b4bba3bfc1fa3922732c7de97f" -dependencies = [ - "zerocopy 0.6.6", -] +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "precomputed-hash" @@ -7205,7 +7203,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -7262,9 +7260,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] @@ -7286,9 +7284,9 @@ dependencies = [ [[package]] name = "prometheus-client" -version = "0.22.3" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504ee9ff529add891127c4827eb481bd69dc0ebc72e9a682e187db4caa60c3ca" +checksum = "c1ca959da22a332509f2a73ae9e5f23f9dcfc31fd3a54d71f159495bd5909baa" dependencies = [ "dtoa", "itoa", @@ -7304,16 +7302,16 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -7329,7 +7327,7 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "prost-derive", ] @@ -7343,7 +7341,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -7403,7 +7401,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ededb1cd78531627244d51dd0c7139fbe736c7d57af0092a76f0ffb2f56e98" dependencies = [ "asynchronous-codec 0.6.2", - "bytes 1.7.1", + "bytes 1.6.0", "quick-protobuf", "thiserror", "unsigned-varint 0.7.2", @@ -7416,7 +7414,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15a0580ab32b169745d7a39db2ba969226ca16738931be152a3209b409de2474" dependencies = [ "asynchronous-codec 0.7.0", - "bytes 1.7.1", + "bytes 1.6.0", "quick-protobuf", "thiserror", "unsigned-varint 0.8.0", @@ -7430,13 +7428,13 @@ checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" dependencies = [ "async-io 2.3.3", "async-std", - "bytes 1.7.1", + "bytes 1.6.0", "futures-io", "pin-project-lite 0.2.14", "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.12", + "rustls 0.23.10", "thiserror", "tokio", "tracing", @@ -7448,11 +7446,11 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "rand 0.8.5", "ring 0.17.8", "rustc-hash", - "rustls 0.23.12", + "rustls 0.23.10", "slab", "thiserror", "tinyvec", @@ -7461,13 +7459,14 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" dependencies = [ "libc", "once_cell", "socket2 0.5.7", + "tracing", "windows-sys 0.52.0", ] @@ -7630,7 +7629,7 @@ checksum = "e0d7a6955c7511f60f3ba9e86c6d02b3c3f144f8c24b288d1f4e18074ab8bbec" dependencies = [ "arc-swap", "async-trait", - "bytes 1.7.1", + "bytes 1.6.0", "combine", "futures", "futures-util", @@ -7655,11 +7654,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", ] [[package]] @@ -7715,7 +7714,7 @@ dependencies = [ "quote", "refinery-core", "regex", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -7778,14 +7777,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", - "bytes 1.7.1", + "bytes 1.6.0", "encoding_rs", "futures-core", "futures-util", "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.29", "hyper-rustls 0.24.2", "ipnet", "js-sys", @@ -7819,15 +7818,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ "base64 0.22.1", - "bytes 1.7.1", + "bytes 1.6.0", "encoding_rs", "futures-core", "futures-util", "h2 0.4.5", "http 1.1.0", - "http-body 1.0.1", + "http-body 1.0.0", "http-body-util", - "hyper 1.4.1", + "hyper 1.3.1", "hyper-rustls 0.27.2", "hyper-tls", "hyper-util", @@ -7922,14 +7921,14 @@ checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" dependencies = [ "bitvec", "bytecheck", - "bytes 1.7.1", + "bytes 1.6.0", "hashbrown 0.12.3", "ptr_meta", "rend", "rkyv_derive", "seahash", "tinyvec", - "uuid 1.10.0", + "uuid 1.8.0", ] [[package]] @@ -7949,7 +7948,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "rlp-derive", "rustc-hex", ] @@ -7972,7 +7971,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.6.0", + "bitflags 2.5.0", "serde", "serde_derive", ] @@ -8104,7 +8103,7 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys 0.4.14", @@ -8138,15 +8137,28 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.12" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki 0.102.4", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls" +version = "0.23.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +dependencies = [ "once_cell", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.6", + "rustls-webpki 0.102.4", "subtle", "zeroize", ] @@ -8188,9 +8200,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" dependencies = [ "ring 0.17.8", "rustls-pki-types", @@ -8337,11 +8349,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -8350,9 +8362,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -8453,7 +8465,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "snafu 0.8.4", + "snafu 0.8.3", "static_assertions", "strum", "surf-disco", @@ -8497,9 +8509,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.204" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] @@ -8517,22 +8529,22 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.15" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -8546,12 +8558,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.122" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", - "memchr", "ryu", "serde", ] @@ -8569,9 +8580,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -8590,15 +8601,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.3.0", + "indexmap 2.2.6", "serde", "serde_derive", "serde_json", @@ -8608,14 +8619,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.9.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -8653,9 +8664,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" @@ -8856,11 +8867,11 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.4" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b835cb902660db3415a672d862905e791e54d306c6e8189168c7f3d9ae1c79d" +checksum = "418b8136fec49956eba89be7da2847ec1909df92a9ae4178b5ff0ff092c8d95e" dependencies = [ - "snafu-derive 0.8.4", + "snafu-derive 0.8.3", ] [[package]] @@ -8877,14 +8888,14 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.4" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d1e02fca405f6280643174a50c942219f0bbf4dbf7d480f1dd864d6f211ae5" +checksum = "1a4812a669da00d17d8266a0439eddcacbc88b17f732f927e52eeb9d196f7fb5" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -8996,7 +9007,7 @@ dependencies = [ "ahash 0.8.11", "atoi", "byteorder", - "bytes 1.7.1", + "bytes 1.6.0", "crc", "crossbeam-queue", "either", @@ -9008,7 +9019,7 @@ dependencies = [ "futures-util", "hashlink", "hex", - "indexmap 2.3.0", + "indexmap 2.2.6", "log", "memchr", "once_cell", @@ -9074,9 +9085,9 @@ checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" dependencies = [ "atoi", "base64 0.21.7", - "bitflags 2.6.0", + "bitflags 2.5.0", "byteorder", - "bytes 1.7.1", + "bytes 1.6.0", "crc", "digest 0.10.7", "dotenvy", @@ -9117,7 +9128,7 @@ checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" dependencies = [ "atoi", "base64 0.21.7", - "bitflags 2.6.0", + "bitflags 2.5.0", "byteorder", "crc", "dotenvy", @@ -9268,9 +9279,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.3" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" dependencies = [ "strum_macros", ] @@ -9285,14 +9296,14 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] name = "subtle" -version = "2.6.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "surf" @@ -9447,9 +9458,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.72" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -9488,7 +9499,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -9523,7 +9534,7 @@ dependencies = [ "base64 0.22.1", "crc-any", "serde", - "snafu 0.8.4", + "snafu 0.8.3", "tagged-base64-macros", "wasm-bindgen", ] @@ -9569,22 +9580,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -9665,7 +9676,7 @@ dependencies = [ "shellexpand", "signal-hook", "signal-hook-async-std", - "snafu 0.8.4", + "snafu 0.8.3", "strum", "strum_macros", "tagged-base64", @@ -9781,9 +9792,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -9796,21 +9807,22 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", - "bytes 1.7.1", + "bytes 1.6.0", "libc", "mio", + "num_cpus", "parking_lot", "pin-project-lite 0.2.14", "signal-hook-registry", "socket2 0.5.7", "tokio-macros", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -9825,13 +9837,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -9846,13 +9858,13 @@ dependencies = [ [[package]] name = "tokio-postgres" -version = "0.7.11" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03adcf0147e203b6032c0b2d30be1415ba03bc348901f3ff1cc0df6a733e60c3" +checksum = "d340244b32d920260ae7448cb72b6e238bddc3d4f7603394e7dd46ed8e48f5b8" dependencies = [ "async-trait", "byteorder", - "bytes 1.7.1", + "bytes 1.6.0", "fallible-iterator", "futures-channel", "futures-util", @@ -9897,7 +9909,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.12", + "rustls 0.23.10", "rustls-pki-types", "tokio", ] @@ -9934,7 +9946,7 @@ version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures-core", "futures-sink", "pin-project-lite 0.2.14", @@ -9943,21 +9955,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.14", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] @@ -9968,22 +9980,22 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.2.6", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.13", ] [[package]] @@ -9996,11 +10008,11 @@ dependencies = [ "async-trait", "axum", "base64 0.21.7", - "bytes 1.7.1", + "bytes 1.6.0", "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.29", "hyper-timeout", "percent-encoding", "pin-project", @@ -10023,11 +10035,11 @@ dependencies = [ "async-trait", "axum", "base64 0.21.7", - "bytes 1.7.1", + "bytes 1.6.0", "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.29", "hyper-timeout", "percent-encoding", "pin-project", @@ -10092,7 +10104,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -10196,7 +10208,7 @@ checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -10213,7 +10225,7 @@ checksum = "5fe8dada8c1a3aeca77d6b51a4f1314e0f4b8e438b7b1b71e3ddaca8080e4093" dependencies = [ "base64 0.13.1", "byteorder", - "bytes 1.7.1", + "bytes 1.6.0", "http 0.2.12", "httparse", "input_buffer", @@ -10233,7 +10245,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" dependencies = [ "byteorder", - "bytes 1.7.1", + "bytes 1.6.0", "data-encoding", "http 0.2.12", "httparse", @@ -10353,7 +10365,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" dependencies = [ "asynchronous-codec 0.6.2", - "bytes 1.7.1", + "bytes 1.6.0", ] [[package]] @@ -10376,18 +10388,19 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.10.0" +version = "2.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea" +checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" dependencies = [ "base64 0.22.1", "flate2", "log", "once_cell", - "rustls 0.23.12", + "rustls 0.22.4", "rustls-pki-types", + "rustls-webpki 0.102.4", "url", - "webpki-roots 0.26.3", + "webpki-roots 0.26.2", ] [[package]] @@ -10432,9 +10445,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.10.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" [[package]] name = "valuable" @@ -10508,9 +10521,9 @@ dependencies = [ [[package]] name = "vergen" -version = "8.3.2" +version = "8.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" +checksum = "e27d6bdd219887a9eadd19e1c34f32e47fa332301184935c6d9bca26f3cca525" dependencies = [ "anyhow", "cfg-if", @@ -10520,9 +10533,9 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "void" @@ -10561,12 +10574,12 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c" dependencies = [ - "bytes 1.7.1", + "bytes 1.6.0", "futures-channel", "futures-util", "headers", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.29", "log", "mime", "mime_guess", @@ -10623,7 +10636,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", "wasm-bindgen-shared", ] @@ -10657,7 +10670,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -10678,16 +10691,6 @@ dependencies = [ "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" version = "0.21.4" @@ -10715,9 +10718,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" dependencies = [ "rustls-pki-types", ] @@ -10795,7 +10798,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.6", + "windows-targets 0.52.5", ] [[package]] @@ -10813,7 +10816,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.6", + "windows-targets 0.52.5", ] [[package]] @@ -10833,18 +10836,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.6" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", "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", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -10855,9 +10858,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.6" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -10867,9 +10870,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.6" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -10879,15 +10882,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.6" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" [[package]] name = "windows_i686_gnullvm" -version = "0.52.6" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -10897,9 +10900,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.6" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -10909,9 +10912,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.6" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -10921,9 +10924,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.6" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -10933,9 +10936,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.6" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" @@ -10948,9 +10951,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" dependencies = [ "memchr", ] @@ -11062,43 +11065,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" -dependencies = [ - "byteorder", - "zerocopy-derive 0.6.6", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy-derive" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -11118,7 +11100,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.66", ] [[package]] @@ -11162,9 +11144,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.12+zstd.1.5.6" +version = "2.0.10+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" dependencies = [ "cc", "pkg-config", diff --git a/hotshot-state-prover/src/bin/state-prover.rs b/hotshot-state-prover/src/bin/state-prover.rs index 30405cee49..60ebb4720a 100644 --- a/hotshot-state-prover/src/bin/state-prover.rs +++ b/hotshot-state-prover/src/bin/state-prover.rs @@ -110,9 +110,9 @@ async fn main() { relay_server: args.relay_server, update_interval: args.update_interval, retry_interval: args.retry_interval, - l1_provider: args.l1_provider, - light_client_address: args.light_client_address, - eth_signing_key: MnemonicBuilder::::default() + chain_providers: vec![args.l1_provider], + light_client_addresses: vec![args.light_client_address], + eth_signing_keys: vec![MnemonicBuilder::::default() .phrase(args.eth_mnemonic.as_str()) .index(args.eth_account_index) .expect("error building wallet") @@ -120,7 +120,7 @@ async fn main() { .expect("error opening wallet") .with_chain_id(chain_id) .signer() - .clone(), + .clone()], sequencer_url: args.sequencer_url, port: args.port, stake_table_capacity: args.stake_table_capacity, diff --git a/hotshot-state-prover/src/service.rs b/hotshot-state-prover/src/service.rs index eaca2bd1d4..742c10166d 100644 --- a/hotshot-state-prover/src/service.rs +++ b/hotshot-state-prover/src/service.rs @@ -65,12 +65,12 @@ pub struct StateProverConfig { pub update_interval: Duration, /// Interval between retries if a state update fails pub retry_interval: Duration, - /// URL of layer 1 Ethereum JSON-RPC provider. - pub l1_provider: Url, - /// Address of LightClient contract on layer 1. - pub light_client_address: Address, - /// Transaction signing key for Ethereum - pub eth_signing_key: SigningKey, + /// URLs of Ethereum JSON-RPC providers to submit proofs to + pub chain_providers: Vec, + /// Addresses of LightClient contracts + pub light_client_addresses: Vec
, + /// Transaction signing keys for Ethereum + pub eth_signing_keys: Vec, /// URL of a node that is currently providing the HotShot config. /// This is used to initialize the stake table. pub sequencer_url: Url, @@ -248,22 +248,24 @@ pub async fn fetch_latest_state( /// prepare a contract interface ready to be read from or written to async fn prepare_contract( config: &StateProverConfig, + chain_index: usize, ) -> Result, ProverError> { - let provider = Provider::try_from(config.l1_provider.to_string()) + let provider = Provider::try_from(config.chain_providers[chain_index].to_string()) .expect("unable to instantiate Provider, likely wrong URL"); - let signer = Wallet::from(config.eth_signing_key.clone()) + let signer = Wallet::from(config.eth_signing_keys[chain_index].clone()) .with_chain_id(provider.get_chainid().await?.as_u64()); let l1_wallet = Arc::new(L1Wallet::new(provider, signer)); - let contract = LightClient::new(config.light_client_address, l1_wallet); + let contract = LightClient::new(config.light_client_addresses[chain_index], l1_wallet); Ok(contract) } /// get the `finalizedState` from the LightClient contract storage on L1 pub async fn read_contract_state( config: &StateProverConfig, + chain_index: usize, ) -> Result { - let contract = prepare_contract(config).await?; + let contract = prepare_contract(config, chain_index).await?; let state: ParsedLightClientState = match contract.get_finalized_state().call().await { Ok(s) => s.into(), Err(e) => { @@ -281,8 +283,9 @@ pub async fn submit_state_and_proof( proof: Proof, public_input: PublicInput, config: &StateProverConfig, + chain_index: usize, ) -> Result<(), ProverError> { - let contract = prepare_contract(config).await?; + let contract = prepare_contract(config, chain_index).await?; // prepare the input the contract call and the tx itself let proof: ParsedPlonkProof = proof.into(); @@ -308,73 +311,79 @@ pub async fn sync_state( relay_server_client: &Client, config: &StateProverConfig, ) -> Result<(), ProverError> { - tracing::info!("Start syncing light client state."); + for chain_index in 0..config.chain_providers.len() { + tracing::info!( + "Start syncing light client state for provider at url: {}", + config.chain_providers[chain_index] + ); - let bundle = fetch_latest_state(relay_server_client).await?; - tracing::info!("Bundle accumulated weight: {}", bundle.accumulated_weight); - tracing::info!("Latest HotShot block height: {}", bundle.state.block_height); - let old_state = read_contract_state(config).await?; - tracing::info!( - "Current HotShot block height on contract: {}", - old_state.block_height - ); - if old_state.block_height >= bundle.state.block_height { - tracing::info!("No update needed."); - return Ok(()); - } - tracing::debug!("Old state: {old_state:?}"); - tracing::debug!("New state: {:?}", bundle.state); + let bundle = fetch_latest_state(relay_server_client).await?; + tracing::info!("Bundle accumulated weight: {}", bundle.accumulated_weight); + tracing::info!("Latest HotShot block height: {}", bundle.state.block_height); + let old_state = read_contract_state(config, chain_index).await?; + tracing::info!( + "Current HotShot block height on contract: {}", + old_state.block_height + ); + if old_state.block_height >= bundle.state.block_height { + tracing::info!("No update needed."); + return Ok(()); + } + tracing::debug!("Old state: {old_state:?}"); + tracing::debug!("New state: {:?}", bundle.state); - let threshold = one_honest_threshold(st.total_stake(SnapshotVersion::LastEpochStart)?); - tracing::info!("Threshold before syncing state: {}", threshold); - let entries = st - .try_iter(SnapshotVersion::LastEpochStart) - .unwrap() - .map(|(_, stake_amount, state_key)| (state_key, stake_amount)) - .collect::>(); - let mut signer_bit_vec = vec![false; entries.len()]; - let mut signatures = vec![Default::default(); entries.len()]; - let mut accumulated_weight = U256::zero(); - entries.iter().enumerate().for_each(|(i, (key, stake))| { - if let Some(sig) = bundle.signatures.get(key) { - // Check if the signature is valid - let state_msg: [FieldType; 7] = (&bundle.state).into(); - if key.verify(&state_msg, sig, CS_ID_SCHNORR).is_ok() { - signer_bit_vec[i] = true; - signatures[i] = sig.clone(); - accumulated_weight += *stake; + let threshold = one_honest_threshold(st.total_stake(SnapshotVersion::LastEpochStart)?); + tracing::info!("Threshold before syncing state: {}", threshold); + let entries = st + .try_iter(SnapshotVersion::LastEpochStart) + .unwrap() + .map(|(_, stake_amount, state_key)| (state_key, stake_amount)) + .collect::>(); + let mut signer_bit_vec = vec![false; entries.len()]; + let mut signatures = vec![Default::default(); entries.len()]; + let mut accumulated_weight = U256::zero(); + entries.iter().enumerate().for_each(|(i, (key, stake))| { + if let Some(sig) = bundle.signatures.get(key) { + // Check if the signature is valid + let state_msg: [FieldType; 7] = (&bundle.state).into(); + if key.verify(&state_msg, sig, CS_ID_SCHNORR).is_ok() { + signer_bit_vec[i] = true; + signatures[i] = sig.clone(); + accumulated_weight += *stake; + } } - } - }); + }); - if accumulated_weight < threshold { - return Err(ProverError::InvalidState( - "The signers' total weight doesn't reach the threshold.".to_string(), - )); - } + if accumulated_weight < threshold { + return Err(ProverError::InvalidState( + "The signers' total weight doesn't reach the threshold.".to_string(), + )); + } - tracing::info!("Collected latest state and signatures. Start generating SNARK proof."); - let proof_gen_start = Instant::now(); - let stake_table_capacity = config.stake_table_capacity; - let (proof, public_input) = spawn_blocking(move || { - generate_state_update_proof::<_, _, _, _>( - &mut ark_std::rand::thread_rng(), - &proving_key, - &entries, - signer_bit_vec, - signatures, - &bundle.state, - &threshold, - stake_table_capacity, - ) - }) - .await?; - let proof_gen_elapsed = Instant::now().signed_duration_since(proof_gen_start); - tracing::info!("Proof generation completed. Elapsed: {proof_gen_elapsed:.3}"); + tracing::info!("Collected latest state and signatures. Start generating SNARK proof."); + let proof_gen_start = Instant::now(); + let proving_key_clone = proving_key.clone(); + let stake_table_capacity = config.stake_table_capacity; + let (proof, public_input) = spawn_blocking(move || { + generate_state_update_proof::<_, _, _, _>( + &mut ark_std::rand::thread_rng(), + &proving_key_clone, + &entries, + signer_bit_vec, + signatures, + &bundle.state, + &threshold, + stake_table_capacity, + ) + }) + .await?; + let proof_gen_elapsed = Instant::now().signed_duration_since(proof_gen_start); + tracing::info!("Proof generation completed. Elapsed: {proof_gen_elapsed:.3}"); - submit_state_and_proof(proof, public_input, config).await?; + submit_state_and_proof(proof, public_input, config, chain_index).await?; - tracing::info!("Successfully synced light client state."); + tracing::info!("Successfully synced light client state."); + } Ok(()) } @@ -422,13 +431,16 @@ pub async fn run_prover_service_with_stake_table>, ) -> Result<()> { - tracing::info!("Light client address: {:?}", config.light_client_address); + tracing::info!( + "Light client addresses: {:?}", + config.light_client_addresses + ); let relay_server_client = Arc::new(Client::::new(config.relay_server.clone())); // Start the HTTP server to get a functioning healthcheck before any heavy computations. if let Some(port) = config.port { - if let Err(err) = start_http_server(port, config.light_client_address, bind_version) { + if let Err(err) = start_http_server(port, config.light_client_addresses[0], bind_version) { tracing::error!("Error starting http server: {}", err); } } @@ -656,9 +668,9 @@ mod test { impl StateProverConfig { /// update only L1 related info fn update_l1_info(&mut self, anvil: &AnvilInstance, light_client_address: Address) { - self.l1_provider = Url::parse(&anvil.endpoint()).unwrap(); - self.light_client_address = light_client_address; - self.eth_signing_key = anvil.keys()[0].clone().into(); + self.chain_providers = vec![Url::parse(&anvil.endpoint()).unwrap()]; + self.light_client_addresses = vec![light_client_address]; + self.eth_signing_keys = vec![anvil.keys()[0].clone().into()]; } } // only for testing purposes @@ -668,9 +680,9 @@ mod test { relay_server: Url::parse("http://localhost").unwrap(), update_interval: Duration::default(), retry_interval: Duration::default(), - l1_provider: Url::parse("http://localhost").unwrap(), - light_client_address: Address::default(), - eth_signing_key: SigningKey::random(&mut test_rng()), + chain_providers: vec![Url::parse("http://localhost").unwrap()], + light_client_addresses: vec![Address::default()], + eth_signing_keys: vec![SigningKey::random(&mut test_rng())], sequencer_url: Url::parse("http://localhost").unwrap(), port: None, stake_table_capacity: 10, @@ -692,7 +704,7 @@ mod test { let mut config = StateProverConfig::default(); config.update_l1_info(&anvil, contract.address()); - let state = super::read_contract_state(&config).await?; + let state = super::read_contract_state(&config, 0).await?; assert_eq!(state, genesis.into()); Ok(()) } @@ -719,7 +731,7 @@ mod test { let (pi, proof) = gen_state_proof(&genesis, new_state.clone(), &state_keys, &st); tracing::info!("Successfully generated proof for new state."); - super::submit_state_and_proof(proof, pi, &config).await?; + super::submit_state_and_proof(proof, pi, &config, 0).await?; tracing::info!("Successfully submitted new finalized state to L1."); // test if new state is updated in l1 let finalized_l1: ParsedLightClientState = contract.get_finalized_state().await?.into(); diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index fcbfc17db5..97049776af 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -63,6 +63,25 @@ struct Args { )] account_index: u32, + /// Optional list of URLs representing alternate chains where the dev node will deploy LC contracts + /// and submit LC state updates. + /// + /// Useful for test environments involving L3s. + #[arg(long, env = "ESPRESSO_DEPLOYER_ALT_CHAIN_PROVIDERS", num_args = 1.., value_delimiter = ',')] + alt_chain_providers: Vec, + + /// Optional list of mnemonics for the alternate chains. If there are fewer mnemonics provided than chains, the base MNEMONIC will be used. + #[arg(long, env = "ESPRESSO_DEPLOYER_ALT_MNEMONICS", num_args = 1.., value_delimiter = ',')] + alt_mnemonics: Vec, + + /// Alternate account indices generated by the mnemonics to use when deploying the contracts. If there are fewer indices provided than chains, the base ACCOUNT_INDEX will be used. + #[clap( + long, + env = "ESPRESSO_SEQUENCER_DEPLOYER_ALT_INDICES", + default_value = "0" + )] + alt_account_indices: Vec, + /// Port that the HTTP API will use. #[clap(long, env = "ESPRESSO_SEQUENCER_API_PORT")] sequencer_api_port: u16, @@ -94,7 +113,7 @@ struct Args { #[async_std::main] async fn main() -> anyhow::Result<()> { - let cli_params = Args::parse(); + let mut cli_params = Args::parse(); cli_params.logging.init(); let api_options = options::Options::from(options::Http { @@ -144,18 +163,62 @@ async fn main() -> anyhow::Result<()> { let light_client_genesis = network.light_client_genesis(); - let contracts = deploy( - url.clone(), - cli_params.mnemonic.clone(), - cli_params.account_index, - true, - None, - async { Ok(light_client_genesis) }.boxed(), - contracts, - ) - .await?; + let chain_providers = { + let mut urls = vec![url.clone()]; + urls.append(&mut cli_params.alt_chain_providers); + urls + }; + + let num_providers = chain_providers.len(); + + let mnemonics = { + let mut mnem = vec![cli_params.mnemonic.clone()]; + mnem.append(&mut cli_params.alt_mnemonics); + mnem.resize(num_providers, cli_params.mnemonic.clone()); + mnem + }; + + let account_indices = { + let mut indices = vec![cli_params.account_index]; + indices.append(&mut cli_params.alt_account_indices); + indices.resize(num_providers, cli_params.account_index); + indices + }; + + let mut wallets = vec![]; + let mut light_client_addresses = vec![]; + + for (i, provider_url) in chain_providers.clone().into_iter().enumerate() { + let contracts = deploy( + provider_url, + mnemonics[i].clone(), + account_indices[i], + true, + None, + async { Ok(light_client_genesis.clone()) }.boxed(), + contracts.clone(), + ) + .await?; + + // Run the relay server + let provider = Provider::::try_from(url.as_str()).unwrap(); + let chain_id = provider.get_chainid().await.unwrap().as_u64(); + + let wallet = MnemonicBuilder::::default() + .phrase(cli_params.mnemonic.as_str()) + .index(cli_params.account_index) + .expect("error building wallet") + .build() + .expect("error opening wallet") + .with_chain_id(chain_id); + + let light_client_address = contracts + .get_contract_address(Contract::LightClientProxy) + .unwrap(); + light_client_addresses.push(light_client_address); + wallets.push(wallet); + } - // Run the relay server let st = network.cfg.stake_table(); let total_stake = st.total_stake(SnapshotVersion::LastEpochStart).unwrap(); spawn(run_relay_server( @@ -167,32 +230,23 @@ async fn main() -> anyhow::Result<()> { ::Base::instance(), )); - let provider = Provider::::try_from(url.as_str()).unwrap(); - let chain_id = provider.get_chainid().await.unwrap().as_u64(); - - let wallet = MnemonicBuilder::::default() - .phrase(cli_params.mnemonic.as_str()) - .index(cli_params.account_index) - .expect("error building wallet") - .build() - .expect("error opening wallet") - .with_chain_id(chain_id); - let update_interval = Duration::from_secs(20); let retry_interval = Duration::from_secs(2); let prover_port = cli_params .prover_port .unwrap_or_else(|| pick_unused_port().unwrap()); - let light_client_address = contracts - .get_contract_address(Contract::LightClientProxy) - .unwrap(); + let config = StateProverConfig { - relay_server: relay_server_url, + relay_server: relay_server_url.clone(), update_interval, retry_interval, - l1_provider: url.clone(), - light_client_address, - eth_signing_key: wallet.signer().clone(), + chain_providers: chain_providers.clone(), + light_client_addresses: light_client_addresses.clone(), + eth_signing_keys: wallets + .clone() + .into_iter() + .map(|wallet| wallet.signer().clone()) + .collect(), sequencer_url: "http://localhost".parse().unwrap(), // This should not be used in dev-node port: Some(prover_port), stake_table_capacity: STAKE_TABLE_CAPACITY_FOR_TEST as usize, @@ -207,12 +261,15 @@ async fn main() -> anyhow::Result<()> { let dev_info = DevInfo { builder_url: network.cfg.hotshot_config().builder_urls[0].clone(), prover_port, - l1_url: url, - light_client_address, + l1_url: chain_providers[0].clone(), + light_client_address: light_client_addresses[0], }; - let mock_contract = - LightClientMock::new(light_client_address, Arc::new(provider.with_signer(wallet))); + let base_provider = Provider::::try_from(chain_providers[0].as_str()).unwrap(); + let mock_contract = LightClientMock::new( + light_client_addresses[0], + Arc::new(base_provider.with_signer(wallets[0].clone())), + ); run_dev_node_server( cli_params.dev_node_port, From b092ecd175625b359bd744926ef7c045eff322f6 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Thu, 8 Aug 2024 16:58:22 +0500 Subject: [PATCH 02/27] support alt chain lc in api --- hotshot-state-prover/src/bin/state-prover.rs | 9 +- hotshot-state-prover/src/service.rs | 142 ++++++--- sequencer/api/espresso_dev_node.toml | 8 + sequencer/src/bin/espresso-dev-node.rs | 310 +++++++++++++------ 4 files changed, 324 insertions(+), 145 deletions(-) diff --git a/hotshot-state-prover/src/bin/state-prover.rs b/hotshot-state-prover/src/bin/state-prover.rs index c117a10148..05f1f76cd2 100644 --- a/hotshot-state-prover/src/bin/state-prover.rs +++ b/hotshot-state-prover/src/bin/state-prover.rs @@ -95,9 +95,9 @@ async fn main() { relay_server: args.relay_server, update_interval: args.update_interval, retry_interval: args.retry_interval, - chain_providers: vec![args.l1_provider], - light_client_addresses: vec![args.light_client_address], - eth_signing_keys: vec![MnemonicBuilder::::default() + l1_provider: args.l1_provider, + light_client_address: args.light_client_address, + eth_signing_key: MnemonicBuilder::::default() .phrase(args.eth_mnemonic.as_str()) .index(args.eth_account_index) .expect("error building wallet") @@ -105,7 +105,8 @@ async fn main() { .expect("error opening wallet") .with_chain_id(chain_id) .signer() - .clone()], + .clone(), + alt_chains: Vec::new(), sequencer_url: args.sequencer_url, port: args.port, stake_table_capacity: args.stake_table_capacity, diff --git a/hotshot-state-prover/src/service.rs b/hotshot-state-prover/src/service.rs index 742c10166d..18a488e2e3 100644 --- a/hotshot-state-prover/src/service.rs +++ b/hotshot-state-prover/src/service.rs @@ -1,7 +1,7 @@ //! A light client prover service use std::{ - iter, + iter::{self, once}, time::{Duration, Instant}, }; @@ -54,7 +54,15 @@ use crate::snark::{generate_state_update_proof, Proof, ProvingKey}; type F = ark_ed_on_bn254::Fq; /// A wallet with local signer and connected to network via http -pub type L1Wallet = SignerMiddleware, LocalWallet>; +pub type SignerWallet = SignerMiddleware, LocalWallet>; + +#[derive(Debug, Clone)] +pub struct AltChain { + pub provider: Url, + pub chain_id: u64, + pub light_client_address: Address, + pub signing_key: SigningKey, +} /// Configuration/Parameters used for hotshot state prover #[derive(Debug, Clone)] @@ -65,12 +73,15 @@ pub struct StateProverConfig { pub update_interval: Duration, /// Interval between retries if a state update fails pub retry_interval: Duration, - /// URLs of Ethereum JSON-RPC providers to submit proofs to - pub chain_providers: Vec, - /// Addresses of LightClient contracts - pub light_client_addresses: Vec
, - /// Transaction signing keys for Ethereum - pub eth_signing_keys: Vec, + /// URL of layer 1 Ethereum JSON-RPC provider. + pub l1_provider: Url, + /// Address of LightClient contract on layer 1. + pub light_client_address: Address, + /// Transaction signing key for Ethereum + pub eth_signing_key: SigningKey, + + pub alt_chains: Vec, + /// URL of a node that is currently providing the HotShot config. /// This is used to initialize the stake table. pub sequencer_url: Url, @@ -247,25 +258,26 @@ pub async fn fetch_latest_state( /// prepare a contract interface ready to be read from or written to async fn prepare_contract( - config: &StateProverConfig, - chain_index: usize, -) -> Result, ProverError> { - let provider = Provider::try_from(config.chain_providers[chain_index].to_string()) + provider: Url, + key: SigningKey, + light_client_address: Address, +) -> Result, ProverError> { + let provider = Provider::try_from(provider.as_str()) .expect("unable to instantiate Provider, likely wrong URL"); - let signer = Wallet::from(config.eth_signing_keys[chain_index].clone()) - .with_chain_id(provider.get_chainid().await?.as_u64()); - let l1_wallet = Arc::new(L1Wallet::new(provider, signer)); + let signer = Wallet::from(key).with_chain_id(provider.get_chainid().await?.as_u64()); + let wallet = Arc::new(SignerWallet::new(provider, signer)); - let contract = LightClient::new(config.light_client_addresses[chain_index], l1_wallet); + let contract = LightClient::new(light_client_address, wallet); Ok(contract) } /// get the `finalizedState` from the LightClient contract storage on L1 pub async fn read_contract_state( - config: &StateProverConfig, - chain_index: usize, + provider: Url, + key: SigningKey, + light_client_address: Address, ) -> Result { - let contract = prepare_contract(config, chain_index).await?; + let contract = prepare_contract(provider, key, light_client_address).await?; let state: ParsedLightClientState = match contract.get_finalized_state().call().await { Ok(s) => s.into(), Err(e) => { @@ -282,10 +294,11 @@ pub async fn read_contract_state( pub async fn submit_state_and_proof( proof: Proof, public_input: PublicInput, - config: &StateProverConfig, - chain_index: usize, + provider: Url, + key: SigningKey, + light_client_address: Address, ) -> Result<(), ProverError> { - let contract = prepare_contract(config, chain_index).await?; + let contract = prepare_contract(provider, key, light_client_address).await?; // prepare the input the contract call and the tx itself let proof: ParsedPlonkProof = proof.into(); @@ -311,16 +324,29 @@ pub async fn sync_state( relay_server_client: &Client, config: &StateProverConfig, ) -> Result<(), ProverError> { - for chain_index in 0..config.chain_providers.len() { + for (provider, key, light_client_address) in once(( + config.l1_provider.clone(), + config.eth_signing_key.clone(), + config.light_client_address, + )) + .chain( + config + .alt_chains + .clone() + .into_iter() + .map(|c| (c.provider, c.signing_key, c.light_client_address)), + ) { tracing::info!( - "Start syncing light client state for provider at url: {}", - config.chain_providers[chain_index] + ?light_client_address, + "Start syncing light client state for provider: {}", + provider, ); let bundle = fetch_latest_state(relay_server_client).await?; tracing::info!("Bundle accumulated weight: {}", bundle.accumulated_weight); tracing::info!("Latest HotShot block height: {}", bundle.state.block_height); - let old_state = read_contract_state(config, chain_index).await?; + let old_state = + read_contract_state(provider.clone(), key.clone(), light_client_address).await?; tracing::info!( "Current HotShot block height on contract: {}", old_state.block_height @@ -380,7 +406,7 @@ pub async fn sync_state( let proof_gen_elapsed = Instant::now().signed_duration_since(proof_gen_start); tracing::info!("Proof generation completed. Elapsed: {proof_gen_elapsed:.3}"); - submit_state_and_proof(proof, public_input, config, chain_index).await?; + submit_state_and_proof(proof, public_input, provider, key, light_client_address).await?; tracing::info!("Successfully synced light client state."); } @@ -389,7 +415,8 @@ pub async fn sync_state( fn start_http_server( port: u16, - lightclient_address: Address, + l1_light_client_addr: Address, + alt_chain_light_client_addresses: Vec<(Url, Address)>, bind_version: Ver, ) -> io::Result<()> { let mut app = tide_disco::App::<(), ServerError>::with_state(()); @@ -400,7 +427,15 @@ fn start_http_server( .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; api.get("getlightclientcontract", move |_, _| { - async move { Ok(lightclient_address) }.boxed() + async move { Ok(l1_light_client_addr) }.boxed() + }) + .map_err(|err| io::Error::new(io::ErrorKind::Other, err))? + .get("getaltlightclientcontracts", move |_, _| { + { + let addresses = alt_chain_light_client_addresses.clone(); + async move { Ok(addresses) } + } + .boxed() }) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; @@ -431,16 +466,22 @@ pub async fn run_prover_service_with_stake_table>, ) -> Result<()> { - tracing::info!( - "Light client addresses: {:?}", - config.light_client_addresses - ); + let l1_lc_addr = config.light_client_address; + let alt_lc_addresses = config + .alt_chains + .iter() + .map(|c| (c.provider.clone(), c.light_client_address)) + .collect(); + + tracing::info!("L1 Light client address: {:?}", l1_lc_addr); + tracing::info!("Alt chain Light client addresses: {:?}", alt_lc_addresses); + let relay_server_client = Arc::new(Client::::new(config.relay_server.clone())); // Start the HTTP server to get a functioning healthcheck before any heavy computations. if let Some(port) = config.port { - if let Err(err) = start_http_server(port, config.light_client_addresses[0], bind_version) { + if let Err(err) = start_http_server(port, l1_lc_addr, alt_lc_addresses, bind_version) { tracing::error!("Error starting http server: {}", err); } } @@ -646,11 +687,11 @@ mod test { async fn deploy_contract_for_test( anvil: &AnvilInstance, genesis: ParsedLightClientState, - ) -> Result<(Arc, LightClient)> { + ) -> Result<(Arc, LightClient)> { let provider = Provider::::try_from(anvil.endpoint())?; let signer = Wallet::from(anvil.keys()[0].clone()) .with_chain_id(provider.get_chainid().await?.as_u64()); - let l1_wallet = Arc::new(L1Wallet::new(provider.clone(), signer)); + let l1_wallet = Arc::new(SignerWallet::new(provider.clone(), signer)); let mut contracts = deployer::Contracts::default(); let address = deployer::deploy_mock_light_client_contract( @@ -668,9 +709,9 @@ mod test { impl StateProverConfig { /// update only L1 related info fn update_l1_info(&mut self, anvil: &AnvilInstance, light_client_address: Address) { - self.chain_providers = vec![Url::parse(&anvil.endpoint()).unwrap()]; - self.light_client_addresses = vec![light_client_address]; - self.eth_signing_keys = vec![anvil.keys()[0].clone().into()]; + self.l1_provider = Url::parse(&anvil.endpoint()).unwrap(); + self.light_client_address = light_client_address; + self.eth_signing_key = anvil.keys()[0].clone().into(); } } // only for testing purposes @@ -680,9 +721,10 @@ mod test { relay_server: Url::parse("http://localhost").unwrap(), update_interval: Duration::default(), retry_interval: Duration::default(), - chain_providers: vec![Url::parse("http://localhost").unwrap()], - light_client_addresses: vec![Address::default()], - eth_signing_keys: vec![SigningKey::random(&mut test_rng())], + l1_provider: Url::parse("http://localhost").unwrap(), + light_client_address: Address::default(), + eth_signing_key: SigningKey::random(&mut test_rng()), + alt_chains: Vec::new(), sequencer_url: Url::parse("http://localhost").unwrap(), port: None, stake_table_capacity: 10, @@ -704,7 +746,12 @@ mod test { let mut config = StateProverConfig::default(); config.update_l1_info(&anvil, contract.address()); - let state = super::read_contract_state(&config, 0).await?; + let state = super::read_contract_state( + config.l1_provider, + config.eth_signing_key, + config.light_client_address, + ) + .await?; assert_eq!(state, genesis.into()); Ok(()) } @@ -731,7 +778,14 @@ mod test { let (pi, proof) = gen_state_proof(&genesis, new_state.clone(), &state_keys, &st); tracing::info!("Successfully generated proof for new state."); - super::submit_state_and_proof(proof, pi, &config, 0).await?; + super::submit_state_and_proof( + proof, + pi, + config.l1_provider, + config.eth_signing_key, + config.light_client_address, + ) + .await?; tracing::info!("Successfully submitted new finalized state to L1."); // test if new state is updated in l1 let finalized_l1: ParsedLightClientState = contract.get_finalized_state().await?.into(); diff --git a/sequencer/api/espresso_dev_node.toml b/sequencer/api/espresso_dev_node.toml index 62459439c2..9d862dcf8d 100644 --- a/sequencer/api/espresso_dev_node.toml +++ b/sequencer/api/espresso_dev_node.toml @@ -28,6 +28,7 @@ Set the hotshot down since the given L1 height. Body: ``` { + "chain_id: Option "height": integer, } ``` @@ -41,6 +42,13 @@ METHOD = "POST" DOC = """ Set the hotshot up in the light client contract. +Body: +``` +{ + "chain_id": u64 +} + + This is intended to be used when `set-hotshot-down` has been called previously. By calling this, rollups will detect the reactivity of HotShot. """ diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index 97049776af..2a796ac5e8 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -1,6 +1,7 @@ -use std::{io, sync::Arc, time::Duration}; +use std::{collections::BTreeMap, io, iter::once, sync::Arc, time::Duration}; use async_std::task::spawn; +use async_trait::async_trait; use clap::Parser; use contract_bindings::light_client_mock::LightClientMock; use espresso_types::SeqTypes; @@ -10,9 +11,9 @@ use ethers::{ signers::{coins_bip39::English, MnemonicBuilder, Signer}, types::{Address, U256}, }; -use futures::FutureExt; +use futures::{future::BoxFuture, FutureExt}; use hotshot_state_prover::service::{ - one_honest_threshold, run_prover_service_with_stake_table, StateProverConfig, + one_honest_threshold, run_prover_service_with_stake_table, AltChain, StateProverConfig, }; use hotshot_types::traits::{ node_implementation::NodeType, @@ -33,7 +34,7 @@ use sequencer_utils::{ logging, AnvilOptions, }; use serde::{Deserialize, Serialize}; -use tide_disco::{error::ServerError, Api, Error as _, StatusCode}; +use tide_disco::{error::ServerError, method::ReadState, Api, Error as _, StatusCode}; use url::Url; use vbs::version::StaticVersionType; @@ -113,19 +114,36 @@ struct Args { #[async_std::main] async fn main() -> anyhow::Result<()> { - let mut cli_params = Args::parse(); - cli_params.logging.init(); + let cli_params = Args::parse(); + + let Args { + rpc_url, + mnemonic, + account_index, + alt_chain_providers, + alt_mnemonics, + alt_account_indices, + sequencer_api_port, + sequencer_api_max_connections, + builder_port, + prover_port, + dev_node_port, + sql, + logging, + } = cli_params; + + logging.init(); let api_options = options::Options::from(options::Http { - port: cli_params.sequencer_api_port, - max_connections: cli_params.sequencer_api_max_connections, + port: sequencer_api_port, + max_connections: sequencer_api_max_connections, }) .status(Default::default()) .state(Default::default()) .submit(Default::default()) - .query_sql(Default::default(), cli_params.sql); + .query_sql(Default::default(), sql); - let (url, _anvil) = if let Some(url) = cli_params.rpc_url { + let (l1_url, _anvil) = if let Some(url) = rpc_url { (url, None) } else { tracing::warn!("L1 url is not provided. running an anvil node"); @@ -141,9 +159,9 @@ async fn main() -> anyhow::Result<()> { .unwrap(); let network_config = TestConfigBuilder::default() - .builder_port(cli_params.builder_port) + .builder_port(builder_port) .state_relay_url(relay_server_url.clone()) - .l1_url(url.clone()) + .l1_url(l1_url.clone()) .build(); const NUM_NODES: usize = 2; @@ -158,41 +176,31 @@ async fn main() -> anyhow::Result<()> { tracing::info!("Hotshot config {config:?}"); let contracts = Contracts::new(); - - tracing::info!("deploying the contracts"); - let light_client_genesis = network.light_client_genesis(); - let chain_providers = { - let mut urls = vec![url.clone()]; - urls.append(&mut cli_params.alt_chain_providers); - urls - }; - - let num_providers = chain_providers.len(); - - let mnemonics = { - let mut mnem = vec![cli_params.mnemonic.clone()]; - mnem.append(&mut cli_params.alt_mnemonics); - mnem.resize(num_providers, cli_params.mnemonic.clone()); - mnem - }; - - let account_indices = { - let mut indices = vec![cli_params.account_index]; - indices.append(&mut cli_params.alt_account_indices); - indices.resize(num_providers, cli_params.account_index); - indices - }; - let mut wallets = vec![]; let mut light_client_addresses = vec![]; + let mut mock_contracts = BTreeMap::new(); + + for (url, mnemonic, account_index) in once((l1_url.clone(), mnemonic.clone(), account_index)) + .chain( + alt_chain_providers + .iter() + .zip(alt_mnemonics.into_iter().chain(std::iter::repeat(mnemonic))) + .zip( + alt_account_indices + .into_iter() + .chain(std::iter::repeat(account_index)), + ) + .map(|((u, m), i)| (u.clone(), m, i)), + ) + { + tracing::info!("deploying the contract for provider: {url:?}"); - for (i, provider_url) in chain_providers.clone().into_iter().enumerate() { let contracts = deploy( - provider_url, - mnemonics[i].clone(), - account_indices[i], + url.clone(), + mnemonic.clone(), + account_index, true, None, async { Ok(light_client_genesis.clone()) }.boxed(), @@ -200,13 +208,12 @@ async fn main() -> anyhow::Result<()> { ) .await?; - // Run the relay server let provider = Provider::::try_from(url.as_str()).unwrap(); let chain_id = provider.get_chainid().await.unwrap().as_u64(); let wallet = MnemonicBuilder::::default() - .phrase(cli_params.mnemonic.as_str()) - .index(cli_params.account_index) + .phrase(mnemonic.as_str()) + .index(account_index) .expect("error building wallet") .build() .expect("error opening wallet") @@ -215,8 +222,16 @@ async fn main() -> anyhow::Result<()> { let light_client_address = contracts .get_contract_address(Contract::LightClientProxy) .unwrap(); - light_client_addresses.push(light_client_address); - wallets.push(wallet); + + mock_contracts.insert( + chain_id, + LightClientMock::new( + light_client_address, + Arc::new(provider.with_signer(wallet.clone())), + ), + ); + light_client_addresses.push((chain_id, light_client_address)); + wallets.push(wallet.clone()); } let st = network.cfg.stake_table(); @@ -232,28 +247,46 @@ async fn main() -> anyhow::Result<()> { let update_interval = Duration::from_secs(20); let retry_interval = Duration::from_secs(2); - let prover_port = cli_params - .prover_port - .unwrap_or_else(|| pick_unused_port().unwrap()); + let prover_port = prover_port.unwrap_or_else(|| pick_unused_port().unwrap()); + + let mut signing_keys = wallets + .iter() + .map(|wallet| wallet.signer().clone()) + .collect::>(); + + let (_, l1_lc) = light_client_addresses.remove(0); + + let l1_signig_key = signing_keys.remove(0); + + let alt_chains = alt_chain_providers + .iter() + .zip(light_client_addresses.clone()) + .zip(signing_keys) + .map( + |((provider, (chain_id, light_client_address)), signing_key)| AltChain { + provider: provider.clone(), + chain_id, + light_client_address, + signing_key, + }, + ) + .collect(); - let config = StateProverConfig { + let prover_config = StateProverConfig { relay_server: relay_server_url.clone(), update_interval, retry_interval, - chain_providers: chain_providers.clone(), - light_client_addresses: light_client_addresses.clone(), - eth_signing_keys: wallets - .clone() - .into_iter() - .map(|wallet| wallet.signer().clone()) - .collect(), - sequencer_url: "http://localhost".parse().unwrap(), // This should not be used in dev-node + sequencer_url: "http://localhost".parse().unwrap(), port: Some(prover_port), stake_table_capacity: STAKE_TABLE_CAPACITY_FOR_TEST as usize, + l1_provider: l1_url.clone(), + light_client_address: l1_lc, + eth_signing_key: l1_signig_key, + alt_chains, }; spawn(run_prover_service_with_stake_table( - config, + prover_config, ::Base::instance(), Arc::new(st), )); @@ -261,19 +294,18 @@ async fn main() -> anyhow::Result<()> { let dev_info = DevInfo { builder_url: network.cfg.hotshot_config().builder_urls[0].clone(), prover_port, - l1_url: chain_providers[0].clone(), - light_client_address: light_client_addresses[0], + l1_url, + l1_light_client_address: l1_lc, + alt_chains: alt_chain_providers + .into_iter() + .zip(light_client_addresses) + .map(|(p, (c, u))| AltChainInfo::new(p, c, u)) + .collect(), }; - let base_provider = Provider::::try_from(chain_providers[0].as_str()).unwrap(); - let mock_contract = LightClientMock::new( - light_client_addresses[0], - Arc::new(base_provider.with_signer(wallets[0].clone())), - ); - run_dev_node_server( - cli_params.dev_node_port, - mock_contract, + dev_node_port, + mock_contracts, dev_info, ::Base::instance(), ) @@ -282,50 +314,104 @@ async fn main() -> anyhow::Result<()> { Ok(()) } +pub struct ApiState( + BTreeMap, S>>>, +); + +#[async_trait] +impl ReadState for ApiState { + type State = ApiState; + async fn read( + &self, + op: impl Send + for<'a> FnOnce(&'a Self::State) -> BoxFuture<'a, T> + 'async_trait, + ) -> T { + op(self).await + } +} + async fn run_dev_node_server( port: u16, - mock_contract: LightClientMock, S>>, + contracts: BTreeMap, S>>>, dev_info: DevInfo, bind_version: Ver, ) -> anyhow::Result<()> { - let mut app = tide_disco::App::<(), ServerError>::with_state(()); + let mut app = tide_disco::App::<_, ServerError>::with_state(ApiState(contracts)); let toml = toml::from_str::(include_str!("../../api/espresso_dev_node.toml")) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; - let mut api = Api::<(), ServerError, Ver>::new(toml) + let mut api = Api::<_, ServerError, Ver>::new(toml) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; - api.get("devinfo", move |_, _| { let info = dev_info.clone(); async move { Ok(info.clone()) }.boxed() }) - .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; - - let contract = mock_contract.clone(); - api.post("sethotshotdown", move |req, _| { - let contract = contract.clone(); + .map_err(|err| io::Error::new(io::ErrorKind::Other, err))? + .at("sethotshotdown", move |req, state: &ApiState| { async move { - let height = req - .body_auto::(Ver::instance()) - .map_err(ServerError::from_request_error)? - .height; - contract - .set_hot_shot_down_since(U256::from(height)) - .send() - .await - .map_err(|err| { - ServerError::catch_all(StatusCode::INTERNAL_SERVER_ERROR, err.to_string()) - })?; + let body = req + .body_auto::(Ver::instance()) + .map_err(ServerError::from_request_error)?; + + // if chain id is not provided, we use the base L1 light client contract + let contract = if let Some(chain_id) = body.chain_id { + state.0.get(&chain_id).ok_or_else(|| { + ServerError::catch_all( + StatusCode::INTERNAL_SERVER_ERROR, + "light client ontract not found".to_string(), + ) + })? + } else { + state + .0 + .first_key_value() + .ok_or_else(|| { + ServerError::catch_all( + StatusCode::INTERNAL_SERVER_ERROR, + "L1 light client contract not found".to_string(), + ) + })? + .1 + }; + + let contract_call = contract.set_hot_shot_down_since(U256::from(body.height)); + + contract_call.send().await.map_err(|err| { + ServerError::catch_all(StatusCode::INTERNAL_SERVER_ERROR, err.to_string()) + })?; Ok(()) } .boxed() }) - .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; - - api.post("sethotshotup", move |_, _| { - let contract = mock_contract.clone(); + .map_err(|err| io::Error::new(io::ErrorKind::Other, err))? + .at("sethotshotup", move |req, state| { async move { + let chain_id = req + .body_auto::, Ver>(Ver::instance()) + .map_err(ServerError::from_request_error)? + .map(|b| b.chain_id); + + // if chain id is not provided, we use the base L1 light client contract + let contract = if let Some(chain_id) = chain_id { + state.0.get(&chain_id).ok_or_else(|| { + ServerError::catch_all( + StatusCode::INTERNAL_SERVER_ERROR, + "light client ontract not found".to_string(), + ) + })? + } else { + state + .0 + .first_key_value() + .ok_or_else(|| { + ServerError::catch_all( + StatusCode::INTERNAL_SERVER_ERROR, + "l1 light client ontract not found".to_string(), + ) + })? + .1 + }; + contract.set_hot_shot_up().send().await.map_err(|err| { ServerError::catch_all(StatusCode::INTERNAL_SERVER_ERROR, err.to_string()) })?; @@ -348,14 +434,39 @@ struct DevInfo { pub builder_url: Url, pub prover_port: u16, pub l1_url: Url, - pub light_client_address: Address, + pub l1_light_client_address: Address, + pub alt_chains: Vec, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct AltChainInfo { + provider_url: Url, + chain_id: u64, + light_client_address: Address, +} + +impl AltChainInfo { + fn new(url: Url, chain_id: u64, lc_addr: Address) -> Self { + Self { + provider_url: url, + chain_id, + light_client_address: lc_addr, + } + } } #[derive(Debug, Serialize, Deserialize)] -struct SetHotshotUpBody { +struct SetHotshotDownReqBody { + // use L1 chain id (1) if not provided + pub chain_id: Option, pub height: u64, } +#[derive(Debug, Serialize, Deserialize)] +struct SetHotshotUpReqBody { + pub chain_id: u64, +} + #[cfg(test)] mod tests { use std::{process::Child, sync::Arc, time::Duration}; @@ -383,7 +494,7 @@ mod tests { use tide_disco::error::ServerError; use vbs::version::StaticVersion; - use crate::{DevInfo, SetHotshotUpBody}; + use crate::{DevInfo, SetHotshotDownReqBody}; const TEST_MNEMONIC: &str = "test test test test test test test test test test test junk"; @@ -653,7 +764,10 @@ mod tests { let height = signer.get_block_number().await.unwrap().as_u64(); dev_node_client .post::<()>("api/set-hotshot-down") - .body_json(&SetHotshotUpBody { height: height - 1 }) + .body_json(&SetHotshotDownReqBody { + chain_id: None, + height: height - 1, + }) .unwrap() .send() .await @@ -671,6 +785,8 @@ mod tests { dev_node_client .post::<()>("api/set-hotshot-up") + .body_json(&()) + .unwrap() .send() .await .unwrap(); From 3bfd02b3c527fbecec573774e841f441476d21e6 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Thu, 8 Aug 2024 17:48:02 +0500 Subject: [PATCH 03/27] merge cargo.lock from main --- Cargo.lock | 886 +++++++++++++++++++++++++++-------------------------- 1 file changed, 452 insertions(+), 434 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ab3a5f92ab..4e3f224877 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -113,7 +113,7 @@ dependencies = [ "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -163,33 +163,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -492,9 +492,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -513,9 +513,9 @@ dependencies = [ [[package]] name = "asn1-rs" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ad1373757efa0f70ec53939aabc7152e1591cb485208052993070ac8d2429d" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" dependencies = [ "asn1-rs-derive", "asn1-rs-impl", @@ -529,13 +529,13 @@ dependencies = [ [[package]] name = "asn1-rs-derive" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "synstructure 0.13.1", ] @@ -547,7 +547,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -633,9 +633,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" dependencies = [ "async-task", "concurrent-queue", @@ -721,7 +721,7 @@ dependencies = [ "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.7.1", + "polling 3.7.2", "rustix 0.38.34", "slab", "tracing", @@ -796,9 +796,9 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" dependencies = [ "async-io 2.3.3", "async-lock 3.4.0", @@ -888,7 +888,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -912,13 +912,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -954,7 +954,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4057f2c32adbb2fc158e22fb38433c8e9bbf76b75a4732c7c0cbaf695fb65568" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures-sink", "futures-util", "memchr", @@ -967,7 +967,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures-sink", "futures-util", "memchr", @@ -1021,7 +1021,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1038,7 +1038,7 @@ checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1050,11 +1050,11 @@ dependencies = [ "async-trait", "axum-core", "bitflags 1.3.2", - "bytes 1.6.0", + "bytes 1.7.1", "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "itoa", "matchit", "memchr", @@ -1076,7 +1076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", - "bytes 1.6.0", + "bytes 1.7.1", "futures-util", "http 0.2.12", "http-body 0.4.6", @@ -1194,9 +1194,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ "serde", ] @@ -1225,9 +1225,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" dependencies = [ "arrayref", "arrayvec", @@ -1269,9 +1269,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62dc83a094a71d43eeadd254b1ec2d24cb6a0bb6cadce00df51f0db594711a32" +checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" dependencies = [ "cc", "glob", @@ -1380,9 +1380,9 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" dependencies = [ "serde", ] @@ -1475,13 +1475,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.99" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -1598,7 +1597,7 @@ dependencies = [ "rcgen 0.13.1", "redis", "rkyv", - "rustls 0.23.10", + "rustls 0.23.12", "rustls-pki-types", "sqlx", "thiserror", @@ -1632,7 +1631,7 @@ dependencies = [ "rcgen 0.13.1", "redis", "rkyv", - "rustls 0.23.10", + "rustls 0.23.12", "rustls-pki-types", "sqlx", "thiserror", @@ -1661,7 +1660,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1691,9 +1690,9 @@ checksum = "da987586004ae7c43b7df5e3f7693775068522e1086f8d9b2d74c778a0f43313" [[package]] name = "clap" -version = "4.5.7" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" dependencies = [ "clap_builder", "clap_derive", @@ -1701,9 +1700,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.7" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" dependencies = [ "anstream", "anstyle", @@ -1713,21 +1712,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.5" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "cld" @@ -1816,9 +1815,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "combine" @@ -1826,7 +1825,7 @@ version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures-core", "memchr", "pin-project-lite 0.2.14", @@ -2271,9 +2270,9 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.4.72+curl-8.6.0" +version = "0.4.74+curl-8.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29cbdc8314c447d11e8fd156dcdd031d9e02a7a976163e396b548c03153bc9ea" +checksum = "8af10b986114528fcdc4b63b6f5f021b7057618411046a4de2ba0f0149a097bf" dependencies = [ "cc", "libc", @@ -2287,16 +2286,15 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.1.2" +version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "platforms", "rustc_version 0.4.0", "subtle", "zeroize", @@ -2310,7 +2308,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2352,15 +2350,15 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "synstructure 0.13.1", ] [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -2368,27 +2366,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2485,7 +2483,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2506,7 +2504,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2516,20 +2514,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case 0.4.0", "proc-macro2", "quote", "rustc_version 0.4.0", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] @@ -2660,7 +2658,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2754,9 +2752,9 @@ dependencies = [ [[package]] name = "edit-distance" -version = "2.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbaaaf38131deb9ca518a274a45bfdb8771f139517b073b16c2d3d32ae5037b" +checksum = "853fc7035888bd1c9320f3a05bfe7f344f49b8766a4bb4209b1ac5f0503d9577" [[package]] name = "either" @@ -2817,7 +2815,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" dependencies = [ "base64 0.21.7", - "bytes 1.6.0", + "bytes 1.7.1", "hex", "k256", "log", @@ -2837,7 +2835,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -2868,9 +2866,9 @@ dependencies = [ [[package]] name = "escargot" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eb5f6eeda986377996e9ed570cbc20cc16d30440696f82f129c863e4e3e83" +checksum = "c000f23e9d459aef148b7267e02b03b94a0aaacf4ec64c65612f67e02f525fb6" dependencies = [ "log", "once_cell", @@ -3094,7 +3092,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.66", + "syn 2.0.72", "toml", "walkdir", ] @@ -3112,7 +3110,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -3122,7 +3120,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" dependencies = [ "arrayvec", - "bytes 1.6.0", + "bytes 1.7.1", "cargo_metadata", "chrono", "const-hex", @@ -3138,7 +3136,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.66", + "syn 2.0.72", "tempfile", "thiserror", "tiny-keccak", @@ -3198,7 +3196,7 @@ dependencies = [ "async-trait", "auto_impl", "base64 0.21.7", - "bytes 1.6.0", + "bytes 1.7.1", "const-hex", "enr", "ethers-core", @@ -3585,7 +3583,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -3595,7 +3593,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" dependencies = [ "futures-io", - "rustls 0.23.10", + "rustls 0.23.12", "rustls-pki-types", ] @@ -3757,13 +3755,13 @@ version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "fnv", "futures-core", "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.3.0", "slab", "tokio", "tokio-util", @@ -3777,12 +3775,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" dependencies = [ "atomic-waker", - "bytes 1.6.0", + "bytes 1.7.1", "fnv", "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.3.0", "slab", "tokio", "tokio-util", @@ -3855,7 +3853,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ "base64 0.21.7", - "bytes 1.6.0", + "bytes 1.7.1", "headers-core", "http 0.2.12", "httpdate", @@ -3893,6 +3891,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -4068,13 +4072,13 @@ dependencies = [ "jf-signature", "libp2p-identity", "libp2p-networking", - "lru 0.12.3", + "lru 0.12.4", "num_enum", "portpicker", "rand 0.8.5", "serde", "sha2 0.10.8", - "snafu 0.8.3", + "snafu 0.8.4", "surf-disco", "time 0.3.36", "tokio", @@ -4094,7 +4098,7 @@ dependencies = [ "futures", "hotshot-types", "serde", - "snafu 0.8.3", + "snafu 0.8.4", "tagged-base64", "tide-disco", "toml", @@ -4121,10 +4125,10 @@ dependencies = [ "hotshot-builder-api", "hotshot-events-service", "hotshot-types", - "lru 0.12.3", + "lru 0.12.4", "serde", "sha2 0.10.8", - "snafu 0.8.3", + "snafu 0.8.4", "surf-disco", "tagged-base64", "tide-disco", @@ -4171,7 +4175,7 @@ dependencies = [ "hotshot-types", "rand 0.8.5", "serde", - "snafu 0.8.3", + "snafu 0.8.4", "tagged-base64", "tide-disco", "toml", @@ -4204,7 +4208,7 @@ dependencies = [ "serde", "sha2 0.10.8", "sha3", - "snafu 0.8.3", + "snafu 0.8.4", "time 0.3.36", "tokio", "tracing", @@ -4239,7 +4243,7 @@ dependencies = [ "derive_builder", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -4310,7 +4314,7 @@ dependencies = [ "refinery", "serde", "serde_json", - "snafu 0.8.3", + "snafu 0.8.4", "spin_sleep", "surf-disco", "tagged-base64", @@ -4433,7 +4437,7 @@ dependencies = [ "rand 0.8.5", "serde", "sha2 0.10.8", - "snafu 0.8.3", + "snafu 0.8.4", "surf-disco", "tagged-base64", "time 0.3.36", @@ -4471,14 +4475,14 @@ dependencies = [ "hotshot-types", "jf-signature", "jf-vid", - "lru 0.12.3", + "lru 0.12.4", "portpicker", "rand 0.8.5", "reqwest 0.12.5", "serde", "sha2 0.10.8", "sha3", - "snafu 0.8.3", + "snafu 0.8.4", "tagged-base64", "tide-disco", "tokio", @@ -4530,7 +4534,7 @@ dependencies = [ "reqwest 0.12.5", "serde", "sha2 0.10.8", - "snafu 0.8.3", + "snafu 0.8.4", "tagged-base64", "time 0.3.36", "tokio", @@ -4547,7 +4551,7 @@ version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "fnv", "itoa", ] @@ -4558,7 +4562,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "fnv", "itoa", ] @@ -4569,18 +4573,18 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "http 0.2.12", "pin-project-lite 0.2.14", ] [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "http 1.1.0", ] @@ -4590,10 +4594,10 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite 0.2.14", ] @@ -4635,9 +4639,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.3" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0e7a4dd27b9476dc40cb050d3632d3bba3a70ddbff012285f7f8559a1e7e545" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -4653,11 +4657,11 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures-channel", "futures-core", "futures-util", @@ -4677,16 +4681,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures-channel", "futures-util", "h2 0.4.5", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "itoa", "pin-project-lite 0.2.14", @@ -4703,7 +4707,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.29", + "hyper 0.14.30", "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", @@ -4717,9 +4721,9 @@ checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", - "rustls 0.23.10", + "rustls 0.23.12", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -4732,7 +4736,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.29", + "hyper 0.14.30", "pin-project-lite 0.2.14", "tokio", "tokio-io-timeout", @@ -4744,9 +4748,9 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "http-body-util", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", "native-tls", "tokio", @@ -4756,16 +4760,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.3.1", + "http-body 1.0.1", + "hyper 1.4.1", "pin-project-lite 0.2.14", "socket2 0.5.7", "tokio", @@ -4861,10 +4865,10 @@ checksum = "064d90fec10d541084e7b39ead8875a5a80d9114a2b18791565253bae25f49e4" dependencies = [ "async-trait", "attohttpc", - "bytes 1.6.0", + "bytes 1.7.1", "futures", "http 0.2.12", - "hyper 0.14.29", + "hyper 0.14.30", "log", "rand 0.8.5", "tokio", @@ -4912,18 +4916,18 @@ dependencies = [ [[package]] name = "include_dir" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" dependencies = [ "include_dir_macros", ] [[package]] name = "include_dir_macros" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", @@ -4948,9 +4952,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -4978,7 +4982,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f97967975f448f1a7ddb12b0bc41069d09ed6a1c161a92687e057325db35d413" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", ] [[package]] @@ -4996,7 +5000,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] @@ -5021,9 +5025,9 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "isahc" @@ -5318,9 +5322,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -5433,11 +5437,11 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.5.2", + "spin 0.9.8", ] [[package]] @@ -5468,7 +5472,7 @@ version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "681fb3f183edfbedd7a57d32ebe5dcdc0b9f94061185acf3c30249349cc6fc99" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "either", "futures", "futures-timer", @@ -5543,15 +5547,14 @@ dependencies = [ [[package]] name = "libp2p-core" -version = "0.41.2" +version = "0.41.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8130a8269e65a2554d55131c770bdf4bcd94d2b8d4efb24ca23699be65066c05" +checksum = "a5a8920cbd8540059a01950c1e5c96ea8d89eb50c51cd366fc18bdf540a6e48f" dependencies = [ "either", "fnv", "futures", "futures-timer", - "instant", "libp2p-identity", "multiaddr", "multihash", @@ -5568,6 +5571,7 @@ dependencies = [ "tracing", "unsigned-varint 0.8.0", "void", + "web-time", ] [[package]] @@ -5596,7 +5600,7 @@ dependencies = [ "asynchronous-codec 0.7.0", "base64 0.21.7", "byteorder", - "bytes 1.6.0", + "bytes 1.7.1", "either", "fnv", "futures", @@ -5633,7 +5637,7 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "lru 0.12.3", + "lru 0.12.4", "quick-protobuf", "quick-protobuf-codec 0.3.1", "smallvec", @@ -5671,7 +5675,7 @@ checksum = "5cc5767727d062c4eac74dd812c998f0e488008e82cce9c33b463d38423f9ad2" dependencies = [ "arrayvec", "asynchronous-codec 0.7.0", - "bytes 1.6.0", + "bytes 1.7.1", "either", "fnv", "futures", @@ -5759,7 +5763,7 @@ dependencies = [ "serde", "serde_bytes", "serde_json", - "snafu 0.8.3", + "snafu 0.8.4", "tokio", "tokio-stream", "tracing", @@ -5773,7 +5777,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c67296ad4e092e23f92aea3d2bdb6f24eab79c0929ed816dfb460ea2f4567d2b" dependencies = [ "async-std", - "bytes 1.6.0", + "bytes 1.7.1", "futures", "futures-timer", "if-watch", @@ -5784,7 +5788,7 @@ dependencies = [ "quinn", "rand 0.8.5", "ring 0.17.8", - "rustls 0.23.10", + "rustls 0.23.12", "socket2 0.5.7", "thiserror", "tokio", @@ -5828,7 +5832,7 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm-derive", - "lru 0.12.3", + "lru 0.12.4", "multistream-select", "once_cell", "rand 0.8.5", @@ -5847,7 +5851,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -5870,9 +5874,9 @@ dependencies = [ [[package]] name = "libp2p-tls" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "251b17aebdd29df7e8f80e4d94b782fae42e934c49086e1a81ba23b60a8314f2" +checksum = "72b7b831e55ce2aa6c354e6861a85fdd4dd0a2b97d5e276fabac0e4810a71776" dependencies = [ "futures", "futures-rustls", @@ -5880,7 +5884,7 @@ dependencies = [ "libp2p-identity", "rcgen 0.11.3", "ring 0.17.8", - "rustls 0.23.10", + "rustls 0.23.12", "rustls-webpki 0.101.7", "thiserror", "x509-parser", @@ -5909,7 +5913,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -6026,9 +6030,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ "value-bag", ] @@ -6054,9 +6058,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ "hashbrown 0.14.5", ] @@ -6150,12 +6154,12 @@ dependencies = [ "hotshot-events-service", "hotshot-task-impls", "hotshot-types", - "lru 0.12.3", + "lru 0.12.4", "multimap", "serde", "serde_json", "sha2 0.10.8", - "snafu 0.8.3", + "snafu 0.8.4", "surf-disco", "tagged-base64", "tide-disco", @@ -6239,7 +6243,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -6301,9 +6305,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -6317,22 +6321,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -6397,7 +6402,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures", "log", "pin-project", @@ -6500,7 +6505,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures", "log", "netlink-packet-core", @@ -6516,7 +6521,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416060d346fbaf1f23f9512963e3e878f1a78e707cb699ba9215761754244307" dependencies = [ "async-io 1.13.0", - "bytes 1.6.0", + "bytes 1.7.1", "futures", "libc", "log", @@ -6608,9 +6613,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -6695,29 +6700,29 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", ] [[package]] name = "num_enum" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -6767,7 +6772,7 @@ checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" dependencies = [ "arrayvec", "auto_impl", - "bytes 1.6.0", + "bytes 1.7.1", "ethereum-types", "open-fastrlp-derive", ] @@ -6778,7 +6783,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "proc-macro2", "quote", "syn 1.0.109", @@ -6786,11 +6791,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -6807,7 +6812,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -6818,9 +6823,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -6906,9 +6911,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.2", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -6998,9 +7003,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ "memchr", "thiserror", @@ -7009,9 +7014,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" dependencies = [ "pest", "pest_generator", @@ -7019,22 +7024,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "pest_meta" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" dependencies = [ "once_cell", "pest", @@ -7048,7 +7053,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.3.0", ] [[package]] @@ -7091,7 +7096,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -7129,7 +7134,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -7194,12 +7199,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" -[[package]] -name = "platforms" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" - [[package]] name = "polling" version = "2.8.0" @@ -7218,13 +7217,13 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.1" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6a007746f34ed64099e88783b0ae369eaa3da6392868ba262e2af9b8fbaea1" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi", + "hermit-abi 0.4.0", "pin-project-lite 0.2.14", "rustix 0.38.34", "tracing", @@ -7266,13 +7265,13 @@ dependencies = [ [[package]] name = "postgres-protocol" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b6c5ef183cd3ab4ba005f1ca64c21e8bd97ce4699cfea9e8d9a2c4958ca520" +checksum = "acda0ebdebc28befa84bee35e651e4c5f09073d668c7aed4cf7e23c3cda84b23" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "byteorder", - "bytes 1.6.0", + "bytes 1.7.1", "fallible-iterator", "hmac 0.12.1", "md-5", @@ -7284,12 +7283,12 @@ dependencies = [ [[package]] name = "postgres-types" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d2234cdee9408b523530a9b6d2d6b373d1db34f6a8e51dc03ded1828d7fb67c" +checksum = "02048d9e032fb3cc3413bbf7b83a15d84a5d419778e2628751896d856498eee9" dependencies = [ "bit-vec", - "bytes 1.6.0", + "bytes 1.7.1", "fallible-iterator", "postgres-protocol", "serde", @@ -7305,9 +7304,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "dee4364d9f3b902ef14fab8a1ddffb783a1cb6b4bba3bfc1fa3922732c7de97f" +dependencies = [ + "zerocopy 0.6.6", +] [[package]] name = "precomputed-hash" @@ -7332,7 +7334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -7389,9 +7391,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -7413,9 +7415,9 @@ dependencies = [ [[package]] name = "prometheus-client" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ca959da22a332509f2a73ae9e5f23f9dcfc31fd3a54d71f159495bd5909baa" +checksum = "504ee9ff529add891127c4827eb481bd69dc0ebc72e9a682e187db4caa60c3ca" dependencies = [ "dtoa", "itoa", @@ -7431,7 +7433,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -7448,11 +7450,11 @@ dependencies = [ [[package]] name = "proptest" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -7468,7 +7470,7 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "prost-derive", ] @@ -7482,7 +7484,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -7542,7 +7544,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ededb1cd78531627244d51dd0c7139fbe736c7d57af0092a76f0ffb2f56e98" dependencies = [ "asynchronous-codec 0.6.2", - "bytes 1.6.0", + "bytes 1.7.1", "quick-protobuf", "thiserror", "unsigned-varint 0.7.2", @@ -7555,7 +7557,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15a0580ab32b169745d7a39db2ba969226ca16738931be152a3209b409de2474" dependencies = [ "asynchronous-codec 0.7.0", - "bytes 1.6.0", + "bytes 1.7.1", "quick-protobuf", "thiserror", "unsigned-varint 0.8.0", @@ -7569,13 +7571,13 @@ checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" dependencies = [ "async-io 2.3.3", "async-std", - "bytes 1.6.0", + "bytes 1.7.1", "futures-io", "pin-project-lite 0.2.14", "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.10", + "rustls 0.23.12", "thiserror", "tokio", "tracing", @@ -7587,11 +7589,11 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "rand 0.8.5", "ring 0.17.8", "rustc-hash", - "rustls 0.23.10", + "rustls 0.23.12", "slab", "thiserror", "tinyvec", @@ -7600,14 +7602,13 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" dependencies = [ "libc", "once_cell", "socket2 0.5.7", - "tracing", "windows-sys 0.52.0", ] @@ -7770,7 +7771,7 @@ checksum = "e0d7a6955c7511f60f3ba9e86c6d02b3c3f144f8c24b288d1f4e18074ab8bbec" dependencies = [ "arc-swap", "async-trait", - "bytes 1.6.0", + "bytes 1.7.1", "combine", "futures", "futures-util", @@ -7795,11 +7796,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -7855,7 +7856,7 @@ dependencies = [ "quote", "refinery-core", "regex", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -7918,14 +7919,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", - "bytes 1.6.0", + "bytes 1.7.1", "encoding_rs", "futures-core", "futures-util", "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-rustls 0.24.2", "ipnet", "js-sys", @@ -7959,15 +7960,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ "base64 0.22.1", - "bytes 1.6.0", + "bytes 1.7.1", "encoding_rs", "futures-core", "futures-util", "h2 0.4.5", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-rustls 0.27.2", "hyper-tls", "hyper-util", @@ -8062,14 +8063,14 @@ checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" dependencies = [ "bitvec", "bytecheck", - "bytes 1.6.0", + "bytes 1.7.1", "hashbrown 0.12.3", "ptr_meta", "rend", "rkyv_derive", "seahash", "tinyvec", - "uuid 1.8.0", + "uuid 1.10.0", ] [[package]] @@ -8089,7 +8090,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "rlp-derive", "rustc-hex", ] @@ -8112,7 +8113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.5.0", + "bitflags 2.6.0", "serde", "serde_derive", ] @@ -8244,7 +8245,7 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys 0.4.14", @@ -8278,28 +8279,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.4" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "log", - "ring 0.17.8", - "rustls-pki-types", - "rustls-webpki 0.102.4", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls" -version = "0.23.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" -dependencies = [ "once_cell", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.4", + "rustls-webpki 0.102.6", "subtle", "zeroize", ] @@ -8341,9 +8329,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.4" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ "ring 0.17.8", "rustls-pki-types", @@ -8490,11 +8478,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -8503,9 +8491,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -8606,7 +8594,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "snafu 0.8.3", + "snafu 0.8.4", "static_assertions", "strum", "surf-disco", @@ -8650,9 +8638,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] @@ -8670,22 +8658,22 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.14" +version = "0.11.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -8699,11 +8687,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -8721,9 +8710,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -8742,15 +8731,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_derive", "serde_json", @@ -8760,14 +8749,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -8805,9 +8794,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] name = "sha2" @@ -9008,11 +8997,11 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418b8136fec49956eba89be7da2847ec1909df92a9ae4178b5ff0ff092c8d95e" +checksum = "2b835cb902660db3415a672d862905e791e54d306c6e8189168c7f3d9ae1c79d" dependencies = [ - "snafu-derive 0.8.3", + "snafu-derive 0.8.4", ] [[package]] @@ -9029,14 +9018,14 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a4812a669da00d17d8266a0439eddcacbc88b17f732f927e52eeb9d196f7fb5" +checksum = "38d1e02fca405f6280643174a50c942219f0bbf4dbf7d480f1dd864d6f211ae5" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -9148,7 +9137,7 @@ dependencies = [ "ahash 0.8.11", "atoi", "byteorder", - "bytes 1.6.0", + "bytes 1.7.1", "crc", "crossbeam-queue", "either", @@ -9160,7 +9149,7 @@ dependencies = [ "futures-util", "hashlink", "hex", - "indexmap 2.2.6", + "indexmap 2.3.0", "log", "memchr", "once_cell", @@ -9226,9 +9215,9 @@ checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" dependencies = [ "atoi", "base64 0.21.7", - "bitflags 2.5.0", + "bitflags 2.6.0", "byteorder", - "bytes 1.6.0", + "bytes 1.7.1", "crc", "digest 0.10.7", "dotenvy", @@ -9269,7 +9258,7 @@ checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" dependencies = [ "atoi", "base64 0.21.7", - "bitflags 2.5.0", + "bitflags 2.6.0", "byteorder", "crc", "dotenvy", @@ -9420,9 +9409,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros", ] @@ -9437,14 +9426,14 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "surf" @@ -9599,9 +9588,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -9640,7 +9629,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -9675,7 +9664,7 @@ dependencies = [ "base64 0.22.1", "crc-any", "serde", - "snafu 0.8.3", + "snafu 0.8.4", "tagged-base64-macros", "wasm-bindgen", ] @@ -9721,22 +9710,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -9817,7 +9806,7 @@ dependencies = [ "shellexpand", "signal-hook", "signal-hook-async-std", - "snafu 0.8.3", + "snafu 0.8.4", "strum", "strum_macros", "tagged-base64", @@ -9933,9 +9922,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -9948,22 +9937,21 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", - "bytes 1.6.0", + "bytes 1.7.1", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite 0.2.14", "signal-hook-registry", "socket2 0.5.7", "tokio-macros", "tracing", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -9978,13 +9966,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -9999,13 +9987,13 @@ dependencies = [ [[package]] name = "tokio-postgres" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d340244b32d920260ae7448cb72b6e238bddc3d4f7603394e7dd46ed8e48f5b8" +checksum = "03adcf0147e203b6032c0b2d30be1415ba03bc348901f3ff1cc0df6a733e60c3" dependencies = [ "async-trait", "byteorder", - "bytes 1.6.0", + "bytes 1.7.1", "fallible-iterator", "futures-channel", "futures-util", @@ -10050,7 +10038,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.10", + "rustls 0.23.12", "rustls-pki-types", "tokio", ] @@ -10087,7 +10075,7 @@ version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures-core", "futures-sink", "pin-project-lite 0.2.14", @@ -10096,21 +10084,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -10121,22 +10109,22 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.18", ] [[package]] @@ -10149,11 +10137,11 @@ dependencies = [ "async-trait", "axum", "base64 0.21.7", - "bytes 1.6.0", + "bytes 1.7.1", "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-timeout", "percent-encoding", "pin-project", @@ -10176,11 +10164,11 @@ dependencies = [ "async-trait", "axum", "base64 0.21.7", - "bytes 1.6.0", + "bytes 1.7.1", "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.29", + "hyper 0.14.30", "hyper-timeout", "percent-encoding", "pin-project", @@ -10245,7 +10233,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -10349,7 +10337,7 @@ checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -10366,7 +10354,7 @@ checksum = "5fe8dada8c1a3aeca77d6b51a4f1314e0f4b8e438b7b1b71e3ddaca8080e4093" dependencies = [ "base64 0.13.1", "byteorder", - "bytes 1.6.0", + "bytes 1.7.1", "http 0.2.12", "httparse", "input_buffer", @@ -10386,7 +10374,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" dependencies = [ "byteorder", - "bytes 1.6.0", + "bytes 1.7.1", "data-encoding", "http 0.2.12", "httparse", @@ -10506,7 +10494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" dependencies = [ "asynchronous-codec 0.6.2", - "bytes 1.6.0", + "bytes 1.7.1", ] [[package]] @@ -10529,19 +10517,18 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.9.7" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" +checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea" dependencies = [ "base64 0.22.1", "flate2", "log", "once_cell", - "rustls 0.22.4", + "rustls 0.23.12", "rustls-pki-types", - "rustls-webpki 0.102.4", "url", - "webpki-roots 0.26.2", + "webpki-roots 0.26.3", ] [[package]] @@ -10586,9 +10573,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" [[package]] name = "valuable" @@ -10662,9 +10649,9 @@ dependencies = [ [[package]] name = "vergen" -version = "8.3.1" +version = "8.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27d6bdd219887a9eadd19e1c34f32e47fa332301184935c6d9bca26f3cca525" +checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" dependencies = [ "anyhow", "cfg-if", @@ -10674,9 +10661,9 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "void" @@ -10715,12 +10702,12 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c" dependencies = [ - "bytes 1.6.0", + "bytes 1.7.1", "futures-channel", "futures-util", "headers", "http 0.2.12", - "hyper 0.14.29", + "hyper 0.14.30", "log", "mime", "mime_guess", @@ -10777,7 +10764,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -10811,7 +10798,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -10832,6 +10819,16 @@ dependencies = [ "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" version = "0.21.4" @@ -10859,9 +10856,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" dependencies = [ "rustls-pki-types", ] @@ -10939,7 +10936,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -10957,7 +10954,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -10977,18 +10974,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "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.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "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]] @@ -10999,9 +10996,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -11011,9 +11008,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -11023,15 +11020,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -11041,9 +11038,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -11053,9 +11050,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -11065,9 +11062,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -11077,9 +11074,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -11092,9 +11089,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -11206,22 +11203,43 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" +dependencies = [ + "byteorder", + "zerocopy-derive 0.6.6", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy-derive" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" dependencies = [ - "zerocopy-derive", + "proc-macro2", + "quote", + "syn 2.0.72", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -11241,7 +11259,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -11285,10 +11303,10 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.10+zstd.1.5.6" +version = "2.0.12+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" dependencies = [ "cc", "pkg-config", -] +] \ No newline at end of file From 38cf0a8f7f8e27ca6482a52549b9995273d1e51d Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Thu, 8 Aug 2024 19:51:47 +0500 Subject: [PATCH 04/27] add AltchainLightClientContract endpoint --- Cargo.lock | 3 +- hotshot-state-prover/Cargo.toml | 1 + hotshot-state-prover/api/prover-service.toml | 23 ++++ hotshot-state-prover/src/service.rs | 115 +++++++++++++++---- sequencer/src/bin/espresso-dev-node.rs | 40 +++---- 5 files changed, 136 insertions(+), 46 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4e3f224877..f907e28147 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4366,6 +4366,7 @@ dependencies = [ "ark-std", "async-compatibility-layer", "async-std", + "async-trait", "clap", "cld", "contract-bindings", @@ -11309,4 +11310,4 @@ checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" dependencies = [ "cc", "pkg-config", -] \ No newline at end of file +] diff --git a/hotshot-state-prover/Cargo.toml b/hotshot-state-prover/Cargo.toml index e1b2162730..0531bece5b 100644 --- a/hotshot-state-prover/Cargo.toml +++ b/hotshot-state-prover/Cargo.toml @@ -15,6 +15,7 @@ ark-srs = { workspace = true } ark-std = { workspace = true } async-compatibility-layer = { workspace = true } async-std = { workspace = true } +async-trait = { workspace = true } clap = { workspace = true } cld = { workspace = true } contract-bindings = { path = "../contract-bindings" } diff --git a/hotshot-state-prover/api/prover-service.toml b/hotshot-state-prover/api/prover-service.toml index 76e7d77529..8190b1d24f 100644 --- a/hotshot-state-prover/api/prover-service.toml +++ b/hotshot-state-prover/api/prover-service.toml @@ -1,3 +1,26 @@ [route.getlightclientcontract] PATH = ["/lightclient_contract"] +METHOD = "GET" DOC = "Get the address of light client contract on Layer1." + +[route.getaltchainlightclientcontracts] +PATH = ["/altchain_light_client_contracts"] +METHOD = "GET" +DOC = "Get the addresses of all alt chains light client contracts" + + +Returns +``` +List of +{ + chain_id, + provider_url, + light_client_address. +} +``` + +[route.getaltchainlightclientcontract] +PATH = ["/altchain_light_client_contract/:chain_id"] +METHOD = "GET" +":chain_id" = "Integer" +DOC = "Get the address of light client contract of a specific alt chain" \ No newline at end of file diff --git a/hotshot-state-prover/src/service.rs b/hotshot-state-prover/src/service.rs index 18a488e2e3..a09c0c7002 100644 --- a/hotshot-state-prover/src/service.rs +++ b/hotshot-state-prover/src/service.rs @@ -1,6 +1,7 @@ //! A light client prover service use std::{ + collections::BTreeMap, iter::{self, once}, time::{Duration, Instant}, }; @@ -11,6 +12,7 @@ use async_std::{ sync::Arc, task::{sleep, spawn, spawn_blocking}, }; +use async_trait::async_trait; use contract_bindings::light_client::{LightClient, LightClientErrors}; use displaydoc::Display; use ethers::{ @@ -20,7 +22,7 @@ use ethers::{ signers::{LocalWallet, Signer, Wallet}, types::{Address, U256}, }; -use futures::FutureExt; +use futures::{future::BoxFuture, FutureExt}; use hotshot_contract_adapter::{ jellyfish::{u256_to_field, ParsedPlonkProof}, light_client::ParsedLightClientState, @@ -42,9 +44,9 @@ use jf_pcs::prelude::UnivariateUniversalParams; use jf_plonk::errors::PlonkError; use jf_relation::Circuit as _; use jf_signature::constants::CS_ID_SCHNORR; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; use surf_disco::Client; -use tide_disco::{error::ServerError, Api}; +use tide_disco::{error::ServerError, method::ReadState, Api, Error, StatusCode}; use time::ext::InstantExt; use url::Url; use vbs::version::StaticVersionType; @@ -57,10 +59,14 @@ type F = ark_ed_on_bn254::Fq; pub type SignerWallet = SignerMiddleware, LocalWallet>; #[derive(Debug, Clone)] -pub struct AltChain { +pub struct AltChainConfig { + /// URL of alt chain JSON-RPC provider. pub provider: Url, + /// Chain ID of the alt chain pub chain_id: u64, + /// Address of LightClient contract pub light_client_address: Address, + /// Transaction signing key pub signing_key: SigningKey, } @@ -79,9 +85,9 @@ pub struct StateProverConfig { pub light_client_address: Address, /// Transaction signing key for Ethereum pub eth_signing_key: SigningKey, - - pub alt_chains: Vec, - + /// An optional list of alt chain configs including the light client address deployed. + /// These alt chains can be used alongside the primary L1 chain + pub alt_chains: Vec, /// URL of a node that is currently providing the HotShot config. /// This is used to initialize the stake table. pub sequencer_url: Url, @@ -413,30 +419,97 @@ pub async fn sync_state( Ok(()) } +pub struct ApiState(BTreeMap); + +#[async_trait] +impl ReadState for ApiState { + type State = ApiState; + async fn read( + &self, + op: impl Send + for<'a> FnOnce(&'a Self::State) -> BoxFuture<'a, T> + 'async_trait, + ) -> T { + op(self).await + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct AltChainInfo { + chain_id: u64, + provider_url: Url, + light_client_address: Address, +} + +impl AltChainInfo { + pub fn new(url: Url, chain_id: u64, lc_addr: Address) -> Self { + Self { + provider_url: url, + chain_id, + light_client_address: lc_addr, + } + } +} + fn start_http_server( port: u16, l1_light_client_addr: Address, - alt_chain_light_client_addresses: Vec<(Url, Address)>, + alt_chains: Vec, bind_version: Ver, ) -> io::Result<()> { - let mut app = tide_disco::App::<(), ServerError>::with_state(()); + let state: BTreeMap = alt_chains + .into_iter() + .map(|a| (a.chain_id, (a.provider, a.light_client_address))) + .collect(); + + let mut app = tide_disco::App::<_, ServerError>::with_state(ApiState(state)); let toml = toml::from_str::(include_str!("../api/prover-service.toml")) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; - let mut api = Api::<(), ServerError, Ver>::new(toml) + let mut api = Api::<_, ServerError, Ver>::new(toml) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; - api.get("getlightclientcontract", move |_, _| { + api.get("getlightclientcontract", move |_, _: &ApiState| { async move { Ok(l1_light_client_addr) }.boxed() }) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))? - .get("getaltlightclientcontracts", move |_, _| { - { - let addresses = alt_chain_light_client_addresses.clone(); - async move { Ok(addresses) } - } - .boxed() - }) + .get( + "getaltchainlightclientcontracts", + move |_, state: &ApiState| { + let response = state + .0 + .iter() + .map(|(k, v)| AltChainInfo { + chain_id: *k, + provider_url: v.0.clone(), + light_client_address: v.1, + }) + .collect::>(); + + { async move { Ok(response) } }.boxed() + }, + ) + .map_err(|err| io::Error::new(io::ErrorKind::Other, err))? + .get( + "getaltchainlightclientcontract", + move |req, state: &ApiState| { + { + async move { + let chain_id = req + .body_auto::(Ver::instance()) + .map_err(ServerError::from_request_error)?; + + let (_, addr) = state.0.get(&chain_id).ok_or_else(|| { + ServerError::catch_all( + StatusCode::INTERNAL_SERVER_ERROR, + "light client contract not found for chain id {chain_id}".to_string(), + ) + })?; + + Ok(*addr) + } + } + .boxed() + }, + ) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; app.register_module("api", api) @@ -471,7 +544,7 @@ pub async fn run_prover_service_with_stake_table>(); tracing::info!("L1 Light client address: {:?}", l1_lc_addr); tracing::info!("Alt chain Light client addresses: {:?}", alt_lc_addresses); @@ -481,7 +554,9 @@ pub async fn run_prover_service_with_stake_table anyhow::Result<()> { let mut light_client_addresses = vec![]; let mut mock_contracts = BTreeMap::new(); + // deploy contract for L1 and each alt chain for (url, mnemonic, account_index) in once((l1_url.clone(), mnemonic.clone(), account_index)) .chain( alt_chain_providers @@ -254,16 +256,20 @@ async fn main() -> anyhow::Result<()> { .map(|wallet| wallet.signer().clone()) .collect::>(); + // we remove the first entry which is for L1 light client contract + // so only alt chain light client addresses are left let (_, l1_lc) = light_client_addresses.remove(0); - let l1_signig_key = signing_keys.remove(0); + // we remove the first entry which is for primary L1 chain signing key + // so only alt signing keys are left + let l1_signing_key = signing_keys.remove(0); let alt_chains = alt_chain_providers .iter() .zip(light_client_addresses.clone()) .zip(signing_keys) .map( - |((provider, (chain_id, light_client_address)), signing_key)| AltChain { + |((provider, (chain_id, light_client_address)), signing_key)| AltChainConfig { provider: provider.clone(), chain_id, light_client_address, @@ -281,7 +287,7 @@ async fn main() -> anyhow::Result<()> { stake_table_capacity: STAKE_TABLE_CAPACITY_FOR_TEST as usize, l1_provider: l1_url.clone(), light_client_address: l1_lc, - eth_signing_key: l1_signig_key, + eth_signing_key: l1_signing_key, alt_chains, }; @@ -299,7 +305,7 @@ async fn main() -> anyhow::Result<()> { alt_chains: alt_chain_providers .into_iter() .zip(light_client_addresses) - .map(|(p, (c, u))| AltChainInfo::new(p, c, u)) + .map(|(prov, (id, addr))| AltChainInfo::new(prov, id, addr)) .collect(), }; @@ -314,6 +320,7 @@ async fn main() -> anyhow::Result<()> { Ok(()) } +// ApiState is passed to the tide disco app so avoid cloning the contracts for each endpoint pub struct ApiState( BTreeMap, S>>>, ); @@ -353,12 +360,12 @@ async fn run_dev_node_server(Ver::instance()) .map_err(ServerError::from_request_error)?; - // if chain id is not provided, we use the base L1 light client contract + // if chain id is not provided, primary L1 light client is used let contract = if let Some(chain_id) = body.chain_id { state.0.get(&chain_id).ok_or_else(|| { ServerError::catch_all( StatusCode::INTERNAL_SERVER_ERROR, - "light client ontract not found".to_string(), + "light client contract not found for chain id {chain_id}".to_string(), ) })? } else { @@ -368,7 +375,7 @@ async fn run_dev_node_server, } -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct AltChainInfo { - provider_url: Url, - chain_id: u64, - light_client_address: Address, -} - -impl AltChainInfo { - fn new(url: Url, chain_id: u64, lc_addr: Address) -> Self { - Self { - provider_url: url, - chain_id, - light_client_address: lc_addr, - } - } -} - #[derive(Debug, Serialize, Deserialize)] struct SetHotshotDownReqBody { // use L1 chain id (1) if not provided From 4c7f0f9a3ff23fe8f61f0c680d88b28b0f56d3c4 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Thu, 8 Aug 2024 20:10:09 +0500 Subject: [PATCH 05/27] remove hardcoded l1 lc address in test --- sequencer/src/bin/espresso-dev-node.rs | 78 +++++++++++--------------- 1 file changed, 34 insertions(+), 44 deletions(-) diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index e8b6d0018b..3e61e8b071 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -369,16 +369,14 @@ async fn run_dev_node_server, pub height: u64, } @@ -466,10 +462,7 @@ mod tests { use contract_bindings::light_client::LightClient; use escargot::CargoBuild; use espresso_types::{BlockMerkleTree, Header, SeqTypes, Transaction}; - use ethers::{ - providers::Middleware, - types::{Address, U256}, - }; + use ethers::{providers::Middleware, types::U256}; use futures::TryStreamExt; use hotshot_query_service::{ availability::{BlockQueryData, TransactionQueryData, VidCommonQueryData}, @@ -677,24 +670,6 @@ mod tests { let tx_block_height = tx_result.unwrap().block_height(); - let light_client_address = "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9"; - - let signer = init_signer(&l1_url, TEST_MNEMONIC, 0).await.unwrap(); - let light_client = LightClient::new( - light_client_address.parse::
().unwrap(), - Arc::new(signer.clone()), - ); - - while light_client - .get_hot_shot_commitment(U256::from(1)) - .call() - .await - .is_err() - { - tracing::info!("waiting for commitment"); - sleep(Duration::from_secs(3)).await; - } - // Check the namespace proof let proof = api_client .get::(&format!( @@ -745,12 +720,27 @@ mod tests { // Check the dev node api { tracing::info!("checking the dev node api"); - dev_node_client + let dev_info = dev_node_client .get::("api/dev-info") .send() .await .unwrap(); + let light_client_address = dev_info.l1_light_client_address; + + let signer = init_signer(&l1_url, TEST_MNEMONIC, 0).await.unwrap(); + let light_client = LightClient::new(light_client_address, Arc::new(signer.clone())); + + while light_client + .get_hot_shot_commitment(U256::from(1)) + .call() + .await + .is_err() + { + tracing::info!("waiting for commitment"); + sleep(Duration::from_secs(3)).await; + } + let height = signer.get_block_number().await.unwrap().as_u64(); dev_node_client .post::<()>("api/set-hotshot-down") From f75fd153e6dcd5b29f4436b6d390f9f0f9e01980 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Thu, 8 Aug 2024 21:04:19 +0500 Subject: [PATCH 06/27] add test for multiple providers --- hotshot-state-prover/api/prover-service.toml | 4 +- hotshot-state-prover/src/service.rs | 6 +- sequencer/src/bin/espresso-dev-node.rs | 136 ++++++++++++++++++- 3 files changed, 137 insertions(+), 9 deletions(-) diff --git a/hotshot-state-prover/api/prover-service.toml b/hotshot-state-prover/api/prover-service.toml index 8190b1d24f..f47f5378c4 100644 --- a/hotshot-state-prover/api/prover-service.toml +++ b/hotshot-state-prover/api/prover-service.toml @@ -6,7 +6,8 @@ DOC = "Get the address of light client contract on Layer1." [route.getaltchainlightclientcontracts] PATH = ["/altchain_light_client_contracts"] METHOD = "GET" -DOC = "Get the addresses of all alt chains light client contracts" +DOC = """ +Get the addresses of all alt chains light client contracts Returns @@ -18,6 +19,7 @@ List of light_client_address. } ``` +""" [route.getaltchainlightclientcontract] PATH = ["/altchain_light_client_contract/:chain_id"] diff --git a/hotshot-state-prover/src/service.rs b/hotshot-state-prover/src/service.rs index a09c0c7002..68caf12b04 100644 --- a/hotshot-state-prover/src/service.rs +++ b/hotshot-state-prover/src/service.rs @@ -434,9 +434,9 @@ impl ReadState for ApiState { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AltChainInfo { - chain_id: u64, - provider_url: Url, - light_client_address: Address, + pub chain_id: u64, + pub provider_url: Url, + pub light_client_address: Address, } impl AltChainInfo { diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index 3e61e8b071..f8a82536a4 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -443,7 +443,7 @@ struct DevInfo { #[derive(Debug, Serialize, Deserialize)] struct SetHotshotDownReqBody { - // return l1 light client if not provided + // return l1 light client address if not provided pub chain_id: Option, pub height: u64, } @@ -468,6 +468,7 @@ mod tests { availability::{BlockQueryData, TransactionQueryData, VidCommonQueryData}, data_source::sql::testing::TmpDb, }; + use hotshot_state_prover::service::AltChainInfo; use hotshot_types::traits::node_implementation::NodeType; use jf_merkle_tree::MerkleTreeScheme; use portpicker::pick_unused_port; @@ -475,6 +476,7 @@ mod tests { use sequencer_utils::{init_signer, test_utils::setup_test, AnvilOptions}; use surf_disco::Client; use tide_disco::error::ServerError; + use vbs::version::StaticVersion; use crate::{DevInfo, SetHotshotDownReqBody}; @@ -517,6 +519,7 @@ mod tests { .run() .unwrap() .command() + .env("RUST_LOG", "INFO") .env("ESPRESSO_SEQUENCER_L1_PROVIDER", l1_url.to_string()) .env("ESPRESSO_BUILDER_PORT", builder_port.to_string()) .env("ESPRESSO_SEQUENCER_API_PORT", api_port.to_string()) @@ -533,11 +536,11 @@ mod tests { .spawn() .unwrap(); - let _process = BackgroundProcess(process); + let process = BackgroundProcess(process); let api_client: Client::Base> = Client::new(format!("http://localhost:{api_port}").parse().unwrap()); - api_client.connect(None).await; + api_client.connect(Some(Duration::from_secs(120))).await; tracing::info!("waiting for blocks"); let _ = api_client @@ -552,7 +555,9 @@ mod tests { let builder_api_client: Client> = Client::new(format!("http://localhost:{builder_port}").parse().unwrap()); - builder_api_client.connect(None).await; + builder_api_client + .connect(Some(Duration::from_secs(120))) + .await; let builder_address = builder_api_client .get::("block_info/builderaddress") @@ -715,7 +720,9 @@ mod tests { let dev_node_client: Client::Base> = Client::new(format!("http://localhost:{dev_node_port}").parse().unwrap()); - dev_node_client.connect(None).await; + dev_node_client + .connect(Some(Duration::from_secs(120))) + .await; // Check the dev node api { @@ -783,5 +790,124 @@ mod tests { } drop(db); + drop(process); + } + + #[async_std::test] + async fn dev_node_multiple_lc_providers_test() { + setup_test(); + + let builder_port = pick_unused_port().unwrap(); + let api_port = pick_unused_port().unwrap(); + let dev_node_port = pick_unused_port().unwrap(); + + let instance = AnvilOptions::default().spawn().await; + let l1_url = instance.url(); + + let alt_anvil = AnvilOptions::default().spawn().await; + let alt_provider = alt_anvil.url(); + + let db = TmpDb::init().await; + let postgres_port = db.port(); + + let process = CargoBuild::new() + .bin("espresso-dev-node") + .features("testing") + .current_target() + .run() + .unwrap() + .command() + .env("RUST_LOG", "INFO") + .env("ESPRESSO_SEQUENCER_L1_PROVIDER", l1_url.to_string()) + .env("ESPRESSO_BUILDER_PORT", builder_port.to_string()) + .env("ESPRESSO_SEQUENCER_API_PORT", api_port.to_string()) + .env("ESPRESSO_SEQUENCER_POSTGRES_HOST", "localhost") + .env("ESPRESSO_SEQUENCER_ETH_MNEMONIC", TEST_MNEMONIC) + .env("ESPRESSO_DEPLOYER_ACCOUNT_INDEX", "0") + .env("ESPRESSO_DEV_NODE_PORT", dev_node_port.to_string()) + .env( + "ESPRESSO_SEQUENCER_POSTGRES_PORT", + postgres_port.to_string(), + ) + .env("ESPRESSO_SEQUENCER_POSTGRES_USER", "postgres") + .env("ESPRESSO_SEQUENCER_POSTGRES_PASSWORD", "password") + .env( + "ESPRESSO_DEPLOYER_ALT_CHAIN_PROVIDERS", + alt_provider.to_string(), + ) + .spawn() + .unwrap(); + + let process = BackgroundProcess(process); + + let api_client: Client::Base> = + Client::new(format!("http://localhost:{api_port}").parse().unwrap()); + api_client.connect(Some(Duration::from_secs(120))).await; + + tracing::info!("waiting for blocks"); + let _ = api_client + .socket("availability/stream/blocks/0") + .subscribe::>() + .await + .unwrap() + .take(5) + .try_collect::>() + .await + .unwrap(); + + let dev_node_client: Client::Base> = + Client::new(format!("http://localhost:{dev_node_port}").parse().unwrap()); + dev_node_client + .connect(Some(Duration::from_secs(120))) + .await; + + // Check the dev node api + { + tracing::info!("checking the dev node api"); + let dev_info = dev_node_client + .get::("api/dev-info") + .send() + .await + .unwrap(); + + let light_client_address = dev_info.l1_light_client_address; + + let signer = init_signer(&l1_url, TEST_MNEMONIC, 0).await.unwrap(); + let light_client = LightClient::new(light_client_address, Arc::new(signer.clone())); + + while light_client + .get_hot_shot_commitment(U256::from(5)) + .call() + .await + .is_err() + { + tracing::info!("waiting for commitment"); + sleep(Duration::from_secs(3)).await; + } + + for AltChainInfo { + provider_url, + light_client_address, + .. + } in dev_info.alt_chains + { + let signer = init_signer(&provider_url, TEST_MNEMONIC, 0).await.unwrap(); + let light_client = LightClient::new(light_client_address, Arc::new(signer.clone())); + + while light_client + .get_hot_shot_commitment(U256::from(5)) + .call() + .await + .is_err() + { + tracing::info!("waiting for commitment"); + sleep(Duration::from_secs(3)).await; + } + } + } + + drop(db); + drop(alt_provider); + drop(process); } } From 18646d341e54230b9eab85c34d277fbe4e4aaf4d Mon Sep 17 00:00:00 2001 From: Jarred Parr Date: Thu, 8 Aug 2024 10:50:37 -0600 Subject: [PATCH 07/27] hackfix for weekly release --- Cargo.lock | 69 +++++++++++++++++++++--------------- Cargo.toml | 24 ++++++------- builder/src/permissioned.rs | 9 +++-- sequencer/src/context.rs | 6 +++- sequencer/src/lib.rs | 7 +++- types/src/v0/impls/header.rs | 1 + 6 files changed, 72 insertions(+), 44 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ec8a77ae93..06dfdd6815 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4042,8 +4042,8 @@ dependencies = [ [[package]] name = "hotshot" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "anyhow", "async-broadcast", @@ -4083,13 +4083,14 @@ dependencies = [ "time 0.3.36", "tokio", "tracing", + "url", "vbs", ] [[package]] name = "hotshot-builder-api" version = "0.1.7" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "async-trait", "clap", @@ -4108,7 +4109,7 @@ dependencies = [ [[package]] name = "hotshot-builder-core" version = "0.1.39" -source = "git+https://github.com/EspressoSystems/hotshot-builder-core?tag=0.1.39#f78273c7838a8c9da194a540b8ac91cf4d65844c" +source = "git+https://github.com/EspressoSystems/hotshot-builder-core?branch=hotshot/rc-0.5.69#4a10af9a68a1ec907d050236eda6b5c0f5fb4946" dependencies = [ "anyhow", "async-broadcast", @@ -4160,7 +4161,7 @@ dependencies = [ [[package]] name = "hotshot-events-service" version = "0.1.38" -source = "git+https://github.com/EspressoSystems/hotshot-events-service.git?tag=0.1.38#65cd285e930ef63cec83e9e694da26a5bd4ba801" +source = "git+https://github.com/EspressoSystems/hotshot-events-service.git?branch=hotshot/rc-0.5.69#b55340f60041b8b9648012abce7a8135d9a8ae76" dependencies = [ "async-broadcast", "async-compatibility-layer", @@ -4185,8 +4186,8 @@ dependencies = [ [[package]] name = "hotshot-example-types" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "anyhow", "async-broadcast", @@ -4218,8 +4219,8 @@ dependencies = [ [[package]] name = "hotshot-fakeapi" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "anyhow", "async-lock 2.8.0", @@ -4237,8 +4238,8 @@ dependencies = [ [[package]] name = "hotshot-macros" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "derive_builder", "proc-macro2", @@ -4248,8 +4249,8 @@ dependencies = [ [[package]] name = "hotshot-orchestrator" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "anyhow", "async-compatibility-layer", @@ -4278,13 +4279,13 @@ dependencies = [ [[package]] name = "hotshot-query-service" -version = "0.1.50" -source = "git+https://github.com/EspressoSystems/hotshot-query-service?tag=0.1.50#d9cb31cb4030fc85101fe74ad3fa25443f629a3e" +version = "0.1.51" +source = "git+https://github.com/EspressoSystems/hotshot-query-service?branch=hotshot/rc-0.5.69#14cc856ae0877f6064fb4648248e5c07b3bb6511" dependencies = [ "anyhow", "ark-serialize", "async-compatibility-layer", - "async-lock 2.8.0", + "async-lock 3.4.0", "async-std", "async-trait", "atomic_store", @@ -4334,8 +4335,8 @@ dependencies = [ [[package]] name = "hotshot-stake-table" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "ark-bn254", "ark-ed-on-bn254", @@ -4398,8 +4399,8 @@ dependencies = [ [[package]] name = "hotshot-task" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "anyhow", "async-broadcast", @@ -4413,8 +4414,8 @@ dependencies = [ [[package]] name = "hotshot-task-impls" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "anyhow", "async-broadcast", @@ -4443,14 +4444,15 @@ dependencies = [ "time 0.3.36", "tokio", "tracing", + "url", "vbs", "vec1", ] [[package]] name = "hotshot-testing" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "anyhow", "async-broadcast", @@ -4473,6 +4475,7 @@ dependencies = [ "hotshot-task", "hotshot-task-impls", "hotshot-types", + "itertools 0.13.0", "jf-signature", "jf-vid", "lru 0.12.4", @@ -4495,7 +4498,7 @@ dependencies = [ [[package]] name = "hotshot-types" version = "0.1.11" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "anyhow", "ark-bn254", @@ -5088,6 +5091,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -5740,8 +5752,8 @@ dependencies = [ [[package]] name = "libp2p-networking" -version = "0.5.68" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.68#572c5c77d22c3e66acc9683efea8cc1ddbb7a9c5" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#8bb25e75a2b154d25eefc7d8e8c4daef782d7bf7" dependencies = [ "anyhow", "async-compatibility-layer", @@ -5759,6 +5771,7 @@ dependencies = [ "libp2p", "libp2p-identity", "libp2p-swarm-derive", + "pin-project", "rand 0.8.5", "serde", "serde_bytes", @@ -6136,7 +6149,7 @@ dependencies = [ [[package]] name = "marketplace-builder-core" version = "0.0.2" -source = "git+https://github.com/EspressoSystems/marketplace-builder-core?tag=0.0.2#2df34726a644181b47a1fb50c4bce2e1c7ce5066" +source = "git+https://github.com/EspressoSystems/marketplace-builder-core?branch=hotshot/rc-0.5.69#019285c67698141857a6fad743b3ea2ed116d40a" dependencies = [ "anyhow", "async-broadcast", diff --git a/Cargo.toml b/Cargo.toml index a46ef7e4b7..ef66348ffe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,22 +52,22 @@ dotenvy = "0.15" ethers = { version = "2.0", features = ["solc"] } futures = "0.3" -hotshot = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.68" } +hotshot = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } # Hotshot imports -hotshot-builder-api = { git = "https://github.com/EspressoSystems/HotShot.git", tag = "0.5.68" } -hotshot-builder-core = { git = "https://github.com/EspressoSystems/hotshot-builder-core", tag = "0.1.39" } -marketplace-builder-core = { git = "https://github.com/EspressoSystems/marketplace-builder-core", tag = "0.0.2" } -hotshot-events-service = { git = "https://github.com/EspressoSystems/hotshot-events-service.git", tag = "0.1.38" } -hotshot-orchestrator = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.68" } -hotshot-query-service = { git = "https://github.com/EspressoSystems/hotshot-query-service", tag = "0.1.50" } -hotshot-stake-table = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.68" } +hotshot-builder-api = { git = "https://github.com/EspressoSystems/HotShot.git", branch = "bump/0.5.69" } +hotshot-builder-core = { git = "https://github.com/EspressoSystems/hotshot-builder-core", branch = "hotshot/rc-0.5.69" } +marketplace-builder-core = { git = "https://github.com/EspressoSystems/marketplace-builder-core", branch = "hotshot/rc-0.5.69" } +hotshot-events-service = { git = "https://github.com/EspressoSystems/hotshot-events-service.git", branch = "hotshot/rc-0.5.69" } +hotshot-orchestrator = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-query-service = { git = "https://github.com/EspressoSystems/hotshot-query-service", branch = "hotshot/rc-0.5.69" } +hotshot-stake-table = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } hotshot-state-prover = { version = "0.1.0", path = "hotshot-state-prover" } -hotshot-task = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.68" } -hotshot-testing = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.68" } -hotshot-types = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.68" } +hotshot-task = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-testing = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-types = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } hotshot-contract-adapter = { version = "0.1.0", path = "contracts/rust/adapter" } # Temporary, used to pull in the mock auction results provider -hotshot-example-types = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.68" } +hotshot-example-types = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } # Push CDN imports cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", features = [ diff --git a/builder/src/permissioned.rs b/builder/src/permissioned.rs index aa7f0085f6..3a26e2259d 100644 --- a/builder/src/permissioned.rs +++ b/builder/src/permissioned.rs @@ -6,6 +6,7 @@ use std::{ mem, net::{IpAddr, Ipv4Addr}, num::NonZeroUsize, + str::FromStr, thread::Builder, time::Duration, }; @@ -46,7 +47,7 @@ use hotshot::{ BlockPayload, }, types::{SignatureKey, SystemContextHandle}, - HotShotInitializer, Memberships, SystemContext, + HotShotInitializer, MarketplaceConfig, Memberships, SystemContext, }; use hotshot_builder_api::v0_1::builder::{ BuildError, Error as BuilderApiError, Options as HotshotBuilderApiOptions, @@ -80,6 +81,7 @@ use hotshot_types::{ light_client::StateKeyPair, signature_key::{BLSPrivKey, BLSPubKey}, traits::{ + auction_results_provider::AuctionResultsProvider, block_contents::{vid_commitment, GENESIS_VID_NUM_STORAGE_NODES}, election::Membership, metrics::Metrics, @@ -384,7 +386,10 @@ pub async fn init_hotshot< .unwrap(), ConsensusMetricsValue::new(metrics), da_storage, - TestAuctionResultsProvider::default(), + MarketplaceConfig { + auction_results_provider: Arc::new(TestAuctionResultsProvider::default()), + generic_builder_url: Url::from_str("http://localhost").unwrap(), + }, ) .await .unwrap() diff --git a/sequencer/src/context.rs b/sequencer/src/context.rs index 9b2e18c559..b175e71ba8 100644 --- a/sequencer/src/context.rs +++ b/sequencer/src/context.rs @@ -88,6 +88,7 @@ impl, P: SequencerPersistence, Ver: StaticVersionTyp metrics: &dyn Metrics, stake_table_capacity: u64, public_api_url: Option, + generic_builder_url: Url, _: Ver, ) -> anyhow::Result { let config = &network_config.config; @@ -150,7 +151,10 @@ impl, P: SequencerPersistence, Ver: StaticVersionTyp initializer, ConsensusMetricsValue::new(metrics), persistence.clone(), - TestAuctionResultsProvider::default(), + hotshot::MarketplaceConfig { + auction_results_provider: Arc::new(TestAuctionResultsProvider::default()), + generic_builder_url, + }, ) .await? .0; diff --git a/sequencer/src/lib.rs b/sequencer/src/lib.rs index 8ba94f06fb..f2dfd11167 100644 --- a/sequencer/src/lib.rs +++ b/sequencer/src/lib.rs @@ -31,7 +31,10 @@ pub mod state; #[cfg(feature = "libp2p")] use std::time::Duration; -use std::{collections::BTreeMap, fmt::Debug, marker::PhantomData, net::SocketAddr, sync::Arc}; +use std::{ + collections::BTreeMap, fmt::Debug, marker::PhantomData, net::SocketAddr, str::FromStr, + sync::Arc, +}; use derivative::Derivative; use espresso_types::v0::traits::{PersistenceOptions, SequencerPersistence}; @@ -404,6 +407,7 @@ pub async fn init_node( metrics, genesis.stake_table.capacity, network_params.public_api_url, + Url::from_str("http://localhost").unwrap(), bind_version, ) .await?; @@ -752,6 +756,7 @@ pub mod testing { metrics, stake_table_capacity, None, // The public API URL + Url::from_str("http://localhost").unwrap(), bind_version, ) .await diff --git a/types/src/v0/impls/header.rs b/types/src/v0/impls/header.rs index 9fdc6dad03..0cdcd6a4c0 100644 --- a/types/src/v0/impls/header.rs +++ b/types/src/v0/impls/header.rs @@ -738,6 +738,7 @@ impl BlockHeader for Header { instance_state: &<::ValidatedState as hotshot_types::traits::ValidatedState>::Instance, parent_leaf: &hotshot_types::data::Leaf, payload_commitment: VidCommitment, + builder_commitment: BuilderCommitment, metadata: <::BlockPayload as BlockPayload>::Metadata, builder_fee: Vec>, _vid_common: VidCommon, From e86b0d0dee2e23a2e64c85ffe1dab03a02d66633 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Thu, 8 Aug 2024 23:09:16 +0500 Subject: [PATCH 08/27] remove timeout from client --- sequencer/src/bin/espresso-dev-node.rs | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index f8a82536a4..c0793a6df1 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -519,7 +519,6 @@ mod tests { .run() .unwrap() .command() - .env("RUST_LOG", "INFO") .env("ESPRESSO_SEQUENCER_L1_PROVIDER", l1_url.to_string()) .env("ESPRESSO_BUILDER_PORT", builder_port.to_string()) .env("ESPRESSO_SEQUENCER_API_PORT", api_port.to_string()) @@ -540,7 +539,7 @@ mod tests { let api_client: Client::Base> = Client::new(format!("http://localhost:{api_port}").parse().unwrap()); - api_client.connect(Some(Duration::from_secs(120))).await; + api_client.connect(None).await; tracing::info!("waiting for blocks"); let _ = api_client @@ -555,9 +554,7 @@ mod tests { let builder_api_client: Client> = Client::new(format!("http://localhost:{builder_port}").parse().unwrap()); - builder_api_client - .connect(Some(Duration::from_secs(120))) - .await; + builder_api_client.connect(None).await; let builder_address = builder_api_client .get::("block_info/builderaddress") @@ -720,9 +717,7 @@ mod tests { let dev_node_client: Client::Base> = Client::new(format!("http://localhost:{dev_node_port}").parse().unwrap()); - dev_node_client - .connect(Some(Duration::from_secs(120))) - .await; + dev_node_client.connect(None).await; // Check the dev node api { @@ -817,7 +812,6 @@ mod tests { .run() .unwrap() .command() - .env("RUST_LOG", "INFO") .env("ESPRESSO_SEQUENCER_L1_PROVIDER", l1_url.to_string()) .env("ESPRESSO_BUILDER_PORT", builder_port.to_string()) .env("ESPRESSO_SEQUENCER_API_PORT", api_port.to_string()) @@ -842,7 +836,7 @@ mod tests { let api_client: Client::Base> = Client::new(format!("http://localhost:{api_port}").parse().unwrap()); - api_client.connect(Some(Duration::from_secs(120))).await; + api_client.connect(None).await; tracing::info!("waiting for blocks"); let _ = api_client @@ -857,9 +851,7 @@ mod tests { let dev_node_client: Client::Base> = Client::new(format!("http://localhost:{dev_node_port}").parse().unwrap()); - dev_node_client - .connect(Some(Duration::from_secs(120))) - .await; + dev_node_client.connect(None).await; // Check the dev node api { From 7a5164222111bfb7401a4a01eba4167acc9633d7 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Fri, 9 Aug 2024 00:48:40 +0500 Subject: [PATCH 09/27] reduce interval --- sequencer/src/bin/espresso-dev-node.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index c0793a6df1..9b3c90aea0 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -584,7 +584,7 @@ mod tests { .send() .await; while tx_result.is_err() { - sleep(Duration::from_secs(3)).await; + sleep(Duration::from_secs(1)).await; tx_result = api_client .get::>(&format!( @@ -615,7 +615,7 @@ mod tests { .await; while tx_result.is_err() { tracing::info!("waiting for large tx"); - sleep(Duration::from_secs(3)).await; + sleep(Duration::from_secs(1)).await; tx_result = api_client .get::>(&format!( @@ -658,7 +658,7 @@ mod tests { .send() .await; while result.is_err() { - sleep(Duration::from_secs(3)).await; + sleep(Duration::from_secs(1)).await; result = api_client .get::>(&format!( @@ -711,7 +711,7 @@ mod tests { .await .is_err() { - sleep(Duration::from_secs(3)).await; + sleep(Duration::from_secs(1)).await; } } @@ -784,8 +784,8 @@ mod tests { } } - drop(db); drop(process); + drop(db); } #[async_std::test] @@ -799,7 +799,7 @@ mod tests { let instance = AnvilOptions::default().spawn().await; let l1_url = instance.url(); - let alt_anvil = AnvilOptions::default().spawn().await; + let alt_anvil = AnvilOptions::default().chain_id(122).spawn().await; let alt_provider = alt_anvil.url(); let db = TmpDb::init().await; @@ -868,7 +868,7 @@ mod tests { let light_client = LightClient::new(light_client_address, Arc::new(signer.clone())); while light_client - .get_hot_shot_commitment(U256::from(5)) + .get_hot_shot_commitment(U256::from(1)) .call() .await .is_err() @@ -887,7 +887,7 @@ mod tests { let light_client = LightClient::new(light_client_address, Arc::new(signer.clone())); while light_client - .get_hot_shot_commitment(U256::from(5)) + .get_hot_shot_commitment(U256::from(1)) .call() .await .is_err() @@ -898,8 +898,8 @@ mod tests { } } - drop(db); - drop(alt_provider); drop(process); + drop(alt_provider); + drop(db); } } From c793dbf0ce82d5a8eeca2d5707d0cf1f3e292b5a Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Fri, 9 Aug 2024 10:45:59 +0500 Subject: [PATCH 10/27] increase test timeout to 90m --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b50fdfeceb..3af676bfb7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -55,4 +55,4 @@ jobs: cargo build --locked --bin diff-test --release cargo test --locked --release --workspace --all-features --no-run cargo test --locked --release --workspace --all-features --verbose -- --test-threads 1 --nocapture - timeout-minutes: 40 + timeout-minutes: 90 From 8a9ccf582a44836c5b2602eeba4623463b38b9a0 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Fri, 9 Aug 2024 11:51:19 +0500 Subject: [PATCH 11/27] handle the spawned tasks and add multiple lc providers in test --- sequencer/src/bin/espresso-dev-node.rs | 90 +++++++++++++++++++------- 1 file changed, 67 insertions(+), 23 deletions(-) diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index 9b3c90aea0..7683d4dd72 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -11,7 +11,7 @@ use ethers::{ signers::{coins_bip39::English, MnemonicBuilder, Signer}, types::{Address, U256}, }; -use futures::{future::BoxFuture, FutureExt}; +use futures::{future::BoxFuture, stream::FuturesUnordered, FutureExt, StreamExt}; use hotshot_state_prover::service::{ one_honest_threshold, run_prover_service_with_stake_table, AltChainConfig, AltChainInfo, StateProverConfig, @@ -238,17 +238,25 @@ async fn main() -> anyhow::Result<()> { let st = network.cfg.stake_table(); let total_stake = st.total_stake(SnapshotVersion::LastEpochStart).unwrap(); - spawn(run_relay_server( - None, - one_honest_threshold(total_stake), - format!("http://0.0.0.0:{relay_server_port}") - .parse() - .unwrap(), - ::Base::instance(), - )); - let update_interval = Duration::from_secs(20); - let retry_interval = Duration::from_secs(2); + let mut handles = FuturesUnordered::new(); + let relay_server_handle = spawn(async move { + let _ = run_relay_server( + None, + one_honest_threshold(total_stake), + format!("http://0.0.0.0:{relay_server_port}") + .parse() + .unwrap(), + ::Base::instance(), + ) + .await; + + Ok(()) + }); + handles.push(relay_server_handle); + + let update_interval = Duration::from_secs(1); + let retry_interval = Duration::from_secs(1); let prover_port = prover_port.unwrap_or_else(|| pick_unused_port().unwrap()); let mut signing_keys = wallets @@ -291,12 +299,12 @@ async fn main() -> anyhow::Result<()> { alt_chains, }; - spawn(run_prover_service_with_stake_table( + let prover_handle = spawn(run_prover_service_with_stake_table( prover_config, ::Base::instance(), Arc::new(st), )); - + handles.push(prover_handle); let dev_info = DevInfo { builder_url: network.cfg.hotshot_config().builder_urls[0].clone(), prover_port, @@ -309,13 +317,19 @@ async fn main() -> anyhow::Result<()> { .collect(), }; - run_dev_node_server( + let dev_node_handle = spawn(run_dev_node_server( dev_node_port, mock_contracts, dev_info, ::Base::instance(), - ) - .await?; + )); + handles.push(dev_node_handle); + + // if any of the async task is complete then dev node binary exits + if (handles.next().await).is_some() { + tracing::error!("exiting dev node"); + drop(network); + } Ok(()) } @@ -472,16 +486,19 @@ mod tests { use hotshot_types::traits::node_implementation::NodeType; use jf_merkle_tree::MerkleTreeScheme; use portpicker::pick_unused_port; + use rand::Rng; use sequencer::api::endpoints::NamespaceProofQueryData; - use sequencer_utils::{init_signer, test_utils::setup_test, AnvilOptions}; + use sequencer_utils::{init_signer, test_utils::setup_test, Anvil, AnvilOptions}; use surf_disco::Client; use tide_disco::error::ServerError; + use url::Url; use vbs::version::StaticVersion; use crate::{DevInfo, SetHotshotDownReqBody}; const TEST_MNEMONIC: &str = "test test test test test test test test test test test junk"; + const NUM_ALT_CHAIN_PROVIDERS: usize = 2; pub struct BackgroundProcess(Child); @@ -788,6 +805,26 @@ mod tests { drop(db); } + async fn alt_chain_providers() -> (Vec, Vec) { + let mut providers = Vec::new(); + let mut urls = Vec::new(); + + for _ in 0..NUM_ALT_CHAIN_PROVIDERS { + let mut rng = rand::thread_rng(); + + let anvil = AnvilOptions::default() + .chain_id(rng.gen_range(2..u32::MAX) as u64) + .spawn() + .await; + let url = anvil.url(); + + providers.push(anvil); + urls.push(url); + } + + (providers, urls) + } + #[async_std::test] async fn dev_node_multiple_lc_providers_test() { setup_test(); @@ -796,11 +833,16 @@ mod tests { let api_port = pick_unused_port().unwrap(); let dev_node_port = pick_unused_port().unwrap(); - let instance = AnvilOptions::default().spawn().await; + let instance = AnvilOptions::default().chain_id(1).spawn().await; let l1_url = instance.url(); - let alt_anvil = AnvilOptions::default().chain_id(122).spawn().await; - let alt_provider = alt_anvil.url(); + let (alt_providers, alt_chain_urls) = alt_chain_providers().await; + + let alt_chains_env_value = alt_chain_urls + .iter() + .map(|url| url.as_str()) + .collect::>() + .join(","); let db = TmpDb::init().await; let postgres_port = db.port(); @@ -827,7 +869,7 @@ mod tests { .env("ESPRESSO_SEQUENCER_POSTGRES_PASSWORD", "password") .env( "ESPRESSO_DEPLOYER_ALT_CHAIN_PROVIDERS", - alt_provider.to_string(), + alt_chains_env_value, ) .spawn() .unwrap(); @@ -880,9 +922,11 @@ mod tests { for AltChainInfo { provider_url, light_client_address, - .. + chain_id, } in dev_info.alt_chains { + tracing::info!("checking hotshot commitment for {chain_id}"); + let signer = init_signer(&provider_url, TEST_MNEMONIC, 0).await.unwrap(); let light_client = LightClient::new(light_client_address, Arc::new(signer.clone())); @@ -899,7 +943,7 @@ mod tests { } drop(process); - drop(alt_provider); + drop(alt_providers); drop(db); } } From ccbaad07a01e3ccb6da88fcae24f01b0a09999f5 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Fri, 9 Aug 2024 13:16:52 +0500 Subject: [PATCH 12/27] spin up separate prover for each alt chain --- hotshot-state-prover/api/prover-service.toml | 26 +- hotshot-state-prover/src/bin/state-prover.rs | 6 +- hotshot-state-prover/src/service.rs | 301 ++++++------------- sequencer/api/espresso_dev_node.toml | 11 +- sequencer/src/bin/espresso-dev-node.rs | 220 +++++++++----- 5 files changed, 253 insertions(+), 311 deletions(-) diff --git a/hotshot-state-prover/api/prover-service.toml b/hotshot-state-prover/api/prover-service.toml index f47f5378c4..4307861162 100644 --- a/hotshot-state-prover/api/prover-service.toml +++ b/hotshot-state-prover/api/prover-service.toml @@ -1,28 +1,4 @@ [route.getlightclientcontract] PATH = ["/lightclient_contract"] METHOD = "GET" -DOC = "Get the address of light client contract on Layer1." - -[route.getaltchainlightclientcontracts] -PATH = ["/altchain_light_client_contracts"] -METHOD = "GET" -DOC = """ -Get the addresses of all alt chains light client contracts - - -Returns -``` -List of -{ - chain_id, - provider_url, - light_client_address. -} -``` -""" - -[route.getaltchainlightclientcontract] -PATH = ["/altchain_light_client_contract/:chain_id"] -METHOD = "GET" -":chain_id" = "Integer" -DOC = "Get the address of light client contract of a specific alt chain" \ No newline at end of file +DOC = "Get the address of light client contract on Layer1." \ No newline at end of file diff --git a/hotshot-state-prover/src/bin/state-prover.rs b/hotshot-state-prover/src/bin/state-prover.rs index 05f1f76cd2..b6cf5ec8f8 100644 --- a/hotshot-state-prover/src/bin/state-prover.rs +++ b/hotshot-state-prover/src/bin/state-prover.rs @@ -95,9 +95,9 @@ async fn main() { relay_server: args.relay_server, update_interval: args.update_interval, retry_interval: args.retry_interval, - l1_provider: args.l1_provider, + provider: args.l1_provider, light_client_address: args.light_client_address, - eth_signing_key: MnemonicBuilder::::default() + signing_key: MnemonicBuilder::::default() .phrase(args.eth_mnemonic.as_str()) .index(args.eth_account_index) .expect("error building wallet") @@ -106,7 +106,7 @@ async fn main() { .with_chain_id(chain_id) .signer() .clone(), - alt_chains: Vec::new(), + sequencer_url: args.sequencer_url, port: args.port, stake_table_capacity: args.stake_table_capacity, diff --git a/hotshot-state-prover/src/service.rs b/hotshot-state-prover/src/service.rs index 68caf12b04..eac1d42d61 100644 --- a/hotshot-state-prover/src/service.rs +++ b/hotshot-state-prover/src/service.rs @@ -1,8 +1,7 @@ //! A light client prover service use std::{ - collections::BTreeMap, - iter::{self, once}, + iter, time::{Duration, Instant}, }; @@ -12,7 +11,6 @@ use async_std::{ sync::Arc, task::{sleep, spawn, spawn_blocking}, }; -use async_trait::async_trait; use contract_bindings::light_client::{LightClient, LightClientErrors}; use displaydoc::Display; use ethers::{ @@ -22,7 +20,7 @@ use ethers::{ signers::{LocalWallet, Signer, Wallet}, types::{Address, U256}, }; -use futures::{future::BoxFuture, FutureExt}; +use futures::FutureExt; use hotshot_contract_adapter::{ jellyfish::{u256_to_field, ParsedPlonkProof}, light_client::ParsedLightClientState, @@ -44,9 +42,9 @@ use jf_pcs::prelude::UnivariateUniversalParams; use jf_plonk::errors::PlonkError; use jf_relation::Circuit as _; use jf_signature::constants::CS_ID_SCHNORR; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use surf_disco::Client; -use tide_disco::{error::ServerError, method::ReadState, Api, Error, StatusCode}; +use tide_disco::{error::ServerError, Api}; use time::ext::InstantExt; use url::Url; use vbs::version::StaticVersionType; @@ -58,18 +56,6 @@ type F = ark_ed_on_bn254::Fq; /// A wallet with local signer and connected to network via http pub type SignerWallet = SignerMiddleware, LocalWallet>; -#[derive(Debug, Clone)] -pub struct AltChainConfig { - /// URL of alt chain JSON-RPC provider. - pub provider: Url, - /// Chain ID of the alt chain - pub chain_id: u64, - /// Address of LightClient contract - pub light_client_address: Address, - /// Transaction signing key - pub signing_key: SigningKey, -} - /// Configuration/Parameters used for hotshot state prover #[derive(Debug, Clone)] pub struct StateProverConfig { @@ -79,15 +65,15 @@ pub struct StateProverConfig { pub update_interval: Duration, /// Interval between retries if a state update fails pub retry_interval: Duration, - /// URL of layer 1 Ethereum JSON-RPC provider. - pub l1_provider: Url, - /// Address of LightClient contract on layer 1. + /// URL of the chain (layer 1 or any layer 2) JSON-RPC provider. + pub provider: Url, + /// Address of LightClient contract pub light_client_address: Address, - /// Transaction signing key for Ethereum - pub eth_signing_key: SigningKey, - /// An optional list of alt chain configs including the light client address deployed. - /// These alt chains can be used alongside the primary L1 chain - pub alt_chains: Vec, + /// Transaction signing key for Ethereum or any other layer 2 + pub signing_key: SigningKey, + // /// An optional list of alt chain configs including the light client address deployed. + // /// These alt chains can be used alongside the primary L1 chain + // pub alt_chains: Vec, /// URL of a node that is currently providing the HotShot config. /// This is used to initialize the stake table. pub sequencer_url: Url, @@ -330,188 +316,102 @@ pub async fn sync_state( relay_server_client: &Client, config: &StateProverConfig, ) -> Result<(), ProverError> { - for (provider, key, light_client_address) in once(( - config.l1_provider.clone(), - config.eth_signing_key.clone(), - config.light_client_address, - )) - .chain( - config - .alt_chains - .clone() - .into_iter() - .map(|c| (c.provider, c.signing_key, c.light_client_address)), - ) { - tracing::info!( - ?light_client_address, - "Start syncing light client state for provider: {}", - provider, - ); + let light_client_address = config.light_client_address; + let provider = config.provider.clone(); + let key = config.signing_key.clone(); - let bundle = fetch_latest_state(relay_server_client).await?; - tracing::info!("Bundle accumulated weight: {}", bundle.accumulated_weight); - tracing::info!("Latest HotShot block height: {}", bundle.state.block_height); - let old_state = - read_contract_state(provider.clone(), key.clone(), light_client_address).await?; - tracing::info!( - "Current HotShot block height on contract: {}", - old_state.block_height - ); - if old_state.block_height >= bundle.state.block_height { - tracing::info!("No update needed."); - return Ok(()); - } - tracing::debug!("Old state: {old_state:?}"); - tracing::debug!("New state: {:?}", bundle.state); + tracing::info!( + ?light_client_address, + "Start syncing light client state for provider: {}", + provider, + ); - let threshold = one_honest_threshold(st.total_stake(SnapshotVersion::LastEpochStart)?); - tracing::info!("Threshold before syncing state: {}", threshold); - let entries = st - .try_iter(SnapshotVersion::LastEpochStart) - .unwrap() - .map(|(_, stake_amount, state_key)| (state_key, stake_amount)) - .collect::>(); - let mut signer_bit_vec = vec![false; entries.len()]; - let mut signatures = vec![Default::default(); entries.len()]; - let mut accumulated_weight = U256::zero(); - entries.iter().enumerate().for_each(|(i, (key, stake))| { - if let Some(sig) = bundle.signatures.get(key) { - // Check if the signature is valid - let state_msg: [FieldType; 7] = (&bundle.state).into(); - if key.verify(&state_msg, sig, CS_ID_SCHNORR).is_ok() { - signer_bit_vec[i] = true; - signatures[i] = sig.clone(); - accumulated_weight += *stake; - } - } - }); + let bundle = fetch_latest_state(relay_server_client).await?; + tracing::info!("Bundle accumulated weight: {}", bundle.accumulated_weight); + tracing::info!("Latest HotShot block height: {}", bundle.state.block_height); + let old_state = + read_contract_state(provider.clone(), key.clone(), light_client_address).await?; + tracing::info!( + "Current HotShot block height on contract: {}", + old_state.block_height + ); + if old_state.block_height >= bundle.state.block_height { + tracing::info!("No update needed."); + return Ok(()); + } + tracing::debug!("Old state: {old_state:?}"); + tracing::debug!("New state: {:?}", bundle.state); - if accumulated_weight < threshold { - return Err(ProverError::InvalidState( - "The signers' total weight doesn't reach the threshold.".to_string(), - )); + let threshold = one_honest_threshold(st.total_stake(SnapshotVersion::LastEpochStart)?); + tracing::info!("Threshold before syncing state: {}", threshold); + let entries = st + .try_iter(SnapshotVersion::LastEpochStart) + .unwrap() + .map(|(_, stake_amount, state_key)| (state_key, stake_amount)) + .collect::>(); + let mut signer_bit_vec = vec![false; entries.len()]; + let mut signatures = vec![Default::default(); entries.len()]; + let mut accumulated_weight = U256::zero(); + entries.iter().enumerate().for_each(|(i, (key, stake))| { + if let Some(sig) = bundle.signatures.get(key) { + // Check if the signature is valid + let state_msg: [FieldType; 7] = (&bundle.state).into(); + if key.verify(&state_msg, sig, CS_ID_SCHNORR).is_ok() { + signer_bit_vec[i] = true; + signatures[i] = sig.clone(); + accumulated_weight += *stake; + } } + }); - tracing::info!("Collected latest state and signatures. Start generating SNARK proof."); - let proof_gen_start = Instant::now(); - let proving_key_clone = proving_key.clone(); - let stake_table_capacity = config.stake_table_capacity; - let (proof, public_input) = spawn_blocking(move || { - generate_state_update_proof::<_, _, _, _>( - &mut ark_std::rand::thread_rng(), - &proving_key_clone, - &entries, - signer_bit_vec, - signatures, - &bundle.state, - &threshold, - stake_table_capacity, - ) - }) - .await?; - let proof_gen_elapsed = Instant::now().signed_duration_since(proof_gen_start); - tracing::info!("Proof generation completed. Elapsed: {proof_gen_elapsed:.3}"); - - submit_state_and_proof(proof, public_input, provider, key, light_client_address).await?; - - tracing::info!("Successfully synced light client state."); + if accumulated_weight < threshold { + return Err(ProverError::InvalidState( + "The signers' total weight doesn't reach the threshold.".to_string(), + )); } - Ok(()) -} -pub struct ApiState(BTreeMap); + tracing::info!("Collected latest state and signatures. Start generating SNARK proof."); + let proof_gen_start = Instant::now(); + let proving_key_clone = proving_key.clone(); + let stake_table_capacity = config.stake_table_capacity; + let (proof, public_input) = spawn_blocking(move || { + generate_state_update_proof::<_, _, _, _>( + &mut ark_std::rand::thread_rng(), + &proving_key_clone, + &entries, + signer_bit_vec, + signatures, + &bundle.state, + &threshold, + stake_table_capacity, + ) + }) + .await?; + let proof_gen_elapsed = Instant::now().signed_duration_since(proof_gen_start); + tracing::info!("Proof generation completed. Elapsed: {proof_gen_elapsed:.3}"); -#[async_trait] -impl ReadState for ApiState { - type State = ApiState; - async fn read( - &self, - op: impl Send + for<'a> FnOnce(&'a Self::State) -> BoxFuture<'a, T> + 'async_trait, - ) -> T { - op(self).await - } -} + submit_state_and_proof(proof, public_input, provider, key, light_client_address).await?; -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct AltChainInfo { - pub chain_id: u64, - pub provider_url: Url, - pub light_client_address: Address, -} - -impl AltChainInfo { - pub fn new(url: Url, chain_id: u64, lc_addr: Address) -> Self { - Self { - provider_url: url, - chain_id, - light_client_address: lc_addr, - } - } + tracing::info!("Successfully synced light client state."); + Ok(()) } fn start_http_server( port: u16, - l1_light_client_addr: Address, - alt_chains: Vec, + light_client_address: Address, bind_version: Ver, ) -> io::Result<()> { - let state: BTreeMap = alt_chains - .into_iter() - .map(|a| (a.chain_id, (a.provider, a.light_client_address))) - .collect(); - - let mut app = tide_disco::App::<_, ServerError>::with_state(ApiState(state)); + let mut app = tide_disco::App::<_, ServerError>::with_state(()); let toml = toml::from_str::(include_str!("../api/prover-service.toml")) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; let mut api = Api::<_, ServerError, Ver>::new(toml) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; - api.get("getlightclientcontract", move |_, _: &ApiState| { - async move { Ok(l1_light_client_addr) }.boxed() + api.get("getlightclientcontract", move |_, _| { + async move { Ok(light_client_address) }.boxed() }) - .map_err(|err| io::Error::new(io::ErrorKind::Other, err))? - .get( - "getaltchainlightclientcontracts", - move |_, state: &ApiState| { - let response = state - .0 - .iter() - .map(|(k, v)| AltChainInfo { - chain_id: *k, - provider_url: v.0.clone(), - light_client_address: v.1, - }) - .collect::>(); - - { async move { Ok(response) } }.boxed() - }, - ) - .map_err(|err| io::Error::new(io::ErrorKind::Other, err))? - .get( - "getaltchainlightclientcontract", - move |req, state: &ApiState| { - { - async move { - let chain_id = req - .body_auto::(Ver::instance()) - .map_err(ServerError::from_request_error)?; - - let (_, addr) = state.0.get(&chain_id).ok_or_else(|| { - ServerError::catch_all( - StatusCode::INTERNAL_SERVER_ERROR, - "light client contract not found for chain id {chain_id}".to_string(), - ) - })?; - - Ok(*addr) - } - } - .boxed() - }, - ) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; - app.register_module("api", api) .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?; @@ -539,24 +439,14 @@ pub async fn run_prover_service_with_stake_table>, ) -> Result<()> { - let l1_lc_addr = config.light_client_address; - let alt_lc_addresses = config - .alt_chains - .iter() - .map(|c| (c.provider.clone(), c.light_client_address)) - .collect::>(); - - tracing::info!("L1 Light client address: {:?}", l1_lc_addr); - tracing::info!("Alt chain Light client addresses: {:?}", alt_lc_addresses); + tracing::info!("Light client address: {:?}", config.light_client_address); let relay_server_client = Arc::new(Client::::new(config.relay_server.clone())); // Start the HTTP server to get a functioning healthcheck before any heavy computations. if let Some(port) = config.port { - if let Err(err) = - start_http_server(port, l1_lc_addr, config.alt_chains.clone(), bind_version) - { + if let Err(err) = start_http_server(port, config.light_client_address, bind_version) { tracing::error!("Error starting http server: {}", err); } } @@ -784,9 +674,9 @@ mod test { impl StateProverConfig { /// update only L1 related info fn update_l1_info(&mut self, anvil: &AnvilInstance, light_client_address: Address) { - self.l1_provider = Url::parse(&anvil.endpoint()).unwrap(); + self.provider = Url::parse(&anvil.endpoint()).unwrap(); self.light_client_address = light_client_address; - self.eth_signing_key = anvil.keys()[0].clone().into(); + self.signing_key = anvil.keys()[0].clone().into(); } } // only for testing purposes @@ -796,10 +686,9 @@ mod test { relay_server: Url::parse("http://localhost").unwrap(), update_interval: Duration::default(), retry_interval: Duration::default(), - l1_provider: Url::parse("http://localhost").unwrap(), + provider: Url::parse("http://localhost").unwrap(), light_client_address: Address::default(), - eth_signing_key: SigningKey::random(&mut test_rng()), - alt_chains: Vec::new(), + signing_key: SigningKey::random(&mut test_rng()), sequencer_url: Url::parse("http://localhost").unwrap(), port: None, stake_table_capacity: 10, @@ -822,8 +711,8 @@ mod test { let mut config = StateProverConfig::default(); config.update_l1_info(&anvil, contract.address()); let state = super::read_contract_state( - config.l1_provider, - config.eth_signing_key, + config.provider, + config.signing_key, config.light_client_address, ) .await?; @@ -856,8 +745,8 @@ mod test { super::submit_state_and_proof( proof, pi, - config.l1_provider, - config.eth_signing_key, + config.provider, + config.signing_key, config.light_client_address, ) .await?; diff --git a/sequencer/api/espresso_dev_node.toml b/sequencer/api/espresso_dev_node.toml index 9d862dcf8d..2960781e2d 100644 --- a/sequencer/api/espresso_dev_node.toml +++ b/sequencer/api/espresso_dev_node.toml @@ -12,9 +12,16 @@ Returns ``` { "builder_url": string, - "prover_port": integer, + "l1_prover_port": integer, "l1_url": string, - "light_client_address:" address, + "l1_light_client_address": address, + "alt_chains": + [{ + "chain_id" : integer, + "provider_url": string, + "light_client_address": address + "prover_port" : integer + }] } ``` """ diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index 7683d4dd72..af2934ccb3 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -4,7 +4,7 @@ use async_std::task::spawn; use async_trait::async_trait; use clap::Parser; use contract_bindings::light_client_mock::LightClientMock; -use espresso_types::SeqTypes; +use espresso_types::{parse_duration, SeqTypes}; use ethers::{ middleware::{MiddlewareBuilder, SignerMiddleware}, providers::{Http, Middleware, Provider}, @@ -13,8 +13,7 @@ use ethers::{ }; use futures::{future::BoxFuture, stream::FuturesUnordered, FutureExt, StreamExt}; use hotshot_state_prover::service::{ - one_honest_threshold, run_prover_service_with_stake_table, AltChainConfig, AltChainInfo, - StateProverConfig, + one_honest_threshold, run_prover_service_with_stake_table, StateProverConfig, }; use hotshot_types::traits::{ node_implementation::NodeType, @@ -76,6 +75,24 @@ struct Args { #[arg(long, env = "ESPRESSO_DEPLOYER_ALT_MNEMONICS", num_args = 1.., value_delimiter = ',')] alt_mnemonics: Vec, + /// The frequency of updating the light client state, expressed in update interval + #[clap( long, value_parser = parse_duration, default_value = "20s", env = "ESPRESSO_STATE_PROVER_UPDATE_INTERVAL")] + update_interval: Duration, + + /// Interval between retries if a state update fails + #[clap(long , value_parser = parse_duration, default_value = "2s", env = "ESPRESSO_STATE_PROVER_RETRY_INTERVAL")] + retry_interval: Duration, + /// The frequency of updating the light client state for alt chains. + /// If there are fewer intervals provided than chains, the base update interval will be used. + + #[clap(long, value_parser = parse_duration, env = "ESPRESSO_STATE_PROVER_ALT_UPDATE_INTERVALS", num_args = 1.., value_delimiter = ',')] + alt_prover_update_intervals: Vec, + + /// Interval between retries if a state update fails for alt chains + /// If there are fewer intervals provided than chains, the base update interval will be used. + #[clap(long, value_parser = parse_duration, env = "ESPRESSO_STATE_PROVER_ALT_RETRY_INTERVALS", num_args = 1.., value_delimiter = ',')] + alt_prover_retry_intervals: Vec, + /// Alternate account indices generated by the mnemonics to use when deploying the contracts. If there are fewer indices provided than chains, the base ACCOUNT_INDEX will be used. #[clap( long, @@ -113,6 +130,14 @@ struct Args { logging: logging::Config, } +#[derive(Debug, Clone, Serialize, Deserialize)] +struct AltChainInfo { + pub chain_id: u64, + pub provider_url: Url, + pub light_client_address: Address, + pub prover_port: u16, +} + #[async_std::main] async fn main() -> anyhow::Result<()> { let cli_params = Args::parse(); @@ -131,6 +156,10 @@ async fn main() -> anyhow::Result<()> { dev_node_port, sql, logging, + update_interval, + retry_interval, + alt_prover_retry_intervals, + alt_prover_update_intervals, } = cli_params; logging.init(); @@ -172,31 +201,48 @@ async fn main() -> anyhow::Result<()> { .build(); let network = TestNetwork::new(config, ::Base::instance()).await; - + let st = network.cfg.stake_table(); + let total_stake = st.total_stake(SnapshotVersion::LastEpochStart).unwrap(); let config = network.cfg.hotshot_config(); + tracing::info!("Hotshot config {config:?}"); - let contracts = Contracts::new(); let light_client_genesis = network.light_client_genesis(); - let mut wallets = vec![]; + let contracts = Contracts::new(); let mut light_client_addresses = vec![]; + let mut prover_ports = Vec::new(); let mut mock_contracts = BTreeMap::new(); - + let mut handles = FuturesUnordered::new(); // deploy contract for L1 and each alt chain - for (url, mnemonic, account_index) in once((l1_url.clone(), mnemonic.clone(), account_index)) - .chain( - alt_chain_providers - .iter() - .zip(alt_mnemonics.into_iter().chain(std::iter::repeat(mnemonic))) - .zip( - alt_account_indices - .into_iter() - .chain(std::iter::repeat(account_index)), - ) - .map(|((u, m), i)| (u.clone(), m, i)), - ) - { + for (url, mnemonic, account_index, update_interval, retry_interval) in once(( + l1_url.clone(), + mnemonic.clone(), + account_index, + update_interval, + retry_interval, + )) + .chain( + alt_chain_providers + .iter() + .zip(alt_mnemonics.into_iter().chain(std::iter::repeat(mnemonic))) + .zip( + alt_account_indices + .into_iter() + .chain(std::iter::repeat(account_index)), + ) + .zip( + alt_prover_update_intervals + .into_iter() + .chain(std::iter::repeat(update_interval)), + ) + .zip( + alt_prover_retry_intervals + .into_iter() + .chain(std::iter::repeat(retry_interval)), + ) + .map(|((((url, mnc), idx), update), retry)| (url.clone(), mnc, idx, update, retry)), + ) { tracing::info!("deploying the contract for provider: {url:?}"); let contracts = deploy( @@ -233,13 +279,31 @@ async fn main() -> anyhow::Result<()> { ), ); light_client_addresses.push((chain_id, light_client_address)); - wallets.push(wallet.clone()); - } - let st = network.cfg.stake_table(); - let total_stake = st.total_stake(SnapshotVersion::LastEpochStart).unwrap(); + let prover_port = prover_port.unwrap_or_else(|| pick_unused_port().unwrap()); + + prover_ports.push(prover_port); + + let prover_config = StateProverConfig { + relay_server: relay_server_url.clone(), + update_interval, + retry_interval, + sequencer_url: "http://localhost".parse().unwrap(), + port: Some(prover_port), + stake_table_capacity: STAKE_TABLE_CAPACITY_FOR_TEST as usize, + provider: l1_url.clone(), + light_client_address, + signing_key: wallet.signer().clone(), + }; + + let prover_handle = spawn(run_prover_service_with_stake_table( + prover_config, + ::Base::instance(), + Arc::new(st.clone()), + )); + handles.push(prover_handle); + } - let mut handles = FuturesUnordered::new(); let relay_server_handle = spawn(async move { let _ = run_relay_server( None, @@ -255,65 +319,30 @@ async fn main() -> anyhow::Result<()> { }); handles.push(relay_server_handle); - let update_interval = Duration::from_secs(1); - let retry_interval = Duration::from_secs(1); - let prover_port = prover_port.unwrap_or_else(|| pick_unused_port().unwrap()); - - let mut signing_keys = wallets - .iter() - .map(|wallet| wallet.signer().clone()) - .collect::>(); - // we remove the first entry which is for L1 light client contract // so only alt chain light client addresses are left let (_, l1_lc) = light_client_addresses.remove(0); - + let l1_prover_port = prover_ports.remove(0); // we remove the first entry which is for primary L1 chain signing key // so only alt signing keys are left - let l1_signing_key = signing_keys.remove(0); - - let alt_chains = alt_chain_providers - .iter() - .zip(light_client_addresses.clone()) - .zip(signing_keys) - .map( - |((provider, (chain_id, light_client_address)), signing_key)| AltChainConfig { - provider: provider.clone(), - chain_id, - light_client_address, - signing_key, - }, - ) - .collect(); - - let prover_config = StateProverConfig { - relay_server: relay_server_url.clone(), - update_interval, - retry_interval, - sequencer_url: "http://localhost".parse().unwrap(), - port: Some(prover_port), - stake_table_capacity: STAKE_TABLE_CAPACITY_FOR_TEST as usize, - l1_provider: l1_url.clone(), - light_client_address: l1_lc, - eth_signing_key: l1_signing_key, - alt_chains, - }; - let prover_handle = spawn(run_prover_service_with_stake_table( - prover_config, - ::Base::instance(), - Arc::new(st), - )); - handles.push(prover_handle); let dev_info = DevInfo { builder_url: network.cfg.hotshot_config().builder_urls[0].clone(), - prover_port, + l1_prover_port, l1_url, l1_light_client_address: l1_lc, alt_chains: alt_chain_providers .into_iter() .zip(light_client_addresses) - .map(|(prov, (id, addr))| AltChainInfo::new(prov, id, addr)) + .zip(prover_ports) + .map( + |((provider_url, (chain_id, light_client_address)), prover_port)| AltChainInfo { + chain_id, + provider_url, + light_client_address, + prover_port, + }, + ) .collect(), }; @@ -449,7 +478,7 @@ async fn run_dev_node_server, @@ -471,6 +500,7 @@ struct SetHotshotUpReqBody { mod tests { use std::{process::Child, sync::Arc, time::Duration}; + use crate::AltChainInfo; use async_std::{stream::StreamExt, task::sleep}; use committable::{Commitment, Committable}; use contract_bindings::light_client::LightClient; @@ -482,7 +512,6 @@ mod tests { availability::{BlockQueryData, TransactionQueryData, VidCommonQueryData}, data_source::sql::testing::TmpDb, }; - use hotshot_state_prover::service::AltChainInfo; use hotshot_types::traits::node_implementation::NodeType; use jf_merkle_tree::MerkleTreeScheme; use portpicker::pick_unused_port; @@ -495,10 +524,10 @@ mod tests { use url::Url; use vbs::version::StaticVersion; - use crate::{DevInfo, SetHotshotDownReqBody}; + use crate::{DevInfo, SetHotshotDownReqBody, SetHotshotUpReqBody}; const TEST_MNEMONIC: &str = "test test test test test test test test test test test junk"; - const NUM_ALT_CHAIN_PROVIDERS: usize = 2; + const NUM_ALT_CHAIN_PROVIDERS: usize = 1; pub struct BackgroundProcess(Child); @@ -923,6 +952,7 @@ mod tests { provider_url, light_client_address, chain_id, + .. } in dev_info.alt_chains { tracing::info!("checking hotshot commitment for {chain_id}"); @@ -939,6 +969,46 @@ mod tests { tracing::info!("waiting for commitment"); sleep(Duration::from_secs(3)).await; } + + let height = signer.get_block_number().await.unwrap().as_u64(); + dev_node_client + .post::<()>("api/set-hotshot-down") + .body_json(&SetHotshotDownReqBody { + chain_id: Some(chain_id), + height: height - 1, + }) + .unwrap() + .send() + .await + .unwrap(); + + while !light_client + .lag_over_escape_hatch_threshold(U256::from(height), U256::from(0)) + .call() + .await + .unwrap_or(false) + { + tracing::info!("waiting for setting hotshot down"); + sleep(Duration::from_secs(3)).await; + } + + dev_node_client + .post::<()>("api/set-hotshot-up") + .body_json(&SetHotshotUpReqBody { chain_id }) + .unwrap() + .send() + .await + .unwrap(); + + while light_client + .lag_over_escape_hatch_threshold(U256::from(height), U256::from(0)) + .call() + .await + .unwrap_or(true) + { + tracing::info!("waiting for setting hotshot up"); + sleep(Duration::from_secs(3)).await; + } } } From 596c6dbdfbd94244670b58969b37e3744c778163 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Fri, 9 Aug 2024 13:20:11 +0500 Subject: [PATCH 13/27] remove commented code --- hotshot-state-prover/src/service.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/hotshot-state-prover/src/service.rs b/hotshot-state-prover/src/service.rs index eac1d42d61..b0c5d549e1 100644 --- a/hotshot-state-prover/src/service.rs +++ b/hotshot-state-prover/src/service.rs @@ -71,9 +71,6 @@ pub struct StateProverConfig { pub light_client_address: Address, /// Transaction signing key for Ethereum or any other layer 2 pub signing_key: SigningKey, - // /// An optional list of alt chain configs including the light client address deployed. - // /// These alt chains can be used alongside the primary L1 chain - // pub alt_chains: Vec, /// URL of a node that is currently providing the HotShot config. /// This is used to initialize the stake table. pub sequencer_url: Url, From c1d670952289fe91655da2aacb4df9c613fc75b7 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Fri, 9 Aug 2024 14:02:38 +0500 Subject: [PATCH 14/27] fix provider url --- sequencer/src/bin/espresso-dev-node.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index af2934ccb3..a99d2d137c 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -291,7 +291,7 @@ async fn main() -> anyhow::Result<()> { sequencer_url: "http://localhost".parse().unwrap(), port: Some(prover_port), stake_table_capacity: STAKE_TABLE_CAPACITY_FOR_TEST as usize, - provider: l1_url.clone(), + provider: url.clone(), light_client_address, signing_key: wallet.signer().clone(), }; From 4300f4295e76db4677096150268024a187449e97 Mon Sep 17 00:00:00 2001 From: Jarred Parr Date: Fri, 9 Aug 2024 11:11:15 -0600 Subject: [PATCH 15/27] fix build again --- Cargo.lock | 303 +++++++++++++++++++++++++++--------- Cargo.toml | 24 +-- builder/src/permissioned.rs | 2 +- sequencer/src/lib.rs | 2 +- sequencer/src/main.rs | 2 +- 5 files changed, 243 insertions(+), 90 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 397fd9b780..f168f53f02 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1843,7 +1843,7 @@ dependencies = [ "ark-serialize", "bitvec", "derivative", - "derive_more", + "derive_more 0.99.18", "funty", "hex", "serde", @@ -2530,6 +2530,26 @@ dependencies = [ "syn 2.0.72", ] +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "diff" version = "0.1.13" @@ -2913,7 +2933,7 @@ dependencies = [ "cld", "committable", "contract-bindings", - "derive_more", + "derive_more 0.99.18", "ethers", "fluent-asserter", "futures", @@ -4042,8 +4062,8 @@ dependencies = [ [[package]] name = "hotshot" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "anyhow", "async-broadcast", @@ -4061,7 +4081,7 @@ dependencies = [ "committable", "custom_debug 0.5.1", "dashmap", - "derive_more", + "derive_more 1.0.0", "either", "ethereum-types", "futures", @@ -4090,12 +4110,12 @@ dependencies = [ [[package]] name = "hotshot-builder-api" version = "0.1.7" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "async-trait", "clap", "committable", - "derive_more", + "derive_more 1.0.0", "futures", "hotshot-types", "serde", @@ -4109,7 +4129,7 @@ dependencies = [ [[package]] name = "hotshot-builder-core" version = "0.1.39" -source = "git+https://github.com/EspressoSystems/hotshot-builder-core?tag=rc-0.1.40#47e2b40d6af477c7ebcc6783c3de6ef129dd9fc8" +source = "git+https://github.com/EspressoSystems/hotshot-builder-core?branch=hotshot/rc-0.5.69#aa2558037970e7487f21b8690e8cf5b565de60f9" dependencies = [ "anyhow", "async-broadcast", @@ -4161,7 +4181,7 @@ dependencies = [ [[package]] name = "hotshot-events-service" version = "0.1.38" -source = "git+https://github.com/EspressoSystems/hotshot-events-service.git?tag=0.1.39#728372842d5247f2b4c65febbc1bda32919e07c9" +source = "git+https://github.com/EspressoSystems/hotshot-events-service.git?branch=hotshot/rc-0.5.69#a973799471a5a8175bf622758f71ac2710eed596" dependencies = [ "async-broadcast", "async-compatibility-layer", @@ -4170,7 +4190,7 @@ dependencies = [ "async-trait", "clap", "derivative", - "derive_more", + "derive_more 0.99.18", "either", "futures", "hotshot-types", @@ -4186,8 +4206,8 @@ dependencies = [ [[package]] name = "hotshot-example-types" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "anyhow", "async-broadcast", @@ -4219,8 +4239,8 @@ dependencies = [ [[package]] name = "hotshot-fakeapi" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "anyhow", "async-lock 2.8.0", @@ -4238,8 +4258,8 @@ dependencies = [ [[package]] name = "hotshot-macros" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "derive_builder", "proc-macro2", @@ -4249,8 +4269,8 @@ dependencies = [ [[package]] name = "hotshot-orchestrator" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "anyhow", "async-compatibility-layer", @@ -4280,7 +4300,7 @@ dependencies = [ [[package]] name = "hotshot-query-service" version = "0.1.51" -source = "git+https://github.com/EspressoSystems/hotshot-query-service?tag=rc-0.1.51#7519a044d09fec929c4123e0c0ef2a67528149c9" +source = "git+https://github.com/EspressoSystems/hotshot-query-service?branch=hotshot/rc-0.5.69#09cfbc8f3bd60263ab1a6f7bc21762487970c264" dependencies = [ "anyhow", "ark-serialize", @@ -4295,7 +4315,7 @@ dependencies = [ "committable", "custom_debug 0.6.1", "derivative", - "derive_more", + "derive_more 0.99.18", "either", "espresso-macros", "futures", @@ -4335,8 +4355,8 @@ dependencies = [ [[package]] name = "hotshot-stake-table" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "ark-bn254", "ark-ed-on-bn254", @@ -4399,8 +4419,8 @@ dependencies = [ [[package]] name = "hotshot-task" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "anyhow", "async-broadcast", @@ -4414,8 +4434,8 @@ dependencies = [ [[package]] name = "hotshot-task-impls" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "anyhow", "async-broadcast", @@ -4451,8 +4471,8 @@ dependencies = [ [[package]] name = "hotshot-testing" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "anyhow", "async-broadcast", @@ -4498,7 +4518,7 @@ dependencies = [ [[package]] name = "hotshot-types" version = "0.1.11" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "anyhow", "ark-bn254", @@ -5493,17 +5513,17 @@ dependencies = [ "libp2p-allow-block-list", "libp2p-autonat", "libp2p-connection-limits", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-dns", - "libp2p-gossipsub", - "libp2p-identify", + "libp2p-gossipsub 0.46.1", + "libp2p-identify 0.44.2", "libp2p-identity", - "libp2p-kad", + "libp2p-kad 0.45.3", "libp2p-mdns", "libp2p-metrics", "libp2p-quic", "libp2p-request-response", - "libp2p-swarm", + "libp2p-swarm 0.44.2", "libp2p-tcp", "libp2p-upnp", "multiaddr", @@ -5518,9 +5538,9 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "107b238b794cb83ab53b74ad5dcf7cca3200899b72fe662840cfb52f5b0a32e6" dependencies = [ - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", - "libp2p-swarm", + "libp2p-swarm 0.44.2", "void", ] @@ -5535,10 +5555,10 @@ dependencies = [ "futures", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", "libp2p-request-response", - "libp2p-swarm", + "libp2p-swarm 0.44.2", "quick-protobuf", "quick-protobuf-codec 0.2.0", "rand 0.8.5", @@ -5551,9 +5571,9 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7cd50a78ccfada14de94cbacd3ce4b0138157f376870f13d3a8422cd075b4fd" dependencies = [ - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", - "libp2p-swarm", + "libp2p-swarm 0.44.2", "void", ] @@ -5586,6 +5606,34 @@ dependencies = [ "web-time", ] +[[package]] +name = "libp2p-core" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a61f26c83ed111104cd820fe9bc3aaabbac5f1652a1d213ed6e900b7918a1298" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "libp2p-identity", + "multiaddr", + "multihash", + "multistream-select", + "once_cell", + "parking_lot", + "pin-project", + "quick-protobuf", + "rand 0.8.5", + "rw-stream-sink", + "smallvec", + "thiserror", + "tracing", + "unsigned-varint 0.8.0", + "void", + "web-time", +] + [[package]] name = "libp2p-dns" version = "0.41.1" @@ -5596,7 +5644,7 @@ dependencies = [ "async-trait", "futures", "hickory-resolver", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", "parking_lot", "smallvec", @@ -5620,9 +5668,9 @@ dependencies = [ "getrandom 0.2.15", "hex_fmt", "instant", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", - "libp2p-swarm", + "libp2p-swarm 0.44.2", "prometheus-client", "quick-protobuf", "quick-protobuf-codec 0.3.1", @@ -5635,6 +5683,37 @@ dependencies = [ "void", ] +[[package]] +name = "libp2p-gossipsub" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4e830fdf24ac8c444c12415903174d506e1e077fbe3875c404a78c5935a8543" +dependencies = [ + "asynchronous-codec 0.7.0", + "base64 0.22.1", + "byteorder", + "bytes 1.7.1", + "either", + "fnv", + "futures", + "futures-ticker", + "getrandom 0.2.15", + "hex_fmt", + "libp2p-core 0.42.0", + "libp2p-identity", + "libp2p-swarm 0.45.0", + "prometheus-client", + "quick-protobuf", + "quick-protobuf-codec 0.3.1", + "rand 0.8.5", + "regex", + "sha2 0.10.8", + "smallvec", + "tracing", + "void", + "web-time", +] + [[package]] name = "libp2p-identify" version = "0.44.2" @@ -5646,9 +5725,32 @@ dependencies = [ "futures", "futures-bounded", "futures-timer", - "libp2p-core", + "libp2p-core 0.41.3", + "libp2p-identity", + "libp2p-swarm 0.44.2", + "lru 0.12.4", + "quick-protobuf", + "quick-protobuf-codec 0.3.1", + "smallvec", + "thiserror", + "tracing", + "void", +] + +[[package]] +name = "libp2p-identify" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1711b004a273be4f30202778856368683bd9a83c4c7dcc8f848847606831a4e3" +dependencies = [ + "asynchronous-codec 0.7.0", + "either", + "futures", + "futures-bounded", + "futures-timer", + "libp2p-core 0.42.0", "libp2p-identity", - "libp2p-swarm", + "libp2p-swarm 0.45.0", "lru 0.12.4", "quick-protobuf", "quick-protobuf-codec 0.3.1", @@ -5694,9 +5796,9 @@ dependencies = [ "futures-bounded", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", - "libp2p-swarm", + "libp2p-swarm 0.44.2", "quick-protobuf", "quick-protobuf-codec 0.3.1", "rand 0.8.5", @@ -5709,6 +5811,35 @@ dependencies = [ "void", ] +[[package]] +name = "libp2p-kad" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3fd4d149f0539e608d178b7cd1cfb0c1c6a8dc367eda2bc1cc81a28a1552161" +dependencies = [ + "arrayvec", + "asynchronous-codec 0.7.0", + "bytes 1.7.1", + "either", + "fnv", + "futures", + "futures-bounded", + "futures-timer", + "libp2p-core 0.42.0", + "libp2p-identity", + "libp2p-swarm 0.45.0", + "quick-protobuf", + "quick-protobuf-codec 0.3.1", + "rand 0.8.5", + "sha2 0.10.8", + "smallvec", + "thiserror", + "tracing", + "uint", + "void", + "web-time", +] + [[package]] name = "libp2p-mdns" version = "0.45.1" @@ -5721,9 +5852,9 @@ dependencies = [ "futures", "hickory-proto", "if-watch", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", - "libp2p-swarm", + "libp2p-swarm 0.44.2", "rand 0.8.5", "smallvec", "socket2 0.5.7", @@ -5734,26 +5865,26 @@ dependencies = [ [[package]] name = "libp2p-metrics" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdac91ae4f291046a3b2660c039a2830c931f84df2ee227989af92f7692d3357" +checksum = "a70afa7692c81ee03e89c40d1e8638d634f18baef6aeeea30fd245edfae4d3fd" dependencies = [ "futures", - "instant", - "libp2p-core", - "libp2p-gossipsub", - "libp2p-identify", + "libp2p-core 0.42.0", + "libp2p-gossipsub 0.47.0", + "libp2p-identify 0.45.0", "libp2p-identity", - "libp2p-kad", - "libp2p-swarm", + "libp2p-kad 0.46.0", + "libp2p-swarm 0.45.0", "pin-project", "prometheus-client", + "web-time", ] [[package]] name = "libp2p-networking" -version = "0.5.67" -source = "git+https://github.com/EspressoSystems/hotshot?tag=rc-0.5.70#88b22d90606ee22ece66857b9e70363d92082146" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" dependencies = [ "anyhow", "async-compatibility-layer", @@ -5794,7 +5925,7 @@ dependencies = [ "futures", "futures-timer", "if-watch", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", "libp2p-tls", "parking_lot", @@ -5820,9 +5951,9 @@ dependencies = [ "futures-bounded", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", - "libp2p-swarm", + "libp2p-swarm 0.44.2", "rand 0.8.5", "serde", "smallvec", @@ -5842,7 +5973,7 @@ dependencies = [ "futures", "futures-timer", "instant", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", "libp2p-swarm-derive", "lru 0.12.4", @@ -5855,6 +5986,28 @@ dependencies = [ "void", ] +[[package]] +name = "libp2p-swarm" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b931eb2f00da515cec0914ab08a3d4c3694f29bc0e92e9ac66b3eaed5d354a5b" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "libp2p-core 0.42.0", + "libp2p-identity", + "lru 0.12.4", + "multistream-select", + "once_cell", + "rand 0.8.5", + "smallvec", + "tracing", + "void", + "web-time", +] + [[package]] name = "libp2p-swarm-derive" version = "0.34.2" @@ -5878,7 +6031,7 @@ dependencies = [ "futures-timer", "if-watch", "libc", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", "socket2 0.5.7", "tokio", @@ -5893,7 +6046,7 @@ checksum = "72b7b831e55ce2aa6c354e6861a85fdd4dd0a2b97d5e276fabac0e4810a71776" dependencies = [ "futures", "futures-rustls", - "libp2p-core", + "libp2p-core 0.41.3", "libp2p-identity", "rcgen 0.11.3", "ring 0.17.8", @@ -5913,8 +6066,8 @@ dependencies = [ "futures", "futures-timer", "igd-next", - "libp2p-core", - "libp2p-swarm", + "libp2p-core 0.41.3", + "libp2p-swarm 0.44.2", "tokio", "tracing", "void", @@ -6149,7 +6302,7 @@ dependencies = [ [[package]] name = "marketplace-builder-core" version = "0.0.2" -source = "git+https://github.com/EspressoSystems/marketplace-builder-core?tag=rc-0.0.3#88a5cdb64bec7ffe02c711dd7132cb727a84cd19" +source = "git+https://github.com/EspressoSystems/marketplace-builder-core?branch=hotshot/rc-0.5.69#b32138ff2b70fca32f4669d99e405da317fd941b" dependencies = [ "anyhow", "async-broadcast", @@ -8401,7 +8554,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" dependencies = [ "cfg-if", - "derive_more", + "derive_more 0.99.18", "parity-scale-codec", "scale-info-derive", ] @@ -8571,7 +8724,7 @@ dependencies = [ "contract-bindings", "csv", "derivative", - "derive_more", + "derive_more 0.99.18", "dotenvy", "escargot", "espresso-macros", @@ -8637,7 +8790,7 @@ dependencies = [ "clap", "committable", "contract-bindings", - "derive_more", + "derive_more 0.99.18", "ethers", "futures", "hotshot-contract-adapter", @@ -9798,7 +9951,7 @@ dependencies = [ "clap", "config", "derivative", - "derive_more", + "derive_more 0.99.18", "dirs", "edit-distance", "futures", @@ -10533,9 +10686,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.10.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" dependencies = [ "base64 0.22.1", "flate2", @@ -10643,7 +10796,7 @@ checksum = "6a9d83afb293d109ae418271619046cd9d87d63ba83e473e25a5e36101edc453" dependencies = [ "anyhow", "bincode", - "derive_more", + "derive_more 0.99.18", "serde", "serde_with", ] diff --git a/Cargo.toml b/Cargo.toml index ee8f68127c..07f12e7c1a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,22 +52,22 @@ dotenvy = "0.15" ethers = { version = "2.0", features = ["solc"] } futures = "0.3" -hotshot = { git = "https://github.com/EspressoSystems/hotshot", tag = "rc-0.5.70" } +hotshot = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } # Hotshot imports -hotshot-builder-api = { git = "https://github.com/EspressoSystems/HotShot.git", tag = "rc-0.5.70" } -hotshot-builder-core = { git = "https://github.com/EspressoSystems/hotshot-builder-core", tag = "rc-0.1.40" } -marketplace-builder-core = { git = "https://github.com/EspressoSystems/marketplace-builder-core", tag = "rc-0.0.3" } -hotshot-events-service = { git = "https://github.com/EspressoSystems/hotshot-events-service.git", tag = "0.1.39" } -hotshot-orchestrator = { git = "https://github.com/EspressoSystems/hotshot", tag = "rc-0.5.70" } -hotshot-query-service = { git = "https://github.com/EspressoSystems/hotshot-query-service", tag = "rc-0.1.51" } -hotshot-stake-table = { git = "https://github.com/EspressoSystems/hotshot", tag = "rc-0.5.70" } +hotshot-builder-api = { git = "https://github.com/EspressoSystems/HotShot.git", branch = "bump/0.5.69" } +hotshot-builder-core = { git = "https://github.com/EspressoSystems/hotshot-builder-core", branch = "hotshot/rc-0.5.69" } +marketplace-builder-core = { git = "https://github.com/EspressoSystems/marketplace-builder-core", branch = "hotshot/rc-0.5.69" } +hotshot-events-service = { git = "https://github.com/EspressoSystems/hotshot-events-service.git", branch = "hotshot/rc-0.5.69" } +hotshot-orchestrator = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-query-service = { git = "https://github.com/EspressoSystems/hotshot-query-service", branch = "hotshot/rc-0.5.69" } +hotshot-stake-table = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } hotshot-state-prover = { version = "0.1.0", path = "hotshot-state-prover" } -hotshot-task = { git = "https://github.com/EspressoSystems/hotshot", tag = "rc-0.5.70" } -hotshot-testing = { git = "https://github.com/EspressoSystems/hotshot", tag = "rc-0.5.70" } -hotshot-types = { git = "https://github.com/EspressoSystems/hotshot", tag = "rc-0.5.70" } +hotshot-task = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-testing = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-types = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } hotshot-contract-adapter = { version = "0.1.0", path = "contracts/rust/adapter" } # Temporary, used to pull in the mock auction results provider -hotshot-example-types = { git = "https://github.com/EspressoSystems/hotshot", tag = "rc-0.5.70" } +hotshot-example-types = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } # Push CDN imports cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", features = [ diff --git a/builder/src/permissioned.rs b/builder/src/permissioned.rs index 3a31080464..76ade2dba3 100644 --- a/builder/src/permissioned.rs +++ b/builder/src/permissioned.rs @@ -391,7 +391,7 @@ pub async fn init_hotshot< auction_results_provider: Arc::new(SolverAuctionResultsProvider( Url::from_str("https://some.solver").unwrap(), )), - generic_builder_url: Url::from_str("https://some.builder").unwrap(), + fallback_builder_url: Url::from_str("https://some.builder").unwrap(), }, ) .await diff --git a/sequencer/src/lib.rs b/sequencer/src/lib.rs index 6ecc597815..aa35f4ad35 100644 --- a/sequencer/src/lib.rs +++ b/sequencer/src/lib.rs @@ -767,7 +767,7 @@ pub mod testing { auction_results_provider: Arc::new(SolverAuctionResultsProvider( Url::from_str("https://some.solver").unwrap(), )), - generic_builder_url: Url::from_str("https://some.builder").unwrap(), + fallback_builder_url: Url::from_str("https://some.builder").unwrap(), }, ) .await diff --git a/sequencer/src/main.rs b/sequencer/src/main.rs index 9d9c82f258..705bfcf4c1 100644 --- a/sequencer/src/main.rs +++ b/sequencer/src/main.rs @@ -102,7 +102,7 @@ where auction_results_provider: Arc::new(SolverAuctionResultsProvider( opt.auction_results_solver_url, )), - generic_builder_url: opt.generic_builder_url, + fallback_builder_url: opt.generic_builder_url, }; // Initialize HotShot. If the user requested the HTTP module, we must initialize the handle in From f9979877605bc8ff2ce5c044d19da416178d07ed Mon Sep 17 00:00:00 2001 From: Artemii Gerasimovich Date: Fri, 9 Aug 2024 21:27:32 +0200 Subject: [PATCH 16/27] Fix builder-related things --- sequencer/src/context.rs | 1 - sequencer/src/lib.rs | 7 +------ sequencer/src/main.rs | 2 +- sequencer/src/options.rs | 4 ++-- types/src/v0/impls/header.rs | 14 +++++++------- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/sequencer/src/context.rs b/sequencer/src/context.rs index 99f8b145d0..0964c25ed5 100644 --- a/sequencer/src/context.rs +++ b/sequencer/src/context.rs @@ -88,7 +88,6 @@ impl, P: SequencerPersistence, Ver: StaticVersionTyp metrics: &dyn Metrics, stake_table_capacity: u64, public_api_url: Option, - generic_builder_url: Url, _: Ver, marketplace_config: MarketplaceConfig>, ) -> anyhow::Result { diff --git a/sequencer/src/lib.rs b/sequencer/src/lib.rs index aa35f4ad35..2a3374edfb 100644 --- a/sequencer/src/lib.rs +++ b/sequencer/src/lib.rs @@ -33,10 +33,7 @@ pub mod state; #[cfg(feature = "libp2p")] use std::time::Duration; -use std::{ - collections::BTreeMap, fmt::Debug, marker::PhantomData, net::SocketAddr, str::FromStr, - sync::Arc, -}; +use std::{collections::BTreeMap, fmt::Debug, marker::PhantomData, net::SocketAddr, sync::Arc}; use derivative::Derivative; use espresso_types::v0::traits::{PersistenceOptions, SequencerPersistence}; @@ -411,7 +408,6 @@ pub async fn init_node( metrics, genesis.stake_table.capacity, network_params.public_api_url, - Url::from_str("http://localhost").unwrap(), bind_version, marketplace_config, ) @@ -761,7 +757,6 @@ pub mod testing { metrics, stake_table_capacity, None, // The public API URL - Url::from_str("http://localhost").unwrap(), bind_version, MarketplaceConfig::> { auction_results_provider: Arc::new(SolverAuctionResultsProvider( diff --git a/sequencer/src/main.rs b/sequencer/src/main.rs index 705bfcf4c1..0d927f7fbc 100644 --- a/sequencer/src/main.rs +++ b/sequencer/src/main.rs @@ -102,7 +102,7 @@ where auction_results_provider: Arc::new(SolverAuctionResultsProvider( opt.auction_results_solver_url, )), - fallback_builder_url: opt.generic_builder_url, + fallback_builder_url: opt.fallback_builder_url, }; // Initialize HotShot. If the user requested the HTTP module, we must initialize the handle in diff --git a/sequencer/src/options.rs b/sequencer/src/options.rs index 9218286cda..94c98b9b54 100644 --- a/sequencer/src/options.rs +++ b/sequencer/src/options.rs @@ -116,11 +116,11 @@ pub struct Options { /// URL of generic builder #[clap( long, - env = "ESPRESSO_GENERIC_BUILDER_URL", + env = "ESPRESSO_FALLBACK_BUILDER_URL", default_value = "http://localhost:31004" )] #[derivative(Debug(format_with = "Display::fmt"))] - pub generic_builder_url: Url, + pub fallback_builder_url: Url, /// Path to TOML file containing genesis state. #[clap( diff --git a/types/src/v0/impls/header.rs b/types/src/v0/impls/header.rs index c197946515..2a34201c90 100644 --- a/types/src/v0/impls/header.rs +++ b/types/src/v0/impls/header.rs @@ -343,7 +343,7 @@ impl Header { #[allow(clippy::too_many_arguments)] fn from_info( payload_commitment: VidCommitment, - builder_commitment: Option, + builder_commitment: BuilderCommitment, ns_table: NsTable, parent_leaf: &Leaf, mut l1: L1Snapshot, @@ -470,7 +470,7 @@ impl Header { l1_head: l1.head, l1_finalized: l1.finalized, payload_commitment, - builder_commitment: builder_commitment.unwrap(), + builder_commitment, ns_table, block_merkle_tree_root, fee_merkle_tree_root, @@ -486,7 +486,7 @@ impl Header { l1_head: l1.head, l1_finalized: l1.finalized, payload_commitment, - builder_commitment: builder_commitment.unwrap(), + builder_commitment, ns_table, block_merkle_tree_root, fee_merkle_tree_root, @@ -500,7 +500,7 @@ impl Header { l1_head: l1.head, l1_finalized: l1.finalized, payload_commitment, - builder_commitment: builder_commitment.unwrap(), + builder_commitment, ns_table, block_merkle_tree_root, fee_merkle_tree_root, @@ -836,7 +836,7 @@ impl BlockHeader for Header { Ok(Self::from_info( payload_commitment, - None, + builder_commitment, metadata, parent_leaf, l1_snapshot, @@ -952,7 +952,7 @@ impl BlockHeader for Header { Ok(Self::from_info( payload_commitment, - Some(builder_commitment), + builder_commitment, metadata, parent_leaf, l1_snapshot, @@ -1154,7 +1154,7 @@ mod test_headers { let header = Header::from_info( genesis.header.payload_commitment(), - Some(genesis.header.builder_commitment().clone()), + genesis.header.builder_commitment().clone(), genesis.ns_table, &parent_leaf, L1Snapshot { From 820a7e1ded10272c3c1b7cd80c9fc3b2fa2ee6b5 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Sat, 10 Aug 2024 08:43:45 +0500 Subject: [PATCH 17/27] call calculate auction results functions for solver api --- marketplace-solver/src/api.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/marketplace-solver/src/api.rs b/marketplace-solver/src/api.rs index f3c84267fb..337dfad621 100644 --- a/marketplace-solver/src/api.rs +++ b/marketplace-solver/src/api.rs @@ -8,6 +8,7 @@ use espresso_types::{ NamespaceId, }; use futures::FutureExt; +use hotshot_types::{data::ViewNumber, traits::node_implementation::ConsensusTime}; use serde::{Deserialize, Serialize}; use thiserror::Error; use tide_disco::{ @@ -101,11 +102,24 @@ where api.post("submit_bid", |_req, _state| { async move { Ok("Bid Submitted") }.boxed() })? - .get("auction_results", |_req, _state| { - async move { Ok("Auction Results Gotten") }.boxed() + .get("auction_results", |req, state| { + async move { + let view_num: u64 = req.integer_param("view_number")?; + state + .calculate_auction_results_permissionless(ViewNumber::new(view_num)) + .await + } + .boxed() })? - .get("auction_results_permissioned", |_req, _state| { - async move { Ok("Permissioned Auction Results Gotten") }.boxed() + .get("auction_results_permissioned", |req, state| { + async move { + let view_num: u64 = req.integer_param("view_number")?; + let signature = req.blob_param("signature")?; + state + .calculate_auction_results_permissioned(ViewNumber::new(view_num), signature) + .await + } + .boxed() })? .post("register_rollup", |req, state| { async move { From 3e5f628c5759bc64cda53085c368c16566fb1633 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Mon, 12 Aug 2024 15:27:04 +0500 Subject: [PATCH 18/27] reject transactions with size > max block size --- sequencer/src/api.rs | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/sequencer/src/api.rs b/sequencer/src/api.rs index 4afad8c104..fc37919438 100644 --- a/sequencer/src/api.rs +++ b/sequencer/src/api.rs @@ -168,12 +168,36 @@ impl, Ver: StaticVersionType + 'static, P: Sequencer SubmitDataSource for ApiState { async fn submit(&self, tx: Transaction) -> anyhow::Result<()> { - self.consensus() - .await - .read() + let handle = self.consensus().await; + + let consensus_read_lock = handle.read().await; + + // Fetch full chain config from the validated state, if present. + // This is necessary because we support chain config upgrades, + // so the updated chain config is found in the validated state. + let cf = consensus_read_lock + .decided_state() .await - .submit_transaction(tx) - .await?; + .chain_config + .resolve(); + + // Use the chain config from the validated state if available, + // otherwise, use the node state's chain config + // The node state's chain config is the node's base version chain config + let cf = match cf { + Some(cf) => cf, + None => self.node_state().await.chain_config, + }; + + let max_block_size: u64 = cf.max_block_size.into(); + let txn_size = tx.payload().len() as u64; + + // reject transaction bigger than block size + if txn_size > max_block_size { + bail!("transaction size ({txn_size}) is greater than max_block_size ({max_block_size})") + } + + consensus_read_lock.submit_transaction(tx).await?; Ok(()) } } From f7d3f9ff184d4c1994d5a80d7bf612b49dc1c22e Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Mon, 12 Aug 2024 16:26:52 +0500 Subject: [PATCH 19/27] explicitly drop process_internal_client_message_handle --- node-metrics/src/service/client_state/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/node-metrics/src/service/client_state/mod.rs b/node-metrics/src/service/client_state/mod.rs index 53092c13a0..12172b9a61 100644 --- a/node-metrics/src/service/client_state/mod.rs +++ b/node-metrics/src/service/client_state/mod.rs @@ -1308,7 +1308,7 @@ pub mod tests { let (internal_client_message_sender, internal_client_message_receiver) = mpsc::channel(1); let (server_message_sender_1, mut server_message_receiver_1) = mpsc::channel(1); let (server_message_sender_2, mut server_message_receiver_2) = mpsc::channel(1); - let _process_internal_client_message_handle = InternalClientMessageProcessingTask::new( + let process_internal_client_message_handle = InternalClientMessageProcessingTask::new( internal_client_message_receiver, data_state, client_thread_state, @@ -1359,6 +1359,8 @@ pub mod tests { voters_1, voters_2 ]))), ); + + drop(process_internal_client_message_handle) } #[async_std::test] From c78bddd3ec533354ee1c505219e8f30f8db8b424 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Mon, 12 Aug 2024 16:51:12 +0500 Subject: [PATCH 20/27] fix dev node test for tx > max_block_size --- sequencer/src/bin/espresso-dev-node.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index fcbfc17db5..7498fa4ae7 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -473,20 +473,16 @@ mod tests { .await; } - // Now the `submit/submit` endpoint allows the extremely large transactions to be in the mempool. - // And we need to check whether this extremely large transaction blocks the building process. - // Currently the default value of `max_block_size` is 30720, and this transaction exceeds the limit. - // TODO: https://github.com/EspressoSystems/espresso-sequencer/issues/1777 { + // transactions with size larger than max_block_size result in an error let extremely_large_tx = Transaction::new(100_u32.into(), vec![0; 50120]); - let extremely_large_hash: Commitment = api_client - .post("submit/submit") + api_client + .post::>("submit/submit") .body_json(&extremely_large_tx) .unwrap() .send() .await - .unwrap(); - assert_eq!(extremely_large_tx.commit(), extremely_large_hash); + .unwrap_err(); // Now we send a small transaction to make sure this transaction can be included in a hotshot block. let tx = Transaction::new(100_u32.into(), vec![0; 3]); From c35113df0d13ec3f4c1a878f065bb09c5723dfcf Mon Sep 17 00:00:00 2001 From: tbro <48967308+tbro@users.noreply.github.com> Date: Mon, 12 Aug 2024 23:47:59 +0300 Subject: [PATCH 21/27] Fix solver client (#1853) Fix the Url path Co-authored-by: Artemii Gerasimovich --- types/src/v0/impls/auction.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/types/src/v0/impls/auction.rs b/types/src/v0/impls/auction.rs index aa7d93d940..ac6ae11b13 100644 --- a/types/src/v0/impls/auction.rs +++ b/types/src/v0/impls/auction.rs @@ -4,6 +4,7 @@ use crate::{ v0_3::{BidTx, BidTxBody, FullNetworkTx, SolverAuctionResults}, FeeAccount, FeeAmount, FeeError, FeeInfo, NamespaceId, SeqTypes, }; +use anyhow::Context; use async_trait::async_trait; use committable::{Commitment, Committable}; use hotshot_types::{ @@ -291,10 +292,14 @@ impl AuctionResultsProvider for SolverAuctionResultsProv &self, view_number: TYPES::Time, ) -> anyhow::Result { - let resp = SurfClient::new(self.0.clone()) - .get::(&format!("/v0/api/auction_results/{}", *view_number)) - .send() - .await?; + let resp = SurfClient::new( + self.0 + .join("marketplace-solver/") + .context("Malformed solver URL")?, + ) + .get::(&format!("auction_results/{}", *view_number)) + .send() + .await?; Ok(resp) } } From cbccb5f59140a2d5aedcb21e60a4863b69e18d83 Mon Sep 17 00:00:00 2001 From: Abdul Basit Date: Tue, 13 Aug 2024 14:50:12 +0500 Subject: [PATCH 22/27] revert dropping lock explicitly for latest_voters_snapshot --- node-metrics/src/service/client_state/mod.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/node-metrics/src/service/client_state/mod.rs b/node-metrics/src/service/client_state/mod.rs index 12172b9a61..53092c13a0 100644 --- a/node-metrics/src/service/client_state/mod.rs +++ b/node-metrics/src/service/client_state/mod.rs @@ -1308,7 +1308,7 @@ pub mod tests { let (internal_client_message_sender, internal_client_message_receiver) = mpsc::channel(1); let (server_message_sender_1, mut server_message_receiver_1) = mpsc::channel(1); let (server_message_sender_2, mut server_message_receiver_2) = mpsc::channel(1); - let process_internal_client_message_handle = InternalClientMessageProcessingTask::new( + let _process_internal_client_message_handle = InternalClientMessageProcessingTask::new( internal_client_message_receiver, data_state, client_thread_state, @@ -1359,8 +1359,6 @@ pub mod tests { voters_1, voters_2 ]))), ); - - drop(process_internal_client_message_handle) } #[async_std::test] From 702fa234ec667569471f0f709f563e45481e44a5 Mon Sep 17 00:00:00 2001 From: Abdul Basit <45506001+imabdulbasit@users.noreply.github.com> Date: Tue, 13 Aug 2024 16:25:21 +0500 Subject: [PATCH 23/27] update dev-node.md for multiple providers support (#1857) * update dev-node.md for multiple providers support * update json response * line breaks * lint --- doc/espresso-dev-node.md | 66 +++++++++++++++++++------- sequencer/src/bin/espresso-dev-node.rs | 58 +++++++++++----------- 2 files changed, 76 insertions(+), 48 deletions(-) diff --git a/doc/espresso-dev-node.md b/doc/espresso-dev-node.md index 8dd0090272..84a9f7d49c 100644 --- a/doc/espresso-dev-node.md +++ b/doc/espresso-dev-node.md @@ -1,7 +1,9 @@ # Espresso Dev Node Espresso dev node is a node specifically designed for development and testing. It includes various nodes required to run -a complete Espresso network, such as `builder`, `sequencer`, etc. Developers can use it for development and testing. +a complete Espresso network, such as `builder`, `sequencer`, `state_prover` etc. Additionally, it supports deploying +light client contracts on alternative chains and running a separate prover for each which can be useful for testing +involving L3s. Developers can use dev node for development and testing. ## Download @@ -13,16 +15,23 @@ docker run ghcr.io/espressosystems/espresso-sequencer/espresso-dev-node:main ## Parameters -| Name | Type | Environment Variable | Default Value | Description | -| ------------------------------- | --------------- | ------------------------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| `rpc_url` | `Option` | `ESPRESSO_SEQUENCER_L1_PROVIDER` | Automatically launched Avil node if not provided. | The JSON-RPC endpoint of the L1. If not provided, an Avil node will be launched automatically. | -| `mnemonic` | `String` | `ESPRESSO_SEQUENCER_ETH_MNEMONIC` | `test test test test test test test test test test test junk` | Mnemonic for an L1 wallet. This wallet is used to deploy the contracts, so the account indicated by `ACCOUNT_INDEX` must be funded with ETH. | -| `account_index` | `u32` | `ESPRESSO_DEPLOYER_ACCOUNT_INDEX` | `0` | Account index of the L1 wallet generated from `MNEMONIC`. Used when deploying contracts. | -| `sequencer_api_port` | `u16` | `ESPRESSO_SEQUENCER_API_PORT` | Required | Port that the HTTP API will use. | -| `sequencer_api_max_connections` | `Option` | `ESPRESSO_SEQUENCER_MAX_CONNECTIONS` | None | Maximum concurrent connections allowed by the HTTP API server. | -| `builder_port` | `Option` | `ESPRESSO_BUILDER_PORT` | An unused port | Port for connecting to the builder. | -| `prover_port` | `Option` | `ESPRESSO_PROVER_PORT` | An unused port | Port for connecting to the prover. If this is not provided, an available port will be selected. | -| `dev_node_port` | `u16` | `ESPRESSO_DEV_NODE_PORT` | `20000` | Port for the dev node. This is used to provide tools and information to facilitate developers debugging. | +| Name | Type | Environment Variable | Default Value | Description | +| ------------------------------- | --------------- | -------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `rpc_url` | `Option` | `ESPRESSO_SEQUENCER_L1_PROVIDER` | Automatically launched Avil node if not provided. | The JSON-RPC endpoint of the L1. If not provided, an Avil node will be launched automatically. | +| `mnemonic` | `String` | `ESPRESSO_SEQUENCER_ETH_MNEMONIC` | `test test test test test test test test test test test junk` | Mnemonic for an L1 wallet. This wallet is used to deploy the contracts, so the account indicated by`ACCOUNT_INDEX` must be funded with ETH. | +| `account_index` | `u32` | `ESPRESSO_DEPLOYER_ACCOUNT_INDEX` | `0` | Account index of the L1 wallet generated from`MNEMONIC`. Used when deploying contracts. | +| `sequencer_api_port` | `u16` | `ESPRESSO_SEQUENCER_API_PORT` | Required | Port that the HTTP API will use. | +| `sequencer_api_max_connections` | `Option` | `ESPRESSO_SEQUENCER_MAX_CONNECTIONS` | None | Maximum concurrent connections allowed by the HTTP API server. | +| `builder_port` | `Option` | `ESPRESSO_BUILDER_PORT` | An unused port | Port for connecting to the builder. | +| `prover_port` | `Option` | `ESPRESSO_PROVER_PORT` | An unused port | Port for connecting to the prover. If this is not provided, an available port will be selected. | +| `dev_node_port` | `u16` | `ESPRESSO_DEV_NODE_PORT` | `20000` | Port for the dev node. This is used to provide tools and information to facilitate developers debugging. | +| `update_interval` | `Duration` | `ESPRESSO_STATE_PROVER_UPDATE_INTERVAL` | `20s` | The frequency of updating the light client state | +| `retry_interval` | `Duration` | `ESPRESSO_STATE_PROVER_RETRY_INTERVAL` | `2s` | Interval between retries if a state update fails. | +| `alt_chain_providers` | `Vec` | `ESPRESSO_DEPLOYER_ALT_CHAIN_PROVIDERS` | `None` | Optional list of URLs representing alternate chains where the dev node will deploy Light client contracts and submit Light contract state updates. Useful for test environments involving L3s. | +| `alt_mnemonics` | `Vec` | `ESPRESSO_DEPLOYER_ALT_MNEMONICS` | `None` | Optional list of mnemonics for the alternate chains. If there are fewer mnemonics provided than chains, the base `MNEMONIC` will be used. | +| `alt_account_indices` | `Vec` | `ESPRESSO_SEQUENCER_DEPLOYER_ALT_INDICES` | `None` | Optional list of account indices to use when deploying the contracts. If there are fewer indices provided than chains, the base ACCOUNT_INDEX will be used. | +| `alt_prover_update_intervals` | `Vec` | `ESPRESSO_STATE_PROVER_ALT_UPDATE_INTERVALS` | `None` | The frequency of updating the light client state for alternate chains. If there are fewer provided than chains, the base update_interval will be used. | +| `alt_prover_retry_intervals` | `Vec` | `ESPRESSO_STATE_PROVER_ALT_RETRY_INTERVALS` | `None` | Interval between retries if a state update fails for alternate chains. If there are fewer intervals provided than chains, the base retry_interval will be used. | ## APIs @@ -42,9 +51,23 @@ An example response is like this: ```json { "builder_url": "http://localhost:41003/", - "prover_port": 23156, + "l1_prover_port": 23156, "l1_url": "http://localhost:8545/", - "light_client_address": "0xb075b82c7a23e0994df4793422a1f03dbcf9136f" + "l1_light_client_address": "0xb075b82c7a23e0994df4793422a1f03dbcf9136f", + "alt_chains": [ + { + "chain_id": 9, + "provider_url": "http://localhost:8546/", + "light_client_address": "0xa1b2c3d4e5f678901234567890abcdef12345678", + "prover_port": 23157 + }, + { + "chain_id": 10, + "provider_url": "http://localhost:8547/", + "light_client_address": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef", + "prover_port": 23158 + } + ] } ``` @@ -53,8 +76,8 @@ An example response is like this: This endpoint simulates the effect of a liveness failure of the hotshot consensus protocol in the Light Client smart contract. -By calling this, the L1 height in the light contract will be frozen, and rollups will detect the HotShot failure. This -is intended for testing rollups' functionalities when HotShot is down. +By calling this, the height in the light contract will be frozen, and rollups will detect the HotShot failure. This is +intended for testing rollups' functionalities when HotShot is down. An example of a `curl` command: @@ -66,9 +89,10 @@ curl -X POST "http://localhost:20000/api/set-hotshot-down" \ Parameters -| Name | Type | Description | -| ------ | ------- | ---------------------------------------- | -| height | integer | The L1 height from which hotshot is down | +| Name | Type | Required | Description | +| -------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------- | +| chain_id | integer | No | chain id for which the height needs to be frozen. If not provided, the base L1 light client contract is used. | +| height | integer | Yes | The height from which hotshot is down | ### POST /api/set-hotshot-up @@ -84,3 +108,9 @@ An example of a `curl` command: curl -X POST "http://localhost:20000/api/set-hotshot-up" \ -H "Content-Type: application/json" ``` + +Parameter + +| Name | Type | Required | Description | +| -------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------- | +| chain_id | integer | No | chain id for which the height needs to be unfrozen. If not provided, the base L1 light client contract will be used. | diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index 24b08acacf..5737ea7c7f 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -40,14 +40,14 @@ use vbs::version::StaticVersionType; #[derive(Clone, Debug, Parser)] struct Args { - /// A JSON-RPC endpoint for the L1 to deploy to. If this is not provided, an Avil node will be - /// launched automatically. + /// A JSON-RPC endpoint for the L1 to deploy to. + /// If this is not provided, an Avil node will be launched automatically. #[clap(short, long, env = "ESPRESSO_SEQUENCER_L1_PROVIDER")] rpc_url: Option, /// Mnemonic for an L1 wallet. /// - /// This wallet is used to deploy the contracts, so the account indicated by ACCOUNT_INDEX must - /// be funded with with ETH. + /// This wallet is used to deploy the contracts, + /// so the account indicated by ACCOUNT_INDEX must be funded with with ETH. #[clap( long, name = "MNEMONIC", @@ -64,27 +64,33 @@ struct Args { )] account_index: u32, - /// Optional list of URLs representing alternate chains where the dev node will deploy LC contracts - /// and submit LC state updates. + /// The frequency of updating the light client state, expressed in update interval + #[clap( long, value_parser = parse_duration, default_value = "20s", env = "ESPRESSO_STATE_PROVER_UPDATE_INTERVAL")] + update_interval: Duration, + + /// Interval between retries if a state update fails + #[clap(long , value_parser = parse_duration, default_value = "2s", env = "ESPRESSO_STATE_PROVER_RETRY_INTERVAL")] + retry_interval: Duration, + + /// Optional list of URLs representing alternate chains + /// where the dev node will deploy LC contracts and submit LC state updates. /// /// Useful for test environments involving L3s. #[arg(long, env = "ESPRESSO_DEPLOYER_ALT_CHAIN_PROVIDERS", num_args = 1.., value_delimiter = ',')] alt_chain_providers: Vec, - /// Optional list of mnemonics for the alternate chains. If there are fewer mnemonics provided than chains, the base MNEMONIC will be used. + /// Optional list of mnemonics for the alternate chains. + /// If there are fewer mnemonics provided than chains, the base MNEMONIC will be used. #[arg(long, env = "ESPRESSO_DEPLOYER_ALT_MNEMONICS", num_args = 1.., value_delimiter = ',')] alt_mnemonics: Vec, - /// The frequency of updating the light client state, expressed in update interval - #[clap( long, value_parser = parse_duration, default_value = "20s", env = "ESPRESSO_STATE_PROVER_UPDATE_INTERVAL")] - update_interval: Duration, + /// Alternate account indices generated by the mnemonics to use when deploying the contracts. + /// If there are fewer indices provided than chains, the base ACCOUNT_INDEX will be used. + #[clap(long, env = "ESPRESSO_SEQUENCER_DEPLOYER_ALT_INDICES")] + alt_account_indices: Vec, - /// Interval between retries if a state update fails - #[clap(long , value_parser = parse_duration, default_value = "2s", env = "ESPRESSO_STATE_PROVER_RETRY_INTERVAL")] - retry_interval: Duration, /// The frequency of updating the light client state for alt chains. /// If there are fewer intervals provided than chains, the base update interval will be used. - #[clap(long, value_parser = parse_duration, env = "ESPRESSO_STATE_PROVER_ALT_UPDATE_INTERVALS", num_args = 1.., value_delimiter = ',')] alt_prover_update_intervals: Vec, @@ -93,14 +99,6 @@ struct Args { #[clap(long, value_parser = parse_duration, env = "ESPRESSO_STATE_PROVER_ALT_RETRY_INTERVALS", num_args = 1.., value_delimiter = ',')] alt_prover_retry_intervals: Vec, - /// Alternate account indices generated by the mnemonics to use when deploying the contracts. If there are fewer indices provided than chains, the base ACCOUNT_INDEX will be used. - #[clap( - long, - env = "ESPRESSO_SEQUENCER_DEPLOYER_ALT_INDICES", - default_value = "0" - )] - alt_account_indices: Vec, - /// Port that the HTTP API will use. #[clap(long, env = "ESPRESSO_SEQUENCER_API_PORT")] sequencer_api_port: u16, @@ -130,14 +128,6 @@ struct Args { logging: logging::Config, } -#[derive(Debug, Clone, Serialize, Deserialize)] -struct AltChainInfo { - pub chain_id: u64, - pub provider_url: Url, - pub light_client_address: Address, - pub prover_port: u16, -} - #[async_std::main] async fn main() -> anyhow::Result<()> { let cli_params = Args::parse(); @@ -484,6 +474,14 @@ struct DevInfo { pub alt_chains: Vec, } +#[derive(Debug, Clone, Serialize, Deserialize)] +struct AltChainInfo { + pub chain_id: u64, + pub provider_url: Url, + pub light_client_address: Address, + pub prover_port: u16, +} + #[derive(Debug, Serialize, Deserialize)] struct SetHotshotDownReqBody { // return l1 light client address if not provided From 7329a8f05f64b6f056ad3268ec7ba3c35ba503a1 Mon Sep 17 00:00:00 2001 From: Jarred Parr Date: Tue, 13 Aug 2024 08:58:12 -0600 Subject: [PATCH 24/27] hotshot --- Cargo.lock | 475 +++++++++++++++++++++++++++++++++++++++++++++-------- Cargo.toml | 16 +- 2 files changed, 417 insertions(+), 74 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b3df12314e..c27703d51f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1306,15 +1306,15 @@ dependencies = [ "espresso-types", "ethers", "futures", - "hotshot", - "hotshot-builder-api", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "hotshot-builder-core", "hotshot-events-service", - "hotshot-example-types", - "hotshot-orchestrator", + "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "hotshot-stake-table", "hotshot-state-prover", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "jf-merkle-tree", "jf-signature", "libp2p", @@ -2937,11 +2937,11 @@ dependencies = [ "ethers", "fluent-asserter", "futures", - "hotshot", - "hotshot-orchestrator", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "hotshot-query-service", - "hotshot-testing", - "hotshot-types", + "hotshot-testing 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "itertools 0.12.1", "jf-merkle-tree", "jf-utils", @@ -4060,6 +4060,53 @@ dependencies = [ "winapi", ] +[[package]] +name = "hotshot" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "anyhow", + "async-broadcast", + "async-compatibility-layer", + "async-lock 2.8.0", + "async-std", + "async-trait", + "bimap", + "bincode", + "blake3", + "cdn-broker 0.4.0 (git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.4)", + "cdn-client", + "cdn-marshal 0.4.0 (git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.4)", + "chrono", + "committable", + "custom_debug 0.5.1", + "dashmap", + "derive_more 1.0.0", + "either", + "ethereum-types", + "futures", + "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "jf-signature", + "libp2p-identity", + "libp2p-networking 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "lru 0.12.4", + "num_enum", + "portpicker", + "rand 0.8.5", + "serde", + "sha2 0.10.8", + "snafu 0.8.4", + "surf-disco", + "time 0.3.36", + "tokio", + "tracing", + "url", + "vbs", +] + [[package]] name = "hotshot" version = "0.5.69" @@ -4085,13 +4132,13 @@ dependencies = [ "either", "ethereum-types", "futures", - "hotshot-orchestrator", - "hotshot-task", - "hotshot-task-impls", - "hotshot-types", + "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "jf-signature", "libp2p-identity", - "libp2p-networking", + "libp2p-networking 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "lru 0.12.4", "num_enum", "portpicker", @@ -4107,6 +4154,25 @@ dependencies = [ "vbs", ] +[[package]] +name = "hotshot-builder-api" +version = "0.1.7" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "async-trait", + "clap", + "committable", + "derive_more 1.0.0", + "futures", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "serde", + "snafu 0.8.4", + "tagged-base64", + "tide-disco", + "toml", + "vbs", +] + [[package]] name = "hotshot-builder-api" version = "0.1.7" @@ -4117,7 +4183,7 @@ dependencies = [ "committable", "derive_more 1.0.0", "futures", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "serde", "snafu 0.8.4", "tagged-base64", @@ -4142,10 +4208,10 @@ dependencies = [ "derivative", "futures", "hex", - "hotshot", - "hotshot-builder-api", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "hotshot-events-service", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "lru 0.12.4", "serde", "sha2 0.10.8", @@ -4170,7 +4236,7 @@ dependencies = [ "contract-bindings", "diff-test-bn254", "ethers", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "jf-pcs", "jf-plonk", "jf-utils", @@ -4193,7 +4259,7 @@ dependencies = [ "derive_more 0.99.18", "either", "futures", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "rand 0.8.5", "serde", "snafu 0.8.4", @@ -4204,6 +4270,39 @@ dependencies = [ "vbs", ] +[[package]] +name = "hotshot-example-types" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "anyhow", + "async-broadcast", + "async-compatibility-layer", + "async-lock 2.8.0", + "async-std", + "async-trait", + "bitvec", + "committable", + "either", + "ethereum-types", + "futures", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "rand 0.8.5", + "reqwest 0.12.5", + "serde", + "sha2 0.10.8", + "sha3", + "snafu 0.8.4", + "time 0.3.36", + "tokio", + "tracing", + "url", + "vbs", +] + [[package]] name = "hotshot-example-types" version = "0.5.69" @@ -4220,10 +4319,10 @@ dependencies = [ "either", "ethereum-types", "futures", - "hotshot", - "hotshot-task", - "hotshot-task-impls", - "hotshot-types", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "rand 0.8.5", "reqwest 0.12.5", "serde", @@ -4237,6 +4336,25 @@ dependencies = [ "vbs", ] +[[package]] +name = "hotshot-fakeapi" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "anyhow", + "async-lock 2.8.0", + "async-trait", + "futures", + "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "rand 0.8.5", + "serde", + "tide-disco", + "toml", + "tracing", + "vbs", +] + [[package]] name = "hotshot-fakeapi" version = "0.5.69" @@ -4246,8 +4364,8 @@ dependencies = [ "async-lock 2.8.0", "async-trait", "futures", - "hotshot-example-types", - "hotshot-types", + "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "rand 0.8.5", "serde", "tide-disco", @@ -4256,6 +4374,17 @@ dependencies = [ "vbs", ] +[[package]] +name = "hotshot-macros" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "derive_builder", + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "hotshot-macros" version = "0.5.69" @@ -4267,6 +4396,36 @@ dependencies = [ "syn 2.0.72", ] +[[package]] +name = "hotshot-orchestrator" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "anyhow", + "async-compatibility-layer", + "async-lock 2.8.0", + "async-std", + "bincode", + "blake3", + "clap", + "csv", + "futures", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "libp2p", + "multiaddr", + "serde", + "serde-inline-default", + "serde_json", + "surf-disco", + "thiserror", + "tide-disco", + "tokio", + "toml", + "tracing", + "vbs", + "vec1", +] + [[package]] name = "hotshot-orchestrator" version = "0.5.69" @@ -4281,7 +4440,7 @@ dependencies = [ "clap", "csv", "futures", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "libp2p", "multiaddr", "serde", @@ -4319,10 +4478,10 @@ dependencies = [ "either", "espresso-macros", "futures", - "hotshot", - "hotshot-example-types", - "hotshot-testing", - "hotshot-types", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-testing 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "include_dir", "itertools 0.12.1", "jf-merkle-tree", @@ -4356,7 +4515,7 @@ dependencies = [ [[package]] name = "hotshot-stake-table" version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" dependencies = [ "ark-bn254", "ark-ed-on-bn254", @@ -4365,7 +4524,7 @@ dependencies = [ "ark-std", "digest 0.10.7", "ethereum-types", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "jf-crhf", "jf-rescue", "jf-signature", @@ -4397,7 +4556,7 @@ dependencies = [ "futures", "hotshot-contract-adapter", "hotshot-stake-table", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "itertools 0.12.1", "jf-crhf", "jf-pcs", @@ -4418,6 +4577,21 @@ dependencies = [ "vbs", ] +[[package]] +name = "hotshot-task" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "anyhow", + "async-broadcast", + "async-compatibility-layer", + "async-std", + "async-trait", + "futures", + "tokio", + "tracing", +] + [[package]] name = "hotshot-task" version = "0.5.69" @@ -4433,6 +4607,43 @@ dependencies = [ "tracing", ] +[[package]] +name = "hotshot-task-impls" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "anyhow", + "async-broadcast", + "async-compatibility-layer", + "async-lock 2.8.0", + "async-std", + "async-trait", + "bincode", + "bitvec", + "cdn-proto 0.4.0 (git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.4)", + "chrono", + "committable", + "either", + "futures", + "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "jf-signature", + "jf-vid", + "rand 0.8.5", + "serde", + "sha2 0.10.8", + "snafu 0.8.4", + "surf-disco", + "tagged-base64", + "time 0.3.36", + "tokio", + "tracing", + "url", + "vbs", + "vec1", +] + [[package]] name = "hotshot-task-impls" version = "0.5.69" @@ -4451,9 +4662,9 @@ dependencies = [ "committable", "either", "futures", - "hotshot-builder-api", - "hotshot-task", - "hotshot-types", + "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "jf-signature", "jf-vid", "rand 0.8.5", @@ -4470,6 +4681,52 @@ dependencies = [ "vec1", ] +[[package]] +name = "hotshot-testing" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "anyhow", + "async-broadcast", + "async-compatibility-layer", + "async-lock 2.8.0", + "async-std", + "async-trait", + "automod", + "bitvec", + "committable", + "either", + "ethereum-types", + "futures", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-fakeapi 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-macros 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "itertools 0.13.0", + "jf-signature", + "jf-vid", + "lru 0.12.4", + "portpicker", + "rand 0.8.5", + "reqwest 0.12.5", + "serde", + "sha2 0.10.8", + "sha3", + "snafu 0.8.4", + "tagged-base64", + "tide-disco", + "tokio", + "tracing", + "url", + "vbs", + "vec1", +] + [[package]] name = "hotshot-testing" version = "0.5.69" @@ -4487,15 +4744,15 @@ dependencies = [ "either", "ethereum-types", "futures", - "hotshot", - "hotshot-builder-api", - "hotshot-example-types", - "hotshot-fakeapi", - "hotshot-macros", - "hotshot-orchestrator", - "hotshot-task", - "hotshot-task-impls", - "hotshot-types", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-fakeapi 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-macros 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "itertools 0.13.0", "jf-signature", "jf-vid", @@ -4516,6 +4773,59 @@ dependencies = [ "vec1", ] +[[package]] +name = "hotshot-types" +version = "0.1.11" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ed-on-bn254", + "ark-ff", + "ark-serialize", + "ark-srs", + "ark-std", + "async-compatibility-layer", + "async-lock 2.8.0", + "async-std", + "async-trait", + "bincode", + "bitvec", + "blake3", + "cdn-proto 0.4.0 (git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.4)", + "committable", + "custom_debug 0.5.1", + "derivative", + "digest 0.10.7", + "displaydoc", + "dyn-clone 1.0.17 (git+https://github.com/dtolnay/dyn-clone?tag=1.0.17)", + "either", + "espresso-systems-common 0.4.1", + "ethereum-types", + "futures", + "generic-array", + "jf-pcs", + "jf-signature", + "jf-utils", + "jf-vid", + "lazy_static", + "memoize", + "rand 0.8.5", + "rand_chacha 0.3.1", + "reqwest 0.12.5", + "serde", + "sha2 0.10.8", + "snafu 0.8.4", + "tagged-base64", + "time 0.3.36", + "tokio", + "tracing", + "typenum", + "url", + "vbs", + "vec1", +] + [[package]] name = "hotshot-types" version = "0.1.11" @@ -5882,6 +6192,39 @@ dependencies = [ "web-time", ] +[[package]] +name = "libp2p-networking" +version = "0.5.69" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.69#b3796d6abea494780f6220845d729cb186a11f6a" +dependencies = [ + "anyhow", + "async-compatibility-layer", + "async-lock 2.8.0", + "async-std", + "async-trait", + "bincode", + "blake3", + "custom_debug 0.5.1", + "derive_builder", + "either", + "futures", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "lazy_static", + "libp2p", + "libp2p-identity", + "libp2p-swarm-derive", + "pin-project", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_json", + "snafu 0.8.4", + "tokio", + "tokio-stream", + "tracing", + "void", +] + [[package]] name = "libp2p-networking" version = "0.5.69" @@ -5898,7 +6241,7 @@ dependencies = [ "derive_builder", "either", "futures", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "lazy_static", "libp2p", "libp2p-identity", @@ -6269,15 +6612,15 @@ dependencies = [ "espresso-types", "ethers", "futures", - "hotshot", - "hotshot-builder-api", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "hotshot-events-service", - "hotshot-example-types", - "hotshot-orchestrator", + "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "hotshot-query-service", "hotshot-stake-table", "hotshot-state-prover", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "jf-merkle-tree", "jf-signature", "libp2p", @@ -6316,11 +6659,11 @@ dependencies = [ "derivative", "futures", "hex", - "hotshot", - "hotshot-builder-api", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "hotshot-events-service", - "hotshot-task-impls", - "hotshot-types", + "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", "lru 0.12.4", "multimap", "serde", @@ -6351,10 +6694,10 @@ dependencies = [ "committable", "espresso-types", "futures", - "hotshot", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "hotshot-events-service", "hotshot-query-service", - "hotshot-types", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "jf-signature", "portpicker", "rand 0.8.5", @@ -6725,11 +7068,11 @@ dependencies = [ "clap", "espresso-types", "futures", - "hotshot", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "hotshot-query-service", "hotshot-stake-table", - "hotshot-testing", - "hotshot-types", + "hotshot-testing 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "prometheus-parse", "reqwest 0.12.5", "serde", @@ -8732,16 +9075,16 @@ dependencies = [ "espresso-types", "ethers", "futures", - "hotshot", + "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "hotshot-contract-adapter", "hotshot-events-service", - "hotshot-example-types", - "hotshot-orchestrator", + "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "hotshot-query-service", "hotshot-stake-table", "hotshot-state-prover", - "hotshot-testing", - "hotshot-types", + "hotshot-testing 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", "include_dir", "itertools 0.12.1", "jf-crhf", diff --git a/Cargo.toml b/Cargo.toml index 07f12e7c1a..27215600a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,22 +52,22 @@ dotenvy = "0.15" ethers = { version = "2.0", features = ["solc"] } futures = "0.3" -hotshot = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } # Hotshot imports -hotshot-builder-api = { git = "https://github.com/EspressoSystems/HotShot.git", branch = "bump/0.5.69" } +hotshot-builder-api = { git = "https://github.com/EspressoSystems/HotShot.git", tag = "0.5.69" } hotshot-builder-core = { git = "https://github.com/EspressoSystems/hotshot-builder-core", branch = "hotshot/rc-0.5.69" } marketplace-builder-core = { git = "https://github.com/EspressoSystems/marketplace-builder-core", branch = "hotshot/rc-0.5.69" } hotshot-events-service = { git = "https://github.com/EspressoSystems/hotshot-events-service.git", branch = "hotshot/rc-0.5.69" } -hotshot-orchestrator = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-orchestrator = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } hotshot-query-service = { git = "https://github.com/EspressoSystems/hotshot-query-service", branch = "hotshot/rc-0.5.69" } -hotshot-stake-table = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-stake-table = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } hotshot-state-prover = { version = "0.1.0", path = "hotshot-state-prover" } -hotshot-task = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } -hotshot-testing = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } -hotshot-types = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-task = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } +hotshot-testing = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } +hotshot-types = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } hotshot-contract-adapter = { version = "0.1.0", path = "contracts/rust/adapter" } # Temporary, used to pull in the mock auction results provider -hotshot-example-types = { git = "https://github.com/EspressoSystems/hotshot", branch = "bump/0.5.69" } +hotshot-example-types = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } # Push CDN imports cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", features = [ From e6ff905edb6b620a4ec8e5a03bb6be2dedec65f4 Mon Sep 17 00:00:00 2001 From: Jarred Parr Date: Tue, 13 Aug 2024 09:01:07 -0600 Subject: [PATCH 25/27] bump versions to stable --- Cargo.lock | 481 ++++++++--------------------------------------------- Cargo.toml | 9 +- 2 files changed, 73 insertions(+), 417 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c27703d51f..015645ec14 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1306,15 +1306,15 @@ dependencies = [ "espresso-types", "ethers", "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot", + "hotshot-builder-api", "hotshot-builder-core", "hotshot-events-service", - "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-example-types", + "hotshot-orchestrator", "hotshot-stake-table", "hotshot-state-prover", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types", "jf-merkle-tree", "jf-signature", "libp2p", @@ -2937,11 +2937,11 @@ dependencies = [ "ethers", "fluent-asserter", "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot", + "hotshot-orchestrator", "hotshot-query-service", - "hotshot-testing 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-testing", + "hotshot-types", "itertools 0.12.1", "jf-merkle-tree", "jf-utils", @@ -4085,60 +4085,13 @@ dependencies = [ "either", "ethereum-types", "futures", - "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-orchestrator", + "hotshot-task", + "hotshot-task-impls", + "hotshot-types", "jf-signature", "libp2p-identity", - "libp2p-networking 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "lru 0.12.4", - "num_enum", - "portpicker", - "rand 0.8.5", - "serde", - "sha2 0.10.8", - "snafu 0.8.4", - "surf-disco", - "time 0.3.36", - "tokio", - "tracing", - "url", - "vbs", -] - -[[package]] -name = "hotshot" -version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "anyhow", - "async-broadcast", - "async-compatibility-layer", - "async-lock 2.8.0", - "async-std", - "async-trait", - "bimap", - "bincode", - "blake3", - "cdn-broker 0.4.0 (git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.4)", - "cdn-client", - "cdn-marshal 0.4.0 (git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.4)", - "chrono", - "committable", - "custom_debug 0.5.1", - "dashmap", - "derive_more 1.0.0", - "either", - "ethereum-types", - "futures", - "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "jf-signature", - "libp2p-identity", - "libp2p-networking 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "libp2p-networking", "lru 0.12.4", "num_enum", "portpicker", @@ -4164,26 +4117,7 @@ dependencies = [ "committable", "derive_more 1.0.0", "futures", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "serde", - "snafu 0.8.4", - "tagged-base64", - "tide-disco", - "toml", - "vbs", -] - -[[package]] -name = "hotshot-builder-api" -version = "0.1.7" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "async-trait", - "clap", - "committable", - "derive_more 1.0.0", - "futures", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types", "serde", "snafu 0.8.4", "tagged-base64", @@ -4195,7 +4129,7 @@ dependencies = [ [[package]] name = "hotshot-builder-core" version = "0.1.39" -source = "git+https://github.com/EspressoSystems/hotshot-builder-core?branch=hotshot/rc-0.5.69#aa2558037970e7487f21b8690e8cf5b565de60f9" +source = "git+https://github.com/EspressoSystems/hotshot-builder-core?tag=0.1.40#a052a71980f2b2adac9a32bdf10028a220a1e748" dependencies = [ "anyhow", "async-broadcast", @@ -4208,10 +4142,10 @@ dependencies = [ "derivative", "futures", "hex", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot", + "hotshot-builder-api", "hotshot-events-service", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types", "lru 0.12.4", "serde", "sha2 0.10.8", @@ -4236,7 +4170,7 @@ dependencies = [ "contract-bindings", "diff-test-bn254", "ethers", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types", "jf-pcs", "jf-plonk", "jf-utils", @@ -4247,7 +4181,7 @@ dependencies = [ [[package]] name = "hotshot-events-service" version = "0.1.38" -source = "git+https://github.com/EspressoSystems/hotshot-events-service.git?branch=hotshot/rc-0.5.69#a973799471a5a8175bf622758f71ac2710eed596" +source = "git+https://github.com/EspressoSystems/hotshot-events-service.git?tag=0.1.40#9ed690db7a12a4e8a64bb49a0437086232888765" dependencies = [ "async-broadcast", "async-compatibility-layer", @@ -4259,7 +4193,7 @@ dependencies = [ "derive_more 0.99.18", "either", "futures", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types", "rand 0.8.5", "serde", "snafu 0.8.4", @@ -4286,43 +4220,10 @@ dependencies = [ "either", "ethereum-types", "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "rand 0.8.5", - "reqwest 0.12.5", - "serde", - "sha2 0.10.8", - "sha3", - "snafu 0.8.4", - "time 0.3.36", - "tokio", - "tracing", - "url", - "vbs", -] - -[[package]] -name = "hotshot-example-types" -version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "anyhow", - "async-broadcast", - "async-compatibility-layer", - "async-lock 2.8.0", - "async-std", - "async-trait", - "bitvec", - "committable", - "either", - "ethereum-types", - "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot", + "hotshot-task", + "hotshot-task-impls", + "hotshot-types", "rand 0.8.5", "reqwest 0.12.5", "serde", @@ -4345,27 +4246,8 @@ dependencies = [ "async-lock 2.8.0", "async-trait", "futures", - "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "rand 0.8.5", - "serde", - "tide-disco", - "toml", - "tracing", - "vbs", -] - -[[package]] -name = "hotshot-fakeapi" -version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "anyhow", - "async-lock 2.8.0", - "async-trait", - "futures", - "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-example-types", + "hotshot-types", "rand 0.8.5", "serde", "tide-disco", @@ -4385,17 +4267,6 @@ dependencies = [ "syn 2.0.72", ] -[[package]] -name = "hotshot-macros" -version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "derive_builder", - "proc-macro2", - "quote", - "syn 2.0.72", -] - [[package]] name = "hotshot-orchestrator" version = "0.5.69" @@ -4410,37 +4281,7 @@ dependencies = [ "clap", "csv", "futures", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "libp2p", - "multiaddr", - "serde", - "serde-inline-default", - "serde_json", - "surf-disco", - "thiserror", - "tide-disco", - "tokio", - "toml", - "tracing", - "vbs", - "vec1", -] - -[[package]] -name = "hotshot-orchestrator" -version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "anyhow", - "async-compatibility-layer", - "async-lock 2.8.0", - "async-std", - "bincode", - "blake3", - "clap", - "csv", - "futures", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types", "libp2p", "multiaddr", "serde", @@ -4459,7 +4300,7 @@ dependencies = [ [[package]] name = "hotshot-query-service" version = "0.1.51" -source = "git+https://github.com/EspressoSystems/hotshot-query-service?branch=hotshot/rc-0.5.69#09cfbc8f3bd60263ab1a6f7bc21762487970c264" +source = "git+https://github.com/EspressoSystems/hotshot-query-service?tag=0.1.51#8e0ee4e862de99f19b9cbadd029f0d952782a3dd" dependencies = [ "anyhow", "ark-serialize", @@ -4478,10 +4319,10 @@ dependencies = [ "either", "espresso-macros", "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-testing 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot", + "hotshot-example-types", + "hotshot-testing", + "hotshot-types", "include_dir", "itertools 0.12.1", "jf-merkle-tree", @@ -4524,7 +4365,7 @@ dependencies = [ "ark-std", "digest 0.10.7", "ethereum-types", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types", "jf-crhf", "jf-rescue", "jf-signature", @@ -4556,7 +4397,7 @@ dependencies = [ "futures", "hotshot-contract-adapter", "hotshot-stake-table", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types", "itertools 0.12.1", "jf-crhf", "jf-pcs", @@ -4592,21 +4433,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "hotshot-task" -version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "anyhow", - "async-broadcast", - "async-compatibility-layer", - "async-std", - "async-trait", - "futures", - "tokio", - "tracing", -] - [[package]] name = "hotshot-task-impls" version = "0.5.69" @@ -4625,46 +4451,9 @@ dependencies = [ "committable", "either", "futures", - "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "jf-signature", - "jf-vid", - "rand 0.8.5", - "serde", - "sha2 0.10.8", - "snafu 0.8.4", - "surf-disco", - "tagged-base64", - "time 0.3.36", - "tokio", - "tracing", - "url", - "vbs", - "vec1", -] - -[[package]] -name = "hotshot-task-impls" -version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "anyhow", - "async-broadcast", - "async-compatibility-layer", - "async-lock 2.8.0", - "async-std", - "async-trait", - "bincode", - "bitvec", - "cdn-proto 0.4.0 (git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.4)", - "chrono", - "committable", - "either", - "futures", - "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-builder-api", + "hotshot-task", + "hotshot-types", "jf-signature", "jf-vid", "rand 0.8.5", @@ -4698,61 +4487,15 @@ dependencies = [ "either", "ethereum-types", "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-fakeapi 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-macros 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "itertools 0.13.0", - "jf-signature", - "jf-vid", - "lru 0.12.4", - "portpicker", - "rand 0.8.5", - "reqwest 0.12.5", - "serde", - "sha2 0.10.8", - "sha3", - "snafu 0.8.4", - "tagged-base64", - "tide-disco", - "tokio", - "tracing", - "url", - "vbs", - "vec1", -] - -[[package]] -name = "hotshot-testing" -version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "anyhow", - "async-broadcast", - "async-compatibility-layer", - "async-lock 2.8.0", - "async-std", - "async-trait", - "automod", - "bitvec", - "committable", - "either", - "ethereum-types", - "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-fakeapi 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-macros 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-task 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot", + "hotshot-builder-api", + "hotshot-example-types", + "hotshot-fakeapi", + "hotshot-macros", + "hotshot-orchestrator", + "hotshot-task", + "hotshot-task-impls", + "hotshot-types", "itertools 0.13.0", "jf-signature", "jf-vid", @@ -4826,59 +4569,6 @@ dependencies = [ "vec1", ] -[[package]] -name = "hotshot-types" -version = "0.1.11" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "anyhow", - "ark-bn254", - "ark-ed-on-bn254", - "ark-ff", - "ark-serialize", - "ark-srs", - "ark-std", - "async-compatibility-layer", - "async-lock 2.8.0", - "async-std", - "async-trait", - "bincode", - "bitvec", - "blake3", - "cdn-proto 0.4.0 (git+https://github.com/EspressoSystems/Push-CDN?tag=0.4.4)", - "committable", - "custom_debug 0.5.1", - "derivative", - "digest 0.10.7", - "displaydoc", - "dyn-clone 1.0.17 (git+https://github.com/dtolnay/dyn-clone?tag=1.0.17)", - "either", - "espresso-systems-common 0.4.1", - "ethereum-types", - "futures", - "generic-array", - "jf-pcs", - "jf-signature", - "jf-utils", - "jf-vid", - "lazy_static", - "memoize", - "rand 0.8.5", - "rand_chacha 0.3.1", - "reqwest 0.12.5", - "serde", - "sha2 0.10.8", - "snafu 0.8.4", - "tagged-base64", - "time 0.3.36", - "tokio", - "tracing", - "typenum", - "url", - "vbs", - "vec1", -] - [[package]] name = "http" version = "0.2.12" @@ -6208,40 +5898,7 @@ dependencies = [ "derive_builder", "either", "futures", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "lazy_static", - "libp2p", - "libp2p-identity", - "libp2p-swarm-derive", - "pin-project", - "rand 0.8.5", - "serde", - "serde_bytes", - "serde_json", - "snafu 0.8.4", - "tokio", - "tokio-stream", - "tracing", - "void", -] - -[[package]] -name = "libp2p-networking" -version = "0.5.69" -source = "git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69#6b93ad0ced363c2d9b0944240dae0ef0059bf3b6" -dependencies = [ - "anyhow", - "async-compatibility-layer", - "async-lock 2.8.0", - "async-std", - "async-trait", - "bincode", - "blake3", - "custom_debug 0.5.1", - "derive_builder", - "either", - "futures", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-types", "lazy_static", "libp2p", "libp2p-identity", @@ -6612,15 +6269,15 @@ dependencies = [ "espresso-types", "ethers", "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot", + "hotshot-builder-api", "hotshot-events-service", - "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-example-types", + "hotshot-orchestrator", "hotshot-query-service", "hotshot-stake-table", "hotshot-state-prover", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types", "jf-merkle-tree", "jf-signature", "libp2p", @@ -6646,7 +6303,7 @@ dependencies = [ [[package]] name = "marketplace-builder-core" version = "0.0.2" -source = "git+https://github.com/EspressoSystems/marketplace-builder-core?branch=hotshot/rc-0.5.69#b32138ff2b70fca32f4669d99e405da317fd941b" +source = "git+https://github.com/EspressoSystems/marketplace-builder-core?tag=0.0.3#0e74c008a200532a09a637452b7d8cfcfa9fcc5c" dependencies = [ "anyhow", "async-broadcast", @@ -6659,11 +6316,11 @@ dependencies = [ "derivative", "futures", "hex", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-builder-api 0.1.7 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot", + "hotshot-builder-api", "hotshot-events-service", - "hotshot-task-impls 0.5.69 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?branch=bump/0.5.69)", + "hotshot-task-impls", + "hotshot-types", "lru 0.12.4", "multimap", "serde", @@ -6694,10 +6351,10 @@ dependencies = [ "committable", "espresso-types", "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot", "hotshot-events-service", "hotshot-query-service", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-types", "jf-signature", "portpicker", "rand 0.8.5", @@ -7068,11 +6725,11 @@ dependencies = [ "clap", "espresso-types", "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot", "hotshot-query-service", "hotshot-stake-table", - "hotshot-testing 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-testing", + "hotshot-types", "prometheus-parse", "reqwest 0.12.5", "serde", @@ -9075,16 +8732,16 @@ dependencies = [ "espresso-types", "ethers", "futures", - "hotshot 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot", "hotshot-contract-adapter", "hotshot-events-service", - "hotshot-example-types 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-orchestrator 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-example-types", + "hotshot-orchestrator", "hotshot-query-service", "hotshot-stake-table", "hotshot-state-prover", - "hotshot-testing 0.5.69 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", - "hotshot-types 0.1.11 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.69)", + "hotshot-testing", + "hotshot-types", "include_dir", "itertools 0.12.1", "jf-crhf", diff --git a/Cargo.toml b/Cargo.toml index 27215600a5..dec444c894 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,11 +55,11 @@ futures = "0.3" hotshot = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } # Hotshot imports hotshot-builder-api = { git = "https://github.com/EspressoSystems/HotShot.git", tag = "0.5.69" } -hotshot-builder-core = { git = "https://github.com/EspressoSystems/hotshot-builder-core", branch = "hotshot/rc-0.5.69" } -marketplace-builder-core = { git = "https://github.com/EspressoSystems/marketplace-builder-core", branch = "hotshot/rc-0.5.69" } -hotshot-events-service = { git = "https://github.com/EspressoSystems/hotshot-events-service.git", branch = "hotshot/rc-0.5.69" } +hotshot-builder-core = { git = "https://github.com/EspressoSystems/hotshot-builder-core", tag = "0.1.40" } +marketplace-builder-core = { git = "https://github.com/EspressoSystems/marketplace-builder-core", tag = "0.0.3" } +hotshot-events-service = { git = "https://github.com/EspressoSystems/hotshot-events-service.git", tag = "0.1.40" } hotshot-orchestrator = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } -hotshot-query-service = { git = "https://github.com/EspressoSystems/hotshot-query-service", branch = "hotshot/rc-0.5.69" } +hotshot-query-service = { git = "https://github.com/EspressoSystems/hotshot-query-service", tag = "0.1.51" } hotshot-stake-table = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } hotshot-state-prover = { version = "0.1.0", path = "hotshot-state-prover" } hotshot-task = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.69" } @@ -136,4 +136,3 @@ paste = "1.0" rand = "0.8.5" time = "0.3" trait-set = "0.3.0" - From c75c81375f27aeb8d0fa2fc0eccac9a0784054b3 Mon Sep 17 00:00:00 2001 From: Alysia Tech Date: Tue, 13 Aug 2024 20:29:58 -0400 Subject: [PATCH 26/27] moved etherscan api key to env contracts file (#1837) --- .env | 3 +-- .env.contracts.example | 3 +++ justfile | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.env b/.env index 7e4f8f6c35..a25c5bce74 100644 --- a/.env +++ b/.env @@ -90,8 +90,7 @@ ESPRESSO_SEQUENCER_STAKE_TABLE_CAPACITY=10 MNEMONIC="test test test test test test test test test test test junk" # The RPC URL for deploying to the sepolia network. SEPOLIA_RPC_URL= -# The etherscan API key is needed to verify contracts on etherscan. -ETHERSCAN_API_KEY="placeholder" + # Temporary flags for state relay server, should remove after integrating with stake table # Related issue: [https://github.com/EspressoSystems/espresso-sequencer/issues/1022] diff --git a/.env.contracts.example b/.env.contracts.example index 49cded36cd..78aa3ede0d 100644 --- a/.env.contracts.example +++ b/.env.contracts.example @@ -40,3 +40,6 @@ export APPROVED_PROVER_ADDRESS= # Plonk Verification Library Deployment with Defender export PLONK_VERIFIER_SALT= + +# The etherscan API key is needed to verify contracts on etherscan. +export ETHERSCAN_API_KEY= \ No newline at end of file diff --git a/justfile b/justfile index 5d9220a67f..18036aff7b 100644 --- a/justfile +++ b/justfile @@ -97,6 +97,7 @@ sol-test: NUM_BLOCKS_PER_EPOCH := "3" NUM_INIT_VALIDATORS := "5" lc-contract-profiling-sepolia: + @sh -c 'source ./.env.contracts' #!/usr/bin/env bash set -euxo pipefail forge script contracts/test/DeployLightClientTestScript.s.sol --sig "runBench(uint32 numBlocksPerEpoch, uint64 numInitValidators)" {{NUM_BLOCKS_PER_EPOCH}} {{NUM_INIT_VALIDATORS}} --fork-url ${SEPOLIA_RPC_URL} --broadcast --verify --etherscan-api-key ${ETHERSCAN_API_KEY} --chain-id sepolia @@ -126,3 +127,4 @@ download-srs: dev-download-srs: @echo "Check existence or download SRS for dev/test" @AZTEC_SRS_PATH="$PWD/data/aztec20/kzg10-aztec20-srs-65544.bin" ./scripts/download_srs_aztec.sh + \ No newline at end of file From 06bf72ffba4b9ca87c85b39c2ed4abe629fab0ef Mon Sep 17 00:00:00 2001 From: tbro <48967308+tbro@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:59:46 +0300 Subject: [PATCH 27/27] Improve runtime of tests (#1854) Improves CI runtime by working around slow tests. The last commit on main, tests took 36min. Tests are currently completing in this PR in 12m. * switch to nextest * separate build and test steps * use --retries (retries and marks tests that succeed upon retry as FLAKY * split slow dev-node tests to separate workflow. That new workflow is *not* required for merge --------- Co-authored-by: tbro Co-authored-by: sveitser --- .github/workflows/slowtest.yaml | 64 ++++++++++++++++++++++++++ .github/workflows/test.yml | 20 +++++--- flake.nix | 1 + justfile | 11 ++++- sequencer/src/bin/espresso-dev-node.rs | 4 +- 5 files changed, 89 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/slowtest.yaml diff --git a/.github/workflows/slowtest.yaml b/.github/workflows/slowtest.yaml new file mode 100644 index 0000000000..1653faa9da --- /dev/null +++ b/.github/workflows/slowtest.yaml @@ -0,0 +1,64 @@ +name: SlowEst + +on: + push: + branches: + - main + - release-* + tags: + # YYYYMMDD + - "20[0-9][0-9][0-1][0-9][0-3][0-9]*" + schedule: + - cron: "0 0 * * 1" + pull_request: + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !contains(github.ref, 'main')}} + +env: + RUSTFLAGS: '--cfg async_executor_impl="async-std" --cfg async_channel_impl="async-std"' + RUST_LOG: info,libp2p=off,node=error + +jobs: + slowest: + runs-on: ubuntu-latest + steps: + - name: Fix submodule permissions check + run: | + git config --global --add safe.directory '*' + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - uses: taiki-e/install-action@nextest + + - name: Checkout Repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Enable Rust Caching + uses: Swatinem/rust-cache@v2 + + - name: Build + # Build test binary with `testing` feature, which requires `hotshot_example` config + run: | + export RUSTFLAGS="$RUSTFLAGS --cfg hotshot_example" + export PATH="$PWD/target/release:$PATH" + cargo build --locked --bin diff-test --release + cargo nextest run --locked --release --workspace --all-features --no-run + timeout-minutes: 90 + + - name: SlowEst + env: + CARGO_TERM_COLOR: always + # Build test binary with `testing` feature, which requires `hotshot_example` config + run: | + export RUSTFLAGS="$RUSTFLAGS --cfg hotshot_example" + export PATH="$PWD/target/release:$PATH" + cargo nextest run --locked --release --workspace --all-features --verbose -E 'test(slow_)' + timeout-minutes: 25 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3af676bfb7..7c14ac3dde 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,10 +34,7 @@ jobs: with: version: nightly - - name: Install just command runner - run: | - sudo snap install --edge --classic just - just --version + - uses: taiki-e/install-action@nextest - name: Checkout Repository uses: actions/checkout@v4 @@ -47,12 +44,21 @@ jobs: - name: Enable Rust Caching uses: Swatinem/rust-cache@v2 - - name: Test + - name: Build # Build test binary with `testing` feature, which requires `hotshot_example` config run: | export RUSTFLAGS="$RUSTFLAGS --cfg hotshot_example" export PATH="$PWD/target/release:$PATH" cargo build --locked --bin diff-test --release - cargo test --locked --release --workspace --all-features --no-run - cargo test --locked --release --workspace --all-features --verbose -- --test-threads 1 --nocapture + cargo nextest run --locked --release --workspace --all-features --no-run timeout-minutes: 90 + + - name: Test + env: + CARGO_TERM_COLOR: always + # Build test binary with `testing` feature, which requires `hotshot_example` config + run: | + export RUSTFLAGS="$RUSTFLAGS --cfg hotshot_example" + export PATH="$PWD/target/release:$PATH" + cargo nextest run --locked --release --workspace --all-features --retries 2 --verbose -E '!test(slow_)' + timeout-minutes: 5 diff --git a/flake.nix b/flake.nix index 777dba3712..403c1470a8 100644 --- a/flake.nix +++ b/flake.nix @@ -197,6 +197,7 @@ cargo-audit cargo-edit cargo-sort + cargo-nextest typos just fenix.packages.${system}.rust-analyzer diff --git a/justfile b/justfile index 18036aff7b..2c2661153c 100644 --- a/justfile +++ b/justfile @@ -34,8 +34,15 @@ anvil *args: docker run -p 127.0.0.1:8545:8545 ghcr.io/foundry-rs/foundry:latest "anvil {{args}}" test: - cargo build --bin diff-test --release - cargo test --release --all-features + @echo 'Omitting slow tests. Use `test-slow` for those. Or `test-all` for all tests.' + cargo nextest run --locked --release --workspace --all-features --retries 2 --verbose -E '!test(slow_)' + +test-slow: + @echo 'Only slow tests are included. Use `test` for those deemed not slow. Or `test-all` for all tests.' + cargo nextest run --locked --release --workspace --all-features --verbose -E 'test(slow_)' + +test-all: + cargo nextest run --locked --release --workspace --all-features --verbose clippy: cargo clippy --workspace --all-features --all-targets -- -D warnings diff --git a/sequencer/src/bin/espresso-dev-node.rs b/sequencer/src/bin/espresso-dev-node.rs index 5737ea7c7f..3fe2cf927c 100644 --- a/sequencer/src/bin/espresso-dev-node.rs +++ b/sequencer/src/bin/espresso-dev-node.rs @@ -541,7 +541,7 @@ mod tests { // - APIs update // - Types (like `Header`) update #[async_std::test] - async fn dev_node_test() { + async fn slow_dev_node_test() { setup_test(); let builder_port = pick_unused_port().unwrap(); @@ -849,7 +849,7 @@ mod tests { } #[async_std::test] - async fn dev_node_multiple_lc_providers_test() { + async fn slow_dev_node_multiple_lc_providers_test() { setup_test(); let builder_port = pick_unused_port().unwrap();