Abstract
The Dispute Manager contract allows fisherman to police Indexer activity by submitting disputes for invalid indexing or query responses. Right now, disputes are deleted on resolution instead of being marked as accepted, rejected, or drawn. This prevents other smart contracts from tracking the status of disputes and past Indexer slashing events. Rather than delete disputes, this proposal suggests that the Dispute Manager contract should permanently store disputes alongside their status.
Motivation
Soulbound Labs is building a Subgraph Bridge designed to offload prohibitively expensive computations from the EVM to The Graph.
Our goal is to prevent query responses from Indexers from being certified on-chain if that response is tied to either an active or valid dispute.
We consider this is a great addition to the core functionality of the Dispute Manager that will help transform subgraphs into read-oriented rollups.
Specification
Modify the Dispute struct in IDisputeManager.sol to include the current status of the dispute.
struct Dispute {
address indexer;
address fisherman;
uint256 deposit;
bytes32 relatedDisputeID;
DisputeType disputeType;
DisputeStatus disputeStatus; /* New disputeStatus enum */
}
enum DisputeStatus {
Pending,
Drawn,
Accepted,
Rejected
}
Modify the _resolveDispute
and _resolveDisputeInConflict
methods in DisputeManager.sol to accept and set a DisputeStatus
value on a Dispute
.
Modify acceptDispute
, rejectDispute
, and drawDispute
methods to call the updated _resolveDispute
and _resolveDisputeInConflict
calls with the appropriate status. Note that acceptDispute
will set the valid dispute’s status to Accepted
and the invalid dispute’s status to Rejected
.
Modify _createIndexingDisputeWithAllocation
and _createQueryDisputeWithAttestation
methods to create new disputes with a Pending
status.
Implementation
This proposal doesn’t have an implementation yet.
Backwards Compatibility
This proposal is fully backward compatible.
Validation
Audits
The implementation has not yet been audited.
Testnet
The implementation has not yet been deployed to Testnet.
Copyright Waiver
Copyright and related rights waived via CC0.