• 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 <coriolinus@users.noreply.github.com>
    * 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
    * 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: asynchronous rob's avatarRobert Habermeier <rphmeier@gmail.com>
    Co-authored-by: default avatarGavin Wood <gavin@parity.io>
This project manages its dependencies using Cargo. Learn more