Skip to content

Instantly share code, notes, and snippets.

@iisaint
Last active March 31, 2017 09:39
Show Gist options
  • Save iisaint/6a19d40468c6179daa221e8f6f93c3aa to your computer and use it in GitHub Desktop.
Save iisaint/6a19d40468c6179daa221e8f6f93c3aa to your computer and use it in GitHub Desktop.
simple oracle v2
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