Skip to content

[consensus] Remove fault and equivocation tracking #2110

@BrendanChou

Description

@BrendanChou

Slashing and equivocation-tracking could be more trouble than it's worth. It makes things more complicated and introduces more surface area for bugs. We should explore if removing this functionality can make the code simpler, more maintainable, easier to understand, and easier to audit/verify.

The other thing about equivocation is that these kinds of things are not actually dangerous in normal operation. Let's take the classic consensus algos where you assume <1/3 byzantine. In these constructions, equivocation by the byzantine nodes is not dangerous, there is less than enough of them to do anything deadly. This is the heart of the consensus algorithm and the <1/3 assumption. So why would you need to slash such validators; they can't do anything more harmful than just going offline anyway.

Okay but now assume that you have >1/3 byzantine nodes, and suddenly equivocation is dangerous! Okay well my assertion is that you are screwed anyway. What good is slashing evidence going to do when you can't even finalize that information into a block? The byzantine nodes would never allow the slashing to be finalized into the blockchain.

Overall, consider that rewarding good behavior is enough of a deterrent of bad behavior. Bad behavior does not need to be slashed, instead it can simply pay the opportunity cost of not earning good-behavior rewards. In any normal environment, equivocation is not worse than going offline. In any very-byzantine environment you are screwed anyway and this tracking is unlikely to help.

Metadata

Metadata

Assignees

Labels

code hygieneresearchMore work requiredto-considerFurther consideration is needed whether this should be implemented

Type

No type

Projects

Status

Staged

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions