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): sender side of network bridge #3891

Merged
merged 97 commits into from
Jul 31, 2024

Conversation

kishansagathiya
Copy link
Contributor

@kishansagathiya kishansagathiya commented Apr 15, 2024

Changes

This PR addresses sender side of network bridge. By sender side, we mean the part that we will use to send network messages to other nodes.

Sender side of network bridge can now

  • report peer
  • disconnect peer
  • send collation message
  • send validation message

This PR also makes changes across other subystems such that the don't use the network directly but message network bridge to perform above tasks.

Tests

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

Issues

handles #3859

Primary Reviewer

@axaysagathiya @edwardmack

kanishkatn and others added 30 commits January 24, 2024 20:47
…3281)

Co-authored-by: Eclésio Junior <eclesiomelo.1@gmail.com>
Co-authored-by: Edward Mack <emack@pop-os.localdomain>
Co-authored-by: Kishan Sagathiya <kishansagathiya@gmail.com>
Co-authored-by: Kishan Mohanbhai Sagathiya <kishansagathiya@gmail.com>
…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 <kanishkatn@gmail.com>
Co-authored-by: Kishan Mohanbhai Sagathiya <kishansagathiya@gmail.com>
Co-authored-by: Axay Sagathiya <axaysagathiya@gmail.com>
#3427)

Co-authored-by: Kishan Sagathiya <kishansagathiya@gmail.com>
Use wazero runtime instance instead of wasmer runtime instance
Co-authored-by: Kishan Mohanbhai Sagathiya <kishansagathiya@gmail.com>
…sons (#3498)

Also, added enums for common reputation values
Copy link
Member

@edwardmack edwardmack left a comment

Choose a reason for hiding this comment

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

Great work.

dot/parachain/collator-protocol/message_test.go Outdated Show resolved Hide resolved
dot/parachain/backing/candidate_backing_test.go Outdated Show resolved Hide resolved
dot/parachain/network-bridge/wire_message.go Show resolved Hide resolved
dot/parachain/network-bridge/wire_message.go Outdated Show resolved Hide resolved
dot/parachain/network-bridge/wire_message.go Show resolved Hide resolved
dot/parachain/overseer/mockable_overseer.go Outdated Show resolved Hide resolved
dot/parachain/types/overseer_message.go Outdated Show resolved Hide resolved
Copy link
Contributor

@axaysagathiya axaysagathiya left a comment

Choose a reason for hiding this comment

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

TestHandleCollationMessageDeclare and TestHandleCollationMessageAdvertiseCollation failed.
It seems you have nil context in the Run method of CollatorProtocolValidatorSide, and that is why it panics

Otherwise, everything looks good to me.
You can merge once you fix these tests.

@axaysagathiya
Copy link
Contributor

axaysagathiya commented Jul 29, 2024

in both the tests,

If you set context in CollatorProtocolValidatorSide{}, code will not panic
(Workaround)

	ctx, cancel := context.WithCancel(context.Background())
	cpvs := CollatorProtocolValidatorSide{
		ctx:            ctx,
		cancel:         cancel,
			...
	}

@kishansagathiya kishansagathiya merged commit 6fbff5f into feat/parachain Jul 31, 2024
22 checks passed
@kishansagathiya kishansagathiya deleted the kishan/feat/network-bridge-tx branch July 31, 2024 13:38
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.

4 participants