Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
dd4e82e
feat(consensus): implement consensus/qbft
iamquang95 May 29, 2026
712354d
fix: wait for qbft receive buffer capacity
iamquang95 Jun 1, 2026
1cf0c84
fix: implement qbft attester compare
iamquang95 Jun 1, 2026
233e80e
fix: retain qbft instance until deadline
iamquang95 Jun 1, 2026
a74e6b6
fix: update docs
iamquang95 Jun 1, 2026
eadb107
fix: avoid qbft attester compare polling
iamquang95 Jun 1, 2026
bcf6798
fix: refactor code
iamquang95 Jun 1, 2026
51182aa
ifx: machete
iamquang95 Jun 1, 2026
d5585f9
feat: add example to run qbft
iamquang95 Jun 1, 2026
0ac81da
fix: single p2p_context in example
iamquang95 Jun 2, 2026
8fd1b9d
fix: harden qbft receive validation
iamquang95 Jun 2, 2026
45c7f0c
fix: harden qbft value hash admission
iamquang95 Jun 2, 2026
00928b1
test: cover qbft attester compare full run
iamquang95 Jun 2, 2026
7a2a112
fix: simplify error
iamquang95 Jun 2, 2026
ab5d47b
Merge remote-tracking branch 'origin/main' into iamquang95/consensus-…
iamquang95 Jun 2, 2026
e577c6a
fix: test 4_6
iamquang95 Jun 2, 2026
6f33555
test: add strategy sim test
iamquang95 Jun 3, 2026
677193e
Merge remote-tracking branch 'origin/main' into iamquang95/consensus-…
iamquang95 Jun 3, 2026
4ec4a18
fix: add featureset to core
iamquang95 Jun 3, 2026
0e1c434
refactor: simplify logic component
iamquang95 Jun 3, 2026
99b8f9b
refactor: simplify logic runner
iamquang95 Jun 3, 2026
37118ef
refactor: test:
iamquang95 Jun 3, 2026
032dd76
test: mutex to avoid timeout test
iamquang95 Jun 3, 2026
e108c90
test: spawn threshold node only
iamquang95 Jun 3, 2026
3562471
test: improve tests quality, better cover
iamquang95 Jun 4, 2026
eb2902c
fix: surface qbft timer construction failures
iamquang95 Jun 4, 2026
563e035
fix: lint
iamquang95 Jun 4, 2026
6e28b66
Merge remote-tracking branch 'origin/main' into iamquang95/consensus-…
iamquang95 Jun 4, 2026
f9ac786
fix: use local validatorapi boxed future alias
iamquang95 Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 34 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ members = [
"crates/build-proto",
"crates/cli",
"crates/cluster",
"crates/consensus",
"crates/core",
"crates/crypto",
"crates/dkg",
Expand Down Expand Up @@ -116,6 +117,7 @@ pluto-parsigex = { path = "crates/parsigex" }
pluto-build-proto = { path = "crates/build-proto" }
pluto-cli = { path = "crates/cli" }
pluto-cluster = { path = "crates/cluster" }
pluto-consensus = { path = "crates/consensus" }
pluto-core = { path = "crates/core" }
pluto-crypto = { path = "crates/crypto" }
pluto-dkg = { path = "crates/dkg" }
Expand Down
1 change: 1 addition & 0 deletions crates/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ tokio.workspace = true
pluto-app.workspace = true
pluto-eth1wrap.workspace = true
pluto-cluster.workspace = true
pluto-consensus.workspace = true
pluto-dkg.workspace = true
pluto-crypto.workspace = true
pluto-relay-server.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/src/commands/create_cluster.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ use pluto_cluster::{
operator::Operator,
registration::{BuilderRegistration, Registration},
};
use pluto_core::consensus::protocols;
use pluto_consensus::protocols;
use pluto_crypto::{
blst_impl::BlstImpl,
tbls::Tbls,
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/src/commands/create_dkg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use pluto_cluster::{
definition::{Creator, Definition},
operator::Operator,
};
use pluto_core::consensus::protocols::is_supported_protocol_name;
use pluto_consensus::protocols::is_supported_protocol_name;
use pluto_eth2util::{
deposit::{eths_to_gweis, verify_deposit_amounts},
enr::Record,
Expand Down
4 changes: 2 additions & 2 deletions crates/cli/src/commands/version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ fn run_with_writer<W: Write>(args: VersionArgs, writer: &mut W) -> Result<()> {
}

writeln!(writer, "Consensus protocols:")?;
for protocol in pluto_core::consensus::protocols::protocols() {
for protocol in pluto_consensus::protocols::protocols() {
writeln!(writer, "\t{}", protocol)?;
}

Expand Down Expand Up @@ -132,7 +132,7 @@ mod tests {
);

// Check that the first protocol is listed
let protocols = pluto_core::consensus::protocols::protocols();
let protocols = pluto_consensus::protocols::protocols();
assert!(!protocols.is_empty(), "Should have at least one protocol");
let first_protocol = protocols[0].to_string();
assert!(
Expand Down
42 changes: 42 additions & 0 deletions crates/consensus/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
[package]
name = "pluto-consensus"
version.workspace = true
edition.workspace = true
repository.workspace = true
license.workspace = true
publish.workspace = true

[dependencies]
cancellation.workspace = true
chrono.workspace = true
crossbeam.workspace = true
futures.workspace = true
hex.workspace = true
either.workspace = true
k256.workspace = true
libp2p.workspace = true
pluto-core.workspace = true
pluto-featureset.workspace = true
pluto-k1util.workspace = true
pluto-p2p.workspace = true
pluto-ssz.workspace = true
prost.workspace = true
prost-types.workspace = true
thiserror.workspace = true
tokio.workspace = true
tokio-util.workspace = true
tracing.workspace = true

[dev-dependencies]
anyhow.workspace = true
clap.workspace = true
pluto-cluster.workspace = true
pluto-eth2api.workspace = true
pluto-eth2util.workspace = true
serde_json.workspace = true
ssz.workspace = true
test-case.workspace = true
tokio = { workspace = true, features = ["test-util"] }

[lints]
workspace = true
Loading
Loading