Contratos inteligentes

Estado, gas y las reglas que no se pueden romper.

12 aulas · 6 horas de práctica · en el navegador, sin instalar nada

Temario

  1. Un programa que no se puede editar — Un contrato es codigo con estado propio, publicado en una direccion, que nadie —ni vos— puede cambiar despues.
  2. Escribir cuesta, leer no — El storage es la parte cara del EVM. Modelamos el contador de gas y se ve por que una escritura vale doscientas lecturas.
  3. Quien llama — `msg.sender` es lo unico que un contrato sabe de quien lo llama, y alcanza para toda la seguridad que vas a escribir.
  4. Una transaccion que falla no deja rastro — `require` no es un `if` con mensaje: es un boton de deshacer sobre el estado entero. Lo escribimos en Python para verlo.
  5. Taller — La subasta — Una subasta con reembolsos: estado, permisos y revert. Con lo de las primeras cuatro aulas y nada mas.
  6. La misma guarda, escrita una vez — Un modifier es una plantilla con un agujero en el medio. En Python el agujero se llama decorador.
  7. Lo que el contrato le cuenta al mundo — Los eventos son el unico canal de salida barato que tiene un contrato — y el contrato no los puede volver a leer.
  8. El bucle que se come el bloque — Un for sobre un array que crece es una bomba de tiempo: el dia que no entra en un bloque, la funcion queda muerta para siempre.
  9. Checks, effects, interactions — Dos patrones que resuelven la mayoria de los agujeros conocidos: el orden adentro de una funcion, y quien paga el gas de cobrar.
  10. El tiempo en la cadena: block.timestamp, plazos y vesting — El reloj de un contrato lo pone el minero y puede mentir unos segundos. Alcanza para plazos y para liberar tokens de a poco; no alcanza para sortear nada.
  11. Upgrades: proxies y por qué el storage no se mueve — Un contrato es inmutable, pero un proxy puede delegar en otro código. Lo que no cambia nunca es el storage, y una variable insertada en el medio lee basura.
  12. Taller — La billetera multifirma — Tres duenios, dos firmas para mover plata: modifiers, eventos, umbral y revert, todo junto.

Es parte de