Bitcoin y Criptomonedas, CC5324 (2018/01)
Profesor: Alejandro Hevia
Propósito:
Este curso entrega los fundamentos necesarios para entender, desarrollar y aplicar técnicas de criptomonedas en diversos ámbitos de la ciencia de la computación y explorar su impacto en nuevas tecnologías y la sociedad.
Este curso busca cubrir los aspectos técnicos detrás de las criptomonedas, de las tecnologías de blockchain y de consenso distribuido. Los estudiantes aprenderán cómo dichos sistemas funcionan y cómo desarrollar sistemas seguros que puedan interactuar con la red Bitcoin y otras criptomonedas
Aspectos administrativos:
Cátedra: Martes y Jueves 2:30pm, Sala F9
Clase auxiliar: Viernes 4:15pm, Sala G111.
Ucursos, sitio oficial: ucursos
Carga académica: 10 UD,
Requisitos: CC3001 o autorización
Carácter: electivo Cs. de la Computación
Novedades
- Calendario de próximas lecturas
disponible.
- Importante: Ver el calendario de tareas.
Introducción
El curso busca cubrir los aspectos ténicos de criptomonedas, blockchain y consenso distribuido.
Los estudiantes aprenderán cómo funcionan estos sistemas, y cómo desarrollar
sistemas seguros que interactuan con la red de bitcoin y de las otras criptomonedas.
El libro del curso es [NBFMG] y se espera que todos los alumnos lean los capítulos
asignados del libro durante el semestre.
A fin de entender los aspectos técnicos del tema, el curso considera tareas de
programación bastante sofisticadas.
Se recomienda dedicarle tiempo.
El curso está orientado a estudiantes de la especialidad de Ciencias de la Computación.
Metodología
La metodología del curso es activo participativa y contempla:
clases de cátedra,
tareas de implementación (programación) y teóricas,
discusión de casos en clases,
y presentación de una tarea.
Advertencia: El curso se dicta por primera vez, por lo que algunos
temas y su orden pudieran variar, según el profesor lo estime
adecuado, y dependiendo del interés de los estudiantes del curso.
Temario
- Fundamentos de criptomonedas (1.5 semana)
- Introducción, historia de las monedas electrónicas (ecash),
conceptos y terminología.
- Conceptos básicos de criptografía, y blockchain.
- Bitcoin (5 semanas)
- El consenso distribuido de Nakamoto.
- Los protocolos de bitcoin: proof of work.
- Aplicaciones de bitcoin y su seguridad.
- Mecánica de minado y ataques posibles.
- Aspectos sociales: comunidad, economía y política.
- Extensiones y Monedas Alternativas (5 semanas)
- Mecanismos y enfoques alternativos para minado y consenso.
- Anonimato, trazabilidad y mezcla.
- Criptomonedas orientadas a la privacidad (e introducción a zero-knowledge).
- Introducción a las altcoins.
- Introducción a Ethereum. Contratos en Ethereum.
- Sidechains, offchain channels y variantes.
- Criptomonedas y el mundo real (3.5 semanas)
- Aspectos legales de las monedas virtuales.
- Temas avanzados I: Criptografía post-cuántica, segwits y firmas agregadas.
- Temas avanzados II: Propiedades inteligentes, data feeds, aleatoriedad pública.
Prerequisitos
El curso presupone conocimientos sólidos de programación e Inglés.
Conocimientos de programación de sistemas y redes (y bases de datos, quizás) son recomendables pero no estrictamente
necesarios.
Evaluación
La evaluación se basa en lo siguiente:
- Preguntas de lectura de artículos (en Inglés): al menos 3 en el semestre.
- Tareas de programación (de largo variable): 5 tareas.
- Tareas cortas teóricas (de 1 semana c/u): 3 tareas.
Se sigue la ponderación que se plantea a continuación
-
NLectura = promedio notas preguntas de lectura
-
NTI = promedio tareas de implementacion
-
NTT = promedio tareas teoricas
-
NF = 0,25*NLectura + 0,5*NTI + 0.25*NTT
Para aprobar el curso se requiere cumplir simultáneamente las siguientes
tres condiciones:
-
NLectura >=4.0,
-
NTT >= 4.0, y
-
NTI >= 4.0.
Notar que esto implica: NF >=4.0.
No hay examen. En la fecha del examen se presentará la Tarea 5.
Reglas de Participacion en Evaluación de Lecturas
- Durante la primera o segunda semana de clases se publicará la lista
de artículos a leer durante el semestre (aproximadamente 12).
- Al mismo tiempo, se publicará la lista de
quienes deberán contestar las preguntas en cada fecha.
Aproximadamente 10 estudiantes deben contestar las preguntas de cada fecha.
La selección de quiénes contestan y cuándo se hará usando
el faro de aleatoriedad del CLCERT.
Más detalles se publicarán pronto.
- Regla para evaluaciones de lecturas:
- En cada una de las 12 semanas donde hay lectura, el día jueves se publicará
una lista de 10 preguntas en el foro.
- Si por el calendario, un estudiante debe contestar esa semana, deberá
escoger una de las preguntas y contestarla.
Esta respuesta tendrá una nota en base a su correctitud, claridad y completitud.
- Aún si un estudiánte NO debe contestar preguntas esa semana, puede
hacer correcciones o complementar alguna de las respuestas ya hechas.
De considerarse correcta y/o un aporte relevante, el comentario será premiado con
un punto bonus.
Un punto bonus permitirá subir la nota de evaluacián de lectura propia
en 1/3 de décima.
Cada estudiante sólo puede hacer un comentario (corrección o complemento) por
fecha.
Lista de Artículos
(Por actualizar)
- Satoshi Nakamoto
"Bitcoin: A Peer-to-Peer Electronic Cash System"
PDF
- Bonneau J., Miller A., Clark J., Narayanan A., Kroll J.A. and Felten E.
"Research Perspectives and Challenges for Bitcoin and Cryptocurrencies" (sólo Sección II)
PDF
-
"Hashcash-a denial of service counter-measure"
Adam Back
PDF
-
"Majority Is Not Enough: Bitcoin Mining Is Vulnerable"
Ittay Eyal, Emin Gun Sirer
PDF
-
"A Survey on Security and Privacy Issues of Bitcoin"
Mauro Conti, Sandeep Kumar E, Chhagan Lal, Sushmita Ruj
PDF
-
"Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol"
Aggelos Kiayias, Alexander Russell, Bernardo David, Roman Oliynykov
PDF, y
PDF Presentación
- "A survey of attacks on Ethereum smart contracts"
Atzei, Bartoletti, Cimoli.
PDF.
- "Zerocash: Decentralized Anonymous Payments from Bitcoin"
Ben-Sasson, Chiesa, Garman, Green, Miers, Tromer, Virza†.
PDF.
Calendario de Lecturas/Artículos del Semestre
(Por actualizar)
- Semana 1:
- NBFMG: prefacio y capítulo 1.
- Semana 2:
- Martes: "Bitcoin: A Peer-to-Peer Electronic Cash System".
Nota: la lectura de este artículo NO será evaluada.
- Semana 3:
- Hashcash.
- NBFMG: capítulo 3 (solo la parte de scripts).
- NBFMG: capítulo 2 (no se evalua).
- Semana 4:
- NBFMG: capítulo 2
- "Research Perspectives and Challenges for Bitcoin and Cryptocurrencies", (hasta) sección II.
- Semana 5:
- NBFMG: capítulo 3 (Secciones 3.3-3.6) y capítulo 4
- "Research Perspectives and Challenges for Bitcoin and Cryptocurrencies", secciones III y IV.
- Semana 6:
- Semana 7, 8:
- "Majority Is Not Enough: Bitcoin Mining Is Vulnerable"
- Semana 9 (ahora 10 después del paro):
- "A Survey on Security and Privacy Issues of Bitcoin"
Secciones V (preguntas contestables hasta el Viernes 13 de Julio, 23:59hrs).
Altamente recomendado leer secciones anteriores! (III y IV).
- Semana 11:
- NBFMG: capítulo 8
(preguntas contestables hasta el Viernes 13 de Julio, 23:59hrs).
- Semana 12:
- "Introducing Ethereum and Solidity", Cap. 5 y 6
PDF (solo accesible desde red del CEC o DCC).
- Semana 13:
- "Introducing Ethereum and Solidity", Cap. 7 y 8
PDF (solo accesible desde red del CEC o DCC).
- Semana 14:
- "A survey of attacks on Ethereum smart contracts"
- Semana 15:
- "Zerocash: Decentralized Anonymous Payments from Bitcoin"
Calendario de Tareas
Formato: tipo tarea (p=programación, t=teórica): entrega enunciado: fecha entrega : url
- Tarea 1p : Viernes 23 de Marzo : Viernes 6 de Abril
- Tarea 1t : Lunes 9 de Abril : Lunes 16 de Abril
- Tarea 2p : Lunes 16 de Abril : Viernes 27 de Abril
- Tarea 2t : Viernes 27 de Abril : Viernes 4 de Mayo :
(PDF).
- Tarea 3p : Viernes 4 de Mayo : Viernes 18 de Mayo :
(PDF,código).
- Tarea 3t : Viernes 18 de Mayo : Viernes 1 de Junio :
(PDF).
- Tarea 4p : Viernes 1 de Junio : Viernes 15 de Junio :
(PDF,código).
- Tarea 5 : Viernes 15 de Junio : Fecha examen:
(PDF).
Política de atrasos: Cada estudiante tendrá disponible 72 horas
de atraso las cuales puede utilizar para entregar cualquiera de las tareas pasado la fecha/hora
de entrega.
Este número de horas puede ser usado a discresión del estudiante, en forma
fraccionada para cualesquiera de las tareas 1 a la 4, tanto de programación
como teóricas.
Al entregar una tarea con un atraso de x horas, se descontarán x de las 72 horas.
NO se puede usar para la tarea 5, la cual NO puede ser entregada con atraso.
Una vez usadas las horas asignadas al estudiante, cualquier tarea entregada con atraso
será considerada como NO entregada.
Links útiles
Bibliografía
- [Sat] "Bitcoin: A Peer-to-Peer Electronic Cash System", Satoshi Nakamoto
(PDF).
- [NBFMG] "Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction",
Narayanan, Bonneau, Felten, Miller and Goldfeder,
Princeton University Press (July 19, 2016)
Biblioteca,
versión online.
- [Bdev]
"Bitcoin Developer Reference"
- [EthWiki]
"Ethereum Wiki"
- [Dannen] "Introducing Ethereum and Solidity", Chris Dannen,
Apress, 2017.
PDF (solo accesible desde red del CEC o DCC).
Bibliografía General Criptografía
- Jonathan Katz, Yehuda Lindell, “Introduction to Modern Cryptography”, Editorial Chapman and Hall/CRC, 2008
- Mihir Bellare y Phil Rogaway, “Introduction to Cryptography, Lecture Notes”, University of California San Diego, 2006.
(Disponible en versiones del curso para
pregrado, y de
postgrado)
- Douglas Stinson, “Cryptography, Theory and Practice”, Third edition, Editorial Chapman and Hall/CRC, 2006
Última modificación: 27 de Agosto 2018.
|