* Consensus status packet
* Allow for repropagation after status
* More generic gossip
* add a basic view struct and gossip module
* move gossip stuff to the gossip module
* integrate view into gossip
* some reshuffling
* alter rules for keeping one commit at a time in view
* Allow sending addressed messages
* don't cast outgoing votes if we know that we voted before
* Handle one hop messages
* initial run at polite grandpa
* build WASM
* handle neighbor messages
* refactor validator's internals into an Inner struct
* gossip only knows to keep or discard messages. optimize should_send_to
* Periodic rebroadcast
* implement `should_send_to` and message_expired
* track peers' best received commit height
* Pass peer id to topic steam
* kill rebroadcasting network
* Notify about existing peers
* clean up network APIs a bunch
* implement gossip::send_message for direct messages
* refactor network trait
* implement gossip::send_message for direct messages
* get all non set-change tests passing
* treat unknown rebroadcasts as broadcasts
* get all other main tests passing
* remove unimplemented test
* everything compiles
* treat unknown rebroadcasts as broadcasts
* Rebradcast interval
* Apply suggestions from code review
Style
Co-Authored-By: arkpar <arkady.paronyan@gmail.com>
* Style
* some module docs
* address some grumbles + docs
* allow rebroadcast every few minutes
* send_topic && generic context
* some tests for view change
* more grumbles & tests
* use send_peer
* Add `start_aura2`.
* .gitignore patch conflict files
and remove one that accidentally got committed
* Fix build
The tests still don’t work.
* Fix compilation errors
* Fix compile errors (again)
* Try (and fail) to fix tests
* Properly deserialize data
Previously, `DigestItem::Consensus` had no separate `DigestItemType`,
so it did not get properly serialized and deserialized.
* Add extra debug logging. Always allow old seals.
A `RUST_LOG=substrate_aura_consensus cargo test --all -- --nocapture \
tests::authoring_blocks` revealed that old seals were being and
rejected, causing the test to hang. As a temporary debug measure, allow
old seals unconditionally, so that CI can test if this fixes the
problem.
* Forcibly disable rejection of old seals
* Use old trait, but newer serialization
The old trait for `CompatibleDigestItem` actually worked. By changing
its implementation, one can ensure that all *new* seals have the modern
form, but *legacy* seals are still decoded correctly.
* Bump impl version
* Squash spurious deprecation warning
`rustc` should not be emitting a deprecation warning in deprecated
code, but it does, so silence it.
* Rip out unused Cargo feature
* Move AURA to aura_primitives
* Respond to code review
* Wrap overly-long line
* Reduce logging verbosity and add target
* Add dependency on `sr-primitives` to `aura_primitives`
* Fix build
It failed with a message about Cargo.lock being out of date.
* core: aura: rename aura engine id const
* core: aura: remove superfluous logging
* core: primitives: add removed semicolons
* core: aura: remove unused import
* core: network: style fix
* runtime: update wasm blobs
* runtime: bump impl_version
* core: primitives: tag all DigestItemType variants explicitly
* remove blocking sync -> import-queue operations
add specialization to testnet
remove add peer default impl on TestNetFactory
* remove empty brackets from dummy specialization
* nits
* make mut_peers take an fn once
* add SpecializationFactory trait in test
* remove add_peer imple in grandpa, fix typo
* use cmp::max for best importing number comparison
* remove import of non-existent create_peer
* add sender to start message
* add connected peers to protocol, use in sync provider
* use PeerId::random
* address comments`
* docs
* fix import of PeerId
* rewrite rpc tests using PeerId::random
* whitespace
* nits
* remove option around peer id and remove field
* further removal of the option around peer id
* fix rpc tests
* Limit the set of known extrinsics and blocks.
* Update Cargo.lock
* Always insert and pop oldest entry if needed.
Always inserting first ensures that the element's LRU position is
updated.
* core: implement logic for tracking dag of possible pending changes
* core: move pending justifications dag to its own crate
* core: remove unnecessary clone bounds on dag
* core: request justifications in-order from the dag
* core: dag: rename changes variables to node
* core: dag: allow finalizing blocks not part of dag
* core: dag: track best finalized number
* core: dag: add more tests
* core: sync: clean up pending justifications dag
* core: dag: derive codec decode encode
* core: dag: better error support
* core: dag: add finalization guarded by predicate
* core: grandpa: track multiple authority set changes in dag
* core: dag: add pre-order iterator
* core: grandpa: request justifications on startup
* core: dag: rearrange order of definitions
* core: rename util/dag to util/fork_tree
* core: fork_tree: add docs
* core: fork_tree: add more tests
* core: fork_tree: fix issues found in tests
* core: grandpa: fix authorities tests
* core: grandpa: add docs for is_descendent_of
* core: sync: add docs for PendingJustifications
* core: sync: add test for justification requests across forks
* core: sync: don't resend import or finality notifications in tests
* core: grandpa: add test for importing multiple change blocks
* core: grandpa: fix logic for checking if a block enacts a change
* core: grandpa: fix authorities tests
* use channels to implement basic import queue
* async justification import
* better conditional for is_done in tests
* reword the test for presence of link
* fix conditional
* trace instead of panic when no link present
* reword expectations when sending to importers
* fix
* debug justification import error
* update expectations
* use NumberFor
* nits
* add general description
* move error handling into closure
* Make network-libp2p's Service generic over the message
* Apply suggestions from code review
Co-Authored-By: tomaka <pierre.krieger1708@gmail.com>
* Fix warning
* rewrite network protocol/service to use channels
* remove use of unwrap
* re-introduce with_spec
* remove unnecessary mut
* remove unused param
* improve with_spec, add with_gossip
* rename job to task
* style: re-add comma
* remove extra string allocs
* rename use of channel
* turn TODO into FIXME
* remove mut in match
* remove Self in new
* pass headers by value to network service
* remove network sender from service
* remove TODO
* better expect
* rationalize use of network sender in ondemand
Went through the TODOs, removed a bunch, which are outdated or nothing more than a regular comment, documented a bunch more as actual tickets and made them FIXMEs and unified their structure (`FIXME #TICKETNO DESC` for local tickets, `FIXME: DESC LINK` for external tickets) for easier in-editor support. Further more remove unnecessary remarks and related old code that I noticed in that instance.
* announce blocks we vote on to peers (missing network impl)
* Implemented 'announce'
* Fixed test
* improve announce docs and add logging
* Track recently announced blocks
* core: support broadcasting consensus message to all peers
* grandpa: remove liveness oracle
* node: always start grandpa on full nodes
* core: don't check for grandpa justifications on failed block imports
* core: fix network connectivity test
* add beginnings of SRML grandpa library
* get srml-grandpa compiling
* tests for srml-grandpa
* add optional session integration to grandpa SRML
* start integration into node runtime
* Allow extracting pending change from header digest
* Make it compile on wasm
* make tests compile again
* Move Authority Key fetching into service, simplify service factory construction
* Generalize Authority Consensus Setup system
* Add Authority Setup Docs
* Allow CLI params to be extensible
- move params to structopts
- split parsing and default command execution
- add custom config to node
- extended parsing of custom config
- extending params via structop's flatten
* Minor fixes on cli extension params:
- added docs
- re-add actual app name, rather than node-name
- make strategy and subcommand optional
* better cli params
* synchronize GRANDPA and normal node authorities
* Implement grandpa::network for gossip consensus
* run_grandpa in Node
* Fix missed merge error
* Integrate grandpa import queue
* more specific type def
* link up linkhalf and import block
* make grandpa future send
* get compiling
* Fix new params convention and license header
* get it running
* rebuild node runtime WASM
* change logging level
* Update node/cli/src/params.rs
Co-Authored-By: rphmeier <rphmeier@gmail.com>
* Update node/cli/src/params.rs
Co-Authored-By: rphmeier <rphmeier@gmail.com>
* Update node/cli/src/lib.rs
Co-Authored-By: rphmeier <rphmeier@gmail.com>
* Update node/runtime/src/lib.rs
Co-Authored-By: rphmeier <rphmeier@gmail.com>
* Update node/cli/src/lib.rs
Co-Authored-By: rphmeier <rphmeier@gmail.com>
* Clean up and Fixme for mutable config
* Move GrandpaService Integration into grandpa, feature gated but on per default
* Fixing grandpa runtime module test
* Update wasm runtime hashes for tests
* GRANDPA: use post-header hash when logging scheduled changes
* add an extra bit of logging to authorities
* fixing missing constrain
* remove old code
* move `NewAuthorities` to an event in srml-grandpa
* fix node-executor tests to use grandpa log
* Remove GossipConsensus from tests, use newly provided sync-feature, fixes tests
* Update to latest wasm runtimes
* address grumbles
* address grumbles
* only derive deserialize when using std
* Clean up use of Deserialize
* build CHT for changes tries roots
* collect chnages tries roots proof in key_changes_proof
* flush check_changes_proof
* fixed compilation
* LightDataChecker now has a ref to the blockchain
* continue passing proofs
* new light db tests
* more CHT tests
* more tests for key changes proof when headers are missing
* lost files
* Move Roles to network::config
* Make network::config public
* Move NetworkConfig and NonReservedMode to config
* Move Params to config
* Move node_id() to NetworkManager and fix tests
* Rename Specialization to NetworkSpecialization
* Generalize BlockImport
- move ImportBlock, BlockOrigin, ImportResult into shared sr-primitives
- let Consensus provide and traits again
- update consensus traits to latest development
- implement traits on client::Client, test_client::TestClient
- update RHD to use the new import_block API
* Move ImportBlock into consensus-common
* Send import notification in aura tests
* Integrating aura into service
* Make Signatures more generic
* Aura Block Production with the given key
* run aura on the thread pool
* start at exact step start in aura
* Add needed wasm blob, in leiu of better solutions.
* Make API ids consistent with traits and bring upstream for sharing.
* Add decrease_free_balance to Balances module
* Encode `Metadata` once instead of two times
* Bitops include xor
* Upgrade key module.
* Default pages to somewhat bigger.
* Introduce upgrade key into node
* Add `Created` event
* Try to make everything compact
* Make `Clone` work
* Fix
* Move contracts and balances over to compact encoding
* Session and timestamp are compact
* Sataking uses compact numbers
* Treasury now compact
* Compact Democracy
* Council is compact
* Fix
* Make `on_message` take the message as `&mut Option<_>`
* Make `ConsensusGossip` implement `Specialization`
* Move `new_session` into `ConsensusGossip`
* Adds `construct_simple_protocol` macro for simplifying the creation of protocols
* do not send OnDemand request to node who, we believe, can't process it
* ignore peers with too old best block on light nodes
* non-weird temporary
* fix condition
* compilation