Broadcast Rules - 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
Upon observing messages or receiving timeout events, the player state machine emits network outputs, which are externally visible. The player may also append an entry to the ledger.
A correct player emits only valid votes. Suppose the player is identified with the address II and possesses the secret key sksk, and the agreement is occurring on the ledger LL. Then the player constructs a vote Vote(I,r,p,s,v) by doing the following:
Let
- (pk,B,rfirst,rlast)=Record(L,r−δb,I),
- B¯=Stake(L,r−δb),
- Q=Seed(L,r−δs),
- τ=CommitteeThreshold(s),
- τ¯=CommitteeSize(s).
Encode x:=(I,r,p,s,v),x′:=(I,r,p,s).
Try to set y:=Sign(x,x′,sk,B,B¯,Q,τ,τ¯).
If the signing procedure succeeds, the player broadcasts Vote(I,r,p,s,v)=(I,r,p,s,v,y). Otherwise, the player does not broadcast anything.
For certain broadcast vote-messages specified here, a node is forbidden to equivocate (i.e., produce a pair of votes which contain the same round, period, and step but which vote for different proposal values). These messages are marked with an asterisk (*) below. To prevent accidental equivocation after a power failure, nodes SHOULD checkpoint their state to crash-safe storage before sending these messages.
For further details on these checkpoint strategies, refer to the non-normative Ledger specification. For an in-depth review of broadcasting functionalities, refer to the non-normative Network specification.