Es recomendable revisar el curso de OpenZeppelin: **https://platzi.com/cursos/openzeppelin/ **
Implementación token ERC-20
Qué aprenderás en este curso
EIP20
Detalles EIP-20
Implementemos un token usando los contratos de Open Zeppelin
Contratos actualizables
¿A qué nos referimos con contratos actualizables? - Patrón Proxy
Proxies y sus consideraciones
Convirtiendo nuestro token a un contrato actualizable
Firmas off-chain
Firmando transacciones que puedan ser ejecutadas más adelante
EIP712
Implementando un contrato que verifique firmas Off-Chain
Meta-transacciones
¿Qué son las meta-transacciones? - EIP 2771
Creación del forwarder
Soportando meta-transacciones en nuestro token
Continúa aprendiendo
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Juan Pablo Castaño Tabares
Aportes 3
Preguntas 2
Es recomendable revisar el curso de OpenZeppelin: **https://platzi.com/cursos/openzeppelin/ **
Hay dos flujos de transferencia a los contratos, una directa y una indirecta.
.
Entonces, ¿por qué no usar siempre el flujo de transferencia directa?
Porque en ocasiones es necesario utilizar un contrato inteligente como intermediario.
.
Función transferFrom
.
● Es útil en casos donde se interactúa con contratos que actúan como vendedores.
Estos contratos no tienen forma de escuchar eventos que generan las transacciones. La manera de hacerlo es mediante el transferFrom
.
● Ataque front-running: Este tipo de ataque se da por la misma especificación, no por una implementación en particular.
.
Un ejemplo de ataque front-running:
.
T1: Alice -> approve(Bob, N) -> Token ERC20 -> DONE
.
T… | Alice decide cambiar la cantidad aprobada a Bob de N a M tokens (M > 0), pero Bob se da cuenta de esta transaccion y decide transferir los N tokens que ya tiene aprobados antes que la nueva transaccion de Alice sea probada.
.
Tn: Alice -> approve(Bob, M) -> Token ERC20 -> DELAYED
.
Tn: Bob -> transferFrom(Alice, otra_direccion, N) -> Token ERC20 -> OK
(esta transaccion se realiza mas rapido porque Bob pago un fee extra al minero para agilizarla)
.
Tn+1: Alice -> approve(Bob, M) -> Token ERC20 -> DONE
.
Tn+2: Bob -> transferFrom(Alice, otra_direccion, M) -> Token ERC20 -> OK
Una transferencia indirecta seria por ejemplo, permitir que un exchange pueda vender y transferir cierta cantidad de mis tokens ERC20 a traves de su contrato inteligente
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?