Berenu Profile picture
Apr 5 11 tweets 3 min read
👀 Sabias que en un contrato ERC-20 una cuenta ajena puede enviar tokens de tu propiedad a otra dirección? 🤯 Whaaaat ... ?!

🧵⬇️ Te explico cómo en el siguiente hilo:

#smartcontracts #ethereum
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
 

Keep Current with Berenu

Berenu Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @sudosuberenu

Apr 2
¿Qué hace que un smart contract sea ERC-20? 👀

“Si un contrato inteligente implementa los siguientes métodos y eventos, se puede llamar un contrato ERC-20”

Abro hilo para explicar cada método y evento.

Dentro hilo! 😜

ethereum.org/es/developers/…

#SmartContracts #Ethereum
🔹 "function name() public view returns (string)"

Esta función nos devuelve el nombre del token. Por ejemplo: Dogecoin.
🔹 "function symbol() public view returns (string)"

Esta función nos devuelve el nombre corto del token. Por ejemplo: DOGE.
Read 13 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(