Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update elastic scaling guide #6739

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

alindima
Copy link
Contributor

@alindima alindima commented Dec 3, 2024

Resolves #5050

Updates the elastic scaling guide, taking into consideration:

  • the completed implementation of RFC-103, which enables an untrusted collator set for elastic scaling. Adds the necessary instructions for configuring the collator so that it can leverage this implementation
  • general updates for bits that became out of date

This PR should not be merged until:

  1. the CandidateReceiptV2 node feature bit is enabled on all networks
  2. the functionality hidden under the experimental-ump-signals feature of the parachain-system pallet is turned on by default (which can only be done after 1)

TODO:

@alindima alindima added the T11-documentation This PR/Issue is related to documentation. label Dec 3, 2024
@alindima alindima marked this pull request as draft December 3, 2024 09:59
@sandreim sandreim mentioned this pull request Dec 9, 2024
10 tasks
@alindima alindima requested a review from sandreim December 10, 2024 09:38
//! backing groups. A solution is being discussed
//! [here](https://github.com/polkadot-fellows/RFCs/issues/92).
//! 4. **Fixed scaling.** For true elasticity, the parachain must be able to seamlessly acquire or
//! The development required for lifting this limitation is tracked by
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would name it an optimization rather than limitation.

Comment on lines +100 to +102
//! With the addition of [RFC-103](https://polkadot-fellows.github.io/RFCs/approved/0103-introduce-core-index-commitment.html),
//! the parachain runtime has the responsibility of selecting which of the assigned cores to build
//! on. It does so by implementing the `SelectCore` trait.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would rephrase this to smth: RFC-103 enables parachain runtimes to constrain the execution of each block to a specified core. This ensures better security and liveness properties as described in the RFC. To make use of this feature ...

@@ -0,0 +1,12 @@
title: update elastic scaling guide for untrusted collator set
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
title: update elastic scaling guide for untrusted collator set
title: elastic scaling documentation changes for RFC103

//! }
//! ```
//!
//! ### Phase 3 - Configure fixed factor scaling in the runtime
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This paragraph seems fuzzy. It is not really clear what fixed factor scaling is and where the elasticity comes from. I think what we are configuring here is the maximum scaling factor.

If it is fixed or elastic, that is a concern which is not yet implemented. Currently we rely on an external party to provision arbitrary amounts of cores to the parachain at each relay chain block via either bulk or on-demand.

//!
//! - The `DefaultCoreSelector` implements a round-robin selection on the cores that can be
//! occupied by the parachain at the very next relay parent. This is the equivalent to what all
//! parachains on production networks have been using so far.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm. Shall we rename this as part of this PR? It seems like LookaheadCoreSelector should be the "default" as we expect any new parachain to use asynchronous backing?

//! <div class="warning">If you configure a velocity which is different from the number of assigned
//! cores, the measured velocity in practice will be the minimum of these two. However, be mindful
//! that if the velocity is higher than the number of assigned cores, it's possible that
//! <a href="https://github.com/paritytech/polkadot-sdk/issues/6667"> only a subset of the collator set will be authoring blocks.</a></div>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The question is why do we need to configure a velocity at all, seems redundant.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once the slot based collator can produce multiple blocks per slot we should also add that we recommend slot durations of at least 6s, preferably even 12. (better censorship resistance)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
T11-documentation This PR/Issue is related to documentation.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Elastic scaling: update guide for RFC103
3 participants