-
Notifications
You must be signed in to change notification settings - Fork 1k
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
(WIP) Light client p2p interface #2786
Open
jinfwhuang
wants to merge
1
commit into
ethereum:dev
Choose a base branch
from
jinfwhuang:light-client-p2p
base: dev
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# Ethereum Altair Light Client P2P Interface | ||
|
||
**Notice**: This document is a work-in-progress for researchers and implementers. | ||
|
||
This document contains the networking specification for [minimal light client](./sync-protocol.md). | ||
This document should be viewed as a patch to the [Altair networking specification](./p2p-interface.md). | ||
|
||
## Table of contents | ||
|
||
<!-- TOC --> | ||
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
|
||
- [The gossip domain: gossipsub](#the-gossip-domain-gossipsub) | ||
- [Topics and messages](#topics-and-messages) | ||
- [The Req/Resp domain](#the-reqresp-domain) | ||
- [Messages](#messages) | ||
- [LightClientUpdate](#lightclientupdate) | ||
- [Server discovery](#server-discovery) | ||
|
||
<!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- /TOC --> | ||
|
||
## The gossip domain: gossipsub | ||
|
||
The `light_client_update` gossip topic is added to support a light client searching for latest block header information. | ||
|
||
### Topics and messages | ||
|
||
The new topics along with the type of the `data` field of a gossipsub message are given in this table: | ||
|
||
| Name | Message Type | | ||
| - | - | | ||
| `light_client_update` | `LightClientUpdate` | | ||
|
||
Definitions of these new types can be found in the [sync-protocol](./sync-protocol.md#LightClientUpdate). | ||
|
||
|
||
## The Req/Resp domain | ||
|
||
### Messages | ||
|
||
#### LightClientUpdate | ||
|
||
**Protocol ID:** `/eth2/beacon_chain/req/skip-sync/1/` | ||
|
||
Request Content: | ||
``` | ||
( | ||
key: bytes32 | ||
) | ||
``` | ||
|
||
Response Content: | ||
``` | ||
( | ||
LightClientUpdate | ||
) | ||
``` | ||
|
||
The request key is the hash root of a SyncCommittee. This allows a light client to start with any trusted sync-committee root to skip sync to the latest sync-committee. | ||
|
||
|
||
## Server discovery | ||
|
||
[TODO] | ||
- Note that if we simply use the same set of bootnodes as the set configured in BeaconChain, the majority of the discovered peers are not likely to support the gossip topic of the req/resp protocol defined in this document. | ||
- If disv5 supports [topic advertisement](https://github.com/ethereum/devp2p/blob/master/discv5/discv5-theory.md#topic-advertisement), this could be used to discover a subnet of nodes that supports the light client protocol. | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not bullet proof, as the same
SyncCommittee
may be selected for multiple sync committee periods.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is a great observation. In that case, the key must include information about sync period as well.