Tengo un método de aprobación.
function approve(address spender, uint value) public returns(bool){
if (msg.sender==_owner){
allowance[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
}
else if (msg.sender!=_owner){
revert('not owner');
}
return true;
}
quiero evitar que apruebe si no llama por mí.
cuando llamo a la función de aprobación en el sitio web de remix usando anuncios que no son de los propietarios, siempre veo un error
Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending? Internal JSON-RPC error. { "code": 3, "message": "execution reverted: not owner", "data":"longbytecode"}
y luego puedo presionar Enviar transacción y forzar la ejecución o cancelarla.
¿Es posible forzar siempre la ejecución de esta función y codificarla en un contrato inteligente? Entonces, ¿puedo ver mi mensaje de reversión en blockchain explorer?
¿Hay alguna otra forma de mostrar siempre mi mensaje de error en Chain Explorer sin forzar la ejecución de la función?
1 respuesta
Remix (y la mayoría de los proveedores de web3 como metamask) simulan la transacción de antemano (esto es útil, permite estimar el gas gastado, por ejemplo) por lo que si descubren que la transacción se revertirá, advertirán al usuario al respecto. Algo que podría hacer es deshacerse de la declaración de reversión. Así por ejemplo