Remove validator client docs (#1334)
This commit is contained in:
parent
e429c3eefe
commit
bae4835308
@ -1,88 +0,0 @@
|
|||||||
# Lighthouse Validator Client
|
|
||||||
|
|
||||||
The Validator Client (VC) is a stand-alone binary which connects to a Beacon
|
|
||||||
Node (BN) and fulfils the roles of a validator.
|
|
||||||
|
|
||||||
## Roles
|
|
||||||
|
|
||||||
The VC is responsible for the following tasks:
|
|
||||||
|
|
||||||
- Requesting validator duties (a.k.a. shuffling) from the BN.
|
|
||||||
- Prompting the BN to produce a new block, when a validator's block production
|
|
||||||
duties require.
|
|
||||||
- Completing all the fields on a new block (e.g., RANDAO reveal, signature) and
|
|
||||||
publishing the block to a BN.
|
|
||||||
- Prompting the BN to produce a new attestation as per a validator's
|
|
||||||
duties.
|
|
||||||
- Ensuring that no slashable messages are signed by a validator private key.
|
|
||||||
- Keeping track of the system clock and how it relates to slots/epochs.
|
|
||||||
|
|
||||||
The VC is capable of managing multiple validators in the same process tree.
|
|
||||||
|
|
||||||
## Implementation
|
|
||||||
|
|
||||||
_This section describes the present implementation of this VC binary._
|
|
||||||
|
|
||||||
### Services
|
|
||||||
|
|
||||||
Each validator is represented by two services, one which tracks the validator
|
|
||||||
duties and another which performs block production duties.
|
|
||||||
|
|
||||||
A separate thread is maintained for each service, for each validator. As such,
|
|
||||||
a single validator utilises three (3) threads (one for the base VC and two for
|
|
||||||
each service) and two validators utilise five (5) threads.
|
|
||||||
|
|
||||||
#### `DutiesManagerService`
|
|
||||||
|
|
||||||
Polls a BN and requests validator responsibilities, as well as a validator
|
|
||||||
index. The outcome of a successful poll is a `EpochDuties` struct:
|
|
||||||
|
|
||||||
```rust
|
|
||||||
EpochDuties {
|
|
||||||
validator_index: u64,
|
|
||||||
block_production_slot: u64,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
This is stored in the `EpochDutiesMap`, a `HashMap` mapping `epoch ->
|
|
||||||
EpochDuties`.
|
|
||||||
|
|
||||||
#### `BlockProducerService`
|
|
||||||
|
|
||||||
Polls the system clock and determines if a block needs to be produced. Reads
|
|
||||||
from the `EpochDutiesMap` maintained by the `DutiesManagerService`.
|
|
||||||
|
|
||||||
If block production is required, performs all the necessary duties to request,
|
|
||||||
complete and return a block from the BN.
|
|
||||||
|
|
||||||
### Configuration
|
|
||||||
|
|
||||||
Validator configurations are stored in a separate data directory from the main Beacon Node
|
|
||||||
binary. The validator data directory defaults to:
|
|
||||||
`$HOME/.lighthouse-validator`, however an alternative can be specified on the command line
|
|
||||||
with `--datadir`.
|
|
||||||
|
|
||||||
The configuration directory structure looks like:
|
|
||||||
```
|
|
||||||
~/.lighthouse-validator
|
|
||||||
├── 3cf4210d58ec
|
|
||||||
│ └── private.key
|
|
||||||
├── 9b5d8b5be4e7
|
|
||||||
│ └── private.key
|
|
||||||
└── cf6e07188f48
|
|
||||||
└── private.key
|
|
||||||
```
|
|
||||||
|
|
||||||
Where the hex value of the directory is a portion of the validator public key.
|
|
||||||
|
|
||||||
Validator keys must be generated using the separate `account_manager` binary, which will
|
|
||||||
place the keys into this directory structure in a format compatible with the validator client.
|
|
||||||
Be sure to check the readme for `account_manager`.
|
|
||||||
|
|
||||||
The chain specification (slot length, BLS domain, etc.) defaults to foundation
|
|
||||||
parameters, however is temporary and an upgrade will allow these parameters to be
|
|
||||||
read from a file (or initialized on first-boot).
|
|
||||||
|
|
||||||
## BN Communication
|
|
||||||
|
|
||||||
The VC communicates with the BN via a gRPC/protobuf connection.
|
|
Loading…
Reference in New Issue
Block a user