---
# System prepended metadata

title: CryptoBets

---

# CryptoBets

## Requerimientos
Desarrolla un smart contract que permita realizar apuestas entre dos personas.


1. Una apuesta se compone de los siguientes elementos:
   * Dos apostantes (bettors), definidos por sus respectivas direcciones de Ethereum.
   * La cantidad a apostar, especificada en _weis_.
   * Nombre del equipo 1. 
   * Nombre del equipo 2.
   * Fecha y hora del partido.
   * Status de la apuesta:
       * **Creada**: La apuesta está creada, pero aún falta información para que los usuarios puedan comenzar a apostar.
       * **Abierta**: El smart contract está recibiendo apuestas por parte de los apostantes. 
       * **Cerrada**: Ya se transfirieron los fondos al ganador. 

2. Para realizar una apuesta, los dos apostantes deben depositar la cantidad mínima indicada por la apuesta. 

3. Si alguien ya tomó un lado de la apuesta (ej. alguien ya apostó por el equipo A), no será posible que otro usuario vuelva a apostar por el mismo equipo. 

4. El creador del smart contract deberá definir a un agente externo (determinado por una dirección de Ethereum) quien deberá enviar al smart contract información acerca del partido (el ganador, el resultado, etc.), la estrategia es abierta.

5. Según la información del partido, el smart contract deberá transferir al ganador todos los fondos.
   * En caso de que el marcador haya sido un empate, se le regresan los fondos íntegros a cada uno de los apostantes.

6. Autodestruye el contrato al transferir los fondos.

**Nota**: Puedes agregar funciones adicionales a las sugeridas por los requerimientos.


## Instrucciones de entrega

* Escribe un pequeño reporte (no hay extensión mínima ni máxima) acerca de potenciales vulnerabilidades que tenga tu smart contract y posible mejoras (cómo mejorar el worfklow de la apuesta, optimizar el uso de gas, etc.).
* Guarda el smart contract como `<matricula>.sol` y súbelo a Canvas.
* Anexa instrucciones sobre cómo interactuar con el smart contract o graba un video mostrando claramente la ejecución del smart contract.