Votes - Algorand Specifications
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),…)).