Ej. 2: ¿Cómo Funciona Bitcoin? (parte II)

Llegados a este punto y para continuar viendo el proceso de funcionamiento de Bitcoin debemos conocer con un poco más de profundidad como funciona la Firma Digital y una red p2p.  Una vez tengamos claro esto, ya podremos seguir avanzando…

¿Qué es la Firma Digital?

Es simple, y como es habitual en la informática, está basada en una operación cotidiana: la firma de documentos.  Cuando firmamos un papel con un bolígrafo estamos poniendo una especie de código nuestro en él, que sólo nosotros sabemos hacer.   Si alguien quiere comprobar nuestra firma, nos llama, nos dice que plasmemos el «garabato» en otro papel, y compara éste con el que anteriormente hayamos firmado para dar validez o no a nuestra firma.  Veamos ahora como ha sido implementado este concepto en el mundo digital.

El proceso de Firma Digital se lleva a cabo con dos claves: una Clave Privada y una Clave Pública unívocamente relacionadas de tal forma que lo que una encripta, sólo la otra lo puede desencriptar.   La Privada estará en poder de quien firma únicamente y la Pública viajara con la información firmada.  Cuando se firma un documento a nivel digital lo que se hace primero es generar un Hash (huella digital) del mismo.  El Hash, como ya probablemente se conocerá, no es más que una secuencia de caracteres o numérica generada por una operación matemática aplicada al contenido del documento o a un conjunto de datos.   Este Hash se encripta con la Clave Privada y el resultado será la Firma Digital.  Luego el documento se entrega, junto con la Firma Digital y la Clave Pública.

Firma Digital

Firma Digital (click en imagen para ampliar)

El que lo recibe, para verificar la firma efectúa un Hash del mensaje, y por otro lado desencripta la Firma con la Clave Pública.  Posteriormente compara el Hash del mensaje con el de la Firma desencriptada para dar validez a esta última.

Fijaros que en el ámbito de los bits, la firma pierde el requisito de presencia física para su verificación.  Para ello en este caso se usa un «garabato digital», el Hash, que se calcula para cada documento o conjunto de datos que se va a firmar y es único para cada uno de ellos.   Además este «garabato digital» difiere del de nuestra firma habitual, en que cualquiera, en cualquier parte del mundo puede calcularlo con tal de aplicar la función Hash a los datos en cuestión.  Lo que hacemos para firmar es calcularlo y encriptarlo con nuestra Clave Privada, luego entregamos los datos, el «garabato digital» encriptado y una clave pública que es capaz de desencriptarlo.  El que quiere verificar los datos firmados no tiene más que calcular el «garabato digital» del documento o conjunto de datos con la funcion Hash correspondiente, luego desencriptar el que nosotros le pasamos con la Clave Pública, y si coinciden es la prueba de que fue encriptado con la Clave Privada asociada, y lo más importante, es la prueba de que el conjunto de datos es el mismo que se firmó en su momento, ya que si no el «garabato digital» calculado con la función Hash aplicada por el verificador no sería el mismo que el desencriptado.

Esto de la Firma Digital, no es algo único de Bitcoin.   Ya lo tenemos en nuestra vida cotidiana: en nuestro DNI llevamos la parejita de claves; cuando importamos certificados personales para poder entrar a ver las temidas notificaciones que todos conocemos, lo que estamos haciendo es instalar algo que aloja una Clave Privada en algún lugar recóndito del disco duro de nuestro ordenador, vinculada a una Clave Pública que es la que solemos enviar a donde corresponda para que verifiquen nuestra firma; etc…

¿Qué es una red p2p?

Este es otro concepto, que aunque tiene un nombre esotérico de esos tan habituales en la jerga informática, es también bastante simple, y como no podía ser de otra manera, se inspira en la forma en la que los humanos llevamos transmitiéndonos la comunicación desde hace años.   Una red p2p viene a funcionar muy parecido a como funciona un grupo de amigos.  Cuando le cuentas a uno de ellos algo, éste se lo cuenta a otro, el otro al otro y así sucesivamente el mensaje se va propagando hasta que se ha hecho un «relay» por todo el grupo, y ya todos saben en que anduviste metido la noche anterior…

Ese grupo de amigos se está comunicando como lo hace una red p2p o peer to peer.  También si se quiere se puede dar una definición más técnica y menos coloquial, para los puristas; y en este sentido diremos que una red p2p está formada por nodos que se comportan a la vez como servidores y como clientes y pueden estar interconectados entre sí por múltiples enlaces, a través de los cuales se van intercambiando la información.  Lo dicho, como los colegas…

Red p2p

Diagramas ejemplo de Redes p2p

Una red p2p formada por varios tipos de nodos es lo que hace posible Bitcoin.  Cuando un nodo se conecta a la red efectúa un descubrimiento para saber a que otros puede conectarse y una vez conecta, comienza a intercambiar información con ellos y fundamentalmente a hacer relay a los demás de lo que le llega y/o descubre.  Un tipo de nodo, por ejemplo, es cualquiera que esté ejecutando el monedero oficial: Bitcoin-Qt, otros son aplicaciones que usan el protocolo Bitcoin, por ejemplo blockchain.info y otros que son los Mineros.  Cada tipo de nodo desempeña su papel. Fundamentalemente puede ser de generador, comprobador y redistribuidor de transacciones, que es lo que hacen los dos primeros tipos mencionados; o el de inclusión de las transacciones en Bloques y descubrimiento de Hashes de Bloques, que es lo que hacen los Mineros.

Una vez realizadas estas aclaraciones previas, podemos ya continuar con nuestros amigos Lola, Pepe y los tres Mineros Manolín, Manolo y Manuela.   Intuimos que todos ellos están actuando como nodos de la red Bitcoin y ahora veremos el papel de cada uno.     Cuando Pepe le paga a Lola la bicicleta que le ha comprado con la transacción de los 5 BTCs a una Dirección Bitcoin de Lola.  Lo qué hace es generar un transacción, firmarla y distribuirla a los nodos a los que él está conectado.  En este caso como opera a través de blockchain.info es justo esta aplicación la que hace de nodo.  Cuando el mensaje llega a otros nodos, lo que hacen es comprobar la validez de la transacción mediante la verificación de la Firma Digital de la misma.  Una vez la han comprobado, cada uno de ellos la incluye en una lista de transacciones no Confirmadas (validadas, pero no Confirmadas) y vuelve a hacer relay de la transacción hacia los nodos con los que esté conectados.  De esta forma la transacción es redistribuida a toda la red, cuando la transacción validada llega a Manolín, Manolo y Manuela, que son nodos que están minando, ellos la validan de nuevo y siguen haciendo relay de la misma, pero por ser Mineros además lo que hacen es incluir la transacción en lo que se llama un Bloque con el que ellos están trabajando en ese momento.  Cada uno tiene el suyo, no tienen porque ser iguales.  Un Bloque no es más que un conjunto de transacciones validadas y agrupadas.

Ejemplo Bloque

Diagrama de un Bloque

El objetivo de los Mineros es lo que se conoce como Descubrimiento de Bloques, que es un nombre algo confuso.   Lo que realmente están haciendo es contribuir a crear una Cadena de Bloques de la siguiente forma: cogen el Hash del Bloque anterior, añaden el conjunto de transacciones que ellos tienen en su lista de no Confirmadas todavía, añaden su transacción de premio más las comisiones por si descubren el Bloque, añaden un numero que se va incrementando en cada intento llamado Nonce, y calculan el Hash de todo eso, que sería el Hash del Bloque con el que están trabajando.

Ejemplo cadena de dos Bloques

Diagrama de cadena de dos Bloques

Si el resultado de ese Hash es una cadena numérica que comienza por un determinado número de ceros entonces habrían encontrado el Bloque, o mejor dicho el Hash del Bloque.  El número de ceros que tiene que tener el Hash al principio viene marcado por lo que se conoce en Bitcoin como Dificultad.  Si el resultado no tiene el número de ceros necesario, el Minero incrementa el Nonce y vuelve calcular un nuevo Hash, así hasta que alguno de los Mineros encuentre el Hash con el número de ceros requerido, y ese será el que habrá descubierto el Bloque.  En esencia, son esas operaciones de cálculo de Hash de Bloques lo que se conoce como Minería.

A continuación se puede ver el detalle de los atributos de un Bloque: recompensa del Bloque, comisiones, Nonce, etc.  A la derecha de la imagen tenemos el Hash tanto del Bloque en cuestión como el de su predecesor (imagen obtenida de blockchain.info).  Obsérvese el detalle del número de ceros al principio del Hash:

Atributos Bloque

Propiedades de un Bloque (Click en imagen para ampliar)

Eso es lo que están haciendo Manolín, Manolo y Manuela con sus aparatos de minado, que a estas alturas de la película serán casi con total probabilidad circuitos electrónicos integrados con chips específicos para minería llamados ASICs.  Anteriormente estas operaciones se hacían con CPUs o con GPUs de tarjetas gráficas.  Lo que pasa es que en la actualidad el nivel de Dificultad es tal que ya ni las CPUs, ni las GPUs tienen potencia suficiente para descubrir Bloques en un tiempo razonable.

En la parte I de este ejemplo intuíamos el material de nuestra moneda, con lo que ya sabemos podemos ver que los materiales que sustentan la Cadena de Firmas Digitales que la constituyen son bits que procesan los nodos de la red p2p.   Por tanto, Bitcoin está hecho de Hardware, Software y Energía Eléctrica.

Por el momento, hemos definido algunos conceptos interesantes y ya vamos conociendo bastante bien el funcionamiento de Bitcoin,  en el que seguiremos profundizando en la parte III y última de este ejemplo…

Fuentes:
http://bitcoin.org/bitcoin.pdf
https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery
http://es.wikipedia.org/wiki/Criptografía_asimétrica
Publicado en General Etiquetado con: ,
2 Comentarios en “Ej. 2: ¿Cómo Funciona Bitcoin? (parte II)
  1. Carlos chavez dice:

    Saludos muy pero muy clara, concisa y didáctica tu explicación. Me gustaría una explicación mas profunda…que función hash se utiliza?, se cifra con RSA o con curvas elipticas? y que pasa cuando le encuentren una coalision a esa funcion hash….saludos. he estado viendo muchas paginas y esta es una de las mas didacticas. Felicitaciones desde Venezuela.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*