Last active
September 7, 2021 14:39
-
-
Save EmanuelCampos/a46d76992f77b393b42f28f9991b9546 to your computer and use it in GitHub Desktop.
BetHouse.sol
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
//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