pragma solidity 0.5.12; contract TickeTron { // Struct TicketSequence // it consists of uint8 array of 6 elements; struct TicketProof { uint256 value; uint256 ticketTime; } struct Player { uint256 id; address payable wallet; // Dynamic Array of TicketSequence TicketProof[] tickets; uint256 ticketsCount; } // TRON Address for Admin address payable public owner; // Map for User Address and User Object mapping(address => Player) public players; /** Price for a Ticket - it would be TRON in future For now I mean this is 0.01ETH */ uint private ticketPrice = 1000000000; /** Counters */ uint256 public total_users = 50; uint256 public total_deposited; uint256 public total_withdraw; modifier onlyOwner() { require(msg.sender == owner); _; } constructor(address payable _owner) public { owner = _owner; } function () external payable {} function preparePlayer() private { if(players[msg.sender].id == 0){ total_users++; Player storage pl = players[msg.sender]; pl.id = total_users; pl.wallet = msg.sender; players[msg.sender] = pl; } } function makeProof(uint256 memory ticket) public payable { preparePlayer(); require(players[msg.sender].id != 0, "Player not found!"); //msg.sender.transfer(ticketPrice); (bool success, ) = msg.sender.call.value(ticketPrice)(""); require(success, "Sending Failed"); players[msg.sender].tickets.push(Ticket(ticket, block.timestamp)); players[msg.sender].ticketsCount++; total_deposited += ticketPrice; } }
0.4.18