* 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
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
* Add copy of council seats as elections module.
* Split council into collective and elections modules.
Make collective instanceable.
* Propagate changes to the runtime and fix origin/event
* insert_ref and put_ref to avoid copies.
* Add tests
* Fix up collective's tests
* One more test
* Fix elections module tests
* Missed merge line
* Minor fix
* Test fixes
* Line widths
* Line widths
* Rntime version
* Remove comment
* Deduplicate
* Bump runtime again
* Fix test
* 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
* End build when `wasm-builder` does not find a prerequisite
Using `compile_error!` was a stupid idea by me, as rust would not
re-execute the build.rs.
* Increment the `wasm-builder` version
* Update core/utils/wasm-builder/src/lib.rs
Co-Authored-By: André Silva <andre.beat@gmail.com>
* grandpa: initial structure for catch up messages
* grandpa: answer catch up requests
* grandpa: inject catch up messages into global stream
* grandpa: keep track of pending catch up request
* grandpa: block catchup until all referenced blocks are imported
* grandpa: unify catch up and commit streams
* grandpa: simplify communication stream/sink types
* grandpa: note gossip validator on catch up message import
* grandpa: fix cost on catch up message validation
* grandpa: check signatures on catch up messages
* grandpa: clean up catch up request handling state
* grandpa: adjust costs on invalid catch up requests
* grandpa: release lock before pushing catch up message
* grandpa: validate catch up request against peer view
* grandpa: catch up docs
* grandpa: fix tests
* grandpa: until_imported: add tests for catch up messages
* grandpa: add tests for catch up message gossip validation
* grandpa: integrate HistoricalVotes changes
* grandpa: add test for neighbor packet triggering catch up
* grandpa: add test for full voter catch up
* grandpa: depend on finality-grandpa 0.8 from crates
* granda: use finality-grandpa test helpers
* grandpa: add PSM cost for answering catch up requests
* grandpa: code style fixes
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* grandpa: more trailing commas
* grandpa: lower cost of invalid catch up requests near set change
* grandpa: process catch up sending on import of neighbor message
* grandpa: add comments on HistoricalVotes
* grandpa: use finality-grandpa v0.8.1 from crates.io
* grandpa: fix test compilation
* Introduce `wasm-builder` and `wasm-builder-runner` to retire `build.sh`
Make use of `wasm-builder` in `test-runtime`.
* Add build script and remove the wasm project
* Port `node-runtime` to new wasm-builder
* Make `substrate-executor` tests work with `wasm-builder`
* Move `node-template` to `wasm-builder`
* Remove `build.sh` :)
* Remove the last include_bytes
* Adds the missing build.rs files
* Remove `build.sh` from CI
* Debug CI
* Make it work in CI
* CI attempt 3
* Make `substrate-runtime-test` compile on stable
* Ahhh, some missed `include_bytes!`
* AHH
* Add suggestions
* Improve search for `Cargo.lock` and don't panic if it is not found
* Searching from manifest path was no good idea
* Make the `wasm-builder` source better configurable
* Expose the bloaty wasm binary as well
* Make sure to rerun WASM recompilation on changes in dependencies
* Introduce new `WASM_BUILD_TYPE` env and make sure to call `build.rs` on
changes to env variables
* Remove `build.sh` from READMEs
* Rename the projects
* Fixes CI
* Update lock file
* Fixes merge-conflict
* Apply suggestions from code review
Co-Authored-By: TriplEight <denis.pisarev@parity.io>
* Try to make windows happy
* Replace all back slashes in paths with slashes
* Apply suggestions from code review
Co-Authored-By: Pierre Krieger <pierre.krieger1708@gmail.com>
* Use cargo from `CARGO` env variable
* Fix compilation
* Use `rustup` for running the nightly build
* Make individual projects skipable
* Fix compilation
* Fixes compilation
* Build all WASM projects in one workspace
* Replace more back slashes!
* Remove `inlcude_bytes!`
* Adds some documentation
* Apply suggestions from code review
Co-Authored-By: Shawn Tabrizi <shawntabrizi@gmail.com>
* Apply suggestions from code review
Co-Authored-By: Shawn Tabrizi <shawntabrizi@gmail.com>
* More review comments
* Update `Cargo.lock`
* Set license
* Apply suggestions from code review
Co-Authored-By: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
* More review comments + adds `TRIGGER_WASM_BUILD` env
* Fix doc tests
* Increase version + update README
* Switch crates.io version of `wasm-builder`
* Update README
* Switch to released version of `wasm-builder-runner`
* Initial work on exposing pre-runtime digests
This provides the primitive API, as well as exposing it from BABE.
* Initial work on using pre-digests in runtimes
This includes both code to expose them from `srml_system`, as well as
using it in (currently dead) code in `srml_babe`.
* Bump `{spec,impl}_version`
* Add `u64_backend` feature to curve25519-dalek
Otherwise, it errors out at compile-time.
* Bump `Cargo.lock`
* Do not depend on the schnorrkel crate in the runtime
The schnorrkel crate does not work on `#![no_std]`, but the runtime only
needs constants from it. This adds our own definitions of those
constants, and checks them for correctness at compile-time.
* Actually implement storage of VRF outputs
* Trivial formatting change
* Provide a `hash_randomness` function in BABE
for processing VRF outputs.
* Implement a basic randomness generating function
It just XORs the VRF outputs together.
* Actually implement on-chain randomness
Blake2b is used for hashing.
* Update dependencies
* Run `cargo update` where needed
* Re-add a newline at EOF
* Remove broken and unsafe code
XOR is not a hash function, and must not be used as such. The
implementation was also needlessly unsafe.
* Run `cargo update` where needed
* Remove spurious dependency
* Document security guarantees of BABE randomness
* Add a `RandomnessBeacon` trait
* Document `RandomnessBeacon::random`
* Fix silly compile error (unexpected type arguments)
* Fix BABE randomness
* Implement `FindAuthor` for `babe::Module`
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Respond to suggestions from code review and fix bugs
* Store an authority index, not the authority itself.
* Avoid unnecessary decoding.
* Implement relative slots and BABE randomness fully and correctly.
* Remove spurious dependency
* Fix error reported by rust-analyzer
* Update Cargo.lock files
* `wrapping_add` → `checked_add`
The epoch index will not overflow. Panic if it does.
* Move randomness documentation to trait
* Fix compile error in test suite
* Explain 2^64 limit
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Remove dependencies on tokio
* Make service not depend on tokio
* Fix service tests
* Manually poll the import queue if failed to start
* Spawn all tasks at the end
* Remove executor from TelemetryOnConnect
* Remove TaskExecutor from offchain workers
* Remove TaskExecutor from AuthoritySetup
* Remove TaskExecutor from service
* Remove tokio dependency from RPC
* Remove finality-grandpa from WASM checks
* Fix offchain tests
* Line widths
* Fix RPC tests
* Fix service tests
* Fix bad futures polling
* Address some concerns
* Better error handling
* Is it the connectivity test that's not passing? I don't know, let's try
* Revert "Is it the connectivity test that's not passing? I don't know, let's try"
This reverts commit 28bbe51f0e2e4885fe1f901e11078604604cb212.
* Fix test
* srml-contract: Move gas costs from Config to Schedule.
* srml-contract: Define Gas units fixed as u64.
This removes Gas as a configurable type on the contracts Trait.
* Bump node runtime spec/impl versions.
* generalized uncle processing
* add some uncle tests
* set author and do event handling
* OnePerAuthorPerHeight no longer O(n^2) and test
* bump impl_version of node
* Documentation and style fixes
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
* fix#2949: index-based FindAuthor wrapper for srml-session
* use for_each_tuple
* Change network::sync::extra_requests to not send.
Instead it only maintains the invariants and leaves the actual I/O part
to the parent module (i.e. `sync`).
* Update Cargo.lock.
* Draft of new sessions
* Reintroduce tuple impls
* Move staking module to new session API
* More work on staking and grandpa.
* Use iterator to avoid cloning and tuple macro
* Make runtime build again
* Polish the OpaqueKeys devex
* Move consensus logic into system & aura.
* Fix up system module
* Get build mostly going. Stuck at service.rs
* Building again
* Update srml/staking/src/lib.rs
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
* Refactoring out Consensus module, AuthorityIdOf, &c.
* Refactored out DigestItem::AuthoritiesChanged. Building.
* Remove tentative code
* Remove invalid comment
* Make Seal opaque and introduce nice methods for handling opaque items.
* Start to use proper digest for Aura authorities tracking.
* Fix up grandpa, remove system::Raw/Log
* Refactor Grandpa to use new logging infrastructure.
Also make authorityid/sessionkey static. Switch over to storing
authorities in a straight Vec.
* Building again
* Tidy up some AuthorityIds
* Expunge most of the rest of the AuthorityKey confusion.
Also, de-generify Babe and re-generify Aura.
* Remove cruft
* Untangle last of the `AuthorityId`s.
* Sort out finality_tracker
* Refactor median getting
* Apply suggestions from code review
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Session tests works
* Update core/sr-primitives/src/generic/digest.rs
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
* Session tests works
* Fix for staking from @dvc94ch
* log an error
* fix test runtime build
* Some test fixes
* Staking mock update to new session api.
* Fix build.
* Move OpaqueKeys to primitives.
* Use on_initialize instead of check_rotate_session.
* Update tests to new staking api.
* fixup mock
* Fix bond_extra_and_withdraw_unbonded_works.
* Fix bond_with_little_staked_value_bounded_by_slot_stake.
* Fix bond_with_no_staked_value.
* Fix change_controller_works.
* Fix less_than_needed_candidates_works.
* Fix multi_era_reward_should_work.
* Fix nominating_and_rewards_should_work.
* Fix nominators_also_get_slashed.
* Fix phragmen_large_scale_test.
* Fix phragmen_poc_works.
* Fix phragmen_score_should_be_accurate_on_large_stakes.
* Fix phragmen_should_not_overflow.
* Fix reward_destination_works.
* Fix rewards_should_work.
* Fix sessions_and_eras_should_work.
* Fix slot_stake_is_least_staked_validator.
* Fix too_many_unbond_calls_should_not_work.
* Fix wrong_vote_is_null.
* Fix runtime.
* Fix wasm runtime build.
* Update Cargo.lock
* Fix warnings.
* Fix grandpa tests.
* Fix test-runtime build.
* Fix template node build.
* Fix stuff.
* Update Cargo.lock to fix CI
* Re-add missing AuRa logs
Runtimes are required to know about every digest they receive ― they
panic otherwise. This re-adds support for AuRa pre-runtime digests.
* Update core/consensus/babe/src/digest.rs
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
* Kill log trait and all that jazz.
* Refactor staking tests.
* Fix ci runtime wasm check.
* Line length 120.
* Make tests build again
* Remove trailing commas in function declarations
The `extern_functions!` macro doesn’t like them, perhaps due to a bug in
rustc.
* Fix type error
* Fix compilation errors
* Fix a test
* Another couple of fixes
* Fix another test
* More test fixes
* Another test fix
* Bump runtime.
* Wrap long line
* Fix build, remove redundant code.
* Issue to track TODO
* Leave the benchmark code alone.
* Fix missing `std::time::{Instant, Duration}`
* Indentation
* Aura ConsensusLog as enum
* child cache, and test failing notifications
* fix tests and no listen child on top wildcard
* remove useless method
* bump impl version
* Update core/client/src/notifications.rs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Update core/client/src/notifications.rs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Update core/client/src/notifications.rs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Update core/client/src/notifications.rs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* factoring notification methods to remove some redundant code.
* test child sub removal
* HStorage implementation and some type alias.
* Remove HStorage cache: does not fit
* fix removal
* Make cache use byte length (shared) instead of number of kv
* Make use of hashes cache in rpc
* applying ratio on different lru caches
* Fix format
* break a line
* Remove per element overhead of lru cache.
* typo
* Move network-libp2p into network
* Merge libp2p_service into service
* Don't expose RegisteredProtocol in the API
* Extract DiscoveryBehaviour from Behaviour
* Restore libp2p tests
* Add a test for discovery
* Line width
* Remove bandwidth check
* Fix gitlab
* Remove compilation warnings.
* Allow unused only not in tests.
* Remove unnecessary mut.
* Make CI happy.
* Revert "Make CI happy."
This reverts commit abb865fe4b9fe9af1ae3ec801da9d4305ea35765.
* Make test-client generic over runtime.
* Make sure genesis storage is constructed correctly.
* Use prelude in tests.
* Add an example of how to use test-client with node/runtime.
* Bump version.
* Rename test-clients.
* Drop import_lock from client, move it into backend, impl default version via static mutex
* still need to allow depcretion because of client.backend
* additional docs
* Remove default impl of get_import_lock, impl on instances
* Bump parking_lot to 0.8.0 accross the board