Está en la página 1de 74

Curso de

Programación
de Smart
Contracts con
Solidity
Sebastián Pérez
Sobre mí

@sebaleoperez
Lo que
—---
practicarás en
este curso
Estructura de
un contrato
Configuración
del entorno
Tokens
Consultar
fuentes
externas
Seguridad
Cómo estructurar
—---

un contrato
● Licencia
● Importaciones
● Nombre
● Variables
● Constructor
● Funciones
● Modificadores
—---
Configuración
del entorno
Utilizando
Remix
No es
necesario
instalar
componentes
locales
Ideal para
comenzar
Utilizando
Truffle
Instalar
Node.js
Instalar truffle
via npm
Crear un
proyecto
Opcional:
instalar Visual
Studio Code
Utilizando
Hardhat
Instalar
Node.js
Instalar
hardhat
via npm
Crear un
proyecto
Opcional:
instalar Visual
Studio Code
Utilizando
Foundry
Ingresar
en la página
de github
Instalar según
la opción más
adecuada
—---
Desarrollando
un juego simple
Selección
de la idea
Simple
es mejor
Almacenar
solo lo
necesario
No exponer
información
sensible
Juego:
Tic-Tac-Toe
Para dos
jugadores.
No hay
información
sensible.
El contrato
debe soportar
múltiples
partidas.
Solo las
direcciones
habilitadas
participarán
de la partida.
Completando la
—---
lógica del
contrato
Definiendo al
—---
ganador de la
partida
—---
Obtener un
achievement



Token No
Fungible
Es único
Puede
entenderse
como un activo
de colección
Se representa
con el standard
ERC-721
Achievement
Logro alcanzado
en el juego
Se otorgará un NFT
a aquel jugador
que acumule 5
partidas ganadas
Achievement
Desafío: emitir
un NFT si una
cuenta gana
antes de que se
complete la grilla.
—---
Ganar tokens
por jugar
Token Fungible
● Activos que se pueden
consumir
● Reemplazables
● Similares al dinero
● Representados por el
standard ERC-20
Play to
Earn
Se emitirá 1
token por cada
partida a la
dirección del
ganador
Desafío: duplicar
la cantidad de
tokens emitidos
si el usuario
posee al menos
un achievement.
—---
Gestionar un
marketplace
Marketplace
● Aplicación descentralizada
donde los usuarios pueden
publicar sus
achievements.
● El pago de los mismos se
realiza en monedas del
juego.
Desafío: agregar
un modelo de
subasta.
Resolviendo el
—---
modelo de
subasta
—---
Sumar
aleatoriedad
Aleatoriedad
● No existe por definición en
los contratos de Solidity.
● Debemos recurrir a un
oráculo.
● Utilizaremos Chainlink
para generar un número
aleatorio.
Aleatoriedad
Determinaremos
aleatoriamente qué
jugador comienza la
partida.
Aleatoriedad
Desafío: determinar de
forma aleatoria cuántos
tokens se emiten por
partida (máximo 5 tokens).
—---
Revisión de
seguridad
Seguridad
● Utilizar herramientas de
análisis de código.
● Revisar los “errores
comunes”.
● En lo posible auditar
los contratos.
—---
Correcciones y
buenas prácticas
Continúa
—---
desarrollando
contratos
inteligentes
● Creamos un juego.
● Agregamos economía
y objetos
coleccionables.
● Consultamos fuentes
externas.
● Revisamos la
seguridad.
Recomendaciones
● Pensar, diseñar,
documentar, construir.
● Pedir colaboración.
● Darle importancia a la
seguridad.
● Estimar costos de gas.
● ¿Qué pasa si nuestro
proyecto culmina?
¿Qué más le
agregarías?
Continuemos la
conversación
@sebaleoperez

También podría gustarte