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 receiving a proposal Proposal(v) a player
- Relays Proposal(v) if σ(S,r+1,0)=v.
- Ignores it if it is malformed or trivially invalid.
- Ignores it if Proposal(v)∈P.
- Relays Proposal(v), observes it, and then produces any consequent output, if v∈{σ(S,r,p),v¯,μ(S,r,p)}.
- Otherwise, ignores it.
Specifically, if the player ignores a proposal, then
N(S,L,Proposal(v))=(S,L,ϵ)
while if a player relays the proposal after checking if it is valid, then
N(S,L,Proposal(v))=(S′∪Proposal(v),L′,(Proposal∗(v),…)).
However, in the first condition above, the player relays Proposal(v) without checking if it is valid.
Since the proposal has not been seen to be valid, the player cannot observe it yet, so
N(S,L,Proposal(v))=(S,L,(Proposal∗(v))).
An implementation may buffer a proposal in this case. Specifically, an implementation which relays a proposal without checking that it is valid, may optionally choose to replay this event when it observes that a new round has begun (see State Transition section). In this case, at the conclusion of a new round, this proposal is processed once again as input.
Implementations MAY store and relay fewer proposals than specified here to improve efficiency. However, implementations MUST relay proposals which match the following proposal-values (where rr is the current round and pp is the current period):
- v¯,
- σ(S,r,p),σ(S,r,p−1),
- μ(S,r,p) if σ(S,r,p) is not set and μ(S,r,p+1) if σ(S,r,p+1) is not set.