diff options
Diffstat (limited to 'test/compilationTests/gnosis/Oracles/CentralizedOracle.sol')
-rw-r--r-- | test/compilationTests/gnosis/Oracles/CentralizedOracle.sol | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/test/compilationTests/gnosis/Oracles/CentralizedOracle.sol b/test/compilationTests/gnosis/Oracles/CentralizedOracle.sol new file mode 100644 index 00000000..26acf526 --- /dev/null +++ b/test/compilationTests/gnosis/Oracles/CentralizedOracle.sol @@ -0,0 +1,90 @@ +pragma solidity ^0.4.11; +import "../Oracles/Oracle.sol"; + + +/// @title Centralized oracle contract - Allows the contract owner to set an outcome +/// @author Stefan George - <stefan@gnosis.pm> +contract CentralizedOracle is Oracle { + + /* + * Events + */ + event OwnerReplacement(address indexed newOwner); + event OutcomeAssignment(int outcome); + + /* + * Storage + */ + address public owner; + bytes public ipfsHash; + bool public isSet; + int public outcome; + + /* + * Modifiers + */ + modifier isOwner () { + // Only owner is allowed to proceed + require(msg.sender == owner); + _; + } + + /* + * Public functions + */ + /// @dev Constructor sets owner address and IPFS hash + /// @param _ipfsHash Hash identifying off chain event description + function CentralizedOracle(address _owner, bytes _ipfsHash) + public + { + // Description hash cannot be null + require(_ipfsHash.length == 46); + owner = _owner; + ipfsHash = _ipfsHash; + } + + /// @dev Replaces owner + /// @param newOwner New owner + function replaceOwner(address newOwner) + public + isOwner + { + // Result is not set yet + require(!isSet); + owner = newOwner; + OwnerReplacement(newOwner); + } + + /// @dev Sets event outcome + /// @param _outcome Event outcome + function setOutcome(int _outcome) + public + isOwner + { + // Result is not set yet + require(!isSet); + isSet = true; + outcome = _outcome; + OutcomeAssignment(_outcome); + } + + /// @dev Returns if winning outcome is set + /// @return Is outcome set? + function isOutcomeSet() + public + constant + returns (bool) + { + return isSet; + } + + /// @dev Returns outcome + /// @return Outcome + function getOutcome() + public + constant + returns (int) + { + return outcome; + } +} |