// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; contract PredictableLottery { address[] public players; function enter() external payable { require(msg.value == 0.1 ether, "fee"); players.push(msg.sender); } function pickWinner() external { require(players.length > 1, "not enough players"); uint256 idx = uint256(keccak256(abi.encodePacked(block.timestamp, block.prevrandao, players.length))) % players.length; address winner = players[idx]; delete players; payable(winner).transfer(address(this).balance); } receive() external payable {} }