Resynchronization Attempt - 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
Where specified, a player attempts to resynchronize.
A resynchronization attempt involves the following stages.
First, the player broadcasts its freshest bundle, if one exists.
A player’s freshest bundle is a complete bundle defined as follows:
Bundle(r,p,soft,v)⊂VBundle(r,p,soft,v)⊂V for some vv, if it exists, or else
Bundle(r,p−1,s,⊥)⊂VBundle(r,p−1,s,⊥)⊂V for some s>certs>cert, if it exists, or else
Bundle(r,p−1,s,v)⊂VBundle(r,p−1,s,v)⊂V for some s>cert,v≠⊥s>cert,v≠⊥, if it exists.
Important
IMPLEMENTATION:
Freshness relation reference implementation.
Second, if the player broadcasted a bundle Bundle(r,p,s,v)Bundle(r,p,s,v), and v≠⊥v≠⊥, then the player broadcasts Proposal(v)Proposal(v) if the player has it.
Specifically, a resynchronization attempt:
- Corresponds to no additional outputs if no freshest bundle exists
N(S,L,…)=(S′,L′,…),N(S,L,…)=(S′,L′,…),
- Corresponds to a broadcast of the freshest bundle after a relay output and before any subsequent broadcast outputs, if said bundle exists, no matching proposal exists
N(S,L,…)=(S′,L′,(…,Bundle∗(r,p,s,v),…)),N(S,L,…)=(S′,L′,(…,Bundle∗(r,p,s,v),…)),
- Otherwise corresponds to a broadcast of both a bundle and its associated proposal after a relay output and before any subsequent broadcast outputs
N(S,L,…)=(S′,L′,(…,Bundle∗(r,p,s,v),Proposal(v),…)).N(S,L,…)=(S′,L′,(…,Bundle∗(r,p,s,v),Proposal(v),…).