ava-labs / ava-labs/Simplex

Recover Offline Validators When Epoch Advanced

Open
#441 1 comment 0 reactions 1 assignee Claimed by @samliok View on GitHub
Dominant language
Go
Stars
22
Forks
4
Avg merge
2d 14h
Merged PRs (30d)
34

Description

Validators need a way to be able to detect and recover from being offline. Currently this is possible if they become awake during the epoch they went offline in, but not recoverable if epoch/s were advanced while they were offline.

If a validator node(running an `epoch` instance) has been offline long enough for one or more epochs to pass, the current epoch may have a completely different validator set. As a result, messages from those validators would normally be rejected.

https://github.com/ava-labs/Simplex/blob/main/simplex/epoch.go#L156

To recover, finalization messages must be accepted even from non-validators. Upon receiving one, `handleFinalizationMessage` should request replication for that epochs sealing block from the sender. If multiple epochs were missed, each successive finalization advances recovery until the sealing block for the current epoch is obtained.

Once the current sealing block is received, normal epoch replication takes over and the node's validator set is updated accordingly.

**Note:** Because replication requests may be sent to peers currently considered non-validators, replication responses from those peers must also be accepted.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.