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

update development with parachains #4088

Open
wants to merge 73 commits into
base: development
Choose a base branch
from

Conversation

kishansagathiya
Copy link
Contributor

Changes

Tests

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

Issues

kanishkatn and others added 26 commits July 15, 2024 20:29
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]>
kishansagathiya and others added 26 commits July 15, 2024 20:29
Collator Protocol Subsystem receives a Backed message from overseer. This message tells collator protocol when a candidate has been backed.
This commit processes that backed message. Unblocks blocked advertisements as per the situation.
- added instance method to call the `ParachainHost_async_backing_params` runtime function
- implemented host API function ext_crypto_ecdsa_generate_version_1

- implemented below mentioned functions in lib/crypto/secp256k1
  - NewKeypairFromMnenomic
  - NewKeypairFromSeed
  - NewPublicKey

- Added support for WESTEND_RUNTIME v1.8.0
…c backing params (#3819)

Added a new Yaml file for test data and used it in a test to call the runtime method to get async backing parameters.
- added support to call runtime method to get minimum backing votes
- as the test was failing, I used runtime version 1.9.0 instead of 1.8.0
- set min memory pages to 2080
This commit introduces collator side of the collator protocol. This is just a skeleton that
- implements the SubSystem interface for the new subsystem
- registers it
- add common methods like processMessage

linked to issue #3824
This commit introduces network bridge skeleton for receiving side subsystem and sending side subsystem of network bridge

Fixes #3860 and #3858
…tor protocol (#3827)

Subsystems needs to know about the peers in collation and validation protocol. This commit
- adds logic to network package for emitting network events when a new peer joins or a peer disconnects.
- introduces a method to get a channel that will give us network events.
- make collator protocol validator side listen to these events and react to it by editing its peer data

Issue #3515
)

Handling active leaves updates are quite important in collator protocol since
- It tells us which relay parents to remove or add
- which candidates to add or remove
- most importantly it leads us to letting us know as a validator which parachain we are assigned to.

This commit add logic to react to active leaves update by
- updating view
- updating active leaves
- updating our parachain assignments

Issue #3515
…tement table for the given candidate hash (#3931)

- This PR implements a method for getting a committed candidate receipt from the statement table for the candidate hash.
- This is an implementation of one of the methods of statement table interface in the candidate backing subsystem.
…ystem (#3837)

Co-authored-by: Axay Sagathiya <[email protected]>
Co-authored-by: Kishan Sagathiya <[email protected]>
…vailability store subsystem (#3896)

Co-authored-by: Axay Sagathiya <[email protected]>
Co-authored-by: Kishan Sagathiya <[email protected]>
- Changed the order in which these fields are assigned values, so that processes field will have data before it is queried.
- Added check before using this field so that it is not used if it is nil.
…te from statement table (#3939)

This PR implements a method for getting an attested candidate from the statement table for the candidate hash.

- Added extra argument to interface method to get an attested candidate
- Implemented the same method of an interface
- There is no need for scale encoding/decoding to attestedCandidate, so I removed scale tags from the same struct.
- wrote unit tests for the same
…3966)

- This PR implements a method to import the statement into the statement table
- unexported TableContext struct
- rename table interface method from getCandidate to getCommittedCandidateReceipt
- changed attestedToBackedCandidate func to toBackedCandidate method of `attestedCandidate struct
…n missbehaviours (#3996)

- This PR implements a method to drain misbehaviour.
- I changed the returned type of interface method to drain misbehaviours.
- Written the unit test
…ntegration tests (#4069)

- Went through Ed's tests and his mock overseer implementation. That was specific to just one subsystem(availability-store subsystem). I wanted something general. My approach is inspired by him, but I have tried 
    - to make the behaviour somewhat similar to mocks generated by gomock. 
    - to make it sort of simpler 
    - to make something that could be re-used by all subsystems.
@kishansagathiya kishansagathiya force-pushed the kishan/update/development-with-parachains branch from d78016b to 69b3bff Compare July 15, 2024 14:59
Copy link
Contributor

@timwu20 timwu20 left a comment

Choose a reason for hiding this comment

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

We don't need the final commit you added to this PR if you use git rebase. I'll show you how I do it tomorrow to preserve the same commit set, which may require changing some of the commits when git can not resolve it cleanly.

)

// BitVec is the implementation of the bit vector
type BitVec struct {
Copy link
Contributor

Choose a reason for hiding this comment

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

I strongly disagree that this type should be in the scale package. Looks like this type is required, but we should move it to types package and let it implement MarshalSCALE and UnmarshalSCALE for that specific type rather than add the changes to inherently support it in the scale package.

Copy link
Contributor Author

@kishansagathiya kishansagathiya Jul 29, 2024

Choose a reason for hiding this comment

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

As per our discussion, we decided to tackle this separately. I have created an issue for this #4106.

Are there any other reasons than this? I think you also mentioned that you wanted to run some tests before merging this branch. Can you create an issue to track that task? I don't remember details of those tests otherwise I would have created the issue.
If there are many things to be done before merging this, let's create a checklist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants