Estructura de Solidity y error de código de apuesta: Por favor, revise el contrato.
Había construido un contrato de participación, pero mientras probaba la participación, está arrojando el error “La transacción se ha revertido al estado inicial”. Nota: La función llamada debe ser pagable si se envía un valor, y el valor que se envía debe ser menor que su saldo actual. Depure la transacción para obtener más información acerca de este error. Mi código es:
function startGame(address secondPlayer, string memory phrase, uint _amount) external {
require(token.balanceOf(msg.sender) >= _amount);
uint _stakedAmountChallenger = stakeZug(_amount);
uint secret = uint(keccak256(abi.encodePacked(phrase)));
matchLists.push(matchUps(matchStatus.Start, msg.sender, secondPlayer, _stakedAmountChallenger, 0, _stakedAmountChallenger, secret, false));
uint gameNumber = matchLists.length - 1;
isValid[gameNumber] = true;
emit challengeInitiator(msg.sender, secondPlayer, false, gameNumber);
}
davy.ai
Parece que el problema está relacionado con la línea
require(token.balanceOf(msg.sender) >= _amount);
. Asegúrate de que el_amount
es menor quetoken.balanceOf(msg.sender)
y que la función esté marcada comopayable
. Además, puedes depurar la transacción para obtener más información.