---
# System prepended metadata

title: Smart Contracts

---

# Smart Contracts

## Sesión 8

### Hello, Blockchain!

### Getter, Setter

### Playing with Variables

### Birth Certificate

### 

## Sesión 9

### 1. Inheritance

* El creador del contrato es el testador.
* El testador debe depositar su herencia en ether.
* El testador debe definir a un heredero/beneficiario.
* El testador debe definir a un testigo que pueda atestar su muerte.
* El heredero/beneficiario puede clamar la herencia siempre y cuando el testador haya fallecido.


### 2. Voting

Desarrolla un smart contract que permita realizar una elección, con las siguientes restricciones:

* Para votar por un candidato, el candidato deberá estar registrado previamente.
* Cualquier persona puede votar.
* Una persona solo puede votar una sola vez.
* El periodo de elecciones deberá finalizar en algún momento.
* Al finalizar las elecciones, ya no se podrá votar.
* Se deberá anunciar al ganador de las elecciones.
* **Opcional**: Implementar registro de electores.
* **Opcional**: Implementar segundas vueltas.
* **Opcional**: Implementar delegación de votos.

### 3. Ticket Sales

* Un evento tiene una cantidad finita de boletos.
* Los boletos están numerados (no importa el orden, ya que no habrá asientos numerados).
* Un asistente puede comprar 1 ó más boletos, antes de la fecha del evento.
* Un asistente puede pedir reembolso de un contrato, siempre y cuando la fecha del evento aún no haya transcurrido.
* Al terminar el concierto, el dueño del contrato puede retirar los fondos acumulados.
* Al retirar los fondos acumulados, se auto-destruye el contrato.


### 4. Multisig Wallet

Desarrolla una wallet multisig que permita las siguientes funcionalidades:
* Definir a N cantidad de wallets que podrán liberar una transacción.
   * **Tip**: N puede ser arbitrario.
* Al realizar una transferencia, deberán desbloquear la cuenta M/N personas, en donde M > ½ N.
   * Si, N = 3
* Al menos 2 personas tienen que "firmar" para que se pueda realizar una transferencia.


### Bids

* Al crear una subasta, se especifica una fecha límite.
* Las ofertas tienen un precio mínimo.
* No hay límite superior para una nueva oferta.
* El dueño del contrato puede terminar la subasta en cualquier momento.
* La cantidad de dinero que un participante ofreció deberá quedar resguardada (en reserva).
* Un participante puede tener solamente una oferta a la vez.
* Un participante puede ofertar múltiples veces.
* Un participante puede retirar una oferta.


### Proof-of-Attendance

### Decentralized Bets

### Lottery

* Una lotería tiene una fecha de finalización.
* No hay límite de participantes.
* Para participar en la lotería, tengo que comprar un boleto.
* El precio del boleto está predefinido.
* Una función deberá determinar el ganador de la lotería.
   * Tip: Como fuente de entropía, utilizaremos el hash del bloque anterior.
   * Utiliza la función keccak.
* El ganador de la lotería se lleva todo el dinero acumulado.


### ERC-20 Token

### ERC-721 Token