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

Cuando Pepe genera la transacción del pago de 5 BTCs a Lola para pagarle la bicicleta, la distribuye a la red Bitcoin y ésta llega a los Mineros, entonces comienza a ser procesada para su Confirmación.   Manolín, Manolo y Manuela, la incluyen cada uno en el Bloque con el que están trabajando, intentando encontrar el Hash que tenga al principio el número de ceros que marque la Dificultad del momento.  Cada nodo que está actuando como Minero tiene una copia de toda la Cadena de Bloques generada hasta la fecha.  A partir de ella determina el Hash precedente que debe incluir en el cálculo del Hash del Bloque activo con el que está trabajando.

Resulta que en nuestro caso particular Manolo y Manuela vamos a suponer que descubren al mismo tiempo para cada uno de sus Bloques activos un Hash que cumple con la condición de número de ceros al principio.  Después del descubrimiento hacen relay del mismo a la red.  Cuando un Bloque “descubierto” le llega a otro Minero, lo que hace es que comprueba las transacciones del mismo y el Hash del Bloque.  Si lo da por bueno lo incluye en la Cadena de Bloques y usa ese Hash como precedente para calcular el del Bloque sobre el que está trabajando.

Por tanto, a Manolín le llega el Hash del Bloque que ha descubierto Manolo y del que ha descubierto Manuela.   Una vez verificado uno de ellos, Manolín lo considerará precedente para el procesado del que tiene activo.  El Hash del otro no lo usará.  La situación de la Cadena de Bloques que maneja cada Minero, después del descubrimiento simultáneo relatado, sería la que se muestra en el siguiente diagrama:

Cadena Bloques

Cadenas de Bloque de los Mineros

El Bloque en el que ha quedado la transacción 5 BTCs de Pepe a Lola ha sido el 1003, que como vemos ha sido “descubierto” por dos Mineros simultáneamente.  Cuando un Bloque es “descubierto” todas las transacciones que contiene se dicen que han sido Confirmadas.  Esa sería la primera Confirmación de las transacciones.  Posteriormente cuando sigan “descubriendose” Bloques, se va incrementado el número de Confirmaciones de las transacciones incluídas en los Bloques anteriores, a razón de una por Bloque.  Por ejemplo: las trasacciones incluídas en el Bloque 1001 de la imagen tienen 3 Confirmaciones.

Todos los mineros están trabajando en el que será el Bloque 1004, pero como vemos NO todos tienen el mismo como precedente.  Supongamos ahora que Manolo descubre el Hash del Bloque 1004.  La cadena de cada uno quedaría de la siguiente forma:

Cadena Bloques

Cadenas de Bloque de los Mineros

Los Mineros analizan el Bloque 1004 recien descubierto y basándose en que la Cadena de Bloques más larga es la buena, consideran al 1003b como huérfano, y lo dejan fuera.  Si el Bloque 1004 hubiera sido “descubierto” por Manuela, el que habría quedado huérfano sería el 1003a.

Cadena más larga

Se ha de tener en cuenta que la Cadena más larga no tiene porque ser la que más Bloques tenga, sino aquella en la que la suma de la Dificultad de todos sus Bloques es mayor.  De esta forma se garantiza que la válida es la que mayor uso de CPU ha necesitado para construirse.

Como puede verse esté metodo de almacenamiento y verificación de transacciones requiere de esfuerzo computacional, es lo que se conoce como Prueba de Trabajo (Proof-Of-Work), tanto para un funcionamiento normal, como para un supuesto atacante que quisiera modificar una transacción.  Cuantas más Confirmaciones va teniendo una transacción más tiempo costaría cambiarla, ya que esto supondría que habría que calcular todos los Bloques posteriores de nuevo.  De ahí que para considerar aceptada una transacción se fije un número de Confirmaciones a partir de las cuales ya se considera muy poco probable que pueda ser alterada.  Este detalle es interesante, porque este número es el que marcará el tiempo que se tarda en aceptar la transferencia de una cantidad de moneda de una Dirección Bitcoin a otra.   En la red Bitcoin se recalcula y se fija la Dificultad periodicamente (cada cierto número de Bloques), para que el tiempo medio del “descubrimiento” de un Bloque sea de 10 minutos.  De esta forma si Lola para entregarle su bicicleta a Pepe considera que la transacción del pago debe contar con 6 confirmaciones, o lo que es lo mismo, que se haya generado el Bloque que la contiene más cinco posteriores; entonces Pepe tardaría en tener su nueva bici unos 60 minutos (6 Confirmaciones x 10 Minutos/Bloque).

En la actualidad la minería se lleva a cabo en Pools de minado; no están los mineros minando solos, se agrupan para recibir ingresos con mayor periodicidad.  Si minaran solos recibirían el premio solamente cuando “descubran” un Bloque.  Para gestionar la minería através de Pools se usan protocolos de minado como stratum, gbt, getwork, etc.  Esto posibilita que en algunos de ellos no haga falta que el nodo de minado cuente con toda la Cadena de Bloques, ya que le proporciona la información el Pool.  En relación con los Pools de minado aparece un nuevo concepto que es el de Share.  Este concepto está relacionado con los pagos que efectua el Pool a los Mineros que en él participan.  Un Share no es más que un Hash de un Bloque con un número de ceros al principio menor que el que marca la Dificultad del momento.  De tal forma que podríamos pensar en él como un “descubrimiento” de bloque basado en una Dificultad que fija cada Pool.  Realmente cuando se “descubre” un Share no se ha descubierto nada, pero es la manera en la que los Pools miden el trabajo que está haciendo cada nodo asociado.  Luego cuando alguno de los nodos “descubre” un Bloque real, se otorga la parte proporcional del premio a cada nodo del Pool en base a los Shares que cada uno haya conseguido en el intervalo de tiempo que se ha tardado en descubrir el Hash del Bloque real.  En base a este concepto de Share hay varias modalidades de pago que se usan habitualmente, que ya conociendo qué es un Share, no habrá ningún problema en comprender…

Generación de Bitcoins

Ritmo de Generación de Bitcoins (Click en imagen para ampliar)

En cuanto al premio que se recibe cuando se descubre un Bloque es una cantidad de Bitcoins Nuevos que cada cuatro años se va dividiendo por la mitad, más las comisiones de las transacciones efectuadas que están contenidas en el Bloque.  Las transacciones pueden gravarse con comisión y esto hace que los Mineros le den mayor prioridad en su procesado.  No confundir esta comisión con las comisiones que puedan poner traders o proveedores de servicios, etc.   Esta comisión sería una comisión que podríamos llamar de red, que va al Minero o Pool que descubre el Bloque.  El número de Bitcoins está limitado a 21 millones de unidades, con lo que cuando estén todos generados, la recompensa por “descubrimiento” de Bloques será unicamente la comisión de red.

Hasta aquí el ejemplo para ilustrar Cómo Funciona Bitcoin, espero que haya sido de utilidad y ayude a la extensión y uso de las monedas electrónicas…

Fuentes:
http://bitcoin.org/bitcoin.pdf
https://en.bitcoin.it/wiki/Block_chain
https://en.bitcoin.it/wiki/Attacks
Publicado en General Etiquetado con:
2 Comentarios en “Ej. 2: ¿Cómo Funciona Bitcoin? (parte III)
  1. Si me permites me gustaría hacer una publicación derivada en mi con parte de la información que compartes, lógicamente ubicándote como fuente. Gracias

  2. Siles dice:

    Amigo, yo hice un cobro de 3 dolares de topmine ami payeer k era ya mi 4to pago. Pero no me llego nada y justo esto esta relacionado con tu tema, en el faq de topmine dice k si un cobro mo llega se deberia a las confirmaciones de red, y k podria verlo, por mi topmine mismo, pero yo no entiendo nada de eso, por favor explicame y como es eso de cobrar esperando la confirmacion, no se si me volvera a sucedes esto de nuevo.

1 Pings/Trackbacks para "Ej. 2: ¿Cómo Funciona Bitcoin? (parte III)"
  1. […] conociendo bastante bien el funcionamiento de Bitcoin,  en el que seguiremos profundizando en la parte III y última de este […]

Deja un comentario

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

*