Skip to content
  1. Jan 13, 2022
    • Alexander Popiak's avatar
      Add `fast-runtime` Cargo Feature for Quick Test Runs (#4332) · 401540ee
      Alexander Popiak authored
      
      
      * add fast-runtime feature for reduced session times
      
      * make democracy periods fast on fast-runtime
      
      * propagate fast-runtime feature through cargo.toml files
      
      * add fast motion and term durations to Kusama
      
      * Update runtime/westend/Cargo.toml
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * set session time to 2 minutes to avoid block production issues
      
      * formatting
      
      * update Substrate
      
      * set democracy fast periods back to 1min
      
      * set launch period and enactment period to 1 block in fast-runtime
      
      * remove unnecessary westend period configs
      
      * add prod_or_test macro to allow specifying prod, test and env values for parameter types
      
      * move prod_or_test macro into common module and use it consistently
      
      * rename macro to prod_or_fast
      
      * cargo +nightly fmt
      
      * bump impl_versions
      
      * newline
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * add note that env variable is evaluated at compile time
      
      * newline
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * newline
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * cargo fmt
      
      * impl_version: 0
      
      * impl_version: 0
      
      * use prod_or_fast macro for LeasePeriod and LeaseOffset
      
      * use prod_or_fast macro in WND and ROC constants
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarGiles Cope <[email protected]>
      401540ee
    • Sergey Pepyakin's avatar
      paras: Add runtime events for PVF pre-checking (#4683) · 21419a81
      Sergey Pepyakin authored
      In this PR, paras module emit runtime events on certain PVF pre-checking
      related conditions.
      
      Specifically, there are 3 new events in the paras module:
      
      1. PvfCheckStarted
      2. PvfCheckAccepted
      3. PvfCheckRejected
      
      All of those have identifiers for the parachain that triggered the PVF
      pre-checking and the validation code that goes through the pre-checking.
      
      The mechanics of those are as follows. Each time a new PVF is added, be
      it due to onboarding or upgrading, the `PvfCheckStarted` will be
      triggered. If another parachain triggers a pre-checking process for the
      validation code which is already being pre-checked, another
      `PvfCheckStarted` event will be triggered with the corresponding para
      id.
      
      When the PVF pre-checking voting for a PVF was finished, several
      `PvfCheckAccepted/Rejected` events will be triggered: one for each para id that
      was subscribed to this check (i.e. was a "cause" for it).
      
      If the PVF pre-checking is disabled, then one can still expect these
      events to be fired. Since insta PVF approval is syncronous, the
      `PvfCheckStarted` will be followed by the `PvfCheckAccepted` with the
      same validation code and para id.
      
      If somebody is interested in following validation code changes for a PVF
      of a parachain, they would need to subscribe to those events. I did not
      supply the topics for the events, since I am not sure if that's needed
      or will be used, but they can be added later if needed.
      21419a81
    • Kian Paimani's avatar
      12d16002
  2. Jan 12, 2022
  3. Jan 11, 2022
  4. Jan 10, 2022
  5. Jan 07, 2022
  6. Jan 05, 2022
  7. Jan 03, 2022
    • Keith Yeung's avatar
      Set CurrentCodeHash before running some dispatchable benchmarks (#4645) · 5047ef8e
      Keith Yeung authored
      
      
      * Set CurrentCodeHash before running some dispatchable benchmarks
      
      * Use insert instead of put
      
      * Actually hash the ValidationCode
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_paras.rs
      
      Co-authored-by: default avatarParity Bot <[email protected]>
      5047ef8e
    • Sergey Pepyakin's avatar
      paras: split tests (#4636) · 575775a1
      Sergey Pepyakin authored
      This is only a module structure change: the tests module was promoted to
      have its own file.
      575775a1
  8. Jan 01, 2022
    • Sergey Pepyakin's avatar
      chore: fix copy&paste and tidy comments (#4646) · 78b3dc21
      Sergey Pepyakin authored
      As was brought up in [here][og], we have some copy&paste comments. I
      fixed them and also took liberty of fixing some other places.
      Specifically, those that say "module" instead of contemporary "pallet".
      
      [og]:
      https://github.com/paritytech/polkadot/pull/4603#discussion_r776971291
      78b3dc21
  9. Dec 31, 2021
    • Sergey Pepyakin's avatar
      paras: fix upgrade restriction signal (#4603) · 5f6a0392
      Sergey Pepyakin authored
      Closes #3971
      
      Read the linked issue.
      
      Apart from that, this addresses the concern raised in this [comment] by
      just adding a test. I couldn't find a clean way to reconcile a block
      number delay with a PVF voting TTL, so I just resorted to rely on the
      test. Should be fine for now.
      
      [comment]: https://github.com/paritytech/polkadot/pull/4457#discussion_r770517562
      5f6a0392
  10. Dec 30, 2021
    • Sergey Pepyakin's avatar
      configuration: Rename validation_upgrade_{frequency -> cooldown} (#4635) · 72a92eaf
      Sergey Pepyakin authored
      This just renames a member of `HostConfiguration` from
      validation_upgrade_frequency to -//-_cooldown.
      
      As was already pointed out in #4460 the existing name is a misnomer, the
      member actually represents a minimum time period between upgrades, which
      is neatly expressed by a word cooldown.
      
      I've been planning this rename already for some time and the term is
      already used in paras module:
      
      https://github.com/paritytech/polkadot/blob/1394b70d/runtime/parachains/src/paras.rs#L1568-L1574
      72a92eaf
  11. Dec 29, 2021
    • Sergey Pepyakin's avatar
      paras: add governance control dispatchables (#4575) · 4bf62d85
      Sergey Pepyakin authored
      
      
      * paras: add governance control dispatchables
      
      Adds a couple of functions for governance control for the paras module
      in the anticipation of PVF pre-checking enabling.
      
      Specifically, this commit adds a function for pre-registering a PVF that
      governance trusts enough. This function will come in handy in case there
      is a parachain that does not follow the GoAhead signal. That is, does
      not include https://github.com/paritytech/cumulus/pull/517.
      
      This may be not an exhaustive list of the functions that may come in
      handy. Any suggestions to add more are welcome.
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=polkadot-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/polkadot/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features runtime-benchmarks -- benchmark --chain=rococo-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/rococo/src/weights/runtime_parachains_paras.rs
      
      Co-authored-by: default avatarParity Bot <[email protected]>
      4bf62d85
  12. Dec 28, 2021
  13. Dec 27, 2021
    • Sergey Pepyakin's avatar
      configuration: Unified consistency checks (#4581) · 4d768787
      Sergey Pepyakin authored
      This commit refactors the consistency checks. Instead of each individual
      setter performs its checks locally, we delegate those checks to the
      already existing function `check_consistency`. This removes duplication
      and simplifies the logic.
      
      A motivating example of this one is the next PR in the stack that will
      introduce a check for a field, which validity depends on the validity of
      other two fields. Without this refactoring we will have to place a check
      not only to the field in question, but also to the other two fields so
      that if they are changed they do not violate consistency criteria. It's
      easy to imagine how this can go unwieldy with the number of checks.
      
      This also adds a test that verifies that the default chain spec host
      configuration is consistent.
      4d768787
    • ordian's avatar
      9efb223a
    • ordian's avatar
      session-info: add new fields + migration (#4545) · b342ae11
      ordian authored
      
      
      * session_info: v2 + migration
      
      * use primitives::v2
      
      * use polkadot_primitives::v2
      
      * impl primitives::v2
      
      * fix approval-voting tests
      
      * fix other tests
      
      * hook storage migration up
      
      * backwards compat (1)
      
      * backwards compat (2)
      
      * fmt
      
      * fix tests
      
      * FMT
      
      * do not reexport v1 in v2
      
      * fmt
      
      * set storage version to 1
      
      Co-authored-by: default avatarJavier Viola <[email protected]>
      b342ae11
  14. Dec 25, 2021
  15. Dec 24, 2021
    • cheme's avatar
      Companion for substrate#9732 (#4104) · 48dc6750
      cheme authored
      * merge master (do not compile)
      
      * fix
      
      * lock
      
      * update lock
      
      * Update to refactoring.
      
      * runtime version
      
      * fmt
      
      * remove trie patch
      
      * remove patch
      
      * No layout alias for bridge proof.
      
      * update depupdate depss
      
      * No switch until migration.
      
      * master lock
      
      * test
      
      * test
      
      * Revert "test"
      
      This reverts commit 57325ef73332bf4b054aa4a667bb716fcf8a0d89.
      
      * Revert "test"
      
      This reverts commit ce74d0e2062806f72c0e9e9ca07b14165f43521e.
      
      * rename feature
      
      * state version as parameter, use the feature only on runtimes.
      
      * update
      
      * update to state version in runtime
      
      * state version from storage
      
      * update lockfile for substrate
      
      Co-authored-by: parity-processbot <>
      48dc6750
  16. Dec 23, 2021
    • Robert Klotzner's avatar
      First step in implementing #4386 (#4437) · 846828f6
      Robert Klotzner authored
      * First step in implementing https://github.com/paritytech/polkadot/issues/4386
      
      This PR:
      
      - Reduces MAX_UNSHARED_UPLOAD_TIME to 150ms
      - Increases timeout on collation fetching to 1200ms
      - Reduces limit on needed backing votes in the runtime
      
      This PR does not yet reduce the number of needed backing votes on the
      node as this can only be meaningfully enacted once the changed limit in
      the runtime is live.
      
      * Fix tests.
      
      * Guide updates.
      
      * Review remarks.
      
      * Bump minimum required backing votes to 2 in runtime.
      
      * Make sure node side code won't make runtime vomit.
      
      * cargo +nightly fmt
      846828f6
  17. Dec 22, 2021
    • Sergey Pepyakin's avatar
      configuration: refactor configuration initialization (#4569) · 4689ccff
      Sergey Pepyakin authored
      Refactor the configuration module's initializer_on_new_session in such a
      way that it returns the configuration. This would make it inline with
      other special initialization routines like `shared`'s or `paras`.
      
      This will be useful in a following PR that will check consistency of the
      configuration before setting it.
      4689ccff
  18. Dec 21, 2021
    • Adrian Catangiu's avatar
      Companion for Substrate#10445 (#4506) · 30423f79
      Adrian Catangiu authored
      * runtimes: use updated BeefyApi
      
      * update lockfile for substrate
      30423f79
    • Sergey Pepyakin's avatar
      pvf-precheck: update rustdoc for paras module (#4459) · 0e046a00
      Sergey Pepyakin authored
      Basically updates the docs for the paras module.
      0e046a00
    • Sergey Pepyakin's avatar
      pvf-precheck: hook up runtime API (#4542) · 3cb138d2
      Sergey Pepyakin authored
      
      
      This commit hooks up the API provided by #4457 to the runtime API
      subsystem. In a following PR this API will be consumed by the PVF
      pre-checking subsystem.
      
      Co-authored-by: default avatarChris Sosnin <[email protected]>
      
      Co-authored-by: default avatarChris Sosnin <[email protected]>
      3cb138d2
    • Sergey Pepyakin's avatar
      parachains: Fix configuration module (#4540) · 5a3ee43c
      Sergey Pepyakin authored
      
      
      * parachains: Fix configuration module
      
      Closes #4529
      Closes #4533
      
      I figured that trying to avoid updates does not really worth it to keep.
      This is because we seem to not update the configuration often and when
      we do we approach this carefully. Thus possibility of a redundant update
      is really negligable. At the same time, if such a redundant update does
      happen then the effects of that are really small: just some wasted
      storage interactions.
      
      On the other hand, making it work was a little bit annoying. With the
      proper fix for the pending updates this would be even more annoying
      since now we would have to add combinatorically more cases to test this.
      
      So I figured that I will just scrap that and simplify the code.
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::configuration --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_configuration.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=polkadot-dev --steps=50 --repeat=20 --pallet=runtime_parachains::configuration --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/polkadot/src/weights/runtime_parachains_configuration.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::configuration --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_configuration.rs
      
      * review fixes
      
      Co-authored-by: default avatarParity Bot <[email protected]>
      5a3ee43c
  19. Dec 20, 2021
  20. Dec 17, 2021
  21. Dec 16, 2021
    • Sergey Pepyakin's avatar
      Fix fmt on master (#4546) · 1eefce2a
      Sergey Pepyakin authored
      1eefce2a
    • Sergey Pepyakin's avatar
      paras: add log target (#4478) · 804e0918
      Sergey Pepyakin authored
      Simply extract hardcoded log target into a const.
      804e0918
    • Sergey Pepyakin's avatar
      pvf-precheck: Integrate PVF pre-checking into paras module (#4457) · 47810dca
      Sergey Pepyakin authored
      
      
      * pvf-precheck: Integrate PVF pre-checking into paras module
      
      Closes #4009
      
      This is the most of the runtime-side change needed for #3211.
      
      Here is how it works.
      
      The PVF pre-checking can be triggered either by an upgrade or by
      onboarding (i.e. calling `schedule_para_initialize`). The PVF
      pre-checking process is identified by the PVF code hash that is being
      voted on. If there is already PVF pre-checking process running, then no
      new PVF pre-checking process will be started. Instead, we just subscribe
      to the existing one.
      
      If there is no PVF pre-checking process running but the PVF code hash
      was already saved in the storage, that necessarily means (I invite the
      reviewers to double-check this invariant) that the PVF already passed
      pre-checking. This is equivalent to instant approving of the PVF.
      
      The pre-checking process can be concluded either by obtaining a
      supermajority or if it expires.
      
      Each validator checks the list of PVFs available for voting. The vote is
      binary, i.e. accept or reject a given PVF. As soon as the supermajority
      of votes are collected for one of the sides of the vote, the voting is
      concluded in that direction and the effects of the voting are enacted.
      
      Only validators from the active set can participate in the vote. The set
      of active validators can change each session. That's why we reset the
      votes each session. A voting that observed a certain number of sessions
      will be rejected.
      
      The effects of the PVF accepting depend on the operations requested it:
      
      1. All onboardings subscribed to the approved PVF pre-checking process will
      get scheduled and after passing 2 session boundaries they will be onboarded.
      2. All upgrades subscribed to the approved PVF pre-checking process will
      get scheduled very similarly to the existing process. Upgrades with
      pre-checking are really the same process that is just delayed by the
      time required for pre-checking voting. In case of instant approval the
      mechanism is exactly the same. This is important from parachains
      compatibility standpoint since following the delayed upgrade requires
      the parachain to implement
      https://github.com/paritytech/cumulus/pull/517.
      
      In case, PVF pre-checking process was concluded with rejection, then all
      the requesting operations get cancelled. For onboarding it means it gets
      without movement: the lifecycle of such parachain is terminated on the
      `Onboarding` state and after rejection the lifecycle is none. That in
      turn means that the caller can attempt registering the parachain once
      more. For upgrading it means that the upgrade process is aborted: that
      flashes go-ahead signal with `Abort` flag.
      
      Rejection leads to removing the allegedly bad validation code from the
      chain storage. Among other things, this implies that the operation can
      be re-requested. That allows for retrying an operation in case there was
      some bug. At the same time it does not look as a DoS vector due to the
      caching performed by the nodes.
      
      PVF pre-checking can be enabled and disabled. Initially, according to
      the changes in #4420, this mechanism is disabled. Triggering the PVF
      pre-checking when it is disabled just means that we insta approve the
      requesting operation. This should lead to the behavior being unchanged.
      
      Follow-ups:
      
      - expose runtime APIs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=polkadot-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/polkadot/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features runtime-benchmarks -- benchmark --chain=rococo-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/rococo/src/weights/runtime_parachains_paras.rs
      
      * Review fixes
      
      Co-authored-by: default avatarParity Bot <[email protected]>
      47810dca