From 73055950e6525b7c5418511fa223743827fbe705 Mon Sep 17 00:00:00 2001 From: Age Manning Date: Mon, 7 Aug 2023 17:09:32 +1000 Subject: [PATCH] Add some documentation for protocol developers --- book/src/SUMMARY.md | 1 + book/src/developers.md | 56 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 book/src/developers.md diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index 7431d223871..18653e2cb10 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -53,3 +53,4 @@ * [Contributing](./contributing.md) * [Development Environment](./setup.md) * [FAQs](./faq.md) +* [Protocol Developers](./developers.md) \ No newline at end of file diff --git a/book/src/developers.md b/book/src/developers.md new file mode 100644 index 00000000000..6ae7f91938d --- /dev/null +++ b/book/src/developers.md @@ -0,0 +1,56 @@ +# 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 + +| Field | Description | +| ---- | ---- | +| `eth2` | The `ENRForkId` in SSZ bytes specifying which fork the node is on | +| `attnets` | An SSZ bitfield which indicates which of the 64 subnets the node is subscribed to for +an extended period of time | +| `syncnets` | An 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. +| Field | Description | +| ---- | ---- | +| `quic` | The UDP port on which the QUIC transport is listening on IPv4 | +| `quic6` | The 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 + +| Code | Message | Description | +| ---- | ---- | ---- | +| 128 | Unable to Verify Network | Teku uses this, so we adopted it. It relates to having a fork +mismatch | +| 129 | Too Many Peers | Lighthouse can close a connection because it has reached its peer-limit and +pruned excess peers | +| 250 | Bad Score | The node has been dropped due to having a bad peer score | +| 251 | Banned | The peer has been banned and disconnected | +| 252 | Banned IP | The IP the node is connected to us with has been banned | + + +### Error Codes + +| Code | Message | Description | +| ---- | ---- | ---- | +| 139 | Rate Limited | The peer has been rate limited so we return this error as a response | \ No newline at end of file