Bundles
Let \(V\) be any set of votes and equivocation votes.
We say that \(V\) is a bundle for \(v\) in round \(r\), period \(p\), and step \(s\) (or a bundle for \(v\) at \((r, p, s)\)), denoted \(Bundle(r, p, s, v)\).
⚙️ IMPLEMENTATION
Bundle reference implementation.
Moreover, let \(L\) be a ledger where \(|L| \geq \max{\delta_b, \delta_s}\).
We say that this bundle is valid with respect to \(L\) (or simply valid if \(L\) is unambiguous) if the following conditions are true:
⚙️ IMPLEMENTATION
The reference implementation makes use of an asynchronous Bundle verifying function.
See the non-normative Algorand ABFT Overview for further details.
-
\(s \neq 0\) (there are no bundles for the \(Propose\) step).
-
Every element \(a_i \in V\) is valid with respect to \(L\).
-
\(|V| \leq CommitteeThreshold(s)\).
Intuitively, the largest possible bundle is a bundle where every vote’s weight is exactly one.
- For any two elements \(a_i, a_j \in V\), \(I_i \neq I_j\).
- For any element \(a_i \in V\), \(r_i = r, p_i = p, s_i = s\).
-
For any element \(a_i \in V\), either \(a_i\) is a vote and \(v_i = v\), or \(a_i\) is an equivocation vote.
-
Let \(w_i\) be the weight of the signature in \(a_i\). Then \(\sum_i w_i \geq CommitteeThreshold(s)\).