// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 < 0.9.0;
/*
1. 1 이더만 내야한다
2. 중복해서 참여 불가 (단, 누군가 적립금을 받으면 초기화)
3. 관리자만 적립된 이더 볼 수 있다.
4. 3의 배수 번째 사람에게만 적립된 이더를 준다.
*/
contract MoneyBox {
event WhoPaid(address indexed sender, uint256 payment);
address ownwer;
mapping (uint256=> mapping(address => bool)) paidMemberList;
uint256 round = 1;
constructor(){
ownwer = msg.sender;
}
receive() external payable {
require(msg.value == 1 ether, "Must be 1 ether.");
require(paidMemberList[round][msg.sender] == false, "Must be a new player in each game.");
paidMemberList[round][msg.sender] = true;
emit WhoPaid(msg.sender,msg.value);
if(address(this).balance == 3 ether){
(bool sent,)= payable(msg.sender).call{value:address(this).balance}("");
require(sent,"Failed to pay");
round++;
}
}
function checkRound() public view returns(uint256){
return round;
}
function checkValue() public view returns(uint256){
require(ownwer==msg.sender, "Only Onwer can check the value");
return address(this).balance;
}
}
솔리디티 강좌 43강(마지막강) - 리믹스와 메타마스크 연결, 스마트 컨트랙 testnet 에 배포하기 (3) | 2021.10.16 |
---|---|
솔리디티 강좌 41강 -import 임폴트 (0) | 2021.10.12 |
솔리디티 강좌 40강 - library 라이브러리 (0) | 2021.10.10 |
솔리디티 강좌 38강 - enum (0) | 2021.10.07 |
솔리디티 강좌 37강 - call Vs delegate call (0) | 2021.10.06 |