As per the current protocol design, there’s a built-in slow release mechanism described to allow users not to take out their stake all at once (reference pending). The reasoning behind this post is to formulate the cons of such a mechanism and try to provide a better alternative.
The reason why slow release is important: Pocket Network want users to be able to take advantage of price fluctuations in the market or to adjust their expected bandwidth consumption with the network within a reasonable timeframe without impacting the macro-economic state of the network (e.g. a user with a large stake unstaking all at once within a short period of time of staking such amount).
The problem: By creating a slow release of the stake, the protocol will have to build-in a state change mechanism to the final database (blockchain) that’s not based on a user transaction, but derived from a past transaction which will not have any direct state change associated with it.
Proposed solution: Allow the
unstake transaction to remove stake based on a formula that takes
stake age as a parameter to determine the amount that can be unstaked.
- User stakes
XPOKT in Block
- User submits
unstaketransaction without specifying an amount to unstake in Block
D(3 blocks have been confirmed
stake_age = 3 blocks).
- Transaction parsing determines the amount to
unstakebased on a formula,
amount_to_unstake = total_staked / (per_block_multiplier * stake_age)
Note 1: The
per_block_multiplier doesn’t necessarily need to be fixed or arbitrary, or could be changed later with on-chain governance.
Expected effect: Every
unstake operation could work as a “claim”, providing solid context to state changes in the final database (blockchain), while leveraging transaction protection on each “claim”, as opposed to having multiple state changes triggered by a single past transaction.