Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(dot/parachain/backing): handle second incoming overseer message #3682

Merged
merged 144 commits into from
Feb 12, 2024

Conversation

axaysagathiya
Copy link
Contributor

@axaysagathiya axaysagathiya commented Jan 11, 2024

Note

need to merge ONLY AFTER #3600 gets merged

Changes

Tests

go test -tags integration github.com/ChainSafe/gossamer

Issues

closes #3506

Primary Reviewer

@kishansagathiya @EclesioMeloJunior

kanishkatn and others added 30 commits September 14, 2023 17:38
Co-authored-by: Kishan Sagathiya <[email protected]>
…ement/1 protocol (#3354)

- Added `StatementFetchingRequest` and `StatementFetchingResponse`  varying data types.

- implemented 'network.Message` interface in `StatementFetchingRequest` and 'network.ResponseMessage` interface in `StatementFetchingResponse` as they will be passed into `func (rrp *RequestResponseProtocol) Do(to peer.ID, req Message, res ResponseMessage) error` function as `req` and `res`.

- I didn't want to create a new YAML file here. so I decided to rename the YAML file name and variable(in which data of the YAML file getting unmarshalled) name so that I can use them in this PR.
…chunk/1 protocol (#3362)

- Added `ChunkFetchingRequest` and `ChunkFetchingResponse` types.

- implemented network.Message interface in `ChunkFetchingRequest` and 'network.ResponseMessage' interface in `ChunkFetchingResponse`
…available_data/1 protocol (#3368)

- Added AvailableDataFetchingRequest and AvailableDataFetchingResponse types.
- Implemented 'network.Message' interface in AvailableDataFetchingRequest and 'network.ResponseMessage' interface in AvailableDataFetchingResponse as they will be passed into this function as req and res.
…g statement and collation (#3374)

added New() method and decode test for below varying data types. 
- statement
- statement distribution message
- collation protocol
- collator protocol message
…pov/1 protocol (#3365)

- Added PoVFetchingRequest and PoVFetchingResponse types.
- Implemented 'network.Message' interface in PoVFetchingRequest and 'network.ResponseMessage' interface in PoVFetchingResponse as they will be passed into this function as req and res.
#3277)

- Added parachain service
- Registered collation and validation protocol
- Confirmed that we can communicate with collators by talking to them in `run()` function
Implemented following parachain host runtime calls
- ParachainHost_persisted_validation_data
- ParachainHost_validation_code
This commit adds all the functions required for parachain candidate validations.

With this commit, we are able to take candidate receipts and
- get validation data for it,
- perform basic checks on it,
- run respective parachain's validate_block on parachain's runtime,
- get validate results from parachain's runtime and verify those validation results again relaychain runtime,
- and declare candidate as valid or invalid in the end.

This commit also includes tests for candidate validation.
…3382)

Co-authored-by: Kanishka <[email protected]>
Co-authored-by: Kishan Mohanbhai Sagathiya <[email protected]>
Co-authored-by: Axay Sagathiya <[email protected]>
Use wazero runtime instance instead of wasmer runtime instance
…verseer (#3532)

- Implemented functionality to handle a statement message coming to the candidate backing subsystem
    - StatementMessage represents a validator's assessment of a specific candidate.
    - on receiving a statement message, we import a statement into the statement table and dispatch `Backed` notifications and misbehaviours as a result of importing a statement.
    - if the statement is seconded, the committed candidate receipt will be fetched from the statement table. Attesting data will be generated and stored to retry validation with other backing validators if a validator does not provide a PoV.
    - if the statement is valid, the validator index will be stored in existing attesting data.
    It will be checked whether the backing job is already running with the current validator. If not, the backing job will be started.
    - and then validation work will be kicked off.
    
    
 - added some overseer messages for  other subsystems as well, such as provisioner, candidate validation, and statement distribution in `dot/parachain/types/overseer_messages.go`
- implemented `Misbehaviour` enum using the interface (#3601)
- removed duplicate parachain types from `lib/babe/inherents` (#3668)
- implemented ExecutorParams varying datatype slice (partially implements #3544)
@q9f q9f added the A-blocked issue or PR is blocked until something else changes. label Jan 22, 2024
Copy link
Contributor

@kishansagathiya kishansagathiya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will wait for the other PR to merge first, but this looks good to me!!
🎉

dot/parachain/backing/second.go Outdated Show resolved Hide resolved
dot/parachain/backing/second.go Outdated Show resolved Hide resolved
…ge (#3600)

- implements logic in the Candidate Backing Subsystem to handle canSecond message. 
- The subsystem checks if it's allowed to second a candidate based on specific rules: 
    - collations must be built on the root of a fragment tree or have a parent node representing a backed candidate. 
    - If async backing is disabled for the candidate's relay parent, the response is always false.
Base automatically changed from axay/feat/backing-handle-cansecond to feat/parachain January 23, 2024 14:22
…s for availability store subsystem (#3640)

Co-authored-by: Kishan Sagathiya <[email protected]>
@axaysagathiya axaysagathiya removed the A-blocked issue or PR is blocked until something else changes. label Jan 24, 2024
@axaysagathiya axaysagathiya merged commit d3cf141 into feat/parachain Feb 12, 2024
22 checks passed
@axaysagathiya axaysagathiya deleted the axay/feat/backing/handle-second-message branch February 12, 2024 07:11
timwu20 pushed a commit that referenced this pull request Jun 15, 2024
#3682)

The `Second` message is a message received from the overseer.
Candidate Backing subsystem should second the given candidate in the context of the given relay parent.
This candidate must be validated.

Sign and dispatch a `Seconded` statement only if we have not signed a Valid statement for the requested candidate.
timwu20 pushed a commit that referenced this pull request Jun 17, 2024
#3682)

The `Second` message is a message received from the overseer.
Candidate Backing subsystem should second the given candidate in the context of the given relay parent.
This candidate must be validated.

Sign and dispatch a `Seconded` statement only if we have not signed a Valid statement for the requested candidate.
timwu20 pushed a commit that referenced this pull request Jun 20, 2024
#3682)

The `Second` message is a message received from the overseer.
Candidate Backing subsystem should second the given candidate in the context of the given relay parent.
This candidate must be validated.

Sign and dispatch a `Seconded` statement only if we have not signed a Valid statement for the requested candidate.
kishansagathiya pushed a commit that referenced this pull request Jul 15, 2024
#3682)

The `Second` message is a message received from the overseer.
Candidate Backing subsystem should second the given candidate in the context of the given relay parent.
This candidate must be validated.

Sign and dispatch a `Seconded` statement only if we have not signed a Valid statement for the requested candidate.
kishansagathiya pushed a commit that referenced this pull request Jul 15, 2024
#3682)

The `Second` message is a message received from the overseer.
Candidate Backing subsystem should second the given candidate in the context of the given relay parent.
This candidate must be validated.

Sign and dispatch a `Seconded` statement only if we have not signed a Valid statement for the requested candidate.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-subsystems-backing issues related to polkadot host backing subsystem functionality.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants