This is a discussion about preventing misbehavior by validators on consumer chains, for offenses other than double signing. These are defined as “intersubjective faults” by the EIGEN paper, but it is a topic we have been studying in the context of Interchain Security for years.
The approach we are advocating for here is:
- First, to define precisely what constitutes various types of intersubjective faults.
- Second, have a social contract in place that validators committing these faults should be punished by a hard fork of ATOM that takes away their stake, in the worst case scenario.
- Third, build a governance proposal that slashes and tombstones them without the need for a hard fork, unless governance is compromised.
With this approach we will have a system which provides protection against intersubjective faults comparable to that provided by the EIGEN token, but which is much smoother since it will not require a fork for every single dispute (and will never require a fork at all unless governance is seriously compromised).
But first, some background:
Slashing for equivocation
The only type of serious validator misbehavior that is currently slashed for on the Cosmos Hub is equivocation (double signing). There are a few reasons for this:
- Equivocation is one of the few types of validator misbehavior that cannot immediately be detected by a full node. This means that slashing is important to stop it, since a security conscious user (such as an exchange) cannot just run a full node to rule out any double signing attack.
- Equivocation is also one of the few types of validator misbehavior that is easy to prove on chain. All it takes is comparing a few signatures. Incorrect execution cannot be proven on chain without fraud or ZK validity proofs, using cutting edge cryptography that is generally not production ready yet. Oracle attacks, liveness attacks, and censorship cannot be proven at all.
Slashing for intersubjective attacks with forks
However, it is important to stop several types of attacks other than double signing, especially for consumer chains, due to the “subset problem”. A few of them are:
- Incorrect execution: Breaking the rules of the protocol, such as making new tokens out of thin air.
- Oracle attacks: Claiming wrong values for values reported to chain logic when validators are acting as oracle nodes. For example: reporting the price of 1 BTC to equal $1 when the real price is very different from $1.
- Liveness attacks: Maliciously stopping a chain or severely impairing its operation by refusing to sign valid blocks or include valid transactions.
These are known as “intersubjective faults” (thanks to Eigen Labs for the name). They are obvious to human observers but not provable to machines. These types of attacks are prevented on PoS blockchains, including the Cosmos Hub, by the fact that the chain can be hard forked to slash and remove the malicious validators. In fact, the EIGEN token design is intended to replicate the type of forking that is possible on a chain, but in the context of a smart contract.
Fault resolutions
Since forking the chain’s entire state just to punish a validator requires a lot of work and attention from the developers and the community, we are creating a special type of governance proposal- the “fault resolution”. This can be used to slash validators with a vote without a fork needing to take place. If the governance system is compromised by bribing or collusion, a hard fork can still take place, so this type of governance slashing does not introduce any additional security assumptions over a system (such as EIGEN) which only uses forking.
Fault definitions
We’re currently working on “fault definitions” for these types of misbehavior to ensure that the question of whether or not it happened in a specific instance does not become contentious. This will help prevent debate about whether or not something should be slashed for (as happened with prop 818), and allow the community to focus on the facts of what took place.
These fault definitions can be used in the event of a slashing by forking, and these fault resolution governance proposals are designed to be used together with good fault definitions.
Incorrect execution fault definition
Preamble:
This guideline is intended to define incorrect execution so that validators using it to attack a consumer chain can be punished with social forking or social slashing.
Incorrect execution is when a validator does not follow the basic rules of the protocol. Some examples:
- Creating money out of thin air
- Removing money from a user’s account without them having sent it
In general, incorrect execution is any state transition that is not supported by the generally accepted full node software of the consumer chain.
Defined Terms:
Generally accepted full node software: This is the full node software which can plausibly be said to be generally accepted, meaning that a user following the chain’s development with a reasonable level of vigilance and due diligence would be running this full node software
General Provisions:
In order to be guilty of incorrect execution, a validator must have:
- Proposed or signed a block which is not valid according to the chain’s generally accepted full node software.
- Validators must have had a plausibly malicious motive for signing the block in question.