# 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