In the current Veil protocol, stakeable Zerocoins exist in fixed denominations, 10, 100, 1000, etc. With RingCT, coins will reside in UTXOs. To provide for anonymous staking, ranges of UTXOs will be stakeable, i.e. UTXOs containing 0 to 10 Veil, 10 to 100 Veil, 100 to 1000 Veil, 1000 to 10,000 Veil, etc. (The specific ranges have not been defined but for the purpose of this discussion assume the above hold.)
The veild software will ensure that if the user had 50,000 Veil in a UTXO, they would get split into five UTXOs of 10k for efficient staking.
It has been proposed that the wallet UI allows the user to define an amount of Veil that is “always spendable”. This is called the “Change Reserve”.
What’s the motivation for the Change Reserve?
Imagine that a user has two UTXOs, each containing, say 500 Veil that are staking. While they are staking, the full balance of 1,000 Veil is spendable. However, if one of the UTXOs wins a stake, then its balance for a period of time will be unspendable. (The number of blocks for a spent stake to mature, i.e. the immaturity period, is still TBD.)
During this period of immaturity, the maximum Veil the user could spend is 500 Veil, because the other 500 is immature and unspendable.
The concept of the Change Reserve was proposed to allow the user to set aside a certain amount of Veil that would be always spendable, and, hence, not staking.
Supporting a Change Reserve feature carries the following downsides:
Supporting Change Reserve complicates the user interface, and burdens 100% of all users with concepts to understand, all in order to protect against a set of circumstances so rare as to likely only ever affect a tiny segment of users:
The proposed solution is that the full balance of the wallet is staked, and we display the immature portion as unspendable. This dramatically simplifies the user interface.
To minimize the likelihood of the rare edge case, the wallet will split the user’s staked balance into UTXO ranges such that it wouldn’t be possible that the full balance ever goes unspendable. For example, if the user held 10k Veil in a single UTXO, the wallet would split that into two 5K UTXOs, such that the maximum unspendable balance would be 5K.
Even though the desktop wallet will work fine for spending nearly 100% of the time, we’ll market the mobile wallet, which doesn’t stake, as the place to hold your day-to-day spending balance.