* Changes for the next libp2p release:
* Updates to the Kademlia APIs.
* Updated imports due to the extracted libp2p-swarm crate.
* ...
Still pending at least the following:
* rust-libp2p/#1189
* rust-libp2p/#1191
* rust-libp2p/#1194
* Use Quorum::One.
The previous choice was apparently arbitrary.
* Use libp2p-0.11 from crates.io. Address feedback.
* Correct imports after merge.
* Add `epoch` field to `SlotInfo`
* Add slot calculations
* More work on epochs in BABE
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Typo: `/` not `%` for division
* Delete useless `LastSlotInEpoch::put(false)`
* Bump `spec_version`
* Make test suite pass again
* Implement BABE epoch randomness signing
* Try to fix compilation
Currently causes a stack overflow in the compiler
* Fix rustc stack overflow
* Add missing `PartialEq` and `Eq` implementations
* Fix compile errors in test suite
* Another silly compile error
* Clone `epoch`
* Fix compile error in benchmarks
* Implement `clone` for `Epoch`
* Merge master
* AUTHORING TEST PASSES!!!
* Fix compilation
* Bump `spec_version`
* Fix compilation
* Fix compilation (again)
* Remove an outdated FIXME
* Fix run.sh and move it to scripts/
* Delete commented-out code
* Fix documentation
Co-Authored-By: André Silva <andre.beat@gmail.com>
* Fix BABE initialization and refactor
* Respond to review
* typo
* Remove useless data in `CheckedHeader::Deferred`
* Remove `slot_number` from Epoch
It is not needed, and only served to waste space and cause confusion.
* Remove epoch from BABE digests
* Move digest.rs to primitives
* Fix incorrect warning names
* Fix compile error
* Consistent field naming for BABE digests
* More compiler error fixex
* Unbound variable
* more compile errors
* another compile error
* Fix compile errors in runtime
* another compile error
* Another compile error
* Fix wasm build
* missing import
* Fix more compile errors
* yet another compile error
* compile fix in test runtime
* Fix and simplify the BABE runtime
The BABE runtime was massively overcomplicated and also wrong. It
assumed it needed to:
1. delay new authorities taking effect until the next epoch
2. not delay emitting `Consensus` digests to mark epoch changes
However, the first is handled by the `srml_session` crate, and the
second is flat-out incorrect: `Consensus` digests take effect
immediately. Furthermore, `srml_babe` tried to duplicate the
functionality of `srml_session::PeriodicSession`, but did it both
clumsily and incorrectly. Fortunately, the new code is simpler and far
more likely to be correct.
* Use `system` to get the test authorities
The genesis block used by tests defines no authorities. Only the test
suite is affected.
* Fix test runtime impl for BabeApi::epoch() with std
* Fix compilation
* Cached authorities are in the form of an epoch
not a `Vec<AuthorityId>`.
* `slots_per_epoch` is not fixed in general
The BABE code previously assumed `slots_per_epoch` to be a constant,
but that assumption is false in general. Furthermore, removing this
assumption also allows a lot of code to go away.
* fix compile error
* Implement epoch checker
* Fix runtime compilation
* fork-tree: add method for finding a node in the tree
* babe: register epoch transitions in fork tree and validate them
* fork-tree: add method for arbitrary pruning
* Expose the queued validator set to SRML modules
BABE needs to know not only what the current validator set is, but also
what the next validator set will be. Expose this to clients of the
session module.
* Bump hex-literal
Hopefully this will fix the panic
* babe: prune epoch change fork tree on finality
* babe: validate epoch index on transition
* babe: persist epoch changes tree
* Fix compile error in tests
* Fix compile error in tests
* Another compile error in tests
* Fix compilation of tests
* core: move grandpa::is_descendent_of to client utils
* babe: use is_descendent_of from client utils
* babe: extract slot_number from pre_digest in import_block
* Move BABE testsuite to its own file
* Initial part of test code
* Missing `WeightMultiplierUpdate` in test-runtime
* bump `spec_version`
* Add a test that a very bogus is rejected
* Run the tests again
* Fix compiler diagnostics
* Bump `spec_version`
* Initial infrastructure for mutation testing
* Mutation testing of block import
* babe: revert epoch changes in case of block import error
* babe: fix logging target
* babe: BabeBlockImport doesn't box inner BlockImport
* babe: fix epoch check in block import
* babe: populate authorities cache on block authorship
* babe: remove unused functions
* babe: use RANDOMNESS_LENGTH const
* babe: remove unneeded config parameters
* core: revert change to hex dependency version
* cleanup gitignore
* babe: add docs to aux_schema
* babe: remove useless drops in tests
* babe: remove annoying macos smart quotes
* fork-tree: docs
* fork-tree: add tests
* babe: style
* babe: rename randomness config variable
* babe: remove randomness helper function
* babe: style fixes
* babe: add docs
* babe: fix tests
* node: bump spec_version
* babe: fix tests
* Make extrinsics extensible.
Also Remove old extrinsic types.
* Rest of mockup. Add tips.
* Fix some build issues
* Runtiem builds :)
* Substrate builds.
* Fix a doc test
* Compact encoding
* Extract out the era logic into an extension
* Weight Check signed extension. (#3115)
* Weight signed extension.
* Revert a bit + test for check era.
* Update Cargo.toml
* Update node/cli/src/factory_impl.rs
* Update node/executor/src/lib.rs
* Update node/executor/src/lib.rs
* Don't use len for weight - use data.
* Operational Transaction; second attempt (#3138)
* working poc added.
* some fixes.
* Update doc.
* Fix all tests + final logic.
* more refactoring.
* nits.
* System block limit in bytes.
* Silent the storage macro warnings.
* More logic more tests.
* Fix import.
* Refactor names.
* Fix build.
* Update srml/balances/src/lib.rs
* Final refactor.
* Bump transaction version
* Fix weight mult test.
* Fix more tests and improve doc.
* Bump.
* Make some tests work again.
* Fix subkey.
* Remove todos + bump.
* Ignore expensive test.
* Bump.
* Introduce network IDs for SS58
* Fix
* Allow numeric overrides.
* Improve docs
* String rather than str
* Comment out code that will become valid after other PR
* Fix
* Fix grammar and typo
* Extend network service
* Extend offchain API
* Support creating unsigned UncheckedExtrinsic
* Introduce srml/im-online
* Bump impl and spec version
* Fix web-wasm test
* Apply suggestions from code review
Remove parity-multiaddr dependency
Co-Authored-By: Pierre Krieger <pierre.krieger1708@gmail.com>
* Replace transmute with from_raw_parts
* Replace PeerId.to_string() with .to_base58()
Co-Authored-By: Pierre Krieger <pierre.krieger1708@gmail.com>
* Update Cargo.lock
* Bump impl and spec version (again)
It was updated in master in the meantime.
* Apply suggestions from code review
Co-Authored-By: Sergei Pepyakin <sergei@parity.io>
* Address comments
* Add public function is_online_in_current_session()
* Bump spec_version
* Fix doc tests
* Improve comments
* Remove superfluous line
* Name parameters consistently
* Implement comments
* Switch From to TryFrom
* Use Vec instead of HashSet
* Fix tests
* Revert me: local testing
* Fix check if already sent during session
We gossip each session, hence we need to check
if already sent in this session (not era).
* Fix typos
* Consistent terminology
* Revert "Revert me: local testing"
This reverts commit 73fbc29ff3e5ed71d99436318260b4f007e837f4.
* Introduce IsMember trait
* Implement misc comments
* Remove unused function
* Fix test
* Fix external_addresses being written
* Fix test
* Add necessary trait bound
* Do not increment version
* Update lib.rs
* client: fix panic on decode block number as u32
* client: add test for number_index_key
* client: add another test at client level
* client: address review grumbles
* client: add tests for reorging on diverged finality
* client: mark finalized block as best if diverged from current best chain
* client: update meta on set_head
* core: add docs about SelectChain to finalize_block
* client: improve finality reorg test
* client: LongestChain doesn't return client best block
* client: LongestChain searches canonical chain
Make `NetworkService.{get,put}_value` only take a self reference instead
of a mutable self reference. When retrieving `NetworkService` via
`NetworkWorker`, one only gets an immutable reference.
Instead of passing a context around to each method, thereby introducing
side-effecting I/O actions everywhere, with this PR `sync::ChainSync`
only contains state which is updated by invoking various callback
methods (`on_*`) and actionable items are returned as regular results
from method calls, often iterators yielding requests that should be
issued to peers. It is up to the caller to handle these in an
appropriate way, currently `protocol` will send those as messages.
* Switch the telemetry to new futures
* Line widths
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Fix Cargo.lock
* impl test using both storage and child_storage
* few fixes
* remove unused code
* impl PartialEq with children keys
* fmt
* implementation of basic with children + rename new
* assert and test
* no panic in runtime
* address comments
* fix
Given the following situation: A validator 'A' is not supposed to be
connected to the public internet to protect it from e.g. a DoS attack.
Instead it connects to a sentry node 'sentry-A' which connects to the
public internet. Validator 'B' can reach validator 'A' via sentry node
'sentry-A' and vice versa.
A sentry node needs to participate in the grandpa gossip without
becoming a validator itself in order to forward these message to its
validator. This commit adds a new command line flag (`--grandpa-voter`)
forcing a node to participate in the grandpa voting process even though
no `--key` was specified. Due to the fact that it does not have a key,
it does not become a validator in the network.
In order to simulate the above situation this commit also adds a Docker
Compose file (`scripts/sentry-node/docker-compose.yml`) with further
documentation.
* SharedFinalityProofRequestBuilder -> BoxFinalityProofRequestBuilder
* SharedThings -> BoxThings
* Fix tests
* build_request_data now takes &mut self
* The other traits now also take &mut self
* More or less fix tests
* Fix tests
* Fix more tests
* Moar tests
* Don't call make_block_import multiple time
* Fix doctest
* Remove useless internal messages
* Remove NetworkService::disconnect_peer
* Remove NetworkMsg altogether
* Rename ProtocolMsg ServerToWorkerMsg
* Remove useless code
* Add example for parse_str_addr
* Move parse_str_addr and ProtocolId to config
* Don't reexport the content of config
* Rework the imports
* More reexports rework
* Add documentation
* Move finalization report to network future
* Move on_block_imported to worker
* get_value/put_value no longer locking
* local_peer_id() no longer locks
* Remove FetchFuture
* Service imports cleanup
* Produce the network state in the network task
* Merge network task and RPC network task
* Move network methods to NetworkWorker
* Remove Arc peers system from network
* add_reserved_peer now goes through the channel
* Remove Mutex around network swarm
* Remove the FnOnce alias traits
* Replace is_offline with num_connected
* Improve style of poll()
* Fix network tests
* Some doc in service module
* Remove macro export
* Minor doc changes
* Remove the synchronized() method of the import queue
* Line width
* Line widths
* Fix import queue tests
* Fix CLI tests
* skeleton for tracking historical sessions
* refactor OpaqueKeys
* some more skeleton work
* adjust session to new OpaqueKeys API
* further refactoring of key-type-ids
* session gets validator ID parameter
* run up against compiler
* tweak staking to support new session changes
* first run at child storage for deduplication
* Make session use `AccountId` as `ValidatorId`
* run up against child trie issues
* switch to using normal trie but with a fixed prefix
* clear out some println
* add dedup test
* flesh out historical module more
* introduce ExposureOf for staking
* test the historical module
* WASM compiles
* tests all compile
* do some mock change
* fix bulk of tests
* fix staking tests
* test obsolecence mechanic
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* some more style nits
* a couple more nits
* tweak tries
* fix typo thie -> this