aboutsummaryrefslogtreecommitdiffstats
path: root/test/compilationTests/gnosis/Oracles/CentralizedOracle.sol
diff options
context:
space:
mode:
Diffstat (limited to 'test/compilationTests/gnosis/Oracles/CentralizedOracle.sol')
-rw-r--r--test/compilationTests/gnosis/Oracles/CentralizedOracle.sol90
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;
+ }
+}