This is a draft of a Cardano Improvement Proposal (CIP) impacting some delegation rules.
I hope it will start a sane discussion on this forum as required to submit it as a CIP.
Preamble
I would like to propose to give SPOs the ability to refuse a delegation from a given stake address, for some reasons as you will see. This is a problem concerning resistance to censorship and it is certainly a very delicate problem to deal with, but I think these are issues that request attention and, maybe, actions.
Abstract
Currently SPOs are completely passive referring to delegations acceptance. They can do nothing to block or remove a particular stake address from their stake pool. They can do nothing to address over-saturation and they can do also nothing to address some regulatory problems, existing or future.
Motivation
This proposal try to resolve two problems I think exists in current implementation:
-
Over-saturated pools
Over-saturation harms the health of the network itself and the earnings of the delegators. At this stage SPOs are unable to protect their pool from this problem and sometime the economic disincentive is not enough. Due to FOMO in some cases or distraction in others, some Stake Pools remain over saturated for a long time and this causes losses to them and their delegators. -
Regulatory problems
Some SPOs from some country may need to avoid delegation from some person or from someone coming from some country because of regulatory problems. SPOs are completely passive in this process and there is no way to address it. This is a delicate problem to deal with and a fair solution may be difficult to find, but something should be done.
Specification
Any SPO can reject a delegation from a specified stake address with this command:
cardano-cli node stake-reject
--stake-pool-id (the stake pool id)
--reject-stake-addr (offending stake address)
--out-file reject.raw
The --reject-stake-addr
parameter can be repeated many times.
Than it can be signed with the appropriate key (to be defined at this time, on a cold machine if you will need the âcold.skeyâ):
cardano-cli transaction sign
--tx-body-file reject.raw
--signing-key-file (the key that will need to be used)
--mainnet
--out-file reject.signed
And finally on an hot machine:
cardano-cli transaction submit
--tx-file reject.signed
--mainnet
Rationale
While this is not a complete solution, at least on the regulatory front, this implementation is powerful and flexible enough to be used in many cases. On the regulatory front SPOs who need to follow some local law can easily setup a KYC procedure on their own and create a white list of allowed stake addresses. Than SPOs can run a script every epoch to keep things clean and respect the laws as they need to do. Proposed implementation is not definitive and is subject to review as soon as obvious concern will arise, especially regarding resistance to censorship.
Backwards compatibility
TO BE DEFINED
Path to Active
TO BE DEFINED