1. 02 Nov, 2020 1 commit
  2. 31 Oct, 2020 1 commit
    • asynchronous rob's avatar
      Implementer's guide: Approval Voting Subsystem (#1691) · 12b3027e
      asynchronous rob authored
      
      
      * add storage for approvals module
      
      * basics of approval logic
      
      * fix links
      
      * Session info module
      
      * create an approvals_inherent module
      
      * integrate approvals module with inclusion
      
      * Remove approvals runtime
      
      * tweak mentions of on-chain logic
      
      * add note on finality-grandpa voting rule
      
      * elaborate on node-side components
      
      * stub for availability recovery
      
      * add another note on voting rule
      
      * Beginnings of approval subsystems
      
      * flesh out approval voting now
      
      * logic for checking assignment certs
      
      * initial scheduler logic
      
      * scheduler logic
      
      * adjst tranche taking logic
      
      * approval voting import
      
      * approval work (voting side)
      
      * amend some TODOs
      
      * mark some TODOs
      
      * describe `ApprovedAncestor`
      
      * reference protocol-approval.md
      
      * clarity on bitfield
      
      * remove approvals_inherent
      
      * tweak session_info module according to review
      
      * formatting & nits
      
      Co-authored-by: default avatarRobert Habermeier <robert@Roberts-MacBook-Pro.local>
      12b3027e
  3. 29 Oct, 2020 1 commit
  4. 28 Oct, 2020 1 commit
  5. 24 Oct, 2020 1 commit
    • Sergey Pepyakin's avatar
      Runtime API for checking validation outputs (#1842) · 4a17a2bc
      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.
      4a17a2bc
  6. 07 Oct, 2020 1 commit
  7. 06 Oct, 2020 4 commits
    • Bastian Köcher's avatar
      Pass relay parent as argument when collating (#1789) · 923c97a4
      Bastian Köcher authored
      This pr changes the collation function to also pass the current relay
      parent the parachain block should be build on.
      923c97a4
    • Andronik Ordian's avatar
      chain-api subsystem: implement BlockHeader messsage (#1778) · 2ea7de99
      Andronik Ordian authored
      * chain-api subsystem: implement BlockHeader messsage
      
      * update the guide
      2ea7de99
    • Andronik Ordian's avatar
      NetworkBridge: validator (authorities) discovery api (#1699) · b84f3c03
      Andronik Ordian authored
      
      
      * stupid, but it compiles
      
      * redo
      
      * cleanup
      
      * add ValidatorDiscovery to msgs
      
      * sketch network bridge code
      
      * ConnectToAuthorities instead of validators
      
      * more stuff
      
      * cleanup
      
      * more stuff
      
      * complete ConnectToAuthoritiesState
      
      * Update node/network/bridge/src/lib.rs
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
      
      * Collator protocol subsystem (#1659)
      
      * WIP
      
      * The initial implementation of the collator side.
      
      * Improve comments
      
      * Multiple collation requests
      
      * Add more tests and comments to validator side
      
      * Add comments, remove dead code
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
      
      * Fix build after suggested changes
      
      * Also connect to the next validator group
      
      * Remove a Future impl and move TimeoutExt to util
      
      * Minor nits
      
      * Fix build
      
      * Change FetchCollations back to FetchCollation
      
      * Try this
      
      * Final fixes
      
      * Fix build
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
      
      * handle multiple in-flight connection requests
      
      * handle cancelled requests
      
      * Update node/core/runtime-api/src/lib.rs
      
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      
      * redo it again
      
      * more stuff
      
      * redo it again
      
      * update comments
      
      * workaround Future is not Send
      
      * fix trailing spaces
      
      * clarify comments
      
      * bridge: fix compilation in tests
      
      * update more comments
      
      * small fixes
      
      * port collator protocol to new validator discovery api
      
      * collator tests compile
      
      * collator tests pass
      
      * do not revoke a request when the stream receiver is closed
      
      * make revoking opt-in
      
      * fix is_fulfilled
      
      * handle request revokation in collator
      
      * tests
      
      * wait for validator connections asyncronously
      
      * fix compilation
      
      * relabel my todos
      
      * apply Fedor's patch
      
      * resolve reconnection TODO
      
      * resolve revoking TODO
      
      * resolve channel capacity TODO
      
      * resolve peer cloning TODO
      
      * resolve peer disconnected TODO
      
      * resolve PeerSet TODO
      
      * wip tests
      
      * more tests
      
      * resolve Arc TODO
      
      * rename pending to non_revoked
      
      * one more test
      
      * extract utility function into util crate
      
      * fix compilation in tests
      
      * Apply suggestions from code review
      
      Co-authored-by: Fedor Sakharov's avatarFedor Sakharov <fedor.sakharov@gmail.com>
      
      * revert pin_project removal
      
      * fix while let loop
      
      * Revert "revert pin_project removal"
      
      This reverts commit ae7f529d
      
      .
      
      * fix compilation
      
      * Update node/subsystem/src/messages.rs
      
      * docs on pub items
      
      * guide updates
      
      * remove a TODO
      
      * small guide update
      
      * fix a typo
      
      * link to the issue
      
      * validator discovery: on_request docs
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
      Co-authored-by: Fedor Sakharov's avatarFedor Sakharov <fedor.sakharov@gmail.com>
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      b84f3c03
    • Bastian Köcher's avatar
      Make collation an optional return (#1787) · ce0fa3ad
      Bastian Köcher authored
      This pr changes the collator interface function to return an optional
      collation instead of a collation. This is required as the parachain
      itself can fail to generate a valid collation for various reason. Now if
      the collation fails it will return `None`.
      
      Besides that the pr adds some `RuntimeDebug` derive for `ValidationData`
      and removes some whitespaces.
      ce0fa3ad
  8. 28 Sep, 2020 1 commit
  9. 25 Sep, 2020 1 commit
    • Sergey Pepyakin's avatar
      collation-generation: guide and tidying (#1753) · 507b9cbc
      Sergey Pepyakin authored
      * Guide: Change for {Global,Local}ValidationData to ValidationData
      
      Seems like that was missed during the transition from notions of global and local validation data to persistent and transient
      
      * collation-generation: a small drive-by fix of line length
      
      * collation-generation: extract an error module
      
      this allows us to avoid piling Error and Result types from different contexts, specifically std vs. module-local
      
      * collation-generation: extract LOG_TARGET from log statements
      507b9cbc
  10. 16 Sep, 2020 1 commit
    • Sergey Pepyakin's avatar
      Implementer's Guide: Router fixes (#1727) · 4afe3110
      Sergey Pepyakin authored
      * Guide: Reindent the router module with 4 spaces
      
      The guide used to use 2 spaces for indentation. The problem with that is `mdbook` doesn't recognize them as a proper indentation and thus doesn't render indent properly.
      
      A couple of things are not indented here because they will be changed in the following commits
      
      * Guide: a bunch of fixes
      4afe3110
  11. 10 Sep, 2020 2 commits
  12. 08 Sep, 2020 1 commit
    • Peter Goodspeed-Niklaus's avatar
      implement candidate selection subsystem (#1645) · 6c874ed4
      Peter Goodspeed-Niklaus authored
      
      
      * choose the straightforward candidate selection algorithm for now
      
      * add draft implementation of candidate selection
      
      * fix typo in summary
      
      * more properly report misbehaving collators
      
      * describe how CandidateSelection subsystem becomes aware of candidates
      
      * revise candidate selection / collator protocol interaction pattern
      
      * implement rest of candidate selection per the guide
      
      * review: resolve nits
      
      * start writing test suite, harness
      
      * implement first test
      
      * add second test
      
      * implement third test
      
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      6c874ed4
  13. 04 Sep, 2020 1 commit
  14. 02 Sep, 2020 4 commits
  15. 31 Aug, 2020 3 commits
  16. 18 Aug, 2020 4 commits
  17. 17 Aug, 2020 2 commits
    • Sergey Pepyakin's avatar
      25bf025b
    • Peter Goodspeed-Niklaus's avatar
      implement collation generation subsystem (#1557) · e750a825
      Peter Goodspeed-Niklaus authored
      * start sketching out a collation generation subsystem
      
      * invent a basic strategy for double initialization
      
      * clean up warnings
      
      * impl util requests from runtime assuming a context instead of a FromJob sender
      
      * implement collation generation algorithm from guide
      
      * update AllMessages in tests
      
      * fix trivial review comments
      
      * remove another redundant declaration from merge
      
      * filter availability cores by para_id
      
      * handle new activations each in their own async task
      
      * update guide according to the actual current implementation
      
      * add initialization to guide
      
      * add general-purpose subsystem_test_harness helper
      
      * write first handle_new_activations test
      
      * add test that handle_new_activations filters local_validation_data requests
      
      * add (failing) test of collation distribution message sending
      
      * rustfmt
      
      * broken: work on fixing sender test
      
      Unfortunately, for reasons that are not yet clear, despite the public key
      and checked data being identical, the signer is not producing an identical
      signature. This commit produces this output (among more):
      
      signing with  Public(c4733ab0bbe3ba4c096685d1737a7f498cdbdd167a767d04a21dc7df12b8c858 (5GWHUNm5...))
      checking with Public(c4733ab0bbe3ba4c096685d1737a7f498cdbdd167a767d04a21dc7df12b8c858 (5GWHUNm5...))
      signed payload:  [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 0, 0, 0, c7, e5, c0, 64, 7a, db, fe, 44, 81, e5, 51, 11, 79, 9f, a5, 63, 93, 94, 3c, c4, 36, c6, 30, 36, c2, c5, 44, a2, 1b, db, b7, 82, 3, 17, a, 2e, 75, 97, b7, b7, e3, d8, 4c, 5, 39, 1d, 13, 9a, 62, b1, 57, e7, 87, 86, d8, c0, 82, f2, 9d, cf, 4c, 11, 13, 14]
      checked payload: [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 0, 0, 0, c7, e5, c0, 64, 7a, db, fe, 44, 81, e5, 51, 11, 79, 9f, a5, 63, 93, 94, 3c, c4, 36, c6, 30, 36, c2, c5, 44, a2, 1b, db, b7, 82, 3, 17, a, 2e, 75, 97, b7, b7, e3, d8, 4c, 5, 39, 1d, 13, 9a, 62, b1, 57, e7, 87, 86, d8, c0, 82, f2, 9d, cf, 4c, 11, 13, 14]
      
      * fix broken test
      
      * collation function returns commitments hash
      
      It doesn't look like we use the actual commitments data anywhere, and
      it's not obvious if there are any fields of `CandidateCommitments`
      not available to the collator, so this commit just assigns them the
      entire responsibility of generating the hash.
      
      * add missing overseer impls
      
      * calculating erasure coding is polkadot's responsibility, not cumulus
      
      * concurrentize per-relay_parent requests
      e750a825
  18. 14 Aug, 2020 1 commit
  19. 13 Aug, 2020 1 commit
  20. 12 Aug, 2020 1 commit
  21. 10 Aug, 2020 1 commit
  22. 07 Aug, 2020 1 commit
  23. 06 Aug, 2020 2 commits
    • Peter Goodspeed-Niklaus's avatar
      implement provisioner (#1473) · a39d8803
      Peter Goodspeed-Niklaus authored
      * sketch out provisioner basics
      
      * handle provisionable data
      
      * stub out select_inherent_data
      
      * split runtime APIs into sub-chapters to improve linkability
      
      * explain SignedAvailabilityBitfield semantics
      
      * add internal link to further documentation
      
      * some more work figuring out how the provisioner can do its thing
      
      * fix broken link
      
      * don't import enum variants where it's one layer deep
      
      * make request_availability_cores a free fn in util
      
      * document more precisely what should happen on block production
      
      * finish first-draft implementation of provisioner
      
      * start working on the full and proper backed candidate selection rule
      
      * Pass number of block under construction via RequestInherentData
      
      * Revert "Pass number of block under construction via RequestInherentData"
      
      This reverts commit 850fe62c.
      
      That initially looked like the better approach--it spent the time
      budget for fetching the block number in the proposer, instead of
      the provisioner, and that felt more appropriate--but it turns out
      not to be obvious how to get the block number of the block under
      construction from within the proposer. The Chain API may be less
      ideal, but it should be easier to implement.
      
      * wip: get the block under production from the Chain API
      
      * add ChainApiMessage to AllMessages
      
      * don't break the run loop if a provisionable data channel closes
      
      * clone only those backed candidates which are coherent
      
      * propagate chain_api subsystem through various locations
      
      * add delegated_subsystem! macro to ease delegating subsystems
      
      Unfortunately, it doesn't work right:
      
      ```
      error[E0446]: private type `CandidateBackingJob` in public interface
         --> node/core/backing/src/lib.rs:775:1
          |
      86  | struct CandidateBackingJob {
          | - `CandidateBackingJob` declared as private
      ...
      775 | delegated_subsystem!(CandidateBackingJob as CandidateBackingSubsystem);
          | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't leak private type
      ```
      
      I'm not sure precisely what's going wrong, here; I suspect the problem is
      the use of `$job as JobTrait>::RunArgs` and `::ToJob`; the failure would be
      that it's not reifying the types to verify that the actual types are public,
      but instead referring to them via `CandidateBackingJob`, which is in fact private;
      that privacy is the point.
      
      Going to see if I can generic my way out of this, but we may be headed for a
      quick revert here.
      
      * fix delegated_subsystem
      
      The invocation is a bit more verbose than I'd prefer, but it's also
      more explicit about what types need to be public. I'll take it as a win.
      
      * add provisioning subsystem; reduce public interface of provisioner
      
      * deny missing docs in provisioner
      
      * refactor core selection per code review suggestion
      
      This is twice as much code when measured by line, but IMO it is
      in fact somewhat clearer to read, so overall a win.
      
      Also adds an improved rule for selecting availability bitfields,
      which (unlike the previous implementation) guarantees that the
      appropriate postconditions hold there.
      
      * fix bad merge double-declaration
      
      * update guide with (hopefully) complete provisioner candidate selection procedure
      
      * clarify candidate selection algorithm
      
      * Revert "clarify candidate selection algorithm"
      
      This reverts commit c68a02ac.
      
      * clarify candidate selection algorithm
      
      * update provisioner to implement candidate selection per the guide
      
      * add test that no more than one bitfield is selected per validator
      
      * add test that each selected bitfield corresponds to an occupied core
      
      * add test that more set bits win conflicts
      
      * add macro for specializing runtime requests; specailize all runtime requests
      
      * add tests harness for select_candidates tests
      
      * add first real select_candidates test, fix test_harness
      
      * add mock overseer and test that success is possible
      
      * add test that the candidate selection algorithm picks the right ones
      
      * make candidate selection test somewhat more stringent
      a39d8803
    • 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
  24. 05 Aug, 2020 1 commit
  25. 04 Aug, 2020 1 commit
  26. 03 Aug, 2020 1 commit