-
Notifications
You must be signed in to change notification settings - Fork 0
/
bounty.sol
76 lines (65 loc) · 2.07 KB
/
bounty.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
pragma solidity ^0.4.15;
contract EthernityFinancialOracle{
event Request (string _coin , string _againstCoin , address _address);
function requestEtherInUSD();
}
contract BountyCampaign{
address public deployer;
uint public ethRate;
uint public dolarsToSend;
address public oracle_address;
mapping(address => uint) public balances;
modifier onlyDeployer{
require(deployer == msg.sender);
_;
}
function () payable{
}
function BountyCampaign() payable {
ethRate = 81871;
dolarsToSend = 2;
deployer = msg.sender;
}
function setDolarToSend(uint _qty){
dolarsToSend = _qty;
}
function balanceOf(address _user) public constant returns(uint){
return balances[_user];
}
function sendEtherTo(address _user) onlyDeployer {
require(balances[_user] == 0);
/*
1th -> ethRate
x <- dolarsToSend;
*/
balances[_user] = (dolarsToSend * 1 ether) / ethRate;
balances[_user] = balances[_user] * 100; //decimal from ethRate 2 decimals
_user.transfer(balances[_user]);
}
function getNewRate(){
oracle_address = 0x8A9Aae0421FC48B40b4563586991e2116554c4c9;
EthernityFinancialOracle oracle = EthernityFinancialOracle(oracle_address);
oracle.requestEtherInUSD();
}
function stringToUint(string s) constant returns (uint result) {
bytes memory b = bytes(s);
uint i;
result = 0;
for (i = 0; i < b.length; i++) {
uint c = uint(b[i]);
if (c >= 48 && c <= 57) {
result = result * 10 + (c - 48);
}
}
return result;
}
function callback(string _result){
ethRate = stringToUint(_result);
}
function flushEthers() onlyDeployer public {
deployer.transfer(this.balance);
}
function setEthRate(string _rate){
ethRate = stringToUint(_rate);
}
}