Disputing
Learn about disputing data.
The easiest way to dispute data submitted to Fetch Oracle is to use the Fetch Dashboard.
Before beginning a dispute, the proper amount of FETCH tokens must be approved to the contract to cover the dispute fee. If you use the Fetch Dashboard for the dispute, the token approval is preformed as part of the in-app process.
For the DVM to dispute, you need to use the -d
option. You also need to specify an account that will be used to pay the dispute fee and initiate the dispute.
This would start the DVM in dispute mode, with the specified account monitoring the chain every 120s.
If you don't specify an account with the -a
option, type 'n' when asked if you want to 'run alerts only?' and select one of your accounts from the list.
You can not dispute if you have not set an account to use when starting the DVM
DVM will start with the message "...Now with auto-disputing!..." when in dispute mode.
There will be no changes appearing in the terminal window until there's a new report submitted to Fetch. After that, some calculations may appear and a table with detailed info on the report will take place.
Dispute Mechanism
Any party can challenge data submissions of any reporters when a value is placed on-chain. A challenger must submit a dispute fee to each challenge. Once a challenge is submitted, the potentially malicious reporter who submitted the value is placed in a locked state for the duration of the vote.
FETCH holders vote on the validity of the reported value. All FETCH holders have an incentive to maintain an honest Oracle and can vote on the dispute.
A proper submission is one that corresponds to a valid query around the time of the submission of the value. The subjectivity of the validity is a feature and corresponds to “correct” being up to the interpretation of the Fetch community.
Why Disputing Is Important
The security of Fetch comes through a minimum deposit of FETCH tokens that acts as a bond or stake in order for reporters to participate in providing data.
The reporters risk losing these stakes if they submit data that is successfully disputed.
What This Means For Getting Data
On a blockchain, security and time can not be separated. You can't have instant finality and still be secure. This is particularly true for oracle data.
Fetch Oracle data values can be used as soon as the data is placed on-chain, however the longer a user waits once the data is submitted on chain, the more probable it is to remain, and therefore be secure thanks to the economic incentives to dispute invalid information.
Values are able to be disputed and taken off-chain for the same time frame as the reporter lock (a configurable variable starting at 12 hours).
Dispute Using the Fetch Dashboard
The easiest way to dispute data submitted to the Fetch Oracle is to use the Dispute feature in the Fetch Dashboard.
This will manage approving the tokens for the governance contract to spend to cover the fees, transfer the correct fee, and call the required function appropriate for the current state of the dispute.
Dispute Fees
The dispute fee amount is variable depending on the current minimum stake amount. The getDisputeFee
function can be read from the Fetch governance contract.
The disputeFee
starts at 1/10th of the stakeAmount
, and doubles with each voting round or with each open dispute on a given QueryID. The dispute fee is capped at the stakeAmount.
Last updated