Protocolo de bitcoin

Protocolo de bitcoin: idea básica

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

.

.

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 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

.

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

Protocolo de bitcoin: otros aspectos

Hagamos el modelo un poco más realista:

.



Los mineros

Dificultad del minado

.

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

Precio de las transacciones

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

Hash rate y n/confirmaciones

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



Las carteras

Tipos de cartera

La cartera (wallet) es el software que gestiona las claves, y por tanto los fondos

Hay varios tipos de cartera

Carteras tradicionales

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

Carteras frías

Las claves privadas (o lo que es lo mismo, los bitcoins) pueden guardarse en carteras offline, también llamadas carteras frias

.

Para operar con billetes:

Seguridad de las carteras frías

Las carteras online. Ventajas

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

Ventajas de las carteras online:

Inconvenientes de las carteras online

La práctica totalidad de incidentes graves de seguridad se han producido en exchanges y carteras web

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)

Carteras ligeras

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

Inconvenientes de las carteras ligeras

Carteras con semilla

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

Maleabilidad de las transacciones

Maleabilidad de las transacciones (I)

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

Maleabilidad de las transacciones (II)

Supongamos que Mallory quiere estafar a Alice

Maleabilidad de las transacciones (III)

Mallory dice: Alice, la transacción 23 ha fallado

Electrum

Electrum

Futuro del bitcoin

Futuro del bitcoin (I)

En opinión (especulativa) de muchos especialistas

Futuro del bitcoin (II)

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.

Futuro del bitcoin (III)

Si bien podría suceder que los estados implantaran medidas agresivas contra las criptodivisas

Futuro del bitcoin (IV)

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

Esto podría provocar cualquier cosa: desplome, coexistencia, transición brusca, transición suave

Argumentos a favor de las altcoins

Argumentos en contra de las altcoins (I)

Argumentos en contra de las altcoins (II)

En opinión de quien os habla, los argumentos contra las altcoins son mucho más sólidos que los argumentos a favor.

Side Chains

Referencias