Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
4667163
add enable-experimental-collator-protocol CLI flag and new subsystem …
alindima Apr 3, 2025
96b2cd1
fix clap arg
alindima Apr 3, 2025
1d283d5
rollback experimental cli flag
alindima Apr 3, 2025
73b61fd
WIP peer manager impl
alindima Apr 7, 2025
d943dbb
continue impl
alindima Apr 8, 2025
2bfdaf0
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Apr 9, 2025
fa731c6
make taplo happy
alindima Apr 9, 2025
1691ec8
minor fix
alindima Apr 9, 2025
75f00f4
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Apr 11, 2025
3b17c38
fix todo after merging previous PR
alindima Apr 11, 2025
41127ae
initial memory db impl
alindima Apr 11, 2025
2bf2b05
satisfy clippy
alindima Apr 14, 2025
6fa2d4e
WIP
alindima Apr 23, 2025
f5ae202
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Apr 28, 2025
32c30ea
review comments
alindima Apr 29, 2025
5271ad7
switch to processing rep bumps only for finalized block notifications
alindima Apr 29, 2025
86cd891
add unit tests for Score primitive
alindima Apr 29, 2025
7ffde5c
some unit tests
alindima Apr 29, 2025
b5e1b13
some fixes and almost all needed unit tests for ConnectedPeers
alindima Apr 29, 2025
81140bc
add test for update_reputation
alindima Apr 30, 2025
c42c33b
some fixes
alindima Apr 30, 2025
608fcb0
add a log
alindima Apr 30, 2025
e37e6d3
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Apr 30, 2025
b23c4e1
enforce limit is non-zero
alindima Apr 30, 2025
e71d4e8
Merge remote-tracking branch 'origin/alindima/collator-protocol-revam…
alindima Apr 30, 2025
24a9097
fix merge damage, most importantly handling finalized blocks instead …
alindima Apr 30, 2025
4205200
Merge remote-tracking branch 'origin/alindima/collator-protocol-revam…
alindima May 1, 2025
82078e6
WIP
alindima May 6, 2025
7a490a9
still WIP
alindima May 7, 2025
c82006a
more work
alindima May 8, 2025
d90e5b5
working version: some fixes and logs
alindima May 13, 2025
c45e8c3
add potential delay to fetching collations from zero-rep peers
alindima May 14, 2025
cfc1514
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima May 14, 2025
cdb15dd
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima May 14, 2025
c902177
Merge remote-tracking branch 'origin/alindima/collator-protocol-revam…
alindima May 14, 2025
805b0c5
fix existing tests
alindima May 15, 2025
f1cc5de
clippy
alindima May 15, 2025
e177b99
fix outrageously large log
alindima May 15, 2025
f007cc0
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima May 28, 2025
e7e6e62
review feedback
alindima May 28, 2025
b8051c9
Merge branch 'master' into alindima/collator-protocol-revamp-reputati…
alindima May 28, 2025
5ae5351
Merge remote-tracking branch 'origin/alindima/collator-protocol-revam…
alindima May 28, 2025
0e28f8b
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima May 28, 2025
264d2cc
rollback changes to backing implicit view
alindima May 29, 2025
fb29312
remove unused stuff and random bits of work
alindima May 29, 2025
53922b6
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima May 29, 2025
8be53f7
restructure some code
alindima May 29, 2025
6b34df7
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima May 30, 2025
9109849
only sleep if we know we have better peers
alindima May 30, 2025
926de29
fix todo
alindima Jun 2, 2025
b362c0c
some unit testing
alindima Jun 4, 2025
65b28dd
more testing
alindima Jun 6, 2025
3368bba
testing testing testing
alindima Jun 11, 2025
e0bef16
test no assignments
alindima Jun 11, 2025
a27d37a
only query the keystore once per session
alindima Jun 12, 2025
8ae174c
moore testing
alindima Jun 16, 2025
4074e66
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jun 16, 2025
85ee00b
start testing fetches
alindima Jun 16, 2025
babd6e7
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jun 17, 2025
38dcc20
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jun 19, 2025
c8b8c72
deduplicate descriptor version sanity check
alindima Jun 19, 2025
0b933a9
some more testing scenarios for failed fetches
alindima Jun 19, 2025
30025c2
test v1 compat
alindima Jun 19, 2025
505841c
stupid clippy
alindima Jun 20, 2025
9dc28e1
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jun 20, 2025
0c90ab4
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jun 23, 2025
50883a2
fix nasty bug in polling requests
alindima Jun 25, 2025
cc026ad
some logs
alindima Jun 25, 2025
d269a5d
more testing
alindima Jun 25, 2025
c5b6562
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jun 25, 2025
83f5b43
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jun 26, 2025
46000b0
more testing and bugfixing
alindima Jul 4, 2025
4b17bac
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jul 4, 2025
f570ba6
some refactoring and bugfixing
alindima Jul 9, 2025
4d1eb80
a v1 advertisement test
alindima Jul 9, 2025
4bce989
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jul 9, 2025
fe2b102
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jul 24, 2025
fdc8e01
fix fix
alindima Jul 25, 2025
aaf3a00
impl paraid pruning using the new runtime api
alindima Jul 28, 2025
98f7d19
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima Jul 29, 2025
8ac8f7b
Add missing doc comments in claim_queue_state (#10241)
tdimitrov Nov 7, 2025
d06d771
Fix commented out tests (#10245)
tdimitrov Nov 7, 2025
1b1b562
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov Nov 11, 2025
ff56674
add trace logs which was removed during the merge
tdimitrov Nov 11, 2025
11a9474
Add `--experimental-collator-protocol` cli argument to enable the new…
tdimitrov Nov 11, 2025
27b0889
fix collator binaries
tdimitrov Nov 11, 2025
d15dae0
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov Nov 12, 2025
7abb6f3
`ClaimQueueState` cosmetics (#10334)
serban300 Nov 19, 2025
b34a129
Fix ClaimQueue inconsistencies (#10368)
serban300 Nov 20, 2025
86b9972
Nits
serban300 Nov 18, 2025
0e46e52
ensure_matches_advertisement -> FetchedCollation::ensure_matches_adve…
serban300 Nov 18, 2025
e731075
taplo
serban300 Nov 20, 2025
1a17b4c
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
serban300 Nov 20, 2025
de348df
Parameters order inconsistencies + Nits
serban300 Nov 20, 2025
7e6d97a
Renamings
serban300 Nov 20, 2025
aa1b5b0
Merge remote-tracking branch 'upstream/master' into alindima/collator…
serban300 Nov 21, 2025
03e8915
[TODO: ROLLBACK] use ValidatorExperimental by default
serban300 Nov 21, 2025
05e1497
[TODO: ROLLBACK] Fix build
serban300 Nov 21, 2025
83600e8
Revert "[TODO: ROLLBACK] Fix build"
serban300 Nov 21, 2025
a75e984
Revert "[TODO: ROLLBACK] use ValidatorExperimental by default"
serban300 Nov 21, 2025
5b8749d
Disable `experimental-collator-protocol` by default (#10414)
serban300 Nov 25, 2025
0b2f18b
candidates -> candidates_per_rp
serban300 Nov 26, 2025
05b09f6
Update from github-actions[bot] running command 'prdoc --bump patch -…
github-actions[bot] Nov 26, 2025
d461b2b
Update prdoc
serban300 Nov 26, 2025
6abe2ad
Propagate experimental-collator-protocol up to the polkadot binary
serban300 Nov 26, 2025
329c05b
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov Nov 27, 2025
aa3e283
CR comments
serban300 Nov 27, 2025
b72eab5
Fix prdoc
serban300 Nov 27, 2025
9651528
fix prdoc
serban300 Nov 27, 2025
6a07636
comment
tdimitrov Nov 17, 2025
b531d37
log which implementation of the collator protocol is used
tdimitrov Nov 28, 2025
60a6fc5
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov Dec 1, 2025
8c5a23a
Additional logs
tdimitrov Nov 27, 2025
3505c9a
fix a compilation error
tdimitrov Dec 3, 2025
9a7c493
Remove experimental-collator-protocol feature flag
serban300 Dec 8, 2025
0fa8ecb
Continue processing other paras if `request_candidates_pending_availa…
tdimitrov Dec 10, 2025
1e78249
Collator protocol revamp: small fixes (#10456)
serban300 Dec 12, 2025
23c2d3c
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
serban300 Dec 12, 2025
1320dce
CR comments
serban300 Dec 15, 2025
6e24e46
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
serban300 Dec 16, 2025
fc50170
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
serban300 Dec 16, 2025
7fb078c
ClaimQueueState tests: use consts for relay parents
serban300 Dec 16, 2025
1cf32c3
ClaimQueueState tests: use more statics for deduplication
serban300 Dec 17, 2025
a3e0ca4
Fix CANDIDATE_B2 hash
serban300 Dec 17, 2025
e957396
ClaimQueueState tests: make more compact
serban300 Dec 17, 2025
0f17094
ClaimQueueState: Move fork() unit tests out of separate mod
serban300 Dec 18, 2025
3d86aa5
ClaimQueueState: improve fork() unit testing
serban300 Dec 18, 2025
d2d1476
ClaimQueueState: deduplication and nits
serban300 Dec 18, 2025
75682e5
Store the advertisement timestamp together with the advertisement
serban300 Dec 19, 2025
68bcf72
CR comments
serban300 Dec 22, 2025
f2a7877
`test_view_update_preserves_relay_parent_state`
tdimitrov Jan 6, 2026
3b8bf7d
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov Jan 7, 2026
c1786f3
some extra logging
tdimitrov Dec 11, 2025
5a49048
Extract metrics from validator_side to the crate root so that it is s…
tdimitrov Dec 11, 2025
24f0142
Update the metrics in validator_side_experimental
tdimitrov Jan 6, 2026
62df7c6
leftovers
serban300 Jan 8, 2026
445b59e
comments
tdimitrov Jan 9, 2026
8144cf5
prdoc
tdimitrov Jan 9, 2026
44b04f9
Use sender instead of context where possible
serban300 Jan 12, 2026
5505d51
Update parameters in common.rs
tdimitrov Jan 14, 2026
dc4426e
Add comment
serban300 Jan 14, 2026
e48add5
small fix
serban300 Jan 14, 2026
efa3008
Update parameters in common.rs - missed msg
tdimitrov Jan 14, 2026
5f183c3
Failing fetching test
tdimitrov Jan 14, 2026
c42ef31
Simplify advertisement fetching logic
tdimitrov Jan 16, 2026
67373ea
fmt
tdimitrov Jan 16, 2026
e1c301d
Adjust MAX_SCORE, FAILED_FETCH_SLASH and INVALID_COLLATION_SLASH
tdimitrov Jan 23, 2026
c5d5210
clippy
tdimitrov Jan 23, 2026
89cd009
Update polkadot/node/network/collator-protocol/src/validator_side_exp…
tdimitrov Jan 23, 2026
8165457
spelling
tdimitrov Jan 23, 2026
d088c5d
prdoc
tdimitrov Jan 23, 2026
4ac381f
Move non-pub types in collation_manager after the pub types
tdimitrov Jan 23, 2026
c9a658c
fix a log line
tdimitrov Jan 23, 2026
bc237d5
Increase `INVALID_COLLATION_SLASH`
tdimitrov Jan 23, 2026
9f36299
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov Jan 26, 2026
6574a59
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov Jan 26, 2026
c26bfc5
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov Feb 2, 2026
53d7389
Update from github-actions[bot] running command 'fmt'
github-actions[bot] Feb 2, 2026
fd06d5e
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov Feb 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
1 change: 1 addition & 0 deletions Cargo.lock

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

1 change: 1 addition & 0 deletions cumulus/client/relay-chain-inprocess-interface/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,7 @@ fn build_polkadot_full_node(
keep_finalized_for: None,
invulnerable_ah_collators: HashSet::new(),
collator_protocol_hold_off: None,
experimental_collator_protocol: false,
};

let (relay_chain_full_node, paranode_req_receiver) = match config.network.network_backend {
Expand Down
2 changes: 1 addition & 1 deletion cumulus/zombienet/zombienet-sdk-helpers/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ pub async fn assert_para_throughput(
for (para_id, expected_candidate_range) in expected_candidate_ranges {
let actual = candidate_count
.get(&para_id)
.ok_or_else(|| anyhow!("ParaId did not have any backed candidates"))?;
.ok_or_else(|| anyhow!("ParaId {} did not have any backed candidates", para_id))?;

if !expected_candidate_range.contains(actual) {
return Err(anyhow!(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,27 +134,16 @@ async fn build_network_config(async_backing: bool) -> Result<NetworkConfig, anyh
.with_parachain(|p| {
p.with_id(PARA_ID)
.with_default_command("test-parachain")
.with_default_image(images.cumulus.as_str())
.with_default_args(vec![
"--authoring=slot-based".into(),
"-lparachain=debug,aura=debug".into(),
])
.onboard_as_parachain(false)
.with_chain(chain)
.with_default_image(images.cumulus.as_str())
.with_collator(|n| {
n.with_name("collator0").validator(true).with_args(vec![
"--authoring=slot-based".into(),
("-lparachain=debug,aura=debug").into(),
])
})
.with_collator(|n| {
n.with_name("collator1").validator(true).with_args(vec![
"--authoring=slot-based".into(),
("-lparachain=debug,aura=debug").into(),
])
})
.with_collator(|n| {
n.with_name("collator2").validator(true).with_args(vec![
"--authoring=slot-based".into(),
("-lparachain=debug,aura=debug").into(),
])
})
.with_collator(|n| n.with_name("collator0").validator(true))
.with_collator(|n| n.with_name("collator1").validator(true))
.with_collator(|n| n.with_name("collator2").validator(true))
})
.with_global_settings(|global_settings| match std::env::var("ZOMBIENET_SDK_BASE_DIR") {
Ok(val) => global_settings.with_base_dir(val),
Expand Down
4 changes: 4 additions & 0 deletions polkadot/cli/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,10 @@ pub struct RunCmd {
/// **Dangerous!** Do not touch unless explicitly advised to.
#[arg(long, hide = true)]
pub collator_protocol_hold_off: Option<u64>,

/// Enable experimental collator protocol. TESTING ONLY! Don't use on production
#[arg(long, hide = true, default_value = "false")]
pub experimental_collator_protocol: bool,
}

#[allow(missing_docs)]
Expand Down
2 changes: 2 additions & 0 deletions polkadot/cli/src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ where
// Parse collator protocol hold off value and get the list of the invlunerable collators.
let collator_protocol_hold_off = cli.run.collator_protocol_hold_off.map(Duration::from_millis);
let invulnerable_ah_collators = get_invulnerable_ah_collators(&chain_spec);
let experimental_collator_protocol = cli.run.experimental_collator_protocol;

runner.run_node_until_exit(move |config| async move {
let hwbench = (!cli.run.no_hardware_benchmarks)
Expand Down Expand Up @@ -292,6 +293,7 @@ where
keep_finalized_for: cli.run.keep_finalized_for,
invulnerable_ah_collators,
collator_protocol_hold_off,
experimental_collator_protocol,
},
)
.map(|full| full.task_manager)?;
Expand Down
1 change: 1 addition & 0 deletions polkadot/node/core/prospective-parachains/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -627,6 +627,7 @@ async fn handle_candidate_backed(
?relay_parent,
?para,
?is_active_leaf,
?candidate_hash,
"Candidate backed. Candidate chain for para: {:?}",
chain.best_chain_vec()
);
Expand Down
9 changes: 3 additions & 6 deletions polkadot/node/network/collator-protocol/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ repository.workspace = true
workspace = true

[dependencies]
async-trait = { workspace = true, optional = true }
async-trait = { workspace = true }
bitvec = { features = ["alloc"], workspace = true }
futures = { workspace = true }
futures-timer = { workspace = true }
Expand All @@ -31,15 +31,13 @@ polkadot-node-subsystem-util = { workspace = true, default-features = true }
polkadot-primitives = { workspace = true, default-features = true }
thiserror = { workspace = true }
tokio-util = { workspace = true }
# This should have really been a dev-dependency but clippy is complaining that it's not used with
# experimental-collator-protocol disabled, while the rust compiler claims that having optional
# dev-dependencies is not possible.
tokio = { features = ["macros"], workspace = true, default-features = true, optional = true }

[dev-dependencies]
assert_matches = { workspace = true }
rstest = { workspace = true }
sc-network-types = { workspace = true, default-features = true }
sp-tracing = { workspace = true }
tokio = { features = ["macros"], workspace = true, default-features = true }

codec = { features = ["std"], workspace = true, default-features = true }
sc-keystore = { workspace = true, default-features = true }
Expand All @@ -53,4 +51,3 @@ polkadot-primitives-test-helpers = { workspace = true }

[features]
default = []
experimental-collator-protocol = ["async-trait", "tokio"]
9 changes: 3 additions & 6 deletions polkadot/node/network/collator-protocol/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@ use polkadot_node_subsystem::{errors::SubsystemError, overseer, DummySubsystem,

mod collator_side;
mod validator_side;
#[cfg(feature = "experimental-collator-protocol")]
mod validator_side_experimental;

// TODO: move into validator_side_experimental once `validator_side` is retired
mod validator_side_metrics;

const LOG_TARGET: &'static str = "parachain::collator-protocol";
const LOG_TARGET_STATS: &'static str = "parachain::collator-protocol::stats";

Expand Down Expand Up @@ -84,7 +86,6 @@ pub enum ProtocolSide {
collator_protocol_hold_off: Option<Duration>,
},
/// Experimental variant of the validator side. Do not use in production.
#[cfg(feature = "experimental-collator-protocol")]
ValidatorExperimental {
/// The keystore holding validator keys.
keystore: KeystorePtr,
Expand Down Expand Up @@ -114,9 +115,6 @@ pub struct CollatorProtocolSubsystem {
#[overseer::contextbounds(CollatorProtocol, prefix = self::overseer)]
impl CollatorProtocolSubsystem {
/// Start the collator protocol.
/// If `id` is `Some` this is a collator side of the protocol.
/// If `id` is `None` this is a validator side of the protocol.
/// Caller must provide a registry for prometheus metrics.
pub fn new(protocol_side: ProtocolSide) -> Self {
Self { protocol_side }
}
Expand Down Expand Up @@ -150,7 +148,6 @@ impl<Context> CollatorProtocolSubsystem {
.map_err(|e| SubsystemError::with_origin("collator-protocol", e))
.boxed()
},
#[cfg(feature = "experimental-collator-protocol")]
ProtocolSide::ValidatorExperimental { keystore, metrics } =>
validator_side_experimental::run(ctx, keystore, metrics)
.map_err(|e| SubsystemError::with_origin("collator-protocol", e))
Expand Down
Loading
Loading