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:

  1. Preguntas de lectura de artículos (en Inglés): al menos 3 en el semestre.
  2. Tareas de programación (de largo variable): 5 tareas.
  3. Tareas cortas teóricas (de 1 semana c/u): 3 tareas.
Se sigue la ponderación que se plantea a continuación
  1. NLectura = promedio notas preguntas de lectura
  2. NTI = promedio tareas de implementacion
  3. NTT = promedio tareas teoricas
  4. 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:
    • NBFMG: capítulo 5
  • 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
  1. Tarea 1p : Viernes 23 de Marzo : Viernes 6 de Abril
  2. Tarea 1t : Lunes 9 de Abril : Lunes 16 de Abril
  3. Tarea 2p : Lunes 16 de Abril : Viernes 27 de Abril
  4. Tarea 2t : Viernes 27 de Abril : Viernes 4 de Mayo : (PDF).
  5. Tarea 3p : Viernes 4 de Mayo : Viernes 18 de Mayo : (PDF,código).
  6. Tarea 3t : Viernes 18 de Mayo : Viernes 1 de Junio : (PDF).
  7. Tarea 4p : Viernes 1 de Junio : Viernes 15 de Junio : (PDF,código).
  8. 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

  1. [Sat] "Bitcoin: A Peer-to-Peer Electronic Cash System", Satoshi Nakamoto (PDF).
  2. [NBFMG] "Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction", Narayanan, Bonneau, Felten, Miller and Goldfeder, Princeton University Press (July 19, 2016) Biblioteca, versión online.
  3. [Bdev] "Bitcoin Developer Reference"
  4. [EthWiki] "Ethereum Wiki"
  5. [Dannen] "Introducing Ethereum and Solidity", Chris Dannen, Apress, 2017. PDF (solo accesible desde red del CEC o DCC).

Bibliografía General Criptografía

  1. Jonathan Katz, Yehuda Lindell, “Introduction to Modern Cryptography”, Editorial Chapman and Hall/CRC, 2008
  2. 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)
  3. Douglas Stinson, “Cryptography, Theory and Practice”, Third edition, Editorial Chapman and Hall/CRC, 2006

Última modificación: 27 de Agosto 2018.