Criptomonedas para dummies

Logroño, 13 de Diciembre de 2016

Miguel Angel Marco Buzunariz

Idea básica

Propiedades de un sistema de pago.

  • Al realizar un pago:
    • Se paga usando el resultado de pagos anteriores.
    • El cobrador puede usar el resultado de ese pago en otros pagos.
    • El pagador no puede volver a usar el mismo resultado dos veces.

Soluciones electrónicas hasta ahora

  • Una autoridad central lleva la contabilidad
  • El pagador ordena el pago a la autoridad
  • La autoridad lo autoriza, y lo notifica al cobrador

Resolver el problema de la confianza

Sustituir la autoridad por una red

  • Abierta a que cualquiera participe
  • P2P
  • Va a tener latencia
  • Debe guardar el estado actual
    • Problema de latencia
  • Que se guarde el historial es inevitable
  • Validar un pago no puede depender de toda la red
    • Si cualquiera puede unirse y deconectar de la red, no está definida
    • Cada nodo debe contener todos los datos relevantes (para evitar el doble pago)
  • Claves públicas:
    • Sólo el usuario legítimo puede autorizar un pago (información secreta)
    • Cualquera debe poder validarlo (información pública)

Resolver el problema de la confianza (2)

Problema: asegurar la consistencia de la red

  • Mecanismo de consenso
  • Dar incentivos a los nodos para ser honestos

Propuesta: transferencias

  • Contienen:
    • Entrada: salidas de transferencias anteriores (no usadas en otras)
    • Prueba de autorización: generalmente firmas digitales
    • Salida: pruebas que deben aportarse para usarse en futuras transacciones
      • Generalmente claves públicas con las que se debe firmar
      • Pueden ponerse otras condiciones (lenguaje de script)
      • Se suele incluir una comisión para el minero

Bloques:

  • Son "minados" por los miembros de la red (mineros)
  • Contienen:
    • El hash del bloque anterior
    • El hash de un conjunto de transacciones
    • Prueba de trabajo
    • Hash de todo lo anterior suficientemente bajo
      • El valor umbral se ajusta para que se valide un bloque cada 10 minutos en promedio
    • Una transacción sin antecesor (premio para el minero)
    • Las transacciones emitidas por los usuarios
  • Los mineros compiten por ser el primero en encontrar una prueba de trabajo que valide
    • Cuando lo encuentran lo añaden a su cadena y lo transmiten a los demás mineros

Esquema

Esquema

Esquema

Esquema

Esquema

Sistema de consenso

  • La regla es que, en caso de recibir dos cadenas distintas, se quedan con la que más dificultad acumule.
    • La otra se descarta
  • Incentivo para minar sobre una cadena que va a ser aceptada por otros mineros.
    • Optar por la "cadena perdedora" es mala estrategia
    • Incentivo por aceptar lo que la mayoría va a aceptar
    • Todos tienen incentivo para mantener el consenso (salvo ataques de mayoría)
  • Pueden aparecer conflictos breves
    • La garantía de que una transacción va a ser validada en la cadena aumenta con el número de bloques minados sobre ella
    • Se recomienda esperar a 6 bloques para dar una transacción por validada (1 hora)

Limitaciones

  • Promedio de 7 transacciones por segundo
  • Una hora para validar transacciones
  • No hay privacidad, solo pseudonimato (mixers)
  • Mineros con ASIC dejan fuera de juego a los particulares
  • Requiere mucho gasto de energía

Alternativas: otras monedas

  • Otros tiempos promedios de minado
  • Otros tamaños de bloque (o adaptativo)
  • Sidechains
  • Otros algoritmos de prueba de trabajo no aptos para ASIC o FPGA
  • Prueba de participación en lugar de prueba de trabajo

Dash

  • Dos redes
    • Mineros: PoW
    • Masternodes: PoS
  • Los mineros funcionan como en bitcoin
  • Los masternodes
    • proporcionan mixing automático
    • hacen de notarios para permitir transferencias instantáneas

Ethereum

  • Lenguaje Turing-completo
  • Permite contratos inteligentes
  • Fork después del bug en TheDAO

Privacidad

  • Dash: mixing automático
  • Monero: firmas en anillo
  • Zcash: pruebas de conocimiento cero