## 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

- Auto
- Light
- Dark

# Algorand Specifications

On observing a timeout event of

- T=DeadlineTimeout(p) or

- T=DeadlineTimeout(p)+2stλ+u where
u∈[0,2stλ] sampled uniformly at random,

the player attempts to resynchronize and then broadcasts* Vote(I,r,p,nexth,v) where

- v=σ(S,r,p) if vv is committable in (r,p),

- v=v¯ if there does not exist a s0>cert such that
Bundle(r,p−1,s0,⊥) was observed and there exists an s1>cert such that Bundle(r,p−1,s1,v¯) was observed,

- and v=⊥ otherwise.

> Important
>
> **IMPLEMENTATION:**
>
> Next vote issuance [reference implementation](https://github.com/algorand/go-algorand/blob/b6e5bcadf0ad3861d4805c51cbf3f695c38a93b7/agreement/player.go#L214).
>
> Next vote timeout ranges computation [reference implementation](https://github.com/algorand/go-algorand/blob/5c49e9a54dfea12c6cee561b8611d2027c401163/agreement/types.go#L103).
>
> Call to next0 [reference implementation](https://github.com/algorand/go-algorand/blob/b6e5bcadf0ad3861d4805c51cbf3f695c38a93b7/agreement/player.go#L125).
>
> Subsequent calls to nextst [reference implementation](https://github.com/algorand/go-algorand/blob/b6e5bcadf0ad3861d4805c51cbf3f695c38a93b7/agreement/player.go#L128).
>
> Step increase in recovery step timeouts [reference implementation](https://github.com/algorand/go-algorand/blob/b6e5bcadf0ad3861d4805c51cbf3f695c38a93b7/agreement/player.go#L131).

> For a detailed overview of how the recovery routine may be implemented, refer
> to the Algorand ABFT [non-normative section](https://specs.algorand.co/abft/non-normative/abft-nn).

In other words, if a proposal-value vv is committable in the current
period,

N(S,L,t(T,p))=(S′,L,(…,Vote(I,r,p,nexth,v)));N(S,L,t(T,p))=(S′,L,(…,Vote(I,r,p,nexth,v)));

while in the second case,

N(S,L,t(T,p))=(S′,L,(…,Vote(I,r,p,nexth,v¯)));N(S,L,t(T,p))=(S′,L,(…,Vote(I,r,p,nexth,v¯));

and otherwise,

N(S,L,t(T,p))=(S′,L,(…,Vote(I,r,p,nexth,⊥))).N(S,L,t(T,p))=(S′,L,(…,Vote(I,r,p,nexth,⊥))).
