Voting Pool Alteration

From Open Transactions
Revision as of 22:22, 17 April 2014 by Justusranvier (talk | contribs) (Initial page creation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Procedure

Altering the pool (adding, removing, or replacing) members is similar to bootstrapping.

Pool members agree on a changeover date in the form of a future series number.

Then they create a new <keyset> which inherits the existing series number sequence.

If the pool is only adding members, then it requires no further action. When the changeover happens the pool will begin accepting deposits to the new keyset and consume the old deposits as usual.

The wallet(s) for the new server(s) should not attempt to create or sign transaction that consume outputs from the time prior to when was added to the pool.

If the pool must remove a member, then it needs to move all of the outputs in the old series to the new keyset.

At the time of the changeover, the active series jumps forward enough numbers to move the hot series and all inactive series.

The inactive and hot series are migrated to the new keyset in descending order, in the same manner as a bootstrapping process.

Example

Series 40 is hot, series 41-48 are inactive, and series 49 is active. The changeover will happen starting with series 50.

<pool id=”uuid” version=”1”>
	<currency>bitcoin</currency>
	<color>0</color>
	<members>
		<server id=”y”>
			<issuer>issuer_nym_y</issuer>
			<holder>holder_nym_y</holder>
		</server>
		...
	</members>
<keyset schedule=”x1”  m=”u1” n=”v1”>
		<series number=”40”>
			<key server=”y”>xpub_y40</key>
		<key server=”z”>xpub_z40</key>
			<key server=”w”>xpub_w40</key>
	</series>

...	

	<series number=”49”>
			<key server=”y”>xpub_y49</key>
			<key server=”z”>xpub_z49</key>
		<key server=”w”>xpub_w49</key>
	</series>
</keyset>
<keyset schedule=”x2”  m=”u2” n=”v2”>
		<series number=”50”>
			<key server=”y”>xpub_y50</key>
		<key server=”c”>xpub_c50</key>
			<key server=”w”>xpub_w50</key>
			<key server=”d”>xpub_d50</key>
	</series>

...	

	<series number=”60”>
			<key server=”y”>xpub_y60</key>
			<key server=”c”>xpub_c60</key>
		<key server=”w”>xpub_w60</key>
			<key server=”d”>xpub_d60</key>
	</series>
</keyset>
</pool>

At the time of the changeover, the active series jumps to 60 in the new keyset. Old series 49 is migrated to new series 59, and so forth until either all the series are migrated, or the hot series has advanced forward. It’s possible that some of the reserved series may end up empty if the hot series advances one or more times during the migration process, in which case they are just ignored.