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(network): implement EIP-7801 Sharded Blocks Subprotocol (etha) #7973

Open
wants to merge 23 commits into
base: master
Choose a base branch
from

Conversation

crStiv
Copy link

@crStiv crStiv commented Dec 25, 2024

Implements EIP-7801: Sharded Blocks Subprotocol (etha)
Fixes #7944

Changes

  • Added etha protocol implementation (EIP-7801)
  • Implemented message handlers for GetShardedBlocks, ShardedBlocks, and NewShardedBlock
  • Added RLP serialization for protocol messages
  • Added protocol registration in network initialization
  • Added comprehensive test coverage

Types of changes

What types of changes does your code introduce?

  • Bugfix
  • New feature
  • Breaking change
  • Optimization
  • Refactoring
  • Documentation update
  • Build-related changes
  • Other

Testing

Requires testing

  • Yes
  • No

If yes, did you write tests?

  • Yes
  • No

Notes on testing

Added comprehensive test coverage including:

  • Unit tests for message handlers
  • Unit tests for message serialization
  • Integration tests for protocol flow
  • Error handling tests

Documentation

Requires documentation update

  • Yes
  • No

Documentation needed for the new etha protocol implementation and its usage.

Requires explanation in Release Notes

  • Yes
  • No

Added support for EIP-7801 Sharded Blocks Subprotocol (etha), enabling efficient sharded block synchronization between nodes.

Remarks

This implementation follows the specification defined in EIP-7801 and adds a new subprotocol for handling sharded blocks in Ethereum network communication.

Added base EthaProtocol class implementing the sharded blocks subprotocol as specified in EIP-7801.
Added message codes for the etha protocol (GetShardedBlocks, ShardedBlocks, NewShardedBlock)
Added message class for requesting sharded blocks as per EIP-7801
Added message class for responding with sharded blocks data as specified in EIP-7801
Added message class for announcing new sharded blocks as defined in EIP-7801
Added protocol handler for processing etha protocol messages (EIP-7801)
Added implementation for handling GetShardedBlocks, ShardedBlocks and NewShardedBlock messages
- GetShardedBlocks: Responds with requested blocks from block tree
- ShardedBlocks: Processes received blocks and adds them to block tree
- NewShardedBlock: Handles announcements of new sharded blocks
Added unit tests for the etha protocol message handling:
- Test for GetShardedBlocks message processing
Added additional test cases:
- Test for ShardedBlocks message processing
- Test for NewShardedBlock message with unknown block
- Test for NewShardedBlock message with known block
Added:
- EthaProtocolFactory for creating protocol instances
- Registration of etha protocol in NetworkModule
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.

Implement EIP-7801: etha - Sharded Blocks Subprotocol
1 participant