How to Dispute
Last updated
Last updated
First you'll need to monitor the transactions that reporters submit on chain and identify a data report that you'd like to dispute. You can do that using our feeds page, the disputable values monitor the oracle contract directly.
In order to dispute you'll need to collect the queryId and time from the data in the transaction log.
Next, locate the correct governance contract depending on which chain the data resides on.
Approve the governance contract for the dispute fee (1/10th of the stake amount). Locate the correct token contract for your network. Call the approve
function using the network's governance contract as the spender.
Connect your wallet with the button “connect to web3”. Under the beginDispute
function Input the queryId
(with a 0x at the beginning), and input the timestamp
. Finally, click write and confirm the transaction.
The dispute fee amount is variable depending on the reporter stake amount. The getDisputeFee function can be read from the Signum governance contract on each chain.
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.
Here is some additional explanation of how disputes work on a contract level:
Every time a new value is submitted to the oracle contract, the following event is emitted:
To dispute a value, go to the governance contract and run:
To get the current dispute fee:
To get the number of openDisputes on an ID:
To open a dispute on a previously disputed value (challenge the result of the vote), simply run beginDispute
with the same parameters (same timestamp/queryID). Note that the disputeFee will need to be doubled from the previous round, and the new round must begin after the previous vote is tallied, but before it is executed (24 hour window).
To determine whether a given value has already been disputed: