- Jul 08, 2020
-
-
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
-
- Jul 06, 2020
-
-
asynchronous rob authored
* set up data types and control flow for statement distribution * add some set-like methods to View * implement sending to peers * start fixing equivocation handling * Add a section to the statement distribution subsystem on equivocations and flood protection * fix typo and amend wording * implement flood protection * have peer knowledge tracker follow when peer first learns about a candidate * send dependents after circulating * add another TODO * trigger send in one more place * refactors from review * send new statements to candidate backing * instantiate active head data with runtime API values * track our view changes and peer view changes * apply a benefit to peers who send us statements we want * remove unneeded TODO * add some comments and improve Hash implementation * start tests and fix `note_statement` * test active_head seconding logic * test that the per-peer tracking logic works * test per-peer knowledge tracker * test that peer view updates lead to messages being sent * test statement circulation * address review comments * have view set methods return references
-
- Jun 30, 2020
-
-
asynchronous rob authored
* Subsystem::start takes self by-value * fix doc-test compilation
-
asynchronous rob 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 * 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 * Update node/network/bridge/src/lib.rs Co-authored-by: Peter Goodspeed-Niklaus <[email protected]> * fix compilation Co-authored-by: Peter Goodspeed-Niklaus <[email protected]>
-
- Jun 05, 2020
-
-
asynchronous rob authored
* establish new `node` folder for overseer, messages, and subsystems * extract message types from overseer crate * remove doc links
-