Initial commit with 🏗️ create-eth @ 2.0.4
This commit is contained in:
42
packages/hardhat/contracts/02_Optimistic/Decider.sol
Normal file
42
packages/hardhat/contracts/02_Optimistic/Decider.sol
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user