From f05338fce72248418cd931092e4b068653b21925 Mon Sep 17 00:00:00 2001 From: Jeb Bearer Date: Fri, 10 May 2024 12:40:52 -0400 Subject: [PATCH 1/2] Store undecided consensus state and load it on restart --- Cargo.lock | 82 +++++++++++++++---- Cargo.toml | 9 ++ .../api/migrations/V15__undecided_state.sql | 8 ++ sequencer/src/lib.rs | 9 +- sequencer/src/persistence.rs | 33 +++++++- sequencer/src/persistence/fs.rs | 37 +++++++++ sequencer/src/persistence/no_storage.rs | 16 ++++ sequencer/src/persistence/sql.rs | 51 +++++++++++- 8 files changed, 223 insertions(+), 22 deletions(-) create mode 100644 sequencer/api/migrations/V15__undecided_state.sql diff --git a/Cargo.lock b/Cargo.lock index 90fd6273d..c1bdc8bd1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3952,7 +3952,6 @@ dependencies = [ [[package]] name = "hotshot" version = "0.5.43" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" dependencies = [ "anyhow", "async-broadcast", @@ -3975,7 +3974,7 @@ dependencies = [ "futures", "hotshot-orchestrator", "hotshot-task", - "hotshot-task-impls", + "hotshot-task-impls 0.5.43", "hotshot-types", "jf-signature", "libp2p-identity", @@ -3997,7 +3996,6 @@ dependencies = [ [[package]] name = "hotshot-builder-api" version = "0.1.7" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" dependencies = [ "async-trait", "clap", @@ -4090,6 +4088,35 @@ dependencies = [ "vbs", ] +[[package]] +name = "hotshot-example-types" +version = "0.5.43" +dependencies = [ + "anyhow", + "async-broadcast", + "async-compatibility-layer", + "async-lock 2.8.0", + "async-std", + "async-trait", + "bitvec", + "committable", + "either", + "ethereum-types", + "futures", + "hotshot", + "hotshot-task", + "hotshot-task-impls 0.5.43", + "hotshot-types", + "rand 0.8.5", + "serde", + "sha2 0.10.8", + "sha3", + "snafu 0.8.2", + "time 0.3.36", + "tokio", + "tracing", +] + [[package]] name = "hotshot-example-types" version = "0.5.43" @@ -4108,7 +4135,7 @@ dependencies = [ "futures", "hotshot", "hotshot-task", - "hotshot-task-impls", + "hotshot-task-impls 0.5.43 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.51)", "hotshot-types", "rand 0.8.5", "serde", @@ -4123,7 +4150,6 @@ dependencies = [ [[package]] name = "hotshot-macros" version = "0.5.43" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" dependencies = [ "derive_builder", "proc-macro2", @@ -4134,7 +4160,6 @@ dependencies = [ [[package]] name = "hotshot-orchestrator" version = "0.5.43" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" dependencies = [ "anyhow", "async-compatibility-layer", @@ -4182,7 +4207,7 @@ dependencies = [ "espresso-macros", "futures", "hotshot", - "hotshot-example-types", + "hotshot-example-types 0.5.43 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.51)", "hotshot-testing", "hotshot-types", "include_dir", @@ -4216,7 +4241,6 @@ dependencies = [ [[package]] name = "hotshot-stake-table" version = "0.5.43" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" dependencies = [ "ark-bn254", "ark-ed-on-bn254", @@ -4287,7 +4311,6 @@ dependencies = [ [[package]] name = "hotshot-task" version = "0.5.43" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" dependencies = [ "async-broadcast", "async-compatibility-layer", @@ -4297,6 +4320,40 @@ dependencies = [ "tracing", ] +[[package]] +name = "hotshot-task-impls" +version = "0.5.43" +dependencies = [ + "anyhow", + "async-broadcast", + "async-compatibility-layer", + "async-lock 2.8.0", + "async-std", + "async-trait", + "bincode", + "bitvec", + "cdn-proto", + "chrono", + "committable", + "either", + "futures", + "hotshot-builder-api", + "hotshot-task", + "hotshot-types", + "jf-signature", + "jf-vid", + "rand 0.8.5", + "serde", + "sha2 0.10.8", + "snafu 0.8.2", + "surf-disco", + "tagged-base64", + "time 0.3.36", + "tokio", + "tracing", + "vbs", +] + [[package]] name = "hotshot-task-impls" version = "0.5.43" @@ -4335,7 +4392,6 @@ dependencies = [ [[package]] name = "hotshot-testing" version = "0.5.43" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" dependencies = [ "async-broadcast", "async-compatibility-layer", @@ -4350,11 +4406,11 @@ dependencies = [ "futures", "hotshot", "hotshot-builder-api", - "hotshot-example-types", + "hotshot-example-types 0.5.43", "hotshot-macros", "hotshot-orchestrator", "hotshot-task", - "hotshot-task-impls", + "hotshot-task-impls 0.5.43", "hotshot-types", "jf-signature", "jf-vid", @@ -4375,7 +4431,6 @@ dependencies = [ [[package]] name = "hotshot-types" version = "0.1.11" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" dependencies = [ "anyhow", "ark-bls12-381", @@ -5638,7 +5693,6 @@ dependencies = [ [[package]] name = "libp2p-networking" version = "0.5.43" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" dependencies = [ "anyhow", "async-compatibility-layer", diff --git a/Cargo.toml b/Cargo.toml index 7a9f105ee..47eeb5fd8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -111,3 +111,12 @@ vergen = { version = "8.3", features = ["git", "gitcl"] } zeroize = "1.7" committable = "0.2" portpicker = "0.1.1" + +[patch."https://github.com/EspressoSystems/HotShot.git"] +hotshot = { path = "../HotShot/crates/hotshot" } +hotshot-builder-api = { path = "../HotShot/crates/builder-api" } +hotshot-orchestrator = { path = "../HotShot/crates/orchestrator" } +hotshot-stake-table = { path = "../HotShot/crates/hotshot-stake-table" } +hotshot-task = { path = "../HotShot/crates/task" } +hotshot-testing = { path = "../HotShot/crates/testing" } +hotshot-types = { path = "../HotShot/crates/types" } diff --git a/sequencer/api/migrations/V15__undecided_state.sql b/sequencer/api/migrations/V15__undecided_state.sql new file mode 100644 index 000000000..48e67f4cb --- /dev/null +++ b/sequencer/api/migrations/V15__undecided_state.sql @@ -0,0 +1,8 @@ +CREATE TABLE undecided_state ( + -- The ID is always set to 0. Setting it explicitly allows us to enforce with every insert or + -- update that there is only a single entry in this table: the latest known state. + id INT PRIMARY KEY, + + leaves BYTEA NOT NULL, + state BYTEA NOT NULL +); diff --git a/sequencer/src/lib.rs b/sequencer/src/lib.rs index deb9751e4..9a581677b 100644 --- a/sequencer/src/lib.rs +++ b/sequencer/src/lib.rs @@ -145,10 +145,13 @@ impl Storage for Arc> { async fn update_undecided_state( &self, - _leaves: CommitmentMap, - _state: BTreeMap>, + leaves: CommitmentMap, + state: BTreeMap>, ) -> anyhow::Result<()> { - Ok(()) + self.write() + .await + .update_undecided_state(leaves, state) + .await } } diff --git a/sequencer/src/persistence.rs b/sequencer/src/persistence.rs index db9e8feb2..43827b269 100644 --- a/sequencer/src/persistence.rs +++ b/sequencer/src/persistence.rs @@ -19,13 +19,15 @@ use hotshot::{ HotShotInitializer, }; use hotshot_types::{ + consensus::CommitmentMap, data::{DAProposal, VidDisperseShare}, event::{HotShotAction, LeafInfo}, message::Proposal, simple_certificate::QuorumCertificate, traits::node_implementation::ConsensusTime, + utils::View, }; -use std::cmp::max; +use std::{cmp::max, collections::BTreeMap}; pub mod fs; pub mod no_storage; @@ -80,6 +82,11 @@ pub trait SequencerPersistence: Sized + Send + Sync + 'static { async fn load_anchor_leaf(&self) -> anyhow::Result)>>; + /// Load undecided state saved by consensus before we shut down. + async fn load_undecided_state( + &self, + ) -> anyhow::Result, BTreeMap>)>>; + async fn load_vid_share( &self, view: ViewNumber, @@ -144,15 +151,28 @@ pub trait SequencerPersistence: Sized + Send + Sync + 'static { view += 1; } - tracing::info!(?leaf, ?view, ?high_qc, "loaded consensus state"); + let (undecided_leaves, undecided_state) = self + .load_undecided_state() + .await + .context("loading undecided state")? + .unwrap_or_default(); + + tracing::info!( + ?leaf, + ?view, + ?high_qc, + ?undecided_leaves, + ?undecided_state, + "loaded consensus state" + ); Ok(HotShotInitializer::from_reload( leaf, state, validated_state, view, high_qc, - Default::default(), - Default::default(), + undecided_leaves.into_values().collect(), + undecided_state, )) } @@ -196,6 +216,11 @@ pub trait SequencerPersistence: Sized + Send + Sync + 'static { view: ViewNumber, action: HotShotAction, ) -> anyhow::Result<()>; + async fn update_undecided_state( + &mut self, + leaves: CommitmentMap, + state: BTreeMap>, + ) -> anyhow::Result<()>; } #[cfg(test)] diff --git a/sequencer/src/persistence/fs.rs b/sequencer/src/persistence/fs.rs index bba176b63..21923f038 100644 --- a/sequencer/src/persistence/fs.rs +++ b/sequencer/src/persistence/fs.rs @@ -5,14 +5,17 @@ use async_trait::async_trait; use clap::Parser; use hotshot_types::{ + consensus::CommitmentMap, data::{DAProposal, VidDisperseShare}, event::HotShotAction, message::Proposal, simple_certificate::QuorumCertificate, traits::node_implementation::ConsensusTime, + utils::View, vote::HasViewNumber, }; use std::{ + collections::BTreeMap, fs::{self, File, OpenOptions}, io::{Read, Seek, SeekFrom, Write}, path::{Path, PathBuf}, @@ -70,6 +73,10 @@ impl Persistence { self.0.join("da") } + fn undecided_state_path(&self) -> PathBuf { + self.0.join("undecided_state") + } + /// Overwrite a file if a condition is met. /// /// The file at `path`, if it exists, is opened in read mode and passed to `pred`. If `pred` @@ -234,6 +241,17 @@ impl SequencerPersistence for Persistence { Ok(Some(bincode::deserialize(&bytes).context("deserialize")?)) } + async fn load_undecided_state( + &self, + ) -> anyhow::Result, BTreeMap>)>> { + let path = self.undecided_state_path(); + if !path.is_file() { + return Ok(None); + } + let bytes = fs::read(&path).context("read")?; + Ok(Some(bincode::deserialize(&bytes).context("deserialize")?)) + } + async fn load_da_proposal( &self, view: ViewNumber, @@ -349,6 +367,25 @@ impl SequencerPersistence for Persistence { }, ) } + async fn update_undecided_state( + &mut self, + leaves: CommitmentMap, + state: BTreeMap>, + ) -> anyhow::Result<()> { + self.replace( + &self.undecided_state_path(), + |_| { + // Always overwrite the previous file. + Ok(true) + }, + |mut file| { + let bytes = + bincode::serialize(&(leaves, state)).context("serializing undecided state")?; + file.write_all(&bytes)?; + Ok(()) + }, + ) + } } #[cfg(test)] diff --git a/sequencer/src/persistence/no_storage.rs b/sequencer/src/persistence/no_storage.rs index cfbfbb3cb..8dbdacc80 100644 --- a/sequencer/src/persistence/no_storage.rs +++ b/sequencer/src/persistence/no_storage.rs @@ -5,11 +5,14 @@ use super::{NetworkConfig, PersistenceOptions, SequencerPersistence}; use crate::{Leaf, SeqTypes, ViewNumber}; use async_trait::async_trait; use hotshot_types::{ + consensus::CommitmentMap, data::{DAProposal, VidDisperseShare}, event::HotShotAction, message::Proposal, simple_certificate::QuorumCertificate, + utils::View, }; +use std::collections::BTreeMap; #[derive(Clone, Copy, Debug)] pub struct Options; @@ -62,6 +65,12 @@ impl SequencerPersistence for NoStorage { Ok(None) } + async fn load_undecided_state( + &self, + ) -> anyhow::Result, BTreeMap>)>> { + Ok(None) + } + async fn load_da_proposal( &self, _view: ViewNumber, @@ -95,4 +104,11 @@ impl SequencerPersistence for NoStorage { ) -> anyhow::Result<()> { Ok(()) } + async fn update_undecided_state( + &mut self, + _leaves: CommitmentMap, + _state: BTreeMap>, + ) -> anyhow::Result<()> { + Ok(()) + } } diff --git a/sequencer/src/persistence/sql.rs b/sequencer/src/persistence/sql.rs index adf52bb91..a211718e0 100644 --- a/sequencer/src/persistence/sql.rs +++ b/sequencer/src/persistence/sql.rs @@ -4,6 +4,7 @@ use crate::{ options::parse_duration, Leaf, SeqTypes, ViewNumber, }; +use anyhow::Context; use async_std::sync::{Arc, RwLock}; use async_trait::async_trait; use clap::Parser; @@ -17,14 +18,16 @@ use hotshot_query_service::data_source::{ VersionedDataSource, }; use hotshot_types::{ + consensus::CommitmentMap, data::{DAProposal, VidDisperseShare}, event::HotShotAction, message::Proposal, simple_certificate::QuorumCertificate, traits::node_implementation::ConsensusTime, + utils::View, vote::HasViewNumber, }; -use std::time::Duration; +use std::{collections::BTreeMap, time::Duration}; /// Options for Postgres-backed persistence. #[derive(Parser, Clone, Derivative, Default)] @@ -363,6 +366,25 @@ impl SequencerPersistence for Persistence { Ok(Some((leaf, qc))) } + async fn load_undecided_state( + &self, + ) -> anyhow::Result, BTreeMap>)>> { + let Some(row) = self + .query_opt_static("SELECT leaves, state FROM undecided_state WHERE id = 0") + .await? + else { + return Ok(None); + }; + + let leaves_bytes: Vec = row.get("leaves"); + let leaves = bincode::deserialize(&leaves_bytes)?; + + let state_bytes: Vec = row.get("state"); + let state = bincode::deserialize(&state_bytes)?; + + Ok(Some((leaves, state))) + } + async fn load_da_proposal( &self, view: ViewNumber, @@ -466,6 +488,33 @@ impl SequencerPersistence for Persistence { }) .await } + async fn update_undecided_state( + &mut self, + leaves: CommitmentMap, + state: BTreeMap>, + ) -> anyhow::Result<()> { + let leaves_bytes = bincode::serialize(&leaves).context("serializing leaves")?; + let state_bytes = bincode::serialize(&state).context("serializing state")?; + + transaction(self, |mut tx| { + async move { + tx.upsert( + "undecided_state", + ["id", "leaves", "state"], + ["id"], + [[ + sql_param(&0i32), + sql_param(&leaves_bytes), + sql_param(&state_bytes), + ]], + ) + .await?; + Ok(()) + } + .boxed() + }) + .await + } } fn sql_param(param: &T) -> &(dyn ToSql + Sync) { From d736f168bc145fd238de0b5825c24d618eec5e04 Mon Sep 17 00:00:00 2001 From: Jeb Bearer Date: Fri, 10 May 2024 15:51:28 -0400 Subject: [PATCH 2/2] Update HotShot --- Cargo.lock | 98 ++++++++++++------------------------------------------ Cargo.toml | 29 ++++++---------- 2 files changed, 32 insertions(+), 95 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c1bdc8bd1..436109b34 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3952,6 +3952,7 @@ dependencies = [ [[package]] name = "hotshot" version = "0.5.43" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "anyhow", "async-broadcast", @@ -3974,7 +3975,7 @@ dependencies = [ "futures", "hotshot-orchestrator", "hotshot-task", - "hotshot-task-impls 0.5.43", + "hotshot-task-impls", "hotshot-types", "jf-signature", "libp2p-identity", @@ -3996,6 +3997,7 @@ dependencies = [ [[package]] name = "hotshot-builder-api" version = "0.1.7" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "async-trait", "clap", @@ -4013,8 +4015,8 @@ dependencies = [ [[package]] name = "hotshot-builder-core" -version = "0.1.18" -source = "git+https://github.com/EspressoSystems/hotshot-builder-core?tag=0.1.19#18a5ddec1a68ce7229113c26cedc753ef0d08285" +version = "0.1.20" +source = "git+https://github.com/EspressoSystems/hotshot-builder-core?tag=0.1.20#9ce5d19c43121ac3410940d3995b4bc20c5fa94a" dependencies = [ "anyhow", "async-broadcast", @@ -4065,8 +4067,8 @@ dependencies = [ [[package]] name = "hotshot-events-service" -version = "0.1.19" -source = "git+https://github.com/EspressoSystems/hotshot-events-service.git?tag=0.1.20#f5f5ea98e438d8ee0f77c3d30b8fb6f362d8c818" +version = "0.1.21" +source = "git+https://github.com/EspressoSystems/hotshot-events-service.git?tag=0.1.21#ae2e647b69351e06b8f59b19eee59ad54f56f837" dependencies = [ "async-broadcast", "async-compatibility-layer", @@ -4091,6 +4093,7 @@ dependencies = [ [[package]] name = "hotshot-example-types" version = "0.5.43" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "anyhow", "async-broadcast", @@ -4105,37 +4108,7 @@ dependencies = [ "futures", "hotshot", "hotshot-task", - "hotshot-task-impls 0.5.43", - "hotshot-types", - "rand 0.8.5", - "serde", - "sha2 0.10.8", - "sha3", - "snafu 0.8.2", - "time 0.3.36", - "tokio", - "tracing", -] - -[[package]] -name = "hotshot-example-types" -version = "0.5.43" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" -dependencies = [ - "anyhow", - "async-broadcast", - "async-compatibility-layer", - "async-lock 2.8.0", - "async-std", - "async-trait", - "bitvec", - "committable", - "either", - "ethereum-types", - "futures", - "hotshot", - "hotshot-task", - "hotshot-task-impls 0.5.43 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.51)", + "hotshot-task-impls", "hotshot-types", "rand 0.8.5", "serde", @@ -4150,6 +4123,7 @@ dependencies = [ [[package]] name = "hotshot-macros" version = "0.5.43" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "derive_builder", "proc-macro2", @@ -4160,6 +4134,7 @@ dependencies = [ [[package]] name = "hotshot-orchestrator" version = "0.5.43" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "anyhow", "async-compatibility-layer", @@ -4187,8 +4162,8 @@ dependencies = [ [[package]] name = "hotshot-query-service" -version = "0.1.19" -source = "git+https://github.com/EspressoSystems/hotshot-query-service?tag=0.1.20#900e6e356945365ff3c6e9a2631b490c51f82db9" +version = "0.1.21" +source = "git+https://github.com/EspressoSystems/hotshot-query-service?tag=0.1.21#ee7554cb8b5a301b6971079edb52568c37eec7dc" dependencies = [ "anyhow", "ark-serialize", @@ -4207,7 +4182,7 @@ dependencies = [ "espresso-macros", "futures", "hotshot", - "hotshot-example-types 0.5.43 (git+https://github.com/EspressoSystems/hotshot?tag=0.5.51)", + "hotshot-example-types", "hotshot-testing", "hotshot-types", "include_dir", @@ -4241,6 +4216,7 @@ dependencies = [ [[package]] name = "hotshot-stake-table" version = "0.5.43" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "ark-bn254", "ark-ed-on-bn254", @@ -4311,6 +4287,7 @@ dependencies = [ [[package]] name = "hotshot-task" version = "0.5.43" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "async-broadcast", "async-compatibility-layer", @@ -4323,41 +4300,7 @@ dependencies = [ [[package]] name = "hotshot-task-impls" version = "0.5.43" -dependencies = [ - "anyhow", - "async-broadcast", - "async-compatibility-layer", - "async-lock 2.8.0", - "async-std", - "async-trait", - "bincode", - "bitvec", - "cdn-proto", - "chrono", - "committable", - "either", - "futures", - "hotshot-builder-api", - "hotshot-task", - "hotshot-types", - "jf-signature", - "jf-vid", - "rand 0.8.5", - "serde", - "sha2 0.10.8", - "snafu 0.8.2", - "surf-disco", - "tagged-base64", - "time 0.3.36", - "tokio", - "tracing", - "vbs", -] - -[[package]] -name = "hotshot-task-impls" -version = "0.5.43" -source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.51#0b6aa78b9e81d5f8875ebd9f1bb6a6a531297891" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "anyhow", "async-broadcast", @@ -4392,6 +4335,7 @@ dependencies = [ [[package]] name = "hotshot-testing" version = "0.5.43" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "async-broadcast", "async-compatibility-layer", @@ -4406,11 +4350,11 @@ dependencies = [ "futures", "hotshot", "hotshot-builder-api", - "hotshot-example-types 0.5.43", + "hotshot-example-types", "hotshot-macros", "hotshot-orchestrator", "hotshot-task", - "hotshot-task-impls 0.5.43", + "hotshot-task-impls", "hotshot-types", "jf-signature", "jf-vid", @@ -4431,6 +4375,7 @@ dependencies = [ [[package]] name = "hotshot-types" version = "0.1.11" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "anyhow", "ark-bls12-381", @@ -5693,6 +5638,7 @@ dependencies = [ [[package]] name = "libp2p-networking" version = "0.5.43" +source = "git+https://github.com/EspressoSystems/hotshot?tag=0.5.53#9fbb21fe45ee1dbf63c136e850cda7a520d24a39" dependencies = [ "anyhow", "async-compatibility-layer", diff --git a/Cargo.toml b/Cargo.toml index 47eeb5fd8..8e988fd86 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,18 +46,18 @@ dotenvy = "0.15" ethers = { version = "2.0", features = ["solc"] } futures = "0.3" -hotshot = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.51" } +hotshot = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.53" } # Hotshot imports -hotshot-builder-api = { git = "https://github.com/EspressoSystems/HotShot.git", tag = "0.5.51" } -hotshot-builder-core = { git = "https://github.com/EspressoSystems/hotshot-builder-core", tag = "0.1.19" } -hotshot-events-service = { git = "https://github.com/EspressoSystems/hotshot-events-service.git", tag = "0.1.20" } -hotshot-orchestrator = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.51" } -hotshot-query-service = { git = "https://github.com/EspressoSystems/hotshot-query-service", tag = "0.1.20" } -hotshot-stake-table = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.51" } +hotshot-builder-api = { git = "https://github.com/EspressoSystems/HotShot.git", tag = "0.5.53" } +hotshot-builder-core = { git = "https://github.com/EspressoSystems/hotshot-builder-core", tag = "0.1.20" } +hotshot-events-service = { git = "https://github.com/EspressoSystems/hotshot-events-service.git", tag = "0.1.21" } +hotshot-orchestrator = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.53" } +hotshot-query-service = { git = "https://github.com/EspressoSystems/hotshot-query-service", tag = "0.1.21" } +hotshot-stake-table = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.53" } hotshot-state-prover = { version = "0.1.0", path = "hotshot-state-prover" } -hotshot-task = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.51" } -hotshot-testing = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.51" } -hotshot-types = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.51" } +hotshot-task = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.53" } +hotshot-testing = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.53" } +hotshot-types = { git = "https://github.com/EspressoSystems/hotshot", tag = "0.5.53" } # Push CDN imports cdn-broker = { git = "https://github.com/EspressoSystems/Push-CDN", features = [ @@ -111,12 +111,3 @@ vergen = { version = "8.3", features = ["git", "gitcl"] } zeroize = "1.7" committable = "0.2" portpicker = "0.1.1" - -[patch."https://github.com/EspressoSystems/HotShot.git"] -hotshot = { path = "../HotShot/crates/hotshot" } -hotshot-builder-api = { path = "../HotShot/crates/builder-api" } -hotshot-orchestrator = { path = "../HotShot/crates/orchestrator" } -hotshot-stake-table = { path = "../HotShot/crates/hotshot-stake-table" } -hotshot-task = { path = "../HotShot/crates/task" } -hotshot-testing = { path = "../HotShot/crates/testing" } -hotshot-types = { path = "../HotShot/crates/types" }