mintlayer-core
mintlayer-core copied to clipboard
Implement key invalidation when reused in staking
Key invalidation in the way I'm planning it is supposed to help in solving two problems:
- Ensures that a stolen key will never cause problems in the future, such as long-range attack.
- Prevents nothing-at-stake attacks.
The way I see we should implement it, is that a signer should never, ever, sign for a chain with a chain-trust lower than anything they signed before. This will be a consensus rule. If they ever do that, the block will be rejected, and the staking pool will become invalid and it should then be decommissioned.
It's also possible to slash that behavior, though it's not possible to slash pools that already have been decommissioned but their keys are reused, hence it may not be fair.
Open for discussion.
Currently long-range attacks are prevented by both the 1000 block-reorg rule and our longest chain rule. I'm moving this out of mainnet milestone.