Skip to content

Instantly share code, notes, and snippets.

@EmanuelCampos
Last active September 7, 2021 14:39
Show Gist options
  • Save EmanuelCampos/a46d76992f77b393b42f28f9991b9546 to your computer and use it in GitHub Desktop.
Save EmanuelCampos/a46d76992f77b393b42f28f9991b9546 to your computer and use it in GitHub Desktop.
BetHouse.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
contract BetHouse is ReentrancyGuard {
address payable _owner;
uint256 betPrice = 0.001 ether;
uint256 firstReward = 0.002 ether;
uint256 secondReward = 0.003 ether;
uint256 thirdReward = 0.004 ether;
uint totalBets;
uint seed;
mapping(address => uint) public lastBetAt;
constructor() payable {
_owner = payable(msg.sender);
}
function bet(uint betPercentage) public payable nonReentrant {
require(lastBetAt[msg.sender] + 30 seconds < block.timestamp, "You gotta wait 30s!!");
require(betPercentage == 2 || betPercentage == 3 || betPercentage == 4, "you need to send a valid option");
require(msg.value == betPrice, "Please submit the asking price in order to complete the bet");
if(
betPercentage == 2 && address(this).balance < firstReward ||
betPercentage == 3 && address(this).balance < secondReward ||
betPercentage == 4 && address(this).balance < thirdReward
)
revert("Contract doesn't have money AHHHH!!");
uint randomNumber = (block.difficulty + block.timestamp) % 100;
seed = randomNumber;
_owner.call{value: msg.value}("");
if(betPercentage == 2 && randomNumber < 20) {
(bool success,) = (msg.sender).call{value: firstReward}("");
require(success, "Failed to send money");
}
if(betPercentage == 3 && randomNumber < 10) {
(bool success,) = (msg.sender).call{value: secondReward}("");
require(success, "Failed to send money");
}
if(betPercentage == 4 && randomNumber < 5) {
(bool success,) = (msg.sender).call{value: thirdReward}("");
require(success, "Failed to send money");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment