Este es el código de un juego defi. El objetivo de este código es generar un "lanzamiento de moneda". Siento que está creando más ganadores que perdedores. Además, ¿este código no produciría el mismo resultado cada vez que considera que utiliza una dirección de billetera pública de USUARIOS (msg.sender) "número constante" como base para la función?
Para la variable msg.sender, puede usar una dirección de billetera ERC-20, es decir
0xA2C8EB70b58D57Db442a2395e8aB80b640C655a7
Si necesita el contrato completo, puede encontrarlo aquí.
https://bscscan.com/address/0xc4661ce2ef5dd31a1e020985e7364708c1af03d5#código
//address(this).balance is increased by msg.value even before code is executed. Thus "address(this).balance-msg.value" //Create a random number. Use the mining difficulty & the player's address, hash it, convert this hex to int, divide by modulo 2 which results in either 0 or 1 and return as uint8 uint8 result = uint8(uint256(keccak256(abi.encodePacked(block.difficulty, msg.sender, block.timestamp)))%2); bool won = false; if (guess == result) { won = true; uint256 win = (amount* 2/100*(100-houseedge)); tokenpiggies.transfer(msg.sender, win-amount); }else{ tokenpiggies.transferFrom(msg.sender, address(this), amount); } emit GameResult(result); lastPlayedGames.push(Game(msg.sender, amount, guess,3, won, block.timestamp)); return won; //Return value can only be used by other functions, but not within web3.js (as of 2019) }