With the *authority-discovery* module an authoritative node makes itself
discoverable and is able to discover other authorities. Once discovered, a node
can directly connect to other authorities instead of multi-hop gossiping
information.
1. **Making itself discoverable**
1. Retrieve its external addresses
2. Adds its network peer id to the addresses
3. Sign the above
4. Put the signature and the addresses on the libp2p Kademlia DHT
2. **Discovering other authorities**
1. Retrieve the current set of authorities
2. Start DHT queries for the ids of the authorities
3. Validate the signatures of the retrieved key value pairs
4. Add the retrieved external addresses as ~reserved~ priority nodes to the
peerset
* node/runtime: Add authority-discovery as session handler
The srml/authority-discovery module implements the OneSessionHandler in
order to keep its authority set in sync. This commit adds the module to
the set of session handlers.
* core/network: Make network worker return Dht events on poll
Instead of network worker implement the Future trait, have it implement
the Stream interface returning Dht events.
For now these events are ignored in build_network_future but will be
used by the core/authority-discovery module in subsequent commits.
* *: Add scaffolding and integration for core/authority-discovery module
* core/authority-discovery: Implement module logic itself
* srml-system checks
* wip
* more modules compiles
* node-runtime checks
* build.sh passes
* include dispatch error in failed event
* revert some unnecessary changes
* refactor based on comments
* more compile error fixes
* avoid unnecessary into
* reorder code
* fixes some tests
* manually implement encode & decode to avoid i8 workaround
* more test fixes
* more fixes
* more error fixes
* Apply suggestions from code review
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* address comments
* test for DispatchError encoding
* tyep alias for democracy
* make error printable
* line width
* fix balances tests
* fix executive test
* fix system tests
* bump version
* ensure consistent method signature
* Apply suggestions from code review
Co-Authored-By: Gavin Wood <github@gavwood.com>
* changes based on review
* Add issue number for TODOs
* fix
* line width
* fix test
* Update core/sr-primitives/src/lib.rs
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Update core/sr-primitives/src/traits.rs
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Update srml/council/src/motions.rs
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Update srml/council/src/motions.rs
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* update based on review
* More concrete macro matching
* fix test build issue
* Update hex-literal dependency version. (#3141)
* Update hex-literal dep version.
* Update lock file.
* Start to rework the new error handling
* More work to get it back compiling
* Start to fix after master merge
* The great transaction error handling refactoring
* Make `decl_error` errors convertible to `&'static str`
* Make srml-executive build again
* Fix `sr-primitives` tests
* More fixes
* Last round of fix ups
* Fix build
* Fix build
* Apply suggestions from code review
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Rename some stuff
* Fixes after master merge
* Adds `CheckBlockGasLimit` signed extension
* Remove debug stuff
* Fix srml-balances test
* Rename `InvalidIndex` to `CannotLookup`
* Remove weird generic parameters
* Rename function again
* Fix import
* Document the signed extension
* Change from `Into` to `From`
* Update srml/contracts/src/lib.rs
Co-Authored-By: Sergei Pepyakin <sergei@parity.io>
* Fix compilation
* Update srml/contracts/src/lib.rs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Update core/sr-primitives/src/transaction_validity.rs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Remove unused code
* Fix compilation
* Some cleanups
* Fix compile errors
* Make `TransactionValidity` a `Result`
* Apply suggestions from code review
Co-Authored-By: Gavin Wood <gavin@parity.io>
* Beautify the code a little bit and fix test
* Make `CannotLookup` an inherent error declared by `decl_error!`
* Adds some documentation
* Make `ApplyOutcome` a result
* Up the spec_version
* Apply suggestions from code review
Co-Authored-By: Gavin Wood <gavin@parity.io>
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
* remove merge-test and set up kusama-nightly-staging
* refactor .gitlab-ci.yml
* kusama-nightly-staging typo i
* kusama-nightly-staging typo and cond --locked
* in progress impl
* im_online authorityid
* fix
* fix
* use polkadot-master
* trigger CI
* trigger CI
* fix removal
* storage reorganize included
* lock version
* Initial implementation, some redundancy is awkward and there is
some useless computation (but there is a pending pr for that).
Next are tests.
* Minimal tests and fix extend child.
* implement iterator for change child trie.
* prune child trie.
* Fix pruning test.
* bump spec version.
* Avoid empty child trie (could also be checked before)
* tabs.
* Fix child digest overriding each others.
* Restore doc deleted on merge.
* Check correct child value on extrinsics build.
* Revert runtime version update.
* generalize tree_root to remove client.backend dependency
* replace client.backend.blockchain.header with client.header
* move used_state_cache_size into client info
* Create intermediate Setup State. Fixes#1134
* remove client.backend from finality proof
* update node-template
* move memory backend into test helper mode
* move test helper into client
* starting the big refactor, remove unused functions
* apply_finality
* apply_finality
* replacing more .backend from environment with client directly
* remove .backend from grandpa by using traits
* remove .backend from babe
* remove .backend from tests where it is not needed
* remove .backend from tests
* fixing tests
* fixing tests
* fixing more tests
* fixing tests
* fix all forks test
* fix style
* fixing unnecessary allocation
* remove old test.
* fix service docs
* apply suggestion
* minor clean ups
* turns out the test-helper features actually is being used!
* fixing line length.
* fix line length
* minor cleaning
* Apply suggestions from code review
thanks, @Basti
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* address grumbles
* simplify finalize block on client
* move block back into inner function
* Apply suggestions from code review
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
* use as.ref instead of match
* Update core/client/src/backend.rs
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
* core logic for ICMP gossip
* refactor gossip to make more extension friendly
* move files aroun
* extract attestation-gossip logic to its own module
* message validation and broadcast logic
* fix upstream crates' compilation
* add a test
* another test for overlapping
* Some grammar and phrasing tweaks
Co-Authored-By: Luke Schoen <ltfschoen@users.noreply.github.com>
* add since parameter to ingress runtime API
* broadcast out known unrouted message queues
* fix compilation of service and collator
* remove useless index_mapping
* some tests for icmp propagation
* fix decoding bug and test icmp queue validation
* simplify engine-id definition
Co-Authored-By: Sergei Pepyakin <sergei@parity.io>
* address some grumbles
* some cleanup of old circulation code
* give network a handle to extrinsic store on startup
* an honest collator ensures data available as well
* address some grumbles
* add docs; rename the attestation session to "leaf work"
* module docs
* move gossip back to gossip.rs
* clean up and document attestation-gossip a bit
* some more docs on the availability store
* store all outgoing message queues in the availability store
* filter `Extrinsic` out of validation crate
* expunge Extrinsic from network
* expunge Extrinsic from erasure-coding
* expunge Extrinsic from collator
* expunge from adder-collator
* rename ExtrinsicStore to AvailabilityStore everywhere
* annotate and clean up message-routing tests
* Extract author API from the substrate-rpc crate.
* Split out API from RPC.
* Clean up naming.
* Fix tests.
* Shorten error translations.
* Update Cargo.lock
* Adds `WASM_TARGET_DIRECTORY` env variable to `wasm-builder`
* Create the `wasm-builder-runner`'s in a common workspace
* Make `wasm-builder` trigger less rebuilds
* Version up
* Adds script for building only the WASM files
* Apply suggestions from code review
Co-Authored-By: André Silva <andre.beat@gmail.com>
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
* grandpa: only send catch-up requests to authorities
* grandpa: fix gossip tests
* grandpa: test sending catch-up requests only to authorities
* grandpa: fix catch-up test
* grandpa: apply suggestions from code review
* Add ability to supply extra storage in test-client
* Don't use native_equivalent in tests.
* Get rid of native_equivalent
* Try to make fields private
* Apply Basti's suggestions
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>