Blockchain for Dummies - La cadena de bloques para Dummies

Cuando me acerqué por primera vez a la palabra "bitcoin" fue hace cinco años, cuando el tema estaba tan verde que aún tenía el sabor amargo de las frutas que no han caído del árbol. Pero hace unos dos años, a raíz de varias noticias que se publicaron sobre el "Blockchain" (o cadena de bloques literalmente traducido), no tuve más remedio que empollarme el tema, como el que ve que pierde el tren de la posteridad.

Háganme caso, dentro de unos años, el bitcoin será como hoy es el correo electrónico, y si no lo entiendes, te llamarán por ahí "analfabeto digital" (fíjate, en vez de otras cosas que se suelen oír en mi pueblo).

No quiero ser exhaustivo, si no os parece interesante. Si queréis más, comentarlo y sigo adelante.

La cadena de bloques:

Básicamente, es sistema que trabaja por debajo del bitcoin y lo asegura. Son los engranajes del bitcoin, como un libro de contabilidad (o la libreta de ahorro que tienen muchos de nuestros mayores) en la que se va anotando cada una de las entradas y salidas de dinero.

Tiene algunas propiedades que lo hacen especial:

  • seguro Implementa algunos sistemas para que no podamos ponernos más ingresos de los que tenemos, ni quitarnos gastos en los que hemos incurrido.
  • distribuído No es propiedad de nadie, ya que hay una copia de todas las transacciones en cada uno de los ordenadores que mantienen la red bitcoin. Imagínese que el ordenador central de VISA se estropea... (imagino que harán copias de seguridad)
  • relativamente anónimo En fin, no totalmente anónimo. Cada uno puede crear tantas direcciones como quiera y no es fácil asociar una dirección bitcoin con una persona.
  • definitivo No hay "vuelta a atrás", no hay botón "deshacer". Cada una de las "transferencias" son definitivas. VISA por ejemplo, soporta un porcentaje nada desdeñable de "devoluciones" (creo que casi un 5%).

Mecánica: La función "digerir", "masticar" o "hashear"

La base de todo esto es que un tipo descubrió que hay una operación matemática que permite "resumir" cualquier cosa, sin que tenidendo el resumen puedas adivinar el origen del mismo.

Es decir, yo puedo meter en una batidora un móvil por ejemplo... Si lo bato bien fuerte, obtengo una sopa de ese teléfono móvil. Esa sopa tiene la esencia del teléfono móvil que yo he triturado. No puedo rehacer el móvil desde su sopa. Además cada sopa tiene "la huella digital" de su móvil, es decir, identifica de forma inequívoca el móvil que se utilizó como ingrediente. Si analizase químicamente la papilla, podría decir hasta el porcentaje de cada uno de los elementos utilizados. Si bato un movil "low cost" seguramente obtendré una mezcla de plásticos y circuitos donde no abunden los metales preciosos. Si lo hago con uno "de categoría", ¡a lo mejor encuentro rastros de oro!

Luego hay dos propiedades fundamentales de la función hash:

  • resume Sea del tamaño que sea lo que sea lo que quiero resumir, estas funciones lo dejan reducido a un puñado de letras.
  • huella digital Cualquier cambio, por mínimo que sea, cambia el resumen.

Es importante: repasemos el hash.

Como una imágen vale más que mil palabras:

Vamos a resumir tres palabras o frases, utilizando una función hash. Comprobamos lo que hemos dicho:

  • Cada resumen tiene un tamaño fijo (que depende de la función hash que se utilice)
  • Cada mínimo cambio, cambia la función hash.

Y otra nueva propiedad: "el secreto". Teniendo un resumen, no puedo reconstruír la obra original (por ejemplo, el teléfono móvil jamás lo podré reconstruír después de batirlo).

Con éste ingrediente vamos a llenar unas cajitas y vamos a hacer una cadena uniendo una cajita con la siguiente...

Los bloques:

Queremos hacer un libro de contabilidad que recoja todas las transacciones bitcoin.

El humano ha inventado una forma eficiente de hacer cosas grandes. No vamos a buscar un libro "infinito", sino que vamos a ir partiendo o dividiendo lo que queremos recoger en pequeñas piezas de información.

Es decir, vamos a ver cómo guardamos y registramos todas las transferencias de bitcoins que han ocurrido en los últimos 10 minutos aproximadamente:

  1. Cada persona que haga una transferencia de bitcoins debe estar conectada a la RED bitcoin. Es decir, la información de dicha transferencia se tiene que comunicar a todos los nodos de la red (a todos los ordenadores que están manteniendo ese registro que es la cadena de bloques).
  2. En unos minutos, cualquier transferencia llega a todos los ordenadores, con lo que tienen conocimiento de que esa transferencia que nosotros hemos enviado, se ha producido.
  3. Algunos de esos ordenadores se encargan de construír un bloque: reciben todas las transacciones que han recibido en los últimos diez minutos, y una vez comprueban que son legítimas, las apuntan en un bloque (como si las apuntasen en una hoja de un libro de contabilidad).
  4. Reservamos "la primera línea" del bloque para el "hash" (o huella dactilar del bloque anterior).
  5. Reservamos "la última línea" para un número que vamos a buscar y que nos va a dar un montón de trabajo.

Prueba de trabajo

Que hay que ponerse de acuerdo. Y eso, que ya parece difícil entre humanos, hay que hacerlo entre máquinas. Y tiene que ser de forma que nos aseguremos "que los malos" no pueden meter transacciones falsas.

¿Cómo lo hacemos?
Copiando lo que hicieron algunos para evitar que les llenen el buzón de basura.

El spam es correo que algunos "malos" mandan con virus, malware, o símplemente anunciando sitios en internet, de forma discriminada a listas inmensas de destinatarios. Son como los folletos publicitarios que aparecen nuestros buzones de correo sin que nosotros los hayamos solicitado.

Alguien se dió cuenta que los buzones de correo más accesibles y cercanos a la calle son siempre los que más correo basura tienen.

Imagínese que ponemos los buzones en el último piso de cada edificio, en vez de nada más entrar.
Eso desincentivará a muchas empresas a seguir mandando folletos publicitarios sin que los destinatarios los deseen. La carga de trabajo que supone subir al último piso para dejar los folletos, a parte de consumir mucho tiempo, consume dinero (en forma de necesidad de personas contratadas).
Solo la empresa de correos que cobra por cada carta tendrá incentivo suficiente para seguir repartiendo.

Es decir: el establecer una forma de cánon o gravámen, desincentiva a "los malos" a hacer cosas "malas".

¿Y con el bitcoin?
Si ponemos una forma de que sea muy difícil cerrar un bloque para comenzar el siguiente, desincentivaremos a los "malos". ¿Por qué? Porque para poder resolver esa forma difícil hará falta tiempo y dinero. Si tengo que invertir más dinero para hacer algo malo, que lo que me supondría hacerlo por la forma "legal", probablemente no encuentre motivación suficiente para actuar de forma ilegítima.

Por ello se requiere que cada ordenador que presenta un bloque, para cerrarlo realice una operación matemática muy complicada, que es muy sencilla de comprobar. Y es buscar un hash que comience con un número determinado de ceros, únicamente cambiando un número llamado nonce, que sitúa al final de todas las transferencias que han recogido los últimos 10 minutos de ese bloque.

Como no puedo reconstruír el texto original a partir de un resumen, la única forma de hacer ésto es ir probando por ensayo y error. En el momento que consigo un número que unido a todas las transacciones, resulta en un "hash" que tiene muchos ceros al principio, lo doy por cerrado y lo transmito a la red como "bloque resuelto".

Además hay otro incentivo para hacer las cosas bien, y es que el ordenador que resuelve un bloque, recibe una recompensa en bitcoins. ¿Se cargaría usted un sistema que le remunera por su trabajo? El sentido común nos dice que no, y asumamos en principio que todos los participantes de la red bitcoin tienen sentido común... :wink:

El final: La cadena

Tenemos estos ingredientes:

  1. Con las transferencias de bitcoin de los últimos 10 minutos hacemos un bloque tras comprobar que son correctas y legítimas.
  2. Añadimos un número "nonce", empezamos por el 0 "cero" al final del bloque
  3. Calculamos el hash
  4. ¿El hash empieza por "muchos ceros"?
  5. ¿Si?: Bloque resuelto, transmítelo y recibe la recompensa en bitcoins
  6. ¿No? Cambia el nonce (súmale 1) y vuelve al paso 3

Una vez tenemos un bloque resuelto, con su número "nonce" metido tras la última transacción, con el hash que hemos calculado con un montón de ceros al principio, lo transmitimos. Este bloque se transmite a todos los ordenadores de la red (que sin haber hecho las verificaciones, aceptan como válido, aceptando como válidas todas las transacciones que contiene), y con el resumen "hash" que se ha generado se escribe la primera línea del siguiente bloque.

De esa forma se encadenan.
Como delante de todas las transacciones del bloque siguiente, está el "hash" del bloque anterior, siempre va a haber un "encadenamiento" que va a hacer muy difícil (si no imposible) cambiar transacciones que ya estén archivadas.

¿Por qué se encadenan?
Como las páginas de una libreta de contabilidad. Si empiezo una hoja nueva, tengo que poner la suma de la hoja anterior, ¿no? No empiezo de cero.
Si alguien "malo" intenta cambiar una transferencia de la primera hoja, cambiando por ejemplo la cifra, todas las sumas de las hojas siguientes cambiarían.
Por ello, cualquier bloque que se intente incluír, que no tenga correctamente reflejado el "hash", resúmen o "huella dactilar" del bloque anterior, no será aceptado por la red, frente a otro que sí lo tenga correcto.

H2
H3
H4
3 columns
2 columns
1 column
10 Comments