Voting Pool Withdrawal Process
Customers will normally request a withdrawal using one of the client applications that talk to the notary. These requests will end up in the auditor stream. The auditor will then validate and batch multiple withdrawal requests and ask the blockchain wallet to construct one or more transactions with one output for every withdrawal.
TODO: explain why batching is important
In order to withdrawal funds from a voting pool, M members must sign the blockchain transaction that moves the coins to the desired addresses. For that reason, auditors will have to periodically agree on a set of parameters for the blockchain transactions. These parameters are then passed on to their wallets, allowing them to generate transactions deterministically.
The auditor sends a startwithdrawal command to the wallet, which then attempts to construct blockchain transactions to satisfy the requested ouputs.
Transaction Signing & Broadcasting
Once an auditor receives new signature lists for an in-progress transaction, it will send a updatewithdrawal command to the blockchain wallet, passing those new signatures. Once the blockchain wallet has received the minimum number of required signatures for a given transaction, it will be broadcast.