La cuenta (spender) que quiera enviar los tokens en tu nombre, solo tiene que llamar a la función "transferFrom" del smart contract con los siguientes parámetros:
🔹 Cuenta origen (address _from) ℹ️ La tuya
🔹 Cuenta destino (address _to)
🔹 Cantidad de tokens (uint256 _value)
😌 Pero tranquis, esta función SOLO podrá ser ejecutada satisfactoriamente si antes le hemos dado permiso al "spender" de enviar esa cantidad de tokens.
Nota mental: 😬 No os fieis nunca de esto. Si veis una función "transferFrom", desconfiad y chequead el código.
🤔 Y te preguntarás, cómo puedo permitirle al "spender" realizar una transferencia con mis tokens?
Esto se logra con la función "approve", la cual espera que le pases la dirección del spender y una cantidad de tokens.
✅ Una vez hayas aprobado cierta cantidad de tokens a un "spender", entonces éste ya podrá llamar a la función "transferFrom" de forma satisfactoria.
📝 Curiosidad 1: Si el "spender" intenta transferir una cantidad mayor que la permitida o intenta enviar una cantidad desde una cuenta origen que no le ha permitido hacerlo, entonces la función "transferFrom" debería lanzar un error.
📝 Curiosidad 2: Si se quiere quitar este permiso al "spender", entonces se debería llamar otra vez a la función "approve" con el valor a 0.
O si se quiere actualizar esta cantidad, solo basta con llamar a la función con una nueva cantidad.
📝 Curiosidad 3: Si quieres ver la cantidad permitida de una dirección a otra dirección entonces la función "allowance" es la indicada. Esta función espera:
🔹 Cuenta del owner
🔹 Cuenta del spender
📝 Curiosidad 4: Si el spender transfiere menos tokens de los permitidos, la cantidad del "allowance" deberīa disminuir.
Y antes de acabar, qué sería una buena práctica al realizar este tipo de operaciones?
Sencillo: cuando vayáis a aprobar un nuevo contrato poned en el allowance la máxima cantidad de pasta que queráis perder 🤣
Así, si es malicioso, no os podrán vaciar el wallet entero.
☺️ Espero que os haya sido útil y lo dicho, dadle amor si os ha molado. 💙↪️
Sudosuberenu.
• • •
Missing some Tweet in this thread? You can try to
force a refresh