es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema con la función de aprobación del contrato de token ERC20.

Así que, cada vez que intento aprobar mi contrato inteligente utilizando la función de aprobación del contrato del token ERC20, el propietario y el destinatario se establecen como el mismo.

function getValues(address _token) external {

        MyToken token = MyToken(0xd9145CCE52D386f254917e481eB44e9943F39138);
        token.approve(address(this),10);

}
function transfer(address _token) external {
      MyToken token = MyToken(0xd9145CCE52D386f254917e481eB44e9943F39138);
    token.transferFrom(msg.sender,address(this),10);
}

La salida del código es algo así como esto [
{
“from”: “0xd9145CCE52D386f254917e481eB44e9943F39138”,
“topic”: “0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925”,
“event”: “Approval”,
“args”: {
“0”: “0xf8e81D47203A594245E36C48e151709F0C19fBe8”,
“1”: “0xf8e81D47203A594245E36C48e151709F0C19fBe8”,
“2”: “10”,
“owner”: “0xf8e81D47203A594245E36C48e151709F0C19fBe8”,
“spender”: “0xf8e81D47203A594245E36C48e151709F0C19fBe8”,
“value”: “10”
}
}
]

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basándonos en la salida, parece que la función approve está siendo llamada con la dirección del contrato actual (address(this)) como el gastador, por lo que los valores de propietario y gastador son los mismos. Esto podría ser un problema en la implementación de la función getValues.

    Para solucionar este problema, asegúrese de que la dirección del gastador esté establecida en una dirección válida autorizada para gastar los tokens. Por ejemplo, podría pasar la dirección del gastador como un argumento a la función getValues y usar ese valor al llamar a la función approve:

    function getValues(address _token, address _spender) external {
      MyToken token = MyToken(_token);
      token.approve(_spender, 10);
    }
    

    Luego llamaría a esta función con la dirección del token y la dirección del gastador deseado:

    getValues(0xd9145CCE52D386f254917e481eB44e9943F39138, 0x1234567890abcdef1234567890abcdef12345678);
    

    Esto debería actualizar la salida con los valores correctos de propietario y gastador.

Comments are closed.