Change Address (voting pools)
Introduction
In order to fufill the design criteria of voting pools, change outputs generated from withdrawal transactions must be sent to deterministically-generated addresses.
Procedure
Any change generated by a withdrawal transaction is sent to an address in the active change series. Addresses in the change series are differentiated from addresses in the deposit series by presenting the pubkeys in the output scripts in reverse standard order. Example
Assume voting pool has just started with deposit series 1 being hot, and deposit series 20 being active. Change outputs created from withdrawals taken from deposit series 1 will be sent to change series 20. The standard order of the xpubs in series 20 is: y20, z20, w20.
The first three change-generating transactions will use the following output scripts:
OP_2 w20(1) z20(1), y20(1) OP_3 OP_CHECKMULTISIG
OP_2 w20(2) z20(2), y20(2) OP_3 OP_CHECKMULTISIG
OP_2 w20(3) z20(3), y20(3) OP_3 OP_CHECKMULTISIG
Notice again that the servers are presented in reverse standard order, to indicate the script is for a change address, not a deposit address.