El protocolo de bitcoin tiene cierta complejidad, veremos aquí una metáfora
que busca ser didáctica, no rigurosa
Supongamos un grupo de personas juega al póquer y no quiere usar fichas físicas.
Tienen 3 fichas virtuales.
Confían en una persona con autoridad, que apunta las transacciones en
una pizarra a la vista de todos
Alice posee la ficha 1 y la ficha 2
Bob posee la ficha 3
Alice le da la ficha 1 a Replicante
Así funciona el dinero fiat. Nuestras nóminas, transferencias y
cargos en la tarjeta de crédito solo son apuntes contables. No en un único
registro (un único banco) sino en varios, pero todos coordinados bajo la autoridad del estado
Supongamos que los jugadores no quieren depender de un único operador
de la pizarra. Así que cada transacción la notifican en voz alta a
toda la mesa, y cada uno va apuntando en su propia pizarra
todas las transacciones, todos mantienen una copia igual
Cada pizarra incluye una pequeña cabecera con los datos de cada jugador
Pizarra de Alice <--------- (Cabecera)
------------------------
Alice posee la ficha 1 y la ficha 2
Bob posee la ficha 3
Alice le da la ficha 1 a Replicante
Pizarra de Bob
-------------------------
Alice posee la ficha 1 y la ficha 2
Bob posee la ficha 3
Alice le da la ficha 1 a Replicante
Pizarra de Replicante
---------------------
Alice... etc etc
En bitcoin, a esta pizarra se le llama bloque
- Al cabo de unas cuantas operaciones, todas las pizarras se habrán llenado.
En este momento, la sala tiene que decidir que una sola de las pizarras será
la definitiva:
transferida a papel, encuadernada y aceptada como oficial por todos para siempre
- Todos los participantes compiten entre sí para conseguir que su pizarra
sea la definitiva, porque quien lo consiga recibirá un par de fichas como premio.
Lo primero será
contrastar cada pizarra con todas las pizarras desde el principio
de los tiempos, para comprobar que cada ficha haya sido creada correctamente
y que no sea gastada dos veces
Pizarra de Bob
--------------------------
Alice posee la ficha 1 y la ficha 2
Bob posee la ficha 3
Mallory entrega la ficha 4 a Replicante <---------
Alice entrega la ficha 1 a Replicante
Mallory entrega la ficha 4 a Alice <---------
Una vez limpiadas las transacciones incorrectas, cada jugar intenta resolver
una especie de sudoku con los datos de su pizarra tentativa para convertirla
en la pizarra definitiva.
Tiene que añadir a su pizarra un valor (llamado nonce), de forma
que cuando se aplique al conjunto el doble hash SHA-256,
el resultado sea
un número que empiece por 4 ceros seguidos.
Por tanto, cada pizarra tentativa contendrá:
- La cabecera, que será distinta para cada jugador
- Las transacciones correctas, que serán iguales para todos
- Un nonce, el valor que intenta encontrar cada jugador
La búsqueda del nonce sería algo parecido a esto:
Replicante toma la cabecera, las transacciones y prueba el nonce jh00.
Calcula el hash SHA256, y al resultado, le vuelve a calcular el SHA256
replicante@spinner:~$ echo "Pizarra de Replicante , jh00 , Alice
entrega la ficha...." |sha256sum |sha256sum
1941bd6309c21d6c9c6b52069b612ae5664dd93253644639040ffd80b4049df7
Pero le sale un hash que empieza por 1941, no vale
Ahora prueba con el nonce jh01
replicante@spinner:~$ echo "Pizarra de Replicante , jh01 , Alice
entrega la ficha...." |sha256sum |sha256sum
9f752a664adac484460d87f45ad1aac809b1abc78388edbc25a7760244f88d46
El hash obtenido empieza por 9f75, tampoco vale
- Obsérvese que un cambio de un solo bit en la pizarra tentativa (el cambio del nonce)
genera un hash completamente distinto. La única forma de buscar el nonce es
la fuerza bruta, ir tanteando valores secuencialmente
Tras muchos cálculos, Bob ha encontrado un nonce, xb84, que encaja
en su pizarra y que resuelve el problema
replicante@spinner:~$ echo "Pizarra de Bob , xb84 , Alice
entrega la ficha...." |sha256sum |sha256sum
00001b50e2ade721b07e191ff72773ec87736883d9ad63593080f00ef83ce84b
En realidad las transacciones de esta pizarra no son iguales a las
de todas las demás: Bob había tenido la precaución de añadir
una transacción, la creación de las dos nuevas fichas del premio, que
ahora le pertenecen
Bob transmite el bloque
a todos los demás, que comprueban que todo es correcto.
Averiguar el nonce
es muy difícil, comprobar que es válido, es muy fácil
Hagamos el modelo un poco más realista:
- Originalmente, el software del cliente podía minar, pero al poco tiempo se separaron las
funciones de usuario ordinario y de minero
- Cualquiera que lo desee puede ser minero
- No importa si hay mineros maliciosos, con tal de que la mayoría (simple) de la red sea honesta
- Un conjunto de mineros maliciosos podrían intentar crear una ramificación propia
de la cadena, pero nadie la usaría porque la cadena legítima sería más larga
Los usuarios envían las transaccions por broadcast a todos los mineros. Tal vez el minero
que genere el bloque ganador no haya recibido alguna transacción en concreto. Esto no tiene mucha
importancia, la transacción acabará apareciendo en algún bloque
- Por tanto, un bloque se considera correcto si todas sus transacciones son correctas. No importa
si faltan transacciones
- Si una transacción aparece en un bloque tentativo pero no aparece en el bloque definitivo,
la transacción es nula. Por eso es muy importante esperar a que las transacciones se confirmen
Normalmente las trasacciones no son gratuitas, quien envía los fondos ofrece un pequeño
pago
al minero, por el importe que desee. Si al minero le parece insuficiente,
ignorará la transacción. Valores típicos son 0.1mBTC o 0.2mBTC
- Si el pago que ofrece la transacción es muy bajo o nulo, probablemente acabará entrando
en la cadena cuando llegue a algún minero que acepte estas condiciones. Por tanto, pagar
más o menos hará la transacción más o menos rápida, pero el protocolo garantiza la
integridad del sistema
- Para evitar abusos, algunas transacciones exigen una comisión mínima de 0.1 mBTC: Las que tengan un importe inferior
a 10 mBTC, las referidas a bitcoins muy recientes y las muy voluminosas.
Se define hash rate como la potencia de cálculo de todos los mineros
de la red
Supongamos que un conjunto malicioso de mineros acordara, en su propio
beneficio, aceptar transacciones irregulares
- Generaría una ramificación de la cadena, una subcadena que solamente
ellos daría por buena, solamente ellos encadenarían aquí nuevos bloques
- Como tienen menos hash rate que la mayoría honesta, serían incapaces
de generar bloques al mismo ritmo, su subcadena acabaría siendo más corta
que la subcadena legítima
La cartera (wallet) es el software que gestiona las claves,
y por tanto los fondos
Hay varios tipos de cartera
El cliente original, Bitcoin-Qt fue desarrollado por el propio Satoshi Nakamoto.
Es la referencia para todos los demás y el único que cumple completamente el protocolo
Las claves privadas (o lo que es lo mismo, los bitcoins) pueden guardarse
en carteras
offline, también llamadas carteras frias
- Consiste en almacenar las claves en cualquier medio no conectado
a la red
- Se pueden emplear ordenadores sin conexión a internet, soportes
digitales (p.e. cdrom), impresión en papel o grabación en metal
- Es posible generar verdaderos billetes o acuñar monedas
- Además de almacenar los fondos, alguna carteras permiten firmar
transacciones offline
- Así, la seguridad de los fondos
no depende
de nuestra habilidad manteniendo seguro un fichero, sino
un objeto físico. Por ejemplo, guardando un cdrom o unos billetes en una caja fuerte de nuestra confianza
Para operar con billetes:
- Solo son seguros los billetes que hayamos impreso nosotros,
en otro caso tenemos que confiar que quien lo ha impreso
no ha guardado una copia
- Para que la seguridad sea total, también deberíamos custodiar
la impresora y jamás deberíamos conectarla
a un ordenador conectado a internet, por
la posibilidad (remota) de que la impresora o su driver
estén comprometidos
- Hay monedas acuñadas, que no son más que impresiones de las claves sobre metal.
Quien las acuña siempre promete que no ha guardado las claves, pero de nuevo,
tenemos que creer esto.
Las monedas
no son realmente prácticas,
son objetos de colección o de adorno.
En este tipo de carteras, un servidor se encarga de la gestión de la cadena de transacciones, así como de la custodia de las claves públicas y privadas del
usuario en la red bitcoin
- El usuario accede al servidor, normalmente desde una página web
- La más popular es coinbase, que también actúa como exchange
Ventajas de las carteras online:
- El usuario no necesita almacenar la cadena completa en cada ordenador
donde opera
- Si el usuario olvida la contraseña de su cuenta en el servidor, el servidor
puede ayudarle a recuperarla
- Debemos confiar en la honestidad el servidor
- Debemos confiar en que su software esté bien hecho
- Estos sitios web almacenan enormes cantidades de bitcoins, son un objetivo
muy atractivo para todo tipo de atacantes
La práctica totalidad de incidentes graves de seguridad se han
producido en exchanges y carteras web
- Multitud de robos: en
mybitcoin,
bitomat,
bitcoinica...
- Cierre de GBL en noviembre de 2013
- Cierre de MtGox en febrero de 2014
Esto se parece mucho al robo en bancos tradicionales,
la diferencia es que los bancos cuentan con seguros que protegen
a los usuarios y estas entidades no (actualmente no, aunque empiezan a aparecer
iniciativas en esta línea)
La aparición de carteras (locales) ligeras supuso un gran avance de seguridad,
pues eliminan los riesgos de carteras online sin necesidad
de almacenar la cadena completa de transacciones
- Usan una red de servidores que almacenan la cadena
- Las claves privadas se guardan localmente, en el ordenador de cada usuario
- Como todas las carteras locales,
si el usuario pierde el fichero que contiene las contraseñas privadas
(y no tiene copia de seguridad), pierde su dinero sin remedio
- Teóricamente son vulnerables a ciertos ataques man in the middle,
pero quien os habla no ha encontrado ningún caso
- Para minimizar este riesgo, se puede evitar el acceso
a internet desde provedores dudosos, como cibercafés y similares
Las carteras con semilla son un tipo de carteras ligeras donde
las claves se generan con un algoritmo pseudoaletorio.
Conociendo su semilla, se pueden regenerar todas las claves
Las carteras locales destinadas al usuario final son razonablemente seguras, pero
los exchanges y las carteras online operan con su propio software.
En ocasiones han incurrido en fallos de seguridad que han sido atacados
- En el protocolo de bitcoin,
la información principal de cada transacción (importe y destino) está bien protegida mediante
un hash. Pero algunos campos, no esenciales, no están protegidos
- Se ha descubierto cómo modificar el identificador de transacciones recientes,
autorizadas pero no confirmadas
- Los clientes bien hechos no tomarán decisiones sobre transacciones no confirmadas,
pero algunos clientes, como el de MtGox, actuaban imprudentemente
Supongamos que Mallory quiere estafar a Alice
- Alice envía dinero a Mallory, notificando la transacción a la red
Transacción 23: Alice envía a Mallory el bitcoin 5
- Mallory envía a la red una transacción con los mismos datos fundamentales, pero con un
identificador distinto
Transacción 223: Alice envía a Mallory el bitcoin 5
(El identificador de la transacción, 23 o 223, no está protegido por el hash)
- Mallory (que también es minero), consigue que la transacción 223 entre antes en un bloque
- Cuando la transacción 23 llega a la red, es rechazada porque el bitcoin 5 ya no es de Alice
- La transacción 223 se procesa correctamente, es válida porque sus datos fundamentales lo son.
El identificador no es relevante
Mallory dice: Alice, la transacción 23 ha fallado
- Si Alice es torpe, responderá
Vaya, es cierto, perdona, ahora mismo te vuelvo a enviar el dinero
Transacción 24: Alice envía a Mallory el bitcoin 72
(Obsérvese que hace una transacción nueva, por el mismo importe,
pero de un bitcoin distinto)
Mallory ha conseguido dos bitcoins, los de las transacciones 223 y 24
- Si Alice sabe trabajar bien, responderá
Espera media hora
Y si pasado ese tiempo Mallory insiste, Alice dirá
Ya no tengo el bitcoin, la transacción se ha realizado aunque veo
que alguien, probablemente tú, le ha cambiado el identificador, so delincuente
- Los usuarios avanzados suelen emplear la cartera Armory
- En Android se puede usar blockchain, kncwallet y muchos otros
- Electrum es una cartera muy apropiada para principates, es sencilla, gratuita y libre disponible para
Windows, Linux, Mac y Android.
No disponible para iOS, todas las carteras de bitcoin están vetadas por Apple en la tienda oficial
- Genera todas las claves a partir de una semilla de 12 palabras en inglés
En opinión (especulativa) de muchos especialistas
- Las criptodivisas
probablemente
supondrán una revolución comparable al correo electrónico,
el intercambio de música y películas, eBay, las redes sociales
o la mensajería gratuita en el móvil
- Cuando esto suceda, su tipo de cambio con el dinero fiat probablemente
no sufrirá cambios tan extremos como los actuales.
La volatilidad actual es un inconveniente serio para su uso
- Aunque el tipo de cambio se mueva entre rangos no tan variables
como los actuales, es imposible saber cuáles serán
Algunas especulaciones (minoritarias y especialmente aventuradas)
(http://tinyurl.com/p4xw79f)
llegan a decir que el valor del bitcoin en 2017 podría llegar
a multiplicar por 1000 el valor en 2014.
- Esto supondría un volumen
de tráfico equivalente al 1% del de Visa
- Este hecho (multiplicar su valor por 1000) ya sucedió entre 2011 y 2014
- Aunque son pocos los que se atreven a dar cifras concretas
Si bien podría suceder que los estados implantaran medidas agresivas contra las criptodivisas
El bitcoin es, con mucha diferencia, la criptodivisa mejor situada actualmente.
Pero podría perder su posición y dar paso a otra moneda, por
diversos motivos, como
- Mejoras técnicas importantes
- El apoyo
de una o más grandes empresas (Amazon, Visa, Google, etc)
Esto podría provocar cualquier cosa: desplome, coexistencia, transición brusca, transición suave
- Bitcoin fue la pionera, pero hay otras criptodivisas presentes con mejoras
técnicas muy variadas y muy importantes. Y en el futuro sin duda aparecerán más
- Es muy pretencioso creer que has acertado a la primera,
bitcoin podría ser como Napster o MySpace, precursores en su día pero completamente superados hoy
- Diversas criptodivisas pueden coexistir, para distintas finalidades
- Efecto red: A mayor adopción mayor utilidad, y a mayor utilidad mayor adopción. Lo más importante de una divisa es que inspire confianza, todo
lo demás es muy secundario
- Supongamos dos criptodivisas con implantación similar, una ligeramente por encima de otra. ¿Cuál comprarías?
Sin duda, la que esté algo por encima. Todo el mundo hace lo mismo y el efecto se realimenta
- Pero el caso no es este. La diferencia entre el bitcoin y todas las demás ya es muy elevada, y aumentando
- Actualmente las empresas de capital riesgo están muy interesadas en el ecosistema bitcoin,
desarrollando todo tipo de plataformas. Ninguna altcoin tiene nada similar
- Cualquier mejora técnica de otras criptodivisas puede incorporarse al bitcoin
mediante side chains
- Supongamos que aparece una segunda moneda que provoca una pérdida del
valor del bitcoin. ¿Alguien confiaría en esta segunda moneda? ¿Para volver
a perder cuando se imponga una tercera?
En opinión de quien os habla, los argumentos contra las altcoins son
mucho más sólidos que los argumentos a favor.
- El protocolo de bitcoin sirve para almacenar de forma pública
y segura el registro de muchos tipos de transacciones
entre individuos, no solo de bitcoins.
Es aplicable a propiedades inmobiliarias, nombres de dominio...
- Se empieza a hablar de cadenas laterales (side chains): Implementar
las funcionalidades de las que carece bitcoin no en criptodivisas
nuevas, sino en otras cadenas
respaldadas a su vez por la de bitcoin. Análogo a las monedas hasta
1971, que estaban respaldas por oro.
bitcoin sería el TCP/IP de las nuevas finanzas
- Potencialmente la base de contratos inteligentes.
Nick Szabo, The idea of smart contracts, 1997.
Propiedad y garantías se gestionen sin autoridad central, solo
mediante criptografía, que puede estar integrada
en objetos físicos
- Bitcoin: A peer-to-Peer Electronic Cash System. Satoshi Nakamoto.
https://bitcoin.org/bitcoin.pdf
http://en.bitcoin.it
- Wikipedia
http://http://www.coindesk.com
http://blockchain.info