This repository contains documentation for the protocol used by POLYAS to resolve tie conditions in a verifiably pseudo-random manner. It also includes a reference implementation of the tie-resolution verification algorithm in Python.
A tie condition occurs when two or more candidates or choices receive an equal number of votes in a ballot or a candidate list. In such cases, a resolution mechanism may be required to randomly order these entities. The primary objective of the described protocol is to ensure that the resolution order is in fact pseudo-random (the outcome is unpredictable and uniformly distributed), fair (neither the POLYAS system nor the election council can manipulate the outcome to favor specific candidates), and verifiable (it can be audited to ensure the above conditions).
To achieve this, POLYAS employs a method that combines two sources of randomness: one generated by the POLYAS system and one provided by the election council. These two sources are combined to determine the resolution order. To guarantee fairness, the POLYAS system commits to its random value before the election board representative provides their randomness.
-
Detailed documentation of the tie resolution protocol (markdown)
-
An example implementation of the tie-resolution algorithm (Python)
The provided implementation can be used by an auditor to assert that the result of the tie resolution process, as output by the POLYAS system, follows the specified protocol and is therefore fair.