* Move Service::new to a macro
* Move function calls to macros
* Extract offchain_workers and start_rpc in separate function
In follow-up commits, we want to be able to directly call maintain_transaction_pool, offchain_workers, and start_rpc, without having to implement the Components trait.
This commit is a preliminary step: we extract the code to freestanding functions.
* Introduce an AbstractService trait
* Introduce NewService as an implementation detail of Service
* Implement traits on NewService instead
Instead of implementing AbstractService, Future, and Executor on Service, we implement them on NewService instead.
The implementations of AbstractService, Future, and Executor on Service still exist, but they just wrap to the respective implementations for NewService.
* Move components creation back to macro invocation
Instead of having multiple $build_ parameters passed to the macro, let's group them all into one.
This change is necessary for the follow-up commits, because we are going to call new_impl! only after all the components have already been built.
* Add a $block parameter to new_impl
This makes it possible to be explicit as what the generic parameter of the NewServiceis, without relying on type inference.
* Introduce the ServiceBuilder struct
Introduces a new builder-like ServiceBuilder struct that creates a NewService.
* Macro-ify import_blocks, export_blocks and revert_chain
Similar to the introduction of new_impl!, we extract the actual code into a macro, letting us get rid of the Components and Factory traits
* Add export_blocks, import_blocks and revert_chain methods on ServiceBuilder
Can be used as a replacement for the chain_ops::* methods
* Add run_with_builder
Instead of just run, adds run_with_builder to ParseAndPrepareExport/Import/Revert. This lets you run these operations with a ServiceBuilder instead of a ServiceFactory.
* Transition node and node-template to ServiceBuilder
* Transition transaction-factory to the new service factory
This is technically a breaking change, but the transaction-factory crate is only ever used from within substrate-node, which this commit updates as well.
* Remove old service factory
* Adjust the AbstractService trait to be more usable
We slightly change the trait bounds in order to make all the methods usable.
* Make substrate-service-test compile
* Fix the node-cli tests
* Remove the old API
* Remove the components module
* Fix indentation on chain_ops
* Line widths
* Fix bad line widths commit
* Line widths again 🤦
* Fix the sync test
* Apply suggestions from code review
Co-Authored-By: Gavin Wood <i@gavwood.com>
* Address some concerns
* Remove TelemetryOnConnect
* Remove informant::start
* Update jsonrpc
* Rename factory to builder
* Line widths 😩
* Add Call type to extensible transactions.
Cleanup some naming
* Merge Resource and BlockExhausted into just Exhausted
* Fix
* Another fix
* Call
* Some fixes
* Fix srml tests.
* Fix all tests.
* Refactor crypto so each application of it has its own type.
* Introduce new AuthorityProvider API into Aura
This will eventually allow for dynamic determination of authority
keys and avoid having to set them directly on CLI.
* Introduce authority determinator for Babe.
Experiment with modular consensus API.
* Work in progress to introduce KeyTypeId and avoid polluting API
with validator IDs
* Finish up drafting imonline
* Rework offchain workers API.
* Rework API implementation.
* Make it compile for wasm, simplify app_crypto.
* Fix compilation of im-online.
* Fix compilation of im-online.
* Fix more compilation errors.
* Make it compile.
* Fixing tests.
* Rewrite `keystore`
* Fix session tests
* Bring back `TryFrom`'s'
* Fix `srml-grandpa`
* Fix `srml-aura`
* Fix consensus babe
* More fixes
* Make service generate keys from dev_seed
* Build fixes
* Remove offchain tests
* More fixes and cleanups
* Fixes finality grandpa
* Fix `consensus-aura`
* Fix cli
* Fix `node-cli`
* Fix chain_spec builder
* Fix doc tests
* Add authority getter for grandpa.
* Test fix
* Fixes
* Make keystore accessible from the runtime
* Move app crypto to its own crate
* Update `Cargo.lock`
* Make the crypto stuff usable from the runtime
* Adds some runtime crypto tests
* Use last finalized block for grandpa authority
* Fix warning
* Adds `SessionKeys` runtime api
* Remove `FinalityPair` and `ConsensusPair`
* Minor governance tweaks to get it inline with docs.
* Make the governance be up to date with the docs.
* Build fixes.
* Generate the inital session keys
* Failing keystore is a hard error
* Make babe work again
* Fix grandpa
* Fix tests
* Disable `keystore` in consensus critical stuff
* Build fix.
* ImOnline supports multiple authorities at once.
* Update core/application-crypto/src/ed25519.rs
* Merge branch 'master' into gav-in-progress
* Remove unneeded code for now.
* Some `session` testing
* Support querying the public keys
* Cleanup offchain
* Remove warnings
* More cleanup
* Apply suggestions from code review
Co-Authored-By: Benjamin Kampmann <ben.kampmann@googlemail.com>
* More cleanups
* JSONRPC API for setting keys.
Also, rename traits::KeyStore* -> traits::BareCryptoStore*
* Bad merge
* Fix integration tests
* Fix test build
* Test fix
* Fixes
* Warnings
* Another warning
* Bump version.
* 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
* Make sr-api-macros benchmark work again
It broke with 4f888f34d3.
* Give better indication of import progress
* Only send consensus info when explicitly enabled
This is only necessary for validators and they can
explicitly enable it via
--telemetry-url 'wss://telemetry.polkadot.io 1'
(or some other endpoint)
* Remove unnecessary mutable
* Fix style
* Introduce inherent digests
* Implement inherent digests
* fix silly error
* Implementation of inherent digests in BABE
All tests pass. There are still limitations:
1. The runtime strips out inherent digests, so BABE must re-add them.
2. The test runtime checks that it can re-compute all digests. It
can’t, so I had to comment out that test.
* Fix compilation and seal import
Seals were not imported correctly: the pre-digest was imported twice,
instead of both it and the seal being imported. Also, other parts of
the code did not compile due to incomplete refactoring.
* Remove bogus assertion
* Fix testsuite compilation
* Remove unused import
* Fix compiler diagnostics
* Add inherent digest parameters to block constructors
This enforces that inherent digests are added first.
* Fixup Cargo.lock
* Fix build errors
* Re-add an incorrectly removed import
* Bump primitive-types version
* Update Cargo.lock
* Refactoring
* Use inherent digests for AuRa
They do reach the runtime, but get stripped. I have not figured out
where.
* Fix compilation errors
* Fix compilation errors due to incorrect types
* Fix whitespace
Suggested-by: Tomasz Drwiega <tomasz@parity.io>
* Add preamble
Suggested-by: Tomasz Drwiega <tomasz@parity.io>
* Fix silly compile error
* Refactor pre-digest finding code into a separate function
* Remove unwanted assertion
It is too likely to bring down the entire blockchain.
Suggested-by: Tomasz Drwiega <tomasz@parity.io>
* Use `find_pre_digest` after runtime, too
Also, use `Member` trait rather than rolling our own requirements.
Suggested-by: Tomasz Drwiega <tomasz@parity.io>
* Fix various warnings
mostly due to upgrading the dependency on `error_chain`.
* Pre-digests nearly complete
This nearly completes the implementation of pre-runtime digests.
* `Seal2` → `Seal` and fix test suite
* Try to fix the storage error
* Try to fix storage (again)
* Fix tests
* Hopefully finish pre-runtime digests
The key is to pass *only* the pre-runtime digests to the runtime. The
others must be stripped out by `initialize_block`.
* Fix silly typo
* Fix another silly mistake
* Remove unnecessary filtering of BABE pre-digests
We no longer get duplicate BABE pre-digests, so if they appear, the
header should be rejected outright.
* Update Cargo.lock files
* Reformatting
* Fix silly typo in inherent digest code
Also, revert `error.rs` files that contained calls to the `error_chain!`
macro.
* Try to keep the runtime from stripping pre-digests
Currently runs into the “Storage root must match that calculated”
assertion.
* Don’t compute storage root until storage changes are done.
Also, fix a compilation error.
* Fix compile-time error
* Fix compilation errors
* Fix more compile errors
* Hopefully it compiles this time…
* Fix compilation and add docs
* Prevent BABE from adding duplicate pre-runtime digests
Found by comparing with the AuRa code. I also did some refactoring.
* Respond to review and fix some warnings
* Delete some dead code introduced earlier
* More dead code goes away
* `ref mut` → `&mut`
* Respond to review and fix some warnings
* Fix compilation error
* Remove unneeded `HashT` type parameter
Suggested-by: Robert Habermeier <robert@parity.io>
* Remove spurious #[allow(deprecated)]
* Document inherent digest parameter to `build_block`
* Delete `Simple` trait
It wasn’t needed
* delete wrongly added files
* Fix trait bounds
* Digest serialization tests
I also did some reformatting and cleanup.
* Apply suggestions from code review
Reformatting
Co-Authored-By: André Silva <andre.beat@gmail.com>
* Swap two arguments to `propose` and `propose_with`
Also, remove some needless unsafe code.
* Remove bogus `#![allow(deprecated)]` annotations
With the removal of the deprecated `Seal` variant, these are not needed.
* Add a missing `#[allow(deprecated)]` in the AuRa tests
* Fix silly compile error
* Fix silly compiler error
RLS did not tell me that I hadn’t fixed `babe/lib.rs`, so I missed it.
* Fixes made automatically by Cargo