Files
sre-06-oracles/packages/hardhat/contracts/02_Optimistic/Decider.sol
2026-01-23 20:20:58 +07:00

43 lines
1.2 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;
contract Decider {
address public owner;
IOptimisticOracle public oracle;
event DisputeSettled(uint256 indexed assertionId, bool resolvedValue);
constructor(address _oracle) {
owner = msg.sender;
oracle = IOptimisticOracle(_oracle);
}
/**
* @notice Settle a dispute by determining the true/false outcome
* @param assertionId The ID of the assertion to settle
* @param resolvedValue The true/false outcome determined by the decider
*/
function settleDispute(uint256 assertionId, bool resolvedValue) external {
require(assertionId >= 1, "Invalid assertion ID");
// Call the oracle's settleAssertion function
oracle.settleAssertion(assertionId, resolvedValue);
emit DisputeSettled(assertionId, resolvedValue);
}
function setOracle(address newOracle) external {
require(msg.sender == owner, "Only owner can set oracle");
oracle = IOptimisticOracle(newOracle);
}
/**
* @notice Allow the contract to receive ETH
*/
receive() external payable {}
}
interface IOptimisticOracle {
function settleAssertion(uint256, bool) external;
}