* Add PVF module documentation
TODO (once the PRs land):
- [ ] Document executor parametrization.
- [ ] Document CPU time measurement of timeouts.
* Update node/core/pvf/src/lib.rs
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
* Clarify meaning of PVF acronym
* Move PVF doc to implementer's guide
* Clean up implementer's guide a bit
* Add page for PVF types
* pvf: Better separation between crate docs and implementer's guide
* ci: Add "prevalidating" to the dictionary
* ig: Remove types/chain.md
The types contained therein did not exist and the file was not referenced
anywhere.
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
* Mostly notes.
* Better error messages.
* Introduce Fatal/NonFatal + drop back channel participation
- Fatal/NonFatal - in order to make it easier to use utility functions.
- We drop the back channel in dispute participation as it won't be
needed any more.
* Better error messages.
* Utility function for receiving `CandidateEvent`s.
* Ordering module typechecks.
* cargo fmt
* Prepare spam slots module.
* Implement SpamSlots mechanism.
* Implement queues.
* cargo fmt
* Participation.
* Participation taking shape.
* Finish participation.
* cargo fmt
* Cleanup.
* WIP: Cleanup + Integration.
* Make `RollingSessionWindow` initialized by default.
* Make approval voting typecheck.
* Get rid of lazy_static & fix approval voting tests
* Move `SessionWindowSize` to node primitives.
* Implement dispute coordinator initialization.
* cargo fmt
* Make queues return error instead of boolean.
* Initialized: WIP
* Introduce chain api for getting finalized block.
* Fix ordering to only prune candidates on finalized events.
* Pruning of old sessions in spam slots.
* New import logic.
* Make everything typecheck.
* Fix warnings.
* Get rid of obsolete dispute-participation.
* Fixes.
* Add back accidentelly deleted Cargo.lock
* Deliver disputes in an ordered fashion.
* Add module docs for errors
* Use type synonym.
* hidden docs.
* Fix overseer tests.
* Ordering provider taking `CandidateReceipt`.
... To be kicked on one next commit.
* Fix ordering to use relay_parent
as included block is not unique per candidate.
* Add comment in ordering.rs.
* Take care of duplicate entries in queues.
* Better spam slots.
* Review remarks + docs.
* Fix db tests.
* Participation tests.
* Also scrape votes on first leaf for good measure.
* Make tests typecheck.
* Spelling.
* Only participate in actual disputes, not on every import.
* Don't account backing votes to spam slots.
* Fix more tests.
* Don't participate if we don't have keys.
* Fix tests, typos and warnings.
* Fix merge error.
* Spelling fixes.
* Add missing docs.
* Queue tests.
* More tests.
* Add metrics + don't short circuit import.
* Basic test for ordering provider.
* Import fix.
* Remove dead link.
* One more dead link.
Co-authored-by: Lldenaurois <Ljdenaurois@gmail.com>
* CI: new image for simnet
* CI: chore
* CI: separate image for collator
* dockerfile: it's bad upgrading in the images
* CI: correct links to Dockerfiles
* CI: right dotenv usage
* CI: workaround GitLab's bug that failed trigger status is not reported and 'job runs forever'
* CI: debug: need instead of rules to avoid the bug
* dockerfile: fix storage
* CI: workaround sending the status when the trigger is failed
* CI: fix needed job
* CI: edit comments
* CI: trigger simnet with API
* CI: triggering script
* CI: remove real-overseer
* CI: trigger real simnet
* gossip: do not issue a connection request if we are not a validator
* guide updates
* use all relevant authorities when issuing a request
* use AuthorityDiscoveryApi instead
* update comments to the status quo
* dispute subsystem files
* rename
* fix linkcheck
* flesh out section README
* coordinator schema
* DisputeCoordinatorMessage
* stub & coordinator protocol
* dispute coordinator
* add some more message fields
* move links to bottom
* dispute participation
* Cleen It Up !
* runtime: store candidate receipts in dispute state
yeah, this is a little heavier. why are you reading this?
* Revert "runtime: store candidate receipts in dispute state"
This reverts commit 51c10bfd4d866e287e6bd88f317ed57ed987eaee.
* add dispute availability statement type and prepare for availability
* add 'spam slots' to disputes runtmie
* return Spam Slots info from runtime
* rework `ImportStatement` to `ImportStatements`
* some more methods for dispute coordinator
* candidates-included runtime API
* algo for providing disputes to runtime.
* handle signing with coordinator
* dispute coordinator chain ops
* remove dead file
* remove keystore from dispute participation
* adjust ApprovedAncestor to return the necssary data
* discuss how approved ancestor and determine undisputed chain are used together
* add TODO
* initiate disputes from approval voting
* route statements from candidate backing and approval voting
* fix guide build
* REVERT: comment out graphviz
* rewrite most of protocol-disputes
* write about conclusion and chain selection
* tie back in overview
* basic disputes module
* guide: InclusionInherent -> ParaInherent
* language
* add ParaInherentData type
* plug parainherentdata into provisioner
* provide_multi_dispute
* tweak
* inclusion pipeline logic for disputes
* be clearer about signature checking
* reject backing of disputed blocks
* some type rejigging
* known-disputes runtime API
* wire up inclusion
* Revert "REVERT: comment out graphviz"
This reverts commit 66203e362f7872cb413d258f74634a0aad70302b.
* timeouts
* include in initialization order
* address grumbles
* collation-generation: use persisted validation data
* node: remote FullValidationData API
* runtime: remove FullValidationData API
* backing tests: use persisted validation data
* FullCandidateReceipt: use persisted validation data
This is not a big change since this type is not used anywhere
* Remove ValidationData and TransientValidationData
Also update the guide
* skeleton flow control
* tweaks & rename to approvals distribution
* Update roadmap/implementers-guide/src/node/approval/approval-distribution.md
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* Update roadmap/implementers-guide/src/node/approval/approval-distribution.md
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* add a `NewBlocks` message and dispatch
* new data format for approval distribution
* guide: update view to include finalized block number
* approvals: document view updating
* pruning when peers disconnect
* add remaining message types
* fix link
* network message type
* handle incoming assignments
* import_and_circulate_approval
* handle new blocks
* address review comments
* address review comments and use nifty VRFProof
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* Guide: Split router module in guide.
Now we have: DMP, UMP and Router module.
* Add a glossary entry for what used to be called Router
* Extract DMP
* Extract UMP
* Extract HRMP
* Switch over to new modules
* Router: goodbye sweet prince
* Link to messaging overview for details.
* Update missed rococo and test runtimes.
* Commit destroyed by rebase changes
* Don't deprecate Router but rather make it a meta-project
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* Fix typos suggestion
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* Fix repetition in the impl guide
* Clarify that processed_downward_messages has the u32 type
* Remove the router subdir.
* Deabbreviate DMP,UMP,HRMP
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* move validity module to disputes module
* prepare a section on approvals
* extract approval/assignments text to an overview section
* Apply suggestions from code review
Spelling
Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
* Initial guide modifications for approvals
* Split approval assignments keys and approval votes keys
This should avoid the political problems with validator operators
wnting everything to be a remote signer.
* Update roadmap/implementers-guide/src/runtime/validity.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update roadmap/implementers-guide/src/node/validity/assignments.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update roadmap/implementers-guide/src/node/validity/assignments.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update roadmap/implementers-guide/src/node/validity/assignments.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update roadmap/implementers-guide/src/node/validity/assignments.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update roadmap/implementers-guide/src/node/validity/assignments.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update roadmap/implementers-guide/src/node/validity/assignments.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update roadmap/implementers-guide/src/node/validity/assignments.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update roadmap/implementers-guide/src/node/validity/approvals.md
Co-authored-by: hndnklnc <handankilinc1@gmail.com>
* Update roadmap/implementers-guide/src/node/validity/approvals.md
Co-authored-by: hndnklnc <handankilinc1@gmail.com>
* Update roadmap/implementers-guide/src/runtime/validity.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Not sure where these go..
* Update roadmap/implementers-guide/src/node/validity/approvals.md
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Local clock leniency
* Explain HSM blabla
* double word
* Clarify okasing things on-chain
* Assignments integration with relative time
* minor tweaks
* Clarify structure and work savings
* Use included more
* Cleanup and paramaters
See https://github.com/w3f/research-internal/issues/515
* More on GRANDPA
* Explain relay equivocation relevance
* Address postponement and on-chain verification somewhat
* small bit more explination
* just use ed25519 here: could -> should
* spelling
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
Co-authored-by: hndnklnc <handankilinc1@gmail.com>
* guide: validation data refactoring
* address grumbles from review
* Update roadmap/implementers-guide/src/types/candidate.md
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* last comments from review
Co-authored-by: Sergei Shulepov <sergei@parity.io>
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* sketch out provisioner basics
* handle provisionable data
* stub out select_inherent_data
* split runtime APIs into sub-chapters to improve linkability
* explain SignedAvailabilityBitfield semantics
* add internal link to further documentation
* some more work figuring out how the provisioner can do its thing
* fix broken link
* don't import enum variants where it's one layer deep
* make request_availability_cores a free fn in util
* document more precisely what should happen on block production
* finish first-draft implementation of provisioner
* start working on the full and proper backed candidate selection rule
* Pass number of block under construction via RequestInherentData
* Revert "Pass number of block under construction via RequestInherentData"
This reverts commit 850fe62cc0dfb04252580c21a985962000e693c8.
That initially looked like the better approach--it spent the time
budget for fetching the block number in the proposer, instead of
the provisioner, and that felt more appropriate--but it turns out
not to be obvious how to get the block number of the block under
construction from within the proposer. The Chain API may be less
ideal, but it should be easier to implement.
* wip: get the block under production from the Chain API
* add ChainApiMessage to AllMessages
* don't break the run loop if a provisionable data channel closes
* clone only those backed candidates which are coherent
* propagate chain_api subsystem through various locations
* add delegated_subsystem! macro to ease delegating subsystems
Unfortunately, it doesn't work right:
```
error[E0446]: private type `CandidateBackingJob` in public interface
--> node/core/backing/src/lib.rs:775:1
|
86 | struct CandidateBackingJob {
| - `CandidateBackingJob` declared as private
...
775 | delegated_subsystem!(CandidateBackingJob as CandidateBackingSubsystem);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't leak private type
```
I'm not sure precisely what's going wrong, here; I suspect the problem is
the use of `$job as JobTrait>::RunArgs` and `::ToJob`; the failure would be
that it's not reifying the types to verify that the actual types are public,
but instead referring to them via `CandidateBackingJob`, which is in fact private;
that privacy is the point.
Going to see if I can generic my way out of this, but we may be headed for a
quick revert here.
* fix delegated_subsystem
The invocation is a bit more verbose than I'd prefer, but it's also
more explicit about what types need to be public. I'll take it as a win.
* add provisioning subsystem; reduce public interface of provisioner
* deny missing docs in provisioner
* refactor core selection per code review suggestion
This is twice as much code when measured by line, but IMO it is
in fact somewhat clearer to read, so overall a win.
Also adds an improved rule for selecting availability bitfields,
which (unlike the previous implementation) guarantees that the
appropriate postconditions hold there.
* fix bad merge double-declaration
* update guide with (hopefully) complete provisioner candidate selection procedure
* clarify candidate selection algorithm
* Revert "clarify candidate selection algorithm"
This reverts commit c68a02ac9cf42b3a4a28eb197d38633a40d0e3e6.
* clarify candidate selection algorithm
* update provisioner to implement candidate selection per the guide
* add test that no more than one bitfield is selected per validator
* add test that each selected bitfield corresponds to an occupied core
* add test that more set bits win conflicts
* add macro for specializing runtime requests; specailize all runtime requests
* add tests harness for select_candidates tests
* add first real select_candidates test, fix test_harness
* add mock overseer and test that success is possible
* add test that the candidate selection algorithm picks the right ones
* make candidate selection test somewhat more stringent
* Do a small write-up on collation-generation
* preamble to collator protocol
* notes on protocol
* collation-generation: point to collator protocol
* fix missing bracket
* expand on collator protocol wire protocol
* add a couple more sentences
* expand on requests some more
* go higher level
* network bridge: note peerset
* note peer-set = validation for protocols
* add `ConnectToValidators` message
* use ConnectToValidators in collator protocol
* typo
* remove references to sentry nodes