## 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 bundle Bundle(rk,pk,sk,v) a player

- Ignores* it if Bundle(rk,pk,sk,v) is malformed or trivially invalid.

- Ignores it if  
  - rk≠rrk≠r or  
  - rk=rrk=r and pk+1<ppk+1<p.
- Otherwise, observes the votes in Bundle(rk,pk,sk,v) in sequence. If there exists a vote that causes the player to observe some bundle Bundle(rk,pk,sk,v′) for some sk, then the player relays Bundle(rk,pk,sk,v′), and then executes any consequent action; if there does not, the player ignores it.

Specifically, if the player ignores the bundle without observing its votes, then

N(S,L,Bundle(rk,pk,sk,v))=(S,L,ϵ);N(S,L,Bundle(rk,pk,sk,v))=(S,L,ϵ);

while if a player ignores the bundle but observes its votes, then

N(S,L,Bundle(rk,pk,sk,v))=(S′∪Bundle(rk,pk,sk,v),L,ϵ);N(S,L,Bundle(rk,pk,sk,v))=(S′∪Bundle(rk,pk,sk,v),L,ϵ);

and if a player, on observing the votes in the bundle, observes a bundle for some value (not necessarily distinct from the bundle’s value), then

N(S,L,Bundle(rk,pk,sk,v))=(S′∪Bundle(rk,pk,sk,v),L′,(Bundle∗(r,pk,sk,v′),…)).N(S,L,Bundle(rk,pk,sk,v))=(S′∪Bundle(rk,pk,sk,v),L′,(Bundle∗(r,pk,sk,v′),…).
