Skip to content
  1. Feb 04, 2021
    • Shawn Tabrizi's avatar
      Explicit Para Lifecycle w/ Upgrades and Downgrades (#2354) · 2b533ddc
      Shawn Tabrizi authored
      
      
      * initial implementation of lifecycles and upgrades
      
      * clean up a bit
      
      * fix doc comment
      
      * more rigid lifecycle checks
      
      * include paras which are transitioning, and lifecycle query
      
      * format guide
      
      * update api
      
      * update guide
      
      * explicit outgoing state, fix genesis
      
      * handle outgoing with transitioning paras
      
      * do not include transitioning paras in identifier
      
      * Update roadmap/implementers-guide/src/runtime/paras.md
      
      * Update roadmap/implementers-guide/src/runtime/paras.md
      
      * Update roadmap/implementers-guide/src/runtime/paras.md
      
      * Apply suggestions from code review
      
      * Use matches macro
      
      * Correct terms
      
      * Apply suggestions from code review
      
      * actions queue
      
      * Revert "actions queue"
      
      This reverts commit b2e9011ec8937d6c73e99292416c9692aeb30f73.
      
      * collapse onboarding state
      
      Co-authored-by: default avatarGavin Wood <[email protected]>
      2b533ddc
  2. Feb 02, 2021
    • Liu-Cheng Xu's avatar
      Conpanion for Substrate#7127 (#1865) · d353c76e
      Liu-Cheng Xu authored
      * Conpanion for Substrate#7127
      
      * Use sp_session::OneSessionHandler
      
      * .
      
      * Fix pallet_session::OneSessionHandler
      
      * OneSessionHandler is in frame_support now
      
      * "Update Substrate"
      
      Co-authored-by: parity-processbot <>
      d353c76e
    • Sergey Pepyakin's avatar
      Clean up PersistedValidationData (#2353) · d4fdbf7d
      Sergey Pepyakin authored
      * PVD: `block_number`->`relay_parent_number`
      
      * ValidationParams: `relay_chain_height`->`relay_parent_number`
      
      * Expose DMQ MQC hash as a well-known-key
      
      This way the relay storage merkle proofs will be able to obtain the DMQ
      MQC hash and we will be able to remove the it from the
      PersistedValidationData struct.
      
      * PersistedValidationData: Remove HRMP MQC heads
      
      * PersistedValidationData: Remove `dmq_mqc_head`
      
      * Expose the HRMP ingress channel index as a well-known-key
      
      This way a parachain (PVF and collator) can find all the parachains that
      have an outbound channel to the given one. That allows in turn to find
      all the inbound channels for the given para.
      
      Having access to that allows the parachain to get the same information
      as the hrmp_mqc_heads now provide.
      
      * Rename `relay_storage_root` to `relay_parent_storage_root`
      d4fdbf7d
  3. Feb 01, 2021
  4. Jan 29, 2021
  5. Jan 28, 2021
  6. Jan 27, 2021
  7. Jan 20, 2021
  8. Jan 18, 2021
  9. Jan 17, 2021
  10. Jan 15, 2021
  11. Jan 14, 2021
  12. Jan 13, 2021
    • asynchronous rob's avatar
      scheduler: handle re-scheduling around finalization correctly (#2257) · 3465c18b
      asynchronous rob authored
      
      
      * scheduler: handle re-scheduling around finalization correctly
      
      * also make sure parathreads get cleaned
      
      * run scheduling in finalization
      
      * Remove stray println!
      
      * Update the schedule call site in inclusion inherent
      
      * Clarify subtlety around SessionStartBlock
      
      * Remove double semi-colon
      
      * reschedule prior to `availability_cores` and in on-initialize
      
      * improve docs
      
      * fix line
      
      * more doc reformat
      
      * remove unneeded call
      
      * avoid unnecessary scheduling on initialize
      
      * split `clear` and `schedule
      
      * Update runtime/parachains/src/scheduler.rs
      
      Co-authored-by: default avatarSergei Shulepov <[email protected]>
      
      Co-authored-by: default avatarSergei Shulepov <[email protected]>
      3465c18b
    • ordian's avatar
      Companion for substrate#7892 (#2262) · e1773be6
      ordian authored
      * session_info: use correct authorities set
      
      * bump rococo spec_version to 19
      
      * "Update Substrate"
      
      Co-authored-by: parity-processbot <>
      e1773be6
    • Sergey Pepyakin's avatar
      HRMP channel deposits (#2225) · c644c39f
      Sergey Pepyakin authored
      * Drive by fixes
      
      The visibility modifiers are remnants of the previous structure where
      HRMP wasn't a standalone module, by rather a submodule of the router
      module.
      
      * Add Currency assoc type to Config
      
      This would allow us to reserve balance for deposits. This commit also
      integrates the HRMP module in rococo, test-runtime and mocks to use the
      balances pallet.
      
      * Fix a bug that doesn't increment the age
      
      In case the request is not confirmed, the age would be incremented but
      not persisted.
      
      * Fix cleaning the indexes
      
      Before that change, the cleaning of the channel indexes was wrong, because it
      naively removed entire rows that was pertaining to the para we delete.
      This approach is flawed because it doesn't account for the rows that are
      pertaining to other paras that contain the outgoing one.
      
      This clearly violates the invariant imposed on the indexes, that all
      the index rows must contain alive paras, but apart from that it also
      lead to the situation where ingress index would contain the a different
      set of channels that an egress have.
      
      * Reserve currency for opening the channels
      
      Note the ugly `unique_saturated_into` calls. The reason for them is the
      currency trait accepts and defines the `Balance` associated type and the
      deposit values are coming from the `HostConfiguration` where they are
      defined using the `Balance`.
      
      I figured that parameterising `HostConfiguration` would be annoying. On
      the other hand, I don't expect these `unique_saturated_into` calls to
      give us problems since it seems to be a reasonable assumption that this
      module will be instantiated within a runtime where the Currency provided
      will have a Balance that matches the one used in the configuration.
      
      * Tests: Adapt `run_to_block` so that it submits a proper config
      
      * Tests: exercise the deposit logic
      c644c39f
    • Sergey Pepyakin's avatar
      Avoid inlining `update_config_member` (#2246) · eae961ee
      Sergey Pepyakin authored
      Closes #2241
      eae961ee
  13. Jan 12, 2021
  14. Jan 11, 2021
  15. Jan 06, 2021
  16. Jan 05, 2021
    • Peter Goodspeed-Niklaus's avatar
      Reduce the inclusion inherent's actual weight if the block is already heavy (#2060) · fcc0fca1
      Peter Goodspeed-Niklaus authored
      
      
      * don't modify inherent data on heavy block
      
      * write up current thinking on block weight detection
      
      * extract inherent inclusion check into its own function
      
      * put heavy block check into runtime
      
      * the `inclusion` inherent call is Operational, not Mandatory
      
      This resolves a lot of the trickiness about this issue, because
      we no longer need to override or supplant any existing proposer
      logic; the existing logic should exhibit these behaviors:
      
      - the `inclusion` inherent is prioritized over standard transactions
      - but if it's too heavy, i.e. in case of runtime upgrade, it'll be
        dropped in favor of that.
      
      It is my belief that allowing the proposer to just not include
      this data won't have any adverse effects: it's equivalent to replacing
      them with empty versions of themselves, which the `ProvideInherent`
      impl already does.
      
      * Revert "the `inclusion` inherent call is Operational, not Mandatory"
      
      This reverts commit e58858d109b18b84e7af3ac47981c6900b2d9a3e.
      
      * Revert "write up current thinking on block weight detection"
      
      This reverts commit fd587b80c46761b2a2b62448193348237863f99f.
      
      * Revert "don't modify inherent data on heavy block"
      
      This reverts commit 38299d3c23e9efb5a354d8cfa658e62a5c8c7ddf.
      
      * add backed candidate block weight assumption to configuration
      
      * Limit backed candidates according to a candidate weight heuristic.
      
      This approach replaces making the inclusion inherent non-mandatory.
      It's still not ideal in that we have to configure a heuristic for
      how much each backed candidate 'weighs', instead of directly
      measuring it somehow.
      
      This approach also never truncates the signed bitfields. The
      rationale for that depends on some assumptions:
      
      - processing the signed bitfields is cheap compared to the
        backed candidates
      - it is beneficial to the progress of the relay chain
        to update the signed bitfields even if not all backed candidates
        are updated
      
      * simplify limit_backed_candidates and weight assumption
      
      * don't trust the provisioner to fairly distribute candidates
      
      * use saturating subtraction
      
      * empty commit to restart ci
      
      * use new mechanism for getting max block weight
      
      * apply weight refunds to the inclusion inherent
      
      This makes some assumptions about fundamental weights, which are
      encapsulated as constants. From there, it lets Substrate know
      what the actual computed weight of the inherent is.
      
      * use a correct fixed weight for the inclusion inherent
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      
      * use dynamic inclusion weight so we reduce calculated weight when excluding candidates
      
      * don't double-count this intrinsic's weight in the block weight
      
      * add unit tests of fn limit_backed_candidates
      
      * add tests that the inclusion inherent's weight correctly updates
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      fcc0fca1
    • Sergey Pepyakin's avatar
      Parachains well known keys and abridged primitives (#2194) · ceb9e216
      Sergey Pepyakin authored
      * Add well_known_keys
      
      * Reorder HrmpChannel and HostConfiguration members
      
      * abridged versions and well known keys tests
      
      * Add some comments
      
      * Add a note on generation of the prefixes
      
      and other magic values
      
      * Recommend accessing the well known values through abridged structs
      ceb9e216
  17. Jan 04, 2021
    • Sergey Pepyakin's avatar
      Add relay storage root to persisted validation data (#2161) · a864eaa0
      Sergey Pepyakin authored
      * Cont.: Implement the state root obtaining during inclusion
      
      During inclusion now we obtain the storage root by passing it through
      the inclusion_inherent.
      
      * Fix tests
      
      * Bump rococo spec version
      
      * Reorder the parent header into the end
      
      of the inclusion inherent.
      
      When the parent header is in the beginning, it shifts the other two
      fields, so that a previous version won't be able to decode that. If
      we put the parent header in the end, the other two fields will stay
      at their positions, thus make it possible to decode with the previous
      version.
      
      That allows us to perform upgrade of rococo runtime without needing of
      simultanuous upgrade of nodes and runtime, or restart of the network.
      
      * Squash a stray tab
      a864eaa0
  18. Dec 30, 2020
  19. Dec 29, 2020
  20. Dec 24, 2020
  21. Dec 21, 2020
    • Sergey Pepyakin's avatar
      Do not use rely on the block initialization when calling runtime APIs (#2123) · 4405f52e
      Sergey Pepyakin authored
      
      
      * Don't initialize block when calling runtime APIs
      
      * Adapt check_validation_outputs
      
      We split the code path for the inclusion and for the commitments checking.
      
      * Slap #[skip_initialize_block] on safe runtime APIs
      
      That is, those that should not be affected by this attribute
      
      * Make `Scheduled` not ephemeral
      
      So that it is persisted in the storage and ready to be inspected
      by the runtime APIs. This is in contrast to what was before, where we
      would remove the storage entry and then rely on the scheduling performed
      by `on_initialize` again.
      
      * Add a big fat comment
      
      * Typos
      
      Co-authored-by: default avatarRobert Habermeier <[email protected]>
      
      * Move session change to the end of the current block
      
      Previously, it was the beginning of the next block. This allows us to
      put #[skip_initialize_block]
      
      * Update tests
      
      * Fix a test in paras registrar
      
      Also refactor it a bit so the next time there are more chances this kind
      of issue is diagnosed quicker.
      
      * Add for_runtime_api to inclusion's check_validation_outputs
      
      Co-authored-by: default avatarRobert Habermeier <[email protected]>
      4405f52e
  22. Dec 18, 2020
    • asynchronous rob's avatar
      Add candidate info to OccupiedCore (#2134) · 38276b08
      asynchronous rob authored
      * guide: add candidate information to OccupiedCore
      
      * add descriptor and hash to occupied core type
      
      * guide: add candidate hash to inclusion
      
      * runtime: return candidate info in core state
      
      * bitfield signing: stop querying runtime as much
      
      * minimize going to runtime in availability distribution
      
      * fix availability distribution tests
      
      * guide: remove para ID from Occupied core
      
      * get all crates compiling
      38276b08
  23. Dec 17, 2020
    • ordian's avatar
      refactor View to include finalized_number (#2128) · 3f5156e8
      ordian authored
      * refactor View to include finalized_number
      
      * guide: update the NetworkBridge on BlockFinalized
      
      * av-store: fix the tests
      
      * actually fix tests
      
      * grumbles
      
      * ignore macro doctest
      
      * use Hash::repeat_bytes more consistently
      
      * broadcast empty leaves updates as well
      
      * fix issuing view updates on empty leaves updates
      3f5156e8
  24. Dec 16, 2020
    • asynchronous rob's avatar
      Reward validators for participating in parachains (#2089) · f4e93052
      asynchronous rob authored
      * plumbing for rewarding backers
      
      * give validators reward points for participating
      
      * fix tests
      
      * add bitfield rewarding
      
      * add mocks for backing rewards
      
      * add testing for backing & availability rewards
      
      * implement RewardValidators on top of staking
      
      * add to test-runtime and rococo
      
      * add to test-runtime & rococo
      
      * point to source on rewards values
      
      * fix common tests
      
      * do not reward availability anymore
      f4e93052
  25. Dec 14, 2020
  26. Dec 11, 2020
    • asynchronous rob's avatar
      Add assignment keys to session keys, no separate approvals key (#2092) · 15c25311
      asynchronous rob authored
      * guide: merge backing and approval keys
      
      * bump substrate master & update primitives
      
      * use new SessionInfo struct in session_info
      
      * session keys upgrade for Polkadot
      
      * kusama & westend runtimes
      
      * bump westend, kusama, and polkadot versions
      
      * add session key to rococo & test-runtime
      
      * update prepare-test-net to latest subkey
      
      * update chain specs to support new para_assignment session key
      
      * get cargo.lock from master
      
      * formatting
      
      * update kill_storage based on substrate master
      
      * fix test-service
      
      * assgn -> asgn
      
      * use session info module for assignment session key
      15c25311
  27. Dec 10, 2020
  28. Dec 09, 2020