Last active
March 31, 2017 09:39
-
-
Save iisaint/6a19d40468c6179daa221e8f6f93c3aa to your computer and use it in GitHub Desktop.
simple oracle v2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.10; | |
contract SimpleOracle { | |
// 增加owner | |
address owner; | |
// 增加responder | |
address public responder; | |
mapping(uint256 => bytes) responses; | |
// 設定owner | |
function SimpleOracle() { | |
owner = msg.sender; | |
} | |
// owner才能使用的 | |
modifier onlyOwner() { | |
if (msg.sender != owner) throw; | |
_; | |
} | |
// responder才能使用的 | |
modifier onlyResponder() { | |
if (msg.sender != responder) throw; | |
_; | |
} | |
event QueryEvent(uint256 _id, bytes _query); | |
// 設定responder,並限定owner才能使用 | |
function setResponder(address _responder) external onlyOwner { | |
responder = _responder; | |
} | |
function query(bytes _query) external returns (uint256) { | |
uint256 id = uint256(sha3(block.number, now, _query, msg.sender)); | |
QueryEvent(id, _query); | |
return id; | |
} | |
// 限定responder才能使用 | |
function _queryCallback(uint256 _id, bytes _response) external onlyResponder { | |
responses[_id] = _response; | |
} | |
function getResponse(uint256 _id) external constant returns (bytes) { | |
return responses[_id]; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment