This proposal is meant to define a variable bonding time (currently 0) and variable (extend only from current one) un-bonding time.
Purpose of this thread is to brainstorm proper algorithm which will help to define a good draft and final proposal.
What is the general idea ?
Based on one or more parameters (defined later) the bonding and unbonding time to particular validators and by particular delegators would dynamically vary. If delegators centralize and try to harm the network by irresponsible behavior they would be taxed (aka penalized by inflation) on the protocol level. For example blindly bonding to TOP1-X validators who account for more then 37% of voting power would require delegators to await period of time defined by some algorithm (which has to be determined). This way delegators will become more careful and diligent while distributing their stake and instantly notice that they do not receive rewards right away thus potentially research why what they are doing is taxed. Additionally poor distribution of stake by delegators could automatically extend un/bonding times, for example bonding 100% of wallet content into A might take time T while un/delegating 50% to A and 50% to B T/2 months.
The overall idea can be split into two separate sections.
- Variable un/bond when delegating to particular validators
- Variable un/bond when delegating by particular delegators
1. Delegators Bonding to lower ranked Validatators can expect to bond faster and unbond faster 2. Delegators Bonding to higher ranked Validators can expect to bond slower and unbound slower. 3. Delegators that centralize their stake can expect to bond slower and unbound slower. 4. Delegators that decentralize their stake can expect to bond faster and unbound faster.
Where unbound is never smaller then 21 days regardless if validator is hi rank or low rank.
Reason: If you put network in danger you should be taxed (during bonding) and your risk factor (unbonding period) extend. Additionally un/bound factors should be considered on both validator and delegator side. Desired behavior should be plainly stated by the chain logic.
What is this supposed to achieve ?
- Ensure more more uniform distribution of the stake by having a protocol rule thus clearly states expected long term direction toward decentralization
- Instantly increase awareness of delegators about the stake congestion.
- Ensure more more active delegators behavior (they should monitor stake distribution if they want to have optimal access time to the funds)
- Ensure hones carrot/stick behavior among both validators and delegators.
WAIT !!! Can this cause big validators to split into multiple nodes and perform sybil attacks ?
No if bonding algorithm is properly defined and ensures that sybil behavior is not worth its execution, for example cost of maintenance of additional setup exceeds potential increase in the number of delegations. One of the ideas how to solve it was proposed by @sunnya97 via equation:
(sqrt(v_1) + sqrt(v_2) + ... + sqrt(v_N))^2.
What parameters could be used in the algorithm that defines bonding and unbolting time ?
- % share of delegated stake (rank)
- % share of self delegations
- Number of unique delegations above certain amount or % share where delegators do not delegate “all in” into particular validator
- Number of “all in” delegators above certain amount or % share
- Commission Fees, change rates, max fee
- Number of approved governance proposals created by the validator
- Any others ?
What parameters should likely NOT be used in the algorithm that defines bonding and unbolting time ?
- Missed Blocks
- Jail count (within defined time period)