-
Notifications
You must be signed in to change notification settings - Fork 0
/
Lottery.sol
45 lines (37 loc) · 1.33 KB
/
Lottery.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//SPDX-License-Identifier:MIT
pragma solidity 0.8.0;
contract Lottery{
address public mgr;
address payable[] public players;
constructor(){
mgr=msg.sender;
}
function alreadyEntered() private view returns(bool){
for(uint i=0;i<players.length;i++){
if(players[i]==msg.sender){
return true;
}
}
return false;
}
function ENTER() public payable{
require(msg.sender!=mgr,"Manager cannnot enter");
require(alreadyEntered() == false ," Player already Entered!");
require(msg.value >= 1 ether,"Insufficient balance!");
players.push(payable(msg.sender));
}
function random()private view returns(uint) //Generate Random Number
{
return uint(sha256(abi.encodePacked(block.difficulty,block.number,players)));
}
function pickWinner() payable public{
require(msg.sender==mgr,"Only Manager can pick.");
uint index = random()%players.length;
address contractAddress = address(this);
players[index].transfer(contractAddress.balance);
players = new address payable[](0); //reset the lottery
}
function getplayers() public view returns(address payable[] memory ){
return players;
}
}