## 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

Let VV be any set of votes and equivocation votes.

We say that VV _is a bundle for vv in round rr, period pp,_  
_and step_ ss (or a _bundle for vv at_(r,p,s)(r,p,s)), denoted  
Bundle(r,p,s,v)Bundle(r,p,s,v).

> Important  
> **IMPLEMENTATION:**  
> Bundle [reference implementation](https://github.com/algorand/go-algorand/blob/b6e5bcadf0ad3861d4805c51cbf3f695c38a93b7/agreement/bundle.go#L46).

Moreover, let LL be a ledger where \|L\|≥δb\|L\|≥δb.

We say that this bundle is _valid with respect to_ LL (or simply _valid_ if  
LL is unambiguous) if the following conditions are true:

> Important  
> **IMPLEMENTATION:**  
> The reference implementation makes use of an asynchronous [Bundle verifying function](https://github.com/algorand/go-algorand/blob/b6e5bcadf0ad3861d4805c51cbf3f695c38a93b7/agreement/bundle.go#L147).

> See the [Algorand ABFT non-normative section](https://specs.algorand.co/abft/non-normative/abft-nn) for  
> further details.

- Every element ai∈Vai∈V is valid with respect to LL.

- For any two elements ai,aj∈Vai,aj∈V, Ii≠IjIi≠Ij.

- For any element ai∈Vai∈V, ri=r,pi=p,si=sri=r,pi=p,si=s.

- For any element ai∈Vai∈V, either aiai is a vote and vi=vvi=v,
or aiai is an equivocation vote.

- Let wiwi be the weight of the signature in aiai. Then  
∑iwi≥CommitteeThreshold(s)∑iwi≥CommitteeThreshold(s).
