62 lines
1.2 KiB
Solidity
62 lines
1.2 KiB
Solidity
pragma solidity ^0.4.18;
|
|
|
|
contract Ownable {
|
|
address owner;
|
|
function Ownable() public {
|
|
owner = msg.sender;
|
|
}
|
|
|
|
modifier Owned {
|
|
require(msg.sender == owner);
|
|
_;
|
|
}
|
|
}
|
|
|
|
contract Mortal is Ownable {
|
|
function kill() public Owned {
|
|
selfdestruct(owner);
|
|
}
|
|
}
|
|
|
|
|
|
contract Betting is Mortal {
|
|
uint minBet; // 최소 베팅액
|
|
uint winRate; // 배당률 (%)
|
|
|
|
event Won(bool _result, uint _amount);
|
|
|
|
function Betting(uint _minBet, uint _winRate) payable public {
|
|
require(_minBet > 0);
|
|
require(_winRate <= 100);
|
|
minBet = _minBet;
|
|
winRate = _winRate;
|
|
}
|
|
|
|
function() public {
|
|
revert();
|
|
}
|
|
|
|
function bet(uint _num) payable public {
|
|
require(_num > 0 && _num <= 5);
|
|
require(msg.value >= minBet);
|
|
|
|
uint winNum = random();
|
|
if (_num == winNum) {
|
|
uint amtWon = msg.value * (100 - winRate)/10;
|
|
if(!msg.sender.send(amtWon)) revert();
|
|
Won(true, amtWon);
|
|
} else {
|
|
Won(false, 0);
|
|
}
|
|
}
|
|
|
|
function getBalance() Owned public view returns(uint) {
|
|
return address(this).balance;
|
|
}
|
|
|
|
function random() public view returns (uint) {
|
|
return uint(keccak256(block.difficulty, block.number, now)) % 5 + 1;
|
|
}
|
|
}
|
|
|