# 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