1. 01 Apr, 2021 1 commit
    • thiolliere's avatar
      Ease parachain candidate code fetching (#2593) · 96dc1f7a
      thiolliere authored
      
      
      * code stored in para + modify CandidateDescriptor.
      
      * WIP: digest + some more impl
      
      * validation_code_hash in payload + check in inclusion
      
      * check in client + refator
      
      * tests
      
      * fix encoding indices
      
      * remove old todos
      
      * fix test
      
      * fix test
      
      * add test
      
      * fetch validation code inside collation-generation from the relay-chain
      
      * HashMismatch -> PoVHashMismatch + miscompilation
      
      * refactor, store hash when needed
      
      * storage rename: more specific but slightly too verbose
      
      * do not hash on candidate validation, fetch hash instead
      
      * better test
      
      * fix test
      
      * guide updates
      
      * don't panic in runtime
      
      Co-authored-by: asynchronous rob's avatarRobert Habermeier <rphmeier@gmail.com>
      96dc1f7a
  2. 19 Feb, 2021 1 commit
    • Shawn Tabrizi's avatar
      Session Delayed Para Changes / Actions Queue (#2406) · afb6daa7
      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 b2e9011e
      
      .
      
      * collapse onboarding state
      
      * starting actions queue
      
      * consolidate actions queue
      
      * schedule para initialize result
      
      * more actions queue for upgrade/downgrade
      
      * clean up with fully implemented actions queue
      
      * fix tests
      
      * fix scheduler tests
      
      * fix hrmp tests
      
      * fix test
      
      * doc fixes
      
      * fix hrmp test w/ valid para
      
      * Update paras.md
      
      * fix paras registrar
      
      * Update propose_parachain.rs
      
      * fix merge
      
      * Introduce "shared" module
      
      * fix rococo build
      
      * fix up and use shared
      
      * guide updates
      
      * add shared config to common tests
      
      * add shared to test-runtime
      
      * remove println
      
      * fix note
      
      Co-authored-by: default avatarGavin Wood <gavin@parity.io>
      afb6daa7
  3. 15 Feb, 2021 1 commit
  4. 04 Feb, 2021 1 commit
    • Shawn Tabrizi's avatar
      Explicit Para Lifecycle w/ Upgrades and Downgrades (#2354) · 485ccc8d
      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 b2e9011e
      
      .
      
      * collapse onboarding state
      
      Co-authored-by: default avatarGavin Wood <gavin@parity.io>
      485ccc8d
  5. 06 Nov, 2020 1 commit
    • Sergey Pepyakin's avatar
      Implement HRMP (#1900) · 73553661
      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 <coriolinus@users.noreply.github.com>
      
      * 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 <coriolinus@users.noreply.github.com>
      73553661
  6. 13 Aug, 2020 1 commit
  7. 06 Aug, 2020 1 commit
    • Sergey Pepyakin's avatar
      Implementer's guide: downward messages and HRMP, take 2 (#1503) · 864fff12
      Sergey Pepyakin authored
      
      
      * First stab at downward messages.
      
      That also includes a notion of horizontal messages.
      
      * Add some structure to the router.
      
      * Update `ValidationOutputs`
      
      * Add `processed_downward_messages` to `ValidationOutputs`.
      
      Forgot to check that in.
      
      * s/AccountId/ParaId
      
      * DownwardMessage::ParachainSpecfic
      
      * s/ensure_horizontal_messages_fits/ensure_horizontal_messages_fit
      
      * Clarify that Router called for each candidate
      
      * Update the preamble for Router.
      
      * Rewrite the relay-chain extrinsic routines
      
      * Update gloassary
      
      * Add DMP to the glossary
      
      * If the queue is empty, `processed_downward_messages` can be 0
      
      * WIP
      
      * Add condemned list
      
      * Pivot to message-storing channel based HRMP
      
      * Finished draft
      
      * Tidy up
      
      * Remove a duplicate glossary entry
      
      * Fix typo
      
      * Fix wording to emphasize that the channel is unidirectional
      
      * Proper decrement `HrmpOpenChannelRequestCount`
      
      * Add a comment for `HrmpOpenChannelRequestCount`.
      
      * Remove old configuration values.
      
      * Be more specific about the para{chain,thread} hrmp chan limits.
      
      * Fix indentation so the lists are rendendered properly
      
      * "to answer **the**" question instead of "a"
      
      * Add a missing call to `check_processed_downward_messages`
      
      * Clean more stuff during offboarding
      
      * Fix typo
      
      * Fix typo for the config
      
      * Add a call to `prune_dmq`
      
      * Add explicit invariants for ingress/egress indexes
      
      * Add comments for the sender/reciever deposit config fields
      
      * Document various fields and structs in Router module
      
      * More docs
      
      * Missing docs in Candidate.md
      
      * Tabs to spaces in router.md
      
      * Apply Rob's suggestion
      
      * Add the hrmp_ prefix to the router messages
      
      * Those are entry points
      
      * Use SessionIndex type for the `age` field
      
      * Use a struct to represent `HrmpChannelId`
      
      * Put only MQCs into the LocalValidationData
      
      * Close request can be initiated by the runtime directly
      
      * Close request can be initiated by the runtime directly
      
      * tabs/spaces
      
      * Maintain the list of the outgoing paras in Router
      
      * Update roadmap/implementers-guide/src/runtime/inclusion.md
      
      Co-authored-by: asynchronous rob's avatarRobert Habermeier <rphmeier@gmail.com>
      
      * fix typo
      
      * Remove an unnecessary pair of code quotes
      
      Co-authored-by: asynchronous rob's avatarRobert Habermeier <rphmeier@gmail.com>
      864fff12
  8. 23 Jul, 2020 1 commit
    • asynchronous rob's avatar
      Include a reference to the validation data in the candidate descriptor (#1442) · cce0a950
      asynchronous rob authored
      * rename GlobalValidationSchedule to GlobalValidationData
      
      * guide: update candidate descriptor to contain validation data hash
      
      * guide: add note in inclusion module about checking validation data hash
      
      * primitives: update CandidateDescriptor to contain new hash
      
      * fix payload computation
      
      * add helpers for computing validation data to runtime modules
      
      * guide: note routines
      
      * inclusion: check validation data hash and fix local_validation_data bug
      
      * add a case to candidate_checks and improve that test substantially
      
      * bump versions
      
      * address review comments
      
      * add a test for including code upgrade
      
      * bump kusama version
      
      * bump westend & polkadot versions
      cce0a950
  9. 07 Jul, 2020 1 commit
  10. 18 Jun, 2020 1 commit
    • asynchronous rob's avatar
      Inclusion Module (#1242) · 9d874fa5
      asynchronous rob authored
      * add availability bitfield types to primitives
      
      * begin inclusion module
      
      * use GitHub issue link for limitation
      
      * fix some compiler errors
      
      * integrate validators into initializer
      
      * add generic signing context
      
      * make signing-context more generic
      
      * fix issues with inclusion module
      
      * add TODO
      
      * guide: add validators and session index to inclusion
      
      * guide: add session index to change notification
      
      * implement session change logic
      
      * add BackedCandidate type
      
      * guide: refine inclusion pipeline
      
      * guide: rename group_on to group_validators
      
      * guide: add check about collator for parathread
      
      * guide: add last_code_upgrade to paras and use in inclusion
      
      * implement Paras::last_code_upgrade
      
      * implement most checks in process_candidates
      
      * make candidate receipt structs more generic
      
      * make BackedCandidate struct more generic
      
      * use hash param, not block number
      
      * check that candidate is in context of the parent block
      
      * include inclusion module in initializer
      
      * implement enact-candidate
      
      * check that only occupied cores have bits set
      
      * finish implementing bitfield processing
      
      * restructure consistency checks on candidates
      
      * make some more primitives generic
      
      * signature checking logic for backed candidates
      
      * finish implementing process_candidates
      
      * implement collect_pending
      
      * add some trait implementations to primitives
      
      * implement InclusionInherent and squash warnings
      
      * test bitfield signing checks
      
      * rename parachain head to para_head
      
      * fix note_new_head bug in paras
      
      * test bitfield enactment in inclusion
      
      * helpers for candidate checks
      
      * add test for most candidate checks
      
      * add test for backing setting storage
      
      * test session change logic
      
      * remove extraneous type parameter
      
      * remove some allow(unused)s
      
      * extract threshold computation to const fn
      
      * remove some more allow(unused)s
      
      * improve doc
      
      * add debug assertion
      
      * fix primitive test compilation
      
      * tag unanimous variant as unused
      9d874fa5
  11. 11 Jun, 2020 2 commits
    • asynchronous rob's avatar
      Scheduler Module (#1162) · 1696982d
      asynchronous rob authored
      
      
      * scheduler module skeleton
      
      * update scheduler skeleton to match latest version of guide
      
      * better session change notification
      
      * add mock randomness and fix test compilation
      
      * shuffle validators into groups
      
      * finish implementing session change logic for scheduler
      
      * tweak core assignment type to track retries of parathread
      
      * reframe queued parathread core as offset
      
      * implement initialzation and finalization routines
      
      * implement parathread claim queuing
      
      * implement core_para
      
      * implement the group_validators routine and fix errors
      
      * add a reason for freeing cores
      
      * implement `schedule` function
      
      * add some docs to the scheduled function
      
      * implement `occupied` helper
      
      * implement availability predicate
      
      * fix some warnings
      
      * integrate scheduler into initializer
      
      * integrate scheduler into mock module
      
      * avoid conflict with Substrate's scheduler storage
      
      * add parathreads index to paras module
      
      * implement parathreads map in paras module
      
      * add is_parathread to paras
      
      * test adding parathread claim
      
      * test that you cannot add claims when no parathread cores exist
      
      * check session change parathread queue pruning
      
      * test validator shuffling
      
      * add allow_unused to scheduler items
      
      * add test for scheduling
      
      * add some more tests for scheduling logic
      
      * test core rotation
      
      * check parathread claim pruning after retries
      
      * add bound notes
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      
      * more suggestions from review
      
      * test availability predicate, add box to please compiler
      
      * add changes to guide
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      1696982d
    • Peter Goodspeed-Niklaus's avatar
      Convert guide from single markdown file to mdbook (#1247) · e5c7a3e6
      Peter Goodspeed-Niklaus authored
      * move old implementers' guide, add skeleton of new
      
      * Split the old implementers' guide into the new one's sections
      
      This is mostly a straightforward copying operation, moving the
      appropriate sections from the old guide to the new. However, there
      are certain differences between the old text and the new:
      
      - removed horizontal rules between the sections
      - promoted headers appropriately within each section
      - deleted certain sections which were in the old guide's ToC but
        which were not actually present in the old guide.
      - added Peer Set Manager to the new ToC
      
      * remove description headers
      
      It is redundant and unnecessary. Descriptions fall directly under the
      top-level header for any given section.
      
      * add stub description of the backing module
      
      * add stub description for the availability module
      
      * add stub description for collators
      
      * add stub description for validity
      
      * add stub description for utility
      
      * highlight TODO and REVIEW comments
      
      * add guide readme describing how to use mdbook
      
      * fix markdownlint lints
      
      * re-title parachains overview
      
      * internal linking for types
      
      * module and subsystem internal links
      
      * .gitignore should have a trailing newline
      
      * node does not have modules, just subsystems
      e5c7a3e6