dusk-network / dips

Dusk Improvement Proposals
0 stars 1 forks source link

Proposal: stake top-up and partial unstake #19

Open fed-franz opened 1 day ago

fed-franz commented 1 day ago

Summary

Currently, stakes' amount is fixed to what set in the original stake operation. This amount is immutable (except when subject to hard slashing): to increase or reduce their stake, Provisioners have to first unstake, and stake the new amount. This entails paying the cost of the unstake and stake transactions, and a waiting period between 1 and 2 epochs for the new stake to become eligible.

This DIP proposes to enable Provisioners to change their amount without needing to unstake and restake.

Detailed Description

This DIP modifies the Stake contract to allow stake operations on top of existing stakes (top-up), and unstake operations that withdraw less than the total Stake amount (partial unstake).

Partial unstakes should not allow a stake to go below the minimum amount. Such transactions should hence fail.

Considerations

An important aspect to consider when changing the staking system if the predictability of the Provisioners Set, which allows filtering out future-round messages. However, this DIP would not affect this feature, since both topup and partial unstake would keep the Provisioner in the set. (Note that, currently, unstake operations already take effect immediately).

fed-franz commented 1 day ago

Status: Merged PR: https://github.com/dusk-network/rusk/pull/3027