mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-15 19:02:42 +00:00
## Issue Addressed
NA
## Proposed Changes
- Implements a HTTP API for the validator client.
- Creates EIP-2335 keystores with an empty `description` field, instead of a missing `description` field. Adds option to set name.
- Be more graceful with setups without any validators (yet)
- Remove an error log when there are no validators.
- Create the `validator` dir if it doesn't exist.
- Allow building a `ValidatorDir` without a withdrawal keystore (required for the API method where we only post a voting keystore).
- Add optional `description` field to `validator_definitions.yml`
## TODO
- [x] Signature header, as per https://github.com/sigp/lighthouse/issues/1269#issuecomment-649879855
- [x] Return validator descriptions
- [x] Return deposit data
- [x] Respect the mnemonic offset
- [x] Check that mnemonic can derive returned keys
- [x] Be strict about non-localhost
- [x] Allow graceful start without any validators (+ create validator dir)
- [x] Docs final pass
- [x] Swap to EIP-2335 description field.
- [x] Fix Zerioze TODO in VC api types.
- [x] Zeroize secp256k1 key
## Endpoints
- [x] `GET /lighthouse/version`
- [x] `GET /lighthouse/health`
- [x] `GET /lighthouse/validators`
- [x] `POST /lighthouse/validators/hd`
- [x] `POST /lighthouse/validators/keystore`
- [x] `PATCH /lighthouse/validators/:validator_pubkey`
- [ ] ~~`POST /lighthouse/validators/:validator_pubkey/exit/:epoch`~~ Future works
## Additional Info
TBC
39 lines
1.4 KiB
Markdown
39 lines
1.4 KiB
Markdown
# Validator Client API
|
|
|
|
Lighthouse implements a HTTP/JSON API for the validator client. Since there is
|
|
no Eth2 standard validator client API, Lighthouse has defined its own.
|
|
|
|
A full list of endpoints can be found in [Endpoints](./api-vc-endpoints.md).
|
|
|
|
> Note: All requests to the HTTP server must supply an
|
|
> [`Authorization`](./api-vc-auth-header.md) header. All responses contain a
|
|
> [`Signature`](./api-vc-sig-header.md) header for optional verification.
|
|
|
|
## Starting the server
|
|
|
|
A Lighthouse validator client can be configured to expose a HTTP server by supplying the `--http` flag. The default listen address is `127.0.0.1:5062`.
|
|
|
|
The following CLI flags control the HTTP server:
|
|
|
|
- `--http`: enable the HTTP server (required even if the following flags are
|
|
provided).
|
|
- `--http-port`: specify the listen port of the server.
|
|
- `--http-allow-origin`: specify the value of the `Access-Control-Allow-Origin`
|
|
header. The default is to not supply a header.
|
|
|
|
## Security
|
|
|
|
The validator client HTTP is **not encrypted** (i.e., it is **not HTTPS**). For
|
|
this reason, it will only listen on `127.0.0.1`.
|
|
|
|
It is unsafe to expose the validator client to the public Internet without
|
|
additional transport layer security (e.g., HTTPS via nginx, SSH tunnels, etc.).
|
|
|
|
### CLI Example
|
|
|
|
Start the validator client with the HTTP server listening on [http://localhost:5062](http://localhost:5062):
|
|
|
|
```bash
|
|
lighthouse vc --http
|
|
```
|