Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

For Protocol Developers

Documentation for protocol developers.

This section lists Lighthouse-specific decisions that are not strictly spec'd and may be useful for other protocol developers wishing to interact with lighthouse.

Custom ENR Fields

Lighthouse currently uses the following ENR fields:

Ethereum Consensus Specified

FieldDescription
eth2The ENRForkId in SSZ bytes specifying which fork the node is on
attnetsAn SSZ bitfield which indicates which of the 64 subnets the node is subscribed to for an extended period of time
syncnetsAn SSZ bitfield which indicates which of the sync committee subnets the node is subscribed to

Lighthouse Custom Fields

Lighthouse is currently using the following custom ENR fields.

FieldDescription
quicThe UDP port on which the QUIC transport is listening on IPv4
quic6The UDP port on which the QUIC transport is listening on IPv6

Custom RPC Messages

The specification leaves room for implementation-specific errors. Lighthouse uses the following custom RPC error messages.

Goodbye Reason Codes

CodeMessageDescription
128Unable to Verify NetworkTeku uses this, so we adopted it. It relates to having a fork mismatch
129Too Many PeersLighthouse can close a connection because it has reached its peer-limit and pruned excess peers
250Bad ScoreThe node has been dropped due to having a bad peer score
251BannedThe peer has been banned and disconnected
252Banned IPThe IP the node is connected to us with has been banned

Error Codes

CodeMessageDescription
139Rate LimitedThe peer has been rate limited so we return this error as a response
140Blobs Not Found For BlockWe do not possess the blobs for the requested block