Auditor (voting pools)
When an audit server operates as part of a voting pool, additional requirements apply on top of its existing functionality.
The audit server listens to the audit streams broadcast by all the transaction servers and independently verifies them for correctness. The same stream which carries regular OT transaction information also contains the OT receipts for Bitcoin withdrawal requests from the pool. The audit server initiates or authorizes a blockchain withdrawal transaction via the wallet if and only if the audit for that service is clean (verified correct).
The audit server is responsible for maintaining an independent copy of the same deposit database as the transaction server. It also tracks withdrawals from the time at which it receives an OT receipt, containing a withdrawal request, until the corresponding Bitcoin transaction is fully confirmed on the blockchain.
All messages which must travel between the transaction server and the blockchain wallet pass through the audit server.
In order to create withdrawal transactions, wallets must be able to select inputs and change outputs, and calculate the minimum required transaction fee deterministically. In order to achieve determinism, the sequence of withdrawals must be globally consistent. Before sending any withdrawal request to the wallet, the audit servers are responsible for achieving consensus on a serialization order for withdrawals.