1. Jul 08, 2020
    • asynchronous rob's avatar
      Implement PoV Distribution Subsystem (#1344) · b651e4af
      asynchronous rob authored
      * introduce candidatedescriptor type
      
      * add PoVDistribution message type
      
      * loosen bound on PoV Distribution to account for equivocations
      
      * re-export some types from the messages module
      
      * begin PoV Distribution subsystem
      
      * remove redundant index from PoV distribution
      
      * define state machine for pov distribution
      
      * handle overseer signals
      
      * set up control flow
      
      * remove `ValidatorStatement` section
      
      * implement PoV fetching
      
      * implement distribution logic
      
      * add missing `
      
      * implement some network bridge event handlers
      
      * stub for message processing, handle our view change
      
      * control flow for handling messages
      
      * handle `awaiting` message
      
      * handle any incoming PoVs and redistribute
      
      * actually provide a subsystem implementation
      
      * remove set-builder notation
      
      * begin testing PoV distribution
      
      * test that we send awaiting messages only to peers with same view
      
      * ensure we distribute awaited PoVs to peers on view changes
      
      * test that peers can complete fetch and are rewarded
      
      * test some reporting logic
      
      * ensure peer is reported for flooding
      
      * test punishing peers diverging from awaited protocol
      
      * test that we eagerly complete peers' awaited PoVs based on what we receive
      
      * test that we prune the awaited set after receiving
      
      * expand pov-distribution in guide to match a change I made
      
      * remove unneeded import
      b651e4af
  2. Jul 07, 2020
  3. Jul 05, 2020
    • Peter Goodspeed-Niklaus's avatar
      implement custom proposer (#1320) · 69ce9ff3
      Peter Goodspeed-Niklaus authored
      
      
      * network bridge skeleton
      
      * move some primitives around and add debug impls
      
      * protocol registration glue & abstract network interface
      
      * add send_msgs to subsystemctx
      
      * select logic
      
      * transform different events into actions and handle
      
      * implement remaining network bridge state machine
      
      * start test skeleton
      
      * make network methods asynchronous
      
      * extract subsystem out to subsystem crate
      
      * port over overseer to subsystem context trait
      
      * fix minimal example
      
      * fix overseer doc test
      
      * update network-bridge crate
      
      * write a subsystem test-helpers crate
      
      * write a network test helper for network-bridge
      
      * set up (broken) view test
      
      * Revamp network to be more async-friendly and not require Sync
      
      * fix spacing
      
      * fix test compilation
      
      * insert side-channel for actions
      
      * Add some more message types to AllMessages
      
      * introduce a test harness
      
      * impl ProvideInherent for InclusionInherent
      
      * reduce import churn; correct expect message
      
      * move inclusion inherent identifier into primitives
      
      It's not clear precisely why this is desired, but it's a pattern
      I've seen in several places, so I'm going this to be on the
      safe side. Worst case, we can revert this commit pretty easily.
      
      * bump kusama spec_version to placate CI
      
      * copy sc_basic_authorship::{ProposerFactory, Proposer}
      
      We have from the problem description:
      
      > This Proposer will require an OverseerHandle to make requests via.
      
      That's next on the plate.
      
      * use polkadot custom proposer instead of basic-authorship one
      
      * add some tests
      
      * ensure service compiles and passes tests
      
      * fix typo
      
      * fix service-new compilation
      
      * Subsystem test helpers send messages synchronously
      
      * remove smelly action inspector
      
      * remove superfluous let binding
      
      * fix warnings
      
      * add license header
      
      * empty commit; maybe github will notice the one with changes
      
      * Update node/network/bridge/src/lib.rs
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <[email protected]>
      
      * add sanity check to only include valid inherents
      
      * stub: encapsulate block production mechanics instead of copying them
      
      The goal is to end up with something like what's in
      validation::block_production::*, which encapsulates
      basic block production mechanics. This is a better idea than
      just straight-up copying those mechanics.
      
      * partial implementation of propose fn
      
      Doesn't actually compile yet; need to bring in some other
      commits to ensure ProvisionerMessage is a thing, and also
      figure out how to get the block hash given the current
      context.
      
      * fix compilation
      
      * clear a few more compile errors
      
      * finish fn propose
      
      * broken: add timeout to proposal
      
      * add timeout to proposal
      
      * guide: provisioner is responsible for selecting parachain candidates
      
      * implement ProvisionerMessage::RequestInherentData & update fn propose
      
      * impl CreateProposer::init; clean up
      
      * impl std::error::Error for Error
      
      * document error-handling rationale
      
      * cause polkadot-service-new to compile correctly
      
      * Move potentially-blocking call from fn init -> fn propose
      
      This means that we can wrap the delayed call into the same
      timeout check used elsewhere.
      
      * document struct Proposer
      
      * extract provisioner data fetch
      
      This satisfies two requirements:
      
      - only applies the timeout to actually fetching the provisioner data,
        not to constructing the block after
      - simplifies the problem of injecting default data if we could not
        get the real provisioner data in time.
      
      Co-authored-by: default avatarRobert Habermeier <[email protected]>
      Co-authored-by: default avatarGavin Wood <[email protected]>
      69ce9ff3
  4. Jun 22, 2020
  5. Jun 20, 2020
    • Peter Goodspeed-Niklaus's avatar
      signed wrapper (#1283) · 4f79b770
      Peter Goodspeed-Niklaus authored
      
      
      * add signed wrapper, typedef SignedStatement
      
      * typedef SignedAvailabilityBitfield
      
      * implement Signed wrapper
      
      This is strictly an addition as of this commit; nothing is yet
      changed in existing behavior.
      
      * inline getters, remove review comment
      
      * move EncodeAs, Signed from node::primitives to primitives::parachain
      
      * Refactor SignedAvailabilityBitfield to use Signed
      
      * don't double-encode real payload
      
      This isn't an ideal solution, because it depends on the
      implementation details of how SCALE encodes tuples, but OTOH
      that behavior seems unlikely to change anytime soon.
      
      * fix build errors
      
      * cause the runtime to build properly with the new changes
      
      Not sure why cargo check didn't catch this earlier; oh well.
      
      * fix runtime tests and separate SignedStatement from SignedFullStatement
      
      * better explain why CompactStatement exists
      
      Co-authored-by: default avatarRobert Habermeier <[email protected]>
      
      Co-authored-by: default avatarRobert Habermeier <[email protected]>
      4f79b770
    • Sergey Pepyakin's avatar
      Fix glossary link (snowballed) (#1297) · ff708f3a
      Sergey Pepyakin authored
      * Add mdbook-linkcheck
      
      * Convert todo to not a link
      
      * Fix external glossary link
      
      * Fix various broken links
      
      * Mass replace: s/.html/.md/
      
      * My sloppy attempt to add a gitlab CI check
      ff708f3a
  6. Jun 17, 2020