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
The resynchronization is an auxiliary function used throughout the recovery steps.
A partial order relation is defined in the space of all observed bundles. We call this relation freshness.
A resynchronization attempt broadcasts the freshest observed bundle (if any).
Priority-wise, bundles’ freshness is defined as follows:
- Bundles for a certcert step are fresher than all other bundles.
- Bundles from a later period are fresher than bundles from an older period.
- Bundles for nextnext step are fresher than bundles for a softsoft step of the same period.
- Bundles for nextnext step for the ⊥⊥ proposal-value are fresher than bundles for a nextnext step for some other value.
For a formal definition of this property, refer to the ABFT normative section.
Important
IMPLEMENTATION:
Bundle freshness reference implementation.
In the reference implementation, a resynchronization attempt is handled by the
partitionPolicyfunction, as the network is assumed to be in a “partitioned state” due to the temporary inability to reach consensus. In this case, the function is only invoked when the current step s≥3s≥3 or when the current period p≥3p≥3 (that is, the player has gone through two full periods without reaching a consensus).