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

Algorand Specifications

Let

Let xx be a canonical encoding of the 5-tuple (I,r,p,s,v), and let x′ be a canonical encoding of the 4-tuple (I,r,p,s).

Let yy be an arbitrary bitstring.

Then we say that the tuple

(I,r,p,s,v,y) is a vote from II for vv at round rr, period pp, step ss (or a vote from II for vv at (r,p,s)), denoted

Vote(I,r,p,s,v)

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

Let

We say that this vote is valid with respect to LL (or simply valid if LL is unambiguous) if the following conditions are true:

Then

Observe that valid votes contain outputs of the Sign procedure; i.e., y:=Sign(x,x′,sk,B,B¯,Q,τ,τ¯).

Informally, these conditions check the following:

An equivocation vote pair or equivocation vote is a pair of votes that differ in their proposal values. In other words,

Equivocation(I,r,p,s)=(Vote(I,r,p,s,v1),Vote(I,r,p,s,v2))

for some v1≠v2.

An equivocation vote pair is valid with respect to LL (or simply valid if LL is unambiguous) if both of its constituent votes are also valid with respect to LL.