in

Forzar la ejecución de la función

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
1

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

¿Te ayudó la respuesta?

Subscribirse
Notificar por
guest
0 Comentarios
Inline Feedbacks
Ver todas las Respuestas

¿Carbohidratos con dos grupos hidroxilo en un átomo de carbono?

Algoritmo para construir tri-nodos en MapleStory