Disputes and Resolutions

1. Disputes

Any user who is staked for a dataset can dispute the consensus value if the dataset goes to consensus. Disputes work by putting up collateral and indicating the dataset with the wrong value. The amount to stake is equal to the amount of stake required to endorse a dataset of size one in the given request batch. If the dispute was invalid, then the entire stake used to raise the dispute is confiscated. If the dispute is accepted, then the disputer gets a nice bonus of half their collateral, which, as it currently stands, would be a minimum of 50 USD, making it potentially profitable for users to pay close attention to their own requests and the datasets for which they endorse.

The reason for the disputes, in general, is simply because it would be too final, slashing users without any chance to plead their case. Automatic consensus without any failsafe is simply too dangerous when dealing with people’s money. The stake amount was chosen to be something convenient, and the request batch’s base stake rate made the most sense since it was already stored and readily-available. For the payment, the goal was to make it worthwhile and the guarantee of the presence of slashed funds to pay the dispute raiser makes it so a little more can be allotted to make it potentially worthwhile for users to spend their time verifying the data and risking disputing.

2. Dispute Resolutions

When disputes are raised, there are three possible ways to resolve it. The first is to reject the dispute. In this case, the user thought the value was incorrect, but the value was later deemed correct, which means the original value is kept and the dispute period continues on as it was before the dispute was raised. The user who raised the dispute is slashed and loses all the coins they staked to raise the dispute.

The second way a dispute can be resolved is to accept that the user who raised the dispute did so correctly because the consensus value is not correct. In this case, the user who raised the dispute receives 1.5x the collateral they staked in return (their original stake plus 50%), and the dataset is reset. The provided values are still kept, so if the correct value was already provided but didn’t become the consensus value, then no one has to send it in again. When the dataset is reset, the users who endorsed the old consensus value have their entire stake slashed. The users who did not endorse the old consensus value will remain staked in the contract and will be paid out or slashed according to the eventual consensus value.

The last way that a dispute can be resolved is if there is a problem with the data that invalidates a correct result. This case occurs in unlikely events such as if cheating occurs during some type of match and the dataset is partway to being validated when the cheating is discovered and the disqualification happens. Some users might have endorsed the disqualified player already, which was correct at the time, while later users might be endorsing the new winner-by-default. It is not fair to slash anyone in this situation, so there is a mechanism that distributes coin credits in this case. Any users who were involved in the dataset will receive coin credits equal to the amount of coins they had staked, and be unstaked from the dataset.

Last updated