# Programa y actividades: 1. Conceptos basicos de economia. Desafios de una moneda digital. 2. Hashing -- > actividad en clase 1 (Modulo de minar basado en hash) 3. Blockchain --> actividad en clase 2 (Implementar un blockchain, implementar verificacion) 4. Arboles de Merkle --> Tarea 1 (Arbol de Merkle: implementacion y certificados) 5. Firmas digitales y direcciones de Bitcoin --> Tarea 2 (firmar y verificar) 6. Scrooge coin (el mecanismo de transacciones de Bitcoin) --> actividad 3 (implementar Scroogecoin) 7. Descentralizacion ---> Proyecto 1 8. Transacciones de Bitcoin (Script) --> actividad 4, actividad 5 (implementar transacciones en Bitcoin), Tarea 3 (gastar bitcoins en una testnet) 9. Smart contracts 10. Red de Bitcoin --> actividad 6 (implementar clases de red de bitcoin), Tarea 4 (Crear una billetera SPV) 11. Ethereum (theory) 12. Solidity --> actividad 7 (Contratos en Solidity) 13. Vulnerabilidades de Solidity --> actividad 8 (Vulnerabilidades de Solidity), Tarea 5 (Analizar una vulnerabilidad, implementarla, y atacar al contrato en una testnet) ---> Proyecto 2 Actividad 1: Dado una funcion de hash, implementar varias estrategias para minar una criptomoneda, implementar el ajuste de dificultad Actividad 2: Trabajar hacia una implementacion basica de blockchain. Implementar verificacion (hay o no hay cambios?). Actividad 3: Trabajar hacia implementacion de Scroogecoin. Explicar el concepto de UTXO pool. Implementar uno. Actividad 4: Serializacion de transacciones de Bitcoin, clase Tx, TxIn, TxOut, parsing Actividad 5: Parsing de Script (p2pk, p2pkh). Validacion y construcion de una transaccion. Actividad 6: Comunicacion por red. Filtros de Bloom. Recibir bloques. Actividad 7: Programar un contrato basico de Ethereum (definir que hace -- probablemente certificados de los documentos). Actividad 8: Implementar un contrato con vulnerabilidad conocida, Atacarlo, y mostrar la debilidad. Tarea 1: Implementar arboles de Merkle (construccion, crear certificado de existencia, verificar el certificado) Tarea 2: Implementar firma ECC, les entregamos clases FiniteField, SHA256, etc. Tarea 3: Conseguir testcoins en una direccion que controla. Crear una transaccion, y gastar los testcoins. Confirmar esto en un blockexplorer. Tarea 4: Crear un nodo SPV. Tarea 5: Elejir una vulnerabilidad, implementar y atacar el contrato. # Evaluacion: 0. Activdades en clases (sin nota) 1. 5 tareas 2. Proyectos: 1 proyecto medio semestre, 1 proyecto final de semestre (proyectos grupales)