Skip to content
  1. Jan 12, 2021
  2. 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
  3. 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
  4. Dec 30, 2020
  5. Dec 24, 2020
  6. 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
  7. 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
  8. 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
  9. 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
  10. Dec 14, 2020
  11. 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
  12. Dec 10, 2020
  13. Dec 09, 2020
  14. Dec 08, 2020
  15. Dec 04, 2020
  16. Nov 30, 2020
  17. Nov 27, 2020
    • asynchronous rob's avatar
      Move erasure root out of candidate commitments and into descriptor (#2010) · 0a79d663
      asynchronous rob authored
      
      
      * guide: move erasure-root to candidate descriptor
      
      * primitives: move erasure root to descriptor
      
      * guide: unify candidate commitments and validation outputs
      
      * primitives: unify validation outputs and candidate commitments
      
      * parachains-runtime: fix fallout
      
      * runtimes: fix fallout
      
      * collation generation: fix fallout
      
      * fix stray reference in primitives
      
      * fix fallout in node-primitives
      
      * fix remaining fallout in collation generation
      
      * fix fallout in candidate validation
      
      * fix fallout in runtime API subsystem
      
      * fix fallout in subsystem messages
      
      * fix fallout in candidate backing
      
      * fix fallout in availability distribution
      
      * don't clone
      
      * clone
      
      Co-authored-by: default avatarSergei Shulepov <[email protected]>
      0a79d663
  18. Nov 26, 2020
    • ordian's avatar
      past-session validator discovery APIs (#2009) · 39a12b68
      ordian authored
      
      
      * guide: fix formatting for SessionInfo module
      
      * primitives: SessionInfo type
      
      * punt on approval keys
      
      * ah, revert the type alias
      
      * session info runtime module skeleton
      
      * update the guide
      
      * runtime/configuration: sync with the guide
      
      * runtime/configuration: setters for newly added fields
      
      * runtime/configuration: set codec indexes
      
      * runtime/configuration: update test
      
      * primitives: fix SessionInfo definition
      
      * runtime/session_info: initial impl
      
      * runtime/session_info: use initializer for session handling (wip)
      
      * runtime/session_info: mock authority discovery trait
      
      * guide: update the initializer's order
      
      * runtime/session_info: tests skeleton
      
      * runtime/session_info: store n_delay_tranches in Configuration
      
      * runtime/session_info: punt on approval keys
      
      * runtime/session_info: add some basic tests
      
      * Update primitives/src/v1.rs
      
      * small fixes
      
      * remove codec index annotation on structs
      
      * fix off-by-one error
      
      * validator_discovery: accept a session index
      
      * runtime: replace validator_discovery api with session_info
      
      * Update runtime/parachains/src/session_info.rs
      
      Co-authored-by: default avatarSergei Shulepov <[email protected]>
      
      * runtime/session_info: add a comment about missing entries
      
      * runtime/session_info: define the keys
      
      * util: expose connect_to_past_session_validators
      
      * util: allow session_info requests for jobs
      
      * runtime-api: add mock test for session_info
      
      * collator-protocol: add session_index to test state
      
      * util: fix error message for runtime error
      
      * fix compilation
      
      * fix tests after merge with master
      
      Co-authored-by: default avatarSergei Shulepov <[email protected]>
      39a12b68
  19. Nov 19, 2020
  20. Nov 17, 2020
    • Shawn Tabrizi's avatar
      patches (#1965) · 0efee478
      Shawn Tabrizi authored
      0efee478
    • ordian's avatar
      update most of the dependencies (#1946) · 0a8a607a
      ordian authored
      * update tiny-keccak to 0.2
      
      * update deps except bitvec and shared_memory
      
      * fix some warning after futures upgrade
      
      * remove useless package rename caused by bug in cargo-upgrade
      
      * revert parity-util-mem *
      
      * remove unused import
      
      * cargo update
      
      * remove all renames on parity-scale-codec
      
      * remove the leftovers
      
      * remove unused dep
      0a8a607a
  21. Nov 16, 2020
  22. Nov 11, 2020
  23. Nov 06, 2020
    • Sergey Pepyakin's avatar
      Implement HRMP (#1900) · c96f8cfc
      Sergey Pepyakin authored
      
      
      * HRMP: Update the impl guide
      
      * HRMP: Incorporate the channel notifications into the guide
      
      * HRMP: Renaming in the impl guide
      
      * HRMP: Constrain the maximum number of HRMP messages per candidate
      
      This commit addresses the HRMP part of https://github.com/paritytech/polkadot/issues/1869
      
      * XCM: Introduce HRMP related message types
      
      * HRMP: Data structures and plumbing
      
      * HRMP: Configuration
      
      * HRMP: Data layout
      
      * HRMP: Acceptance & Enactment
      
      * HRMP: Test base logic
      
      * Update adder collator
      
      * HRMP: Runtime API for accessing inbound messages
      
      Also, removing some redundant fully-qualified names.
      
      * HRMP: Add diagnostic logging in acceptance criteria
      
      * HRMP: Additional tests
      
      * Self-review fixes
      
      * save test refactorings for the next time
      
      * Missed a return statement.
      
      * a formatting blip
      
      * Add missing logic for appending HRMP digests
      
      * Remove the channel contents vectors which became empty
      
      * Tighten HRMP channel digests invariants.
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <[email protected]>
      
      * Remove a note about sorting for channel id
      
      * Add missing rustdocs to the configuration
      
      * Clarify and update the invariant for HrmpChannelDigests
      
      * Make the onboarding invariant less sloppy
      
      Namely, introduce `Paras::is_valid_para` (in fact, it already is present
      in the implementation) and hook up the invariant to that.
      
      Note that this says "within a session" because I don't want to make it
      super strict on the session boundary. The logic on the session boundary
      should be extremely careful.
      
      * Make `CandidateCheckContext` use T::BlockNumber for hrmp_watermark
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <[email protected]>
      c96f8cfc
  24. Nov 05, 2020
  25. Nov 03, 2020
  26. Nov 02, 2020
  27. Oct 28, 2020
    • Sergey Pepyakin's avatar
      Downward Message Processing implementation (#1859) · 9903bca2
      Sergey Pepyakin authored
      * DMP: data structures and plumbing
      
      * DMP: Implement DMP logic in the router module
      
      DMP: Integrate DMP parts into the inclusion module
      
      * DMP: Introduce the max size limit for the size of a downward message
      
      * DMP: Runtime API for accessing inbound messages
      
      * OCD
      
      Small clean ups
      
      * DMP: fix the naming of the error
      
      * DMP: add caution about a non-existent recipient
      9903bca2
  28. Oct 24, 2020
    • Sergey Pepyakin's avatar
      Runtime API for checking validation outputs (#1842) · abb282df
      Sergey Pepyakin authored
      * annoying whitespaces
      
      * update guide
      
      Add `CheckValidationOutputs` runtime api and also change the
      candidate-validation stuff
      
      * promote ValidationOutputs to global primitives
      
      i.e. move it from node specific primitives to global v1 primitives. This
      will be needed when we share it later in the runtime inclusion module
      
      * refactor acceptance checks in the inclusion module
      
      factor out the common code to share it during the block inclusion and
      for the forthcoming CheckValidationOutputs runtime api.
      
      Also note that the acceptance criteria was updated to incorporate checks
      that exist now in candidate-validation
      
      * plumb the runtime api outside
      
      * extract validation_data from ValidationOutputs
      
      * use runtime-api to check validation outputs
      
      apart from that refactor, update docs and tidy a bit
      
      * Update the maxium code size
      
      This is to fix a test that performs an upgrade.
      abb282df
  29. Oct 16, 2020
  30. Oct 09, 2020
    • Rakan Alhneiti's avatar
      Update to work with async keystore – Companion PR for #7000 (#1740) · bd75a4ce
      Rakan Alhneiti authored
      
      
      * Fix keystore types
      
      * Use SyncCryptoStorePtr
      
      * Borrow keystore
      
      * Fix unused imports
      
      * Fix polkadot service
      
      * Fix bitfield-distribution tests
      
      * Fix indentation
      
      * Fix backing tests
      
      * Fix tests
      
      * Fix provisioner tests
      
      * Removed SyncCryptoStorePtr
      
      * Fix services
      
      * Address PR feedback
      
      * Address PR feedback - 2
      
      * Update CryptoStorePtr imports to be from sp_keystore
      
      * Typo
      
      * Fix CryptoStore import
      
      * Document the reason behind using filesystem keystore
      
      * Remove VALIDATORS
      
      * Fix duplicate dependency
      
      * Mark sp-keystore as optional
      
      * Fix availability distribution
      
      * Fix call to sign_with
      
      * Fix keystore usage
      
      * Remove tokio and fix parachains Cargo config
      
      * Typos
      
      * Fix keystore dereferencing
      
      * Fix CryptoStore import
      
      * Fix provisioner
      
      * Fix node backing
      
      * Update services
      
      * Cleanup dependencies
      
      * Use sync_keystore
      
      * Fix node service
      
      * Fix node service - 2
      
      * Fix node service - 3
      
      * Rename CryptoStorePtr to SyncCryptoStorePtr
      
      * "Update Substrate"
      
      * Apply suggestions from code review
      
      * Update node/core/backing/Cargo.toml
      
      * Update primitives/src/v0.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Fix wasm build
      
      * Update Cargo.lock
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      bd75a4ce
  31. Oct 08, 2020
    • Peter Goodspeed-Niklaus's avatar
      Remove old service, 3rd try (#1776) · c2941a27
      Peter Goodspeed-Niklaus authored
      * Remove old service, 3rd try
      
      i.e.
      Revert "Revert "Remove Old Service, 2nd try (#1732)" (#1758)"
      
      This reverts commit 9a0f08bf
      
      .
      
      Closes #1757.
      
      We now have some evidence that the polkadot validator was producing
      blocks after all; the reason the blocks_constructed metric was 0 was
      that as a new metric it hadn't yet been incorporated into that
      branch's codebase. See
      https://github.com/paritytech/polkadot/issues/1757#issuecomment-700977602
      
      As this PR is based on a newer `master` branch than the previous one,
      that should hopefully no longer be an issue.
      
      * paras trait now has an Origin type
      
      * initial work running a two node local net
      
      * use the right incantations so the nodes produce blocks together
      
      * improve internal documentation
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      c2941a27