Proposals - 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 observing that (r,p) has begun, the player attempts to resynchronize, and then
if p=0 or there exists some s>cert where Bundle(r,p−1,s,⊥) was observed, then a player generates a new proposal (v′,Proposal(v′)) and then broadcasts (Vote(I,r,p,0,v′),Proposal(v′)).
if p>0 and there exists some s0>cert,v where Bundle(r,p−1,s0,v) was observed, while there exists no s1>cert where Bundle(r,p−1,s1,⊥) was observed, then the player broadcasts Vote(I,r,p,0,v). Moreover, if Proposal(v)∈P, the player then broadcasts Proposal(v).
A player generates a new proposal by executing the entry-generation procedure and by setting the fields of the proposal accordingly. Specifically, the player creates a proposal payload ((o,s),y) by setting
o:=Entry(L),
Q:=Seed(L,r−1)
y:=Sign(Q,Q,0,0,0,0,0,0),
and s:=Rand(y,pk) if p=0 or s:=Hash(Seed(L,r−1)) otherwise.
This consequently defines the matching proposal-value v=(I,p,Digest(e),Hash(Encoding(e))).
For an in-depth overview of how proposal generation may be implemented, refer to the Algorand Ledger non-normative section.
In other words, if the player generates a new proposal,
N(S,L,…)=(S′,L′,(…,Vote(I,r,p,0,v′),Proposal(v′))),
while if the player broadcasts an old proposal,
N(S,L,…)=(S′,L′,(…,Vote(I,r,p−1,0,v),Proposal(v)))
if Proposal(v)∈P and
N(S,L,…)=(S′,L′,(…,Vote(I,r,p−1,0,v))) otherwise.