// SPDX-License-Identifier: MIT pragma solidity ^0.4.18; contract AdivinaElNumero { uint public numeroGanador; uint public cantidadMinimaApuesta; address public dueno; mapping(address => uint) public apuestas; modifier soloDueno() { require(msg.sender == dueno); // No se usa el mensaje de error en 0.4.x _; } // Constructor para Solidity 0.4.x function AdivinaElNumero(uint _cantidadMinimaApuesta) public { dueno = msg.sender; cantidadMinimaApuesta = _cantidadMinimaApuesta; // Generamos el número ganador usando keccak256 bytes32 hash = keccak256(block.timestamp, block.difficulty); numeroGanador = uint(hash) % 100 + 1; // Número entre 1 y 100 } function apostar(uint _numero) public payable { require(msg.value >= cantidadMinimaApuesta); // Sin mensaje de error require(_numero >= 1 && _numero <= 100); // Sin mensaje de error apuestas[msg.sender] = _numero; } function verificarGanador() public { require(numeroGanador != 0); // Sin mensaje de error require(apuestas[msg.sender] != 0); // Sin mensaje de error if (apuestas[msg.sender] == numeroGanador) { msg.sender.transfer(address(this).balance); // Paga al ganador } } function retirarFondos() public soloDueno { dueno.transfer(address(this).balance); // El dueño retira fondos } }
0.4.18