## 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 receiving a vote Votek(rk,pk,sk,v)Votek(rk,pk,sk,v) a player

- Ignores* it if VotekVotek is malformed or trivially invalid.

- Ignores it if s=0s=0 and Votek∈VVotek∈V.

- Ignores it if s=0s=0 and VotekVotek is an equivocation.

- Ignores it if s>0s>0 and VotekVotek is a second equivocation.

- Ignores it if
  - rk∉[r,r+1]rk∉[r,r+1] or

- rk=r+1rk=r+1 and either
    - pk>0pk>0 or
    - sk∈(next0,late)sk∈(next0,late) or
  - rk=rrk=r and one of
    - pk∉[p−1,p+1]pk∉[p−1,p+1] or
    - pk=p+1pk=p+1 and sk∈(next0,late)sk∈(next0,late) or
    - pk=ppk=p and sk∈(next0,late)sk∈(next0,late) and sk∉[s−1,s+1]sk∉[s−1,s+1] or
    - pk=p−1pk=p−1 and sk∈(next0,late)sk∈(next0,late) and sk∉[s¯−1,s¯+1]sk∉[s¯−1,s¯+1].
- Otherwise, relays VotekVotek, observes it, and then produces any consequent output.

Specifically, if a player ignores the vote, then

N(S,L,Votek(rk,pk,sk,v))=(S,L,ϵ)N(S,L,Votek(rk,pk,sk,v))=(S,L,ϵ)

while if a player relays the vote, then

N(S,L,Votek(rk,pk,sk,v))=(S′∪Vote(I,rk,pk,sk,v),L′,(Vote∗k(rk,pk,sk,v),…)).N(S,L,Votek(rk,pk,sk,v))=(S′∪Vote(I,rk,pk,sk,v),L′,(Votek∗(rk,pk,sk,v),…)).
