Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SPDX-License-Identifier: MIT
- pragma solidity ^0.8.22;
- contract SimpleGame {
- bool public isFinished;
- uint256 lastDepositedBlock;
- mapping(address depositor => bool deposited) public depositors;
- function totalDeposit() external view returns (uint256) {
- return address(this).balance;
- }
- function deposit() public payable {
- require(msg.value == 0.1 ether, "Must deposit 0.1 Ether");
- require(!isFinished, "The game is over");
- require(
- lastDepositedBlock != block.number,
- "Only can deposit once per block"
- );
- // if (!depositors[msg.sender]) {
- // depositors[msg.sender] = true;
- // }
- lastDepositedBlock = block.number;
- }
- function claim() public {
- require(address(this).balance >= 1 ether, "Condition not satisfied");
- payable(msg.sender).transfer(address(this).balance);
- isFinished = true;
- }
- function claimFixed() public {
- require(address(this).balance >= 1 ether, "Condition not satisfied");
- // Players are real people, so we should only allow EOA to claim for a fair competion
- // require(tx.origin == msg.sender, "Only EOA can claim");
- // Only depositors can claim
- // require(depositors[msg.sender], "Only depositors can claim");
- require(
- lastDepositedBlock != block.number,
- "Cant claim on the same block as deposit"
- );
- payable(msg.sender).transfer(address(this).balance);
- isFinished = true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement