Capítulo 4. ¿Qué es la Cadena de Bloques o Blockchain?

TL;DR

La tecnología central de las criptomonedas es el Blockchain. Su funcionamiento se basa en alcanzar un equilibrio por medio del consenso de la red. Existen dos tipos de Cadenas de Bloques: uno es una base de datos distribuida de transferencias de fondos entre los usuarios las cuales se agrupan en bloques y se apilan en una lista ordenada, de manera similar a un libro contable. Otro tipo de Blockchain son sistemas de cómputo distribuidos que funcionan como una enorme máquina virtual que encadenan miles de aplicaciones independientes. El primer método de consenso fue desarrollado por Satoshi Nakamoto: la Prueba de Trabajo que resuelve el problema clásico de computación distribuida de los Generales Bizantinos. Existen situaciones donde la cadena de bloques se divide, ya sea temporal o permanentemente. La división permanente ocurre cuando se produce un Hardfork o un Softfork.

 

El eje central de las criptomonedas es el Blockchain, en términos sencillos es una base de datos distribuida implementada sobre una red "punto a punto" que se interconectan sin intermediarios. Funcionan de manera similar a BitTorrent para el intercambio de información.

¿Cómo se evita el vandalismo y la corrupción en este ambiente caótico?. Esto se logra estableciendo una gobernabilidad digital que incluye:

  • Métodos de Consenso
  • Implementación de una Base de Datos distribuida
  • Mecanismos para operar en redes donde los nodos no confían unos en otros (trustless network)

Para comprender este proceso veamos algunas analogías.

Consenso

A mayor cantidad de personas que participen en la red mayor será la confiabilidad de la misma. Tomemos como ejemplo a la Wikipedia, ésta no tiene una autoridad central ni tiene un editor de contenido que dicta las reglas, sino que la mantiene una comunidad de usuarios voluntarios. Si un usuario cualquiera intenta modificar una entrada, por ejemplo, la página de Batman y escribe disparates:

Acto de vandalismo en la wikipedia

Luego de unos minutos la entrada es restablecida a su contenido original:

Página restablecida a su contenido original luego de unos minutos

Si se ingresa al historial de la página podrá verse que a las 20:55 ocurrió el ataque y luego de unos segundos un bibliotecario voluntario revirtió el cambio.

Esto sucede gracias a los millones de voluntarios que se dedican a mantener el contenido en todas partes del mundo.

Otro problema que enfrenta la Wikipedia, además del vandalismo, son los contenidos polémicos, donde existen varias opiniones encontradas por parte de gran cantidad de lectores y colaboradores, por ejemplo:

En estos casos las entradas son protegidas por la comunidad, se establecen grupos de discusión sobre esas entradas y sólo los usuarios de la comunidad con mayor rango (los que tienen mayor participación activa en la comunidad) son los que intentan llegar a un consenso y pueden realizar ediciones en base a acuerdos.

De manera similar el Blockchain se mantiene gracias a su comunidad de usuarios. A diferencia de la Wikipedia quienes mantienen la cadena de bloques a menudo reciben una compensación monetaria.

Base de datos distribuida

Ejemplo de una Base de Datos Distribuida

La cadena de bloques es una base de datos distribuida

¿Pero cómo se logra esto?. Imaginemos un Casino con una ruleta donde los jugadores no usan fichas y ninguno confía en los demás, así que todos deciden mantener una copia de las apuestas que se han hecho. Si hay una disputa entre los jugadores pueden comparar sus anotaciones y decidir por mayoría quién tiene la razón. Pero, si uno de los jugadores se descuida, un atacante puede modificar sus registros. Así que añadieron un paso adicional, al final de cada página cada jugador coloca una firma con un resumen de la anterior, de modo de que las páginas quedan "encadenadas" unas a otras. Esto significa que la verificación de una lleva implícita la verificación de todas las anteriores y también que modificar una requeriría modificar las siguientes.

Ahora cuando un ladrón trata de atacar, no sólo tendrá que cambiar las jugadas anotadas, sino también las firmas y las páginas siguientes, esto requiere gran cantidad de tiempo, suficiente para que los demás jugadores se den cuenta de que algo extraño está sucediendo.

El Casino ofrece recompensas a los jugadores cada vez que llegan a un consenso, mientras que si están conspirando son penalizados. De modo que a la larga se vuelve más beneficioso para los jugadores obedecer las reglas que romperlas.

Veamos ahora una variante del problema de los Generales Bizantinos mostrando un esbozo de la solución propuesta por Satoshi Nakamoto.

Redes de Desconfianza Mutua (trustless)

Tal como lo vimos anteriormente las redes colaborativas necesitan alcanzar consensos en ambientes hostiles, el problema de los Generales Bizantinos es un ejemplo clásico de este tipo.

Ilustración del problema de los Generales Bizantinos

Imaginemos a cuatro ejércitos que desean atacar una ciudad, cada uno comandado por un general. Para poder ganar la batalla al menos 3 ejércitos deben atacar al mismo tiempo. Los generales deben comunicarse a través de la ciudad para ponerse de acuerdo cuando atacar o retirarse.

Hay dos problemas principales:

  • ¿Cómo identificar si un general es un traidor o no?
  • ¿Cómo enviar un mensaje de un general a otro sin que el mensaje sea alterado en la ciudad?

El problema de los traidores se soluciona al establecer sólo un tipo de mensaje: "atacar un dia y hora específico", ya que no hay un mal momento para atacar y no hay cabida para la retirada. Para solucionar el problema de que los mensajes no sean alterados en el camino los generales deciden que enviarán el mensaje junto con un número, por ejemplo:

3 de Agosto, 06:00 am, 17493877

Ese número (nonce) servirá para identificar si el mensaje ha sido modificado o no. Los generales previamente acordaron usar una fórmula que les permite transformar el mensaje en un número entero (hash), ejemplo:

función ("3 de Agosto, 06:00 am", 17493877) = 00000986471

Los generales acordaron que un mensaje será válido si el resultado comienza con 5 ceros, cómo es el caso del resultado mostrado arriba: 00000986471, en caso contrario el mensaje será considerado como inválido.

El método que los generales usan para buscar el nonce es probar números en secuencia comenzando por 1 hasta alcanzar una solución, ejemplo:

función ("8 de Mayo, 08:00 pm", 1) = 06577463198 -> fallida

función ("8 de Mayo, 08:00 pm", 2) = 99756331853 -> fallida

función ("8 de Mayo, 08:00 pm", 3) = 00355611876 -> fallida

función ("8 de Mayo, 08:00 pm", 4) = 75837610034 -> fallida

(...)

función ("8 de Mayo, 08:00 pm", 192525) = 00000198734 -> exitosa

Por lo tanto el mensaje "8 de Mayo, 8:00 pm" debe ir acompañado con el número: 192525.

Con esto vemos que no es fácil alterar un mensaje, porque requiere de mucho tiempo y esfuerzo. Esto es lo que se denomina "Prueba de Trabajo" (Proof of Work / PoW).

Ahora si, definamos con precisión qué es el Blockchain.

¿Qué es el Blockchain?

El Blockchain o cadena de bloques es:

Una base de datos distribuida en una red descentralizada donde todos los nodos buscan alcanzar un consenso sobre la legitimidad de los datos bajo un ambiente de mutua desconfianza.

Cada bloque de la cadena es un grupo de transacciones formando un enorme registro de operaciones donde se indica claramente quién le envió dinero a quién, en qué fecha y qué cantidad. De esta forma puede determinarse el balance total de cada uno de los miembros de la red. Cuando nos referimos a "quién" no nos referimos a una persona sino a una dirección de una cartera. Una dirección es como un correo electrónico, es decir, es un identificador de a un usuario y al igual que los correos electrónicos, los usuarios pueden tener varias direcciones dentro de la red.

Una dirección es una clave pública generada con criptografía asimétrica, por lo tanto los montos asociados a una clave pública sólo pueden ser reclamados haciendo uso de la clave privada correspondiente.

¿Qué son las transacciones?

Ya hemos dicho que los bloques son grupos de transacciones. Las transacciones son transferencias de fondos, similares a las transferencias bancarias. La diferencia es que una transacción no necesariamente es de uno a uno. Veamos algunos ejemplos de la red de Bitcoin:

Transacciones de uno a uno:

Ir al explorador de bloques 

Transacciones de uno a varios:

Ir al explorador de bloques

Varios a uno:

Ir al explorador de bloques 

Varios a varios:

Ir al explorador de bloques 

Las transacciones tienen varias características intrínsecas:

  • Incluyen los datos de la transferencia de los remitentes y destinatarios
  • Incluyen una comisión, en la medida que la comisión es mayor se estimula a que los mineros procesen la transacción más rápidamente.
  • Las transacciones son irreversibles, una vez que una transacción es incluida en un bloque en el blockchain es imposible revertirla. Por lo tanto es muy importante estar 100% seguros de los datos de una transacción antes de enviarla.

Una vez que se envía una transacción esta se valida y en caso positivo se almacena en el grupo de transacciones pendientes.

¿Qué son los bloques?

Los mineros toman algunas de las transacciones pendientes y las agrupan en bloques ordenadas principalmente por la comisión de cada una. Cada bloque debe ser también validado siguiendo un conjunto de procedimientos matemáticos.

Los bloques contienen transacciones ocurridas en un momento dado y cada uno es enlazado encima de otro, de manera similar al problema del Casino sin fichas que mencionamos antes, cada bloque contiene datos cifrados del anterior formando una cadena lógica.

La información de un bloque varía de una moneda a otra, pero típicamente contiene:

  • Altura: la altura en la cadena con respecto al primer bloque.
  • Tamaño: fijo o variable según el protocolo.
  • Volumen total de transacciones, así como la cantidad de comisiones totales.
  • Recompensa del minero por haber generado el bloque.
  • Dificultad que puede variar según el protocolo y las circunstancias de un momento dado.

Blockchain de Bitcoin

Veamos que sucede cada vez que alguien utiliza la red de BTC para enviar dinero:

  1. Supongamos que Alicia quiere enviarle 0.1 BTC a Beto, en este momento se crea una transacción.
  2. La información es enviada a todos los nodos de la red.
  3. Cada nodo valida la transacción y en caso positivo la guarda dentro de su copia de transacciones pendientes.
  4. Los mineros construyen cada uno un bloque candidato con la siguiente información:
    • Datos del último bloque de la cadena
    • Un conjunto de transacciones seleccionadas de entre las pendientes
    • Una transacción adicional donde incluye la suma de las comisiones y la recompensa del bloque
  5. Al igual que vimos en el ejemplo de los Generales Bizantinos, cada minero comienza a buscar un número nonce que al cifrarse con los datos del bloque se obtenga una cierta cantidad de ceros al inicio.
  6. Si un minero consigue una solución entonces agrega su bloque como el último bloque de la cadena en su copia local y transmite los datos del bloque ganador a todos los demás nodos.
  7. Los nodos reciben el último bloque obtenido, validan que efectivamente sea válido y en ese caso lo aceptan como el último bloque de la cadena, actualizan su copia local y comienzan a construir un nuevo bloque candidato.
  8. En ese momento Alicia y Beto reciben una confirmación y Beto recibe 0.1 BTC menos la comisión pagada por la transacción.
  9. Luego cuando se consiga validar el siguiente bloque Alicia y Beto tendrán 2 confirmaciones de su transacción, luego 3 y así sucesivamente. Cada bloque agrega un nivel de seguridad a su transacción.

Acá vemos que hay un tipo de nodos de la red que mantienen copias de toda la base de datos necesaria para operar el sistema, incluyendo las transacciones pendientes y la cadena de bloques. Además todos deben seguir las reglas para actualizar la base de datos. Si alguno quiere hacer trampa y envía información maliciosa el resto de los nodos simplemente lo ignorarán.

Un grupo de mineros con 51% o más de la capacidad de cómputo de la red podrían malversar transacciones o evitar que estas se confirmen, pero esto es cada vez más difícil además que no tiene sentido económico intentar un ataque de esa magnitud.

Es común que los mineros se agrupen en Piscinas de Minería (Mining Pools) para unir esfuerzos y tener ganancias más rápidamente.

La red ajusta automáticamente su nivel de dificultad, si los bloques están tardando mucho tiempo en ser generados entonces se reduce la dificultad, si se están resolviendo muy rápido entonces la dificultad se incrementa.

¿Cómo funciona el Blockchain de Ethereum?

Ethereum es un proyecto inspirado en Bitcoin pero con un objetivo totalmente diferente: ejecutar contratos inteligentes.

Ethereum es mucho más complejo y poderoso que Bitcoin, ya que está pensado como una cadena de uso general que permite encadenar aplicaciones y datos para cualquier tipo de negocios: transferencia de dinero, contratos empresariales, compra y venta de activos, financiamiento de proyectos, etc.

Una participación en un Contrato de Opción es un buen ejemplo de un contrato inteligente, este proceso involucra a un corredor que debe conseguir una oferta que iguale tu opción de compra y una vez que llegue el momento asegurarse de que el acuerdo sea honrado. El Contrato Inteligente se encarga de ejecutese forzando a que se cumplan los acuerdos de manera descentralizada sin la intervención de un tercero.

En este sentido Ethereum no es una base de datos distribuida como Bitcoin, sino más bien una plataforma de computación distribuida, donde cada nodo de la red funciona como una Máquina Virtual de Ethereum (EVM) que puede ejecutar aplicaciones construidas en el lenguaje de programación Solidity.

La unidad básica son las cuentas, el blockchain lleva un control del estado de cada cuenta y todas las transacciones de la red son intercambios de información entre ellas. Existen dos tipos:

  • Cuentas de Propiedad Externas (EOAs): que son controladas por claves privadas y permiten agregar código de programación (DApps) a la red. Los usuarios pueden publicar aplicaciones enviándolas al blockchain con su clave privada.
  • Cuentas de Contrato: son cuentas utilizadas por el sistema para ejecutar las aplicaciones y por lo general no interactúan con humanos, a menos que el código así lo especifique.

El término "contrato inteligente" se refiere al código de programación de una cuenta contrato que se ejecuta cuando se hace referencia a él en una transacción.

La red de Ethereum mantiene también una moneda llamada "Ether", que es la que comúnmente se compra en las casas de cambio. El Ether es utilizado como combustible para que los nodos de Ethereum funcionen.

En resumen, el Blockchain de Ethereum puede ser visto como una cadena de contratos inteligentes que son compilados y ejecutados de manera indetenible, luego de eso se pueden crear transacciones que interactúen con los contratos existentes.

Contrato inteligente "MiCripto"

Un contrato inteligente es una pieza de código de programación, por ejemplo:

Una vez agregado este código al Blockchain de Ethereum, es posible realizar transacciones que interactúen con él.

Más adelante veremos más detalles de Ethereum, pero ya tenemos una idea bastante clara de lo que es el Blockchain y de los diferentes tipos de cadenas que puede haber.

En este momento tanto Bitcoin como Ethereum utilizan la Prueba de Trabajo como método de consenso, sin embargo existen otros métodos que se han desarrollado durante la evolución de las cripto.

Bifuraciones (forks)

Un evento común en la tecnología del Blockchain son las bifurcaciones. Se supone que la cadena de bloques es lineal, sin embargo hay algunos casos en los que se produce ramificaciones o "forks", existen varios tipos:

Bifurcaciones temporales.

Cuando dos o más mineros consiguen una solución a un bloque casi al mismo tiempo, puede suceder que un grupo de nodos esté trabajando con una copia del blockchain distinta a la de otro grupo. La solución a esto consiste en tomar como válida la cadena más larga. Si las cadenas diferentes son del mismo largo, entonces se toma la información de los bloques generados primero. Los bloques de la cadena descartada terminan siendo bloques huérfanos, y eventualmente las transacciones contenidas en ellos son reingresadas a la lista de transacciones pendientes. Es por esto que en la red de Bitcoin usualmente se considera una transacción como irreversible sólo cuando ha alcanzado 6 confirmaciones o más. Este es el mecanismo utilizado para evitar el problema del doble gasto.

Bifurcaciones permanentes.

Es posible que ocurran cambios en el software que maneja el blockchain y que se produzcan modificaciones a la estructura del bloque. En estos casos sucede una bifurcación, debido a que algunos nodos pueden seguir usando el formato del bloque anterior y otros nodos utilicen el nuevo formato.

Existen varios tipos de bifurcaciones de este tipo:

Hardfork, o bifurcación dura.

Ocurre cuando el nuevo software realiza cambios en el formato del bloque que son incompatibles con la versión anterior. De modo que si una parte de la red decide mantenerse en la versión original y otra se actualiza, se produce una bifurcación:

Softfork, o bifurcación suave

También es posible que ocurran actualizaciones que impliquen modificaciones al formato del bloque, pero donde el nuevo formato es compatible con el anterior. De esta manera la cadena de bloques continúa como una sóla línea, pero con dos tipos de bloques coexistiendo en ella:

Mercado

Cotización del Bitcoin

Principales monedas

¿Aprendiste algo?

¡Comparte el conocimiento con tus amigos y gana tokens por compartir!


Próximo Capítulo 5

Métodos de Consenso
Existen diferentes métodos de consenso: la PoW que consiste en invertir gran cantidad de poder de cómputo y electricidad para buscar la solución a una fórmula matemática. La PoS que selecciona de manera determinística ...


¿Qué Opinas?

Deja tus comentarios, preguntas y sugerencias.

 

Esperamos que esta guía sea de utilidad, sin embargo no nos hacemos responsables por el uso que se le dé a esta información, ni tampoco nos hacemos responsables por los contenidos de los sitios web o proyectos aquí mencionados. Por último tampoco ofrecemos garantías de ganancias de ningún tipo, al contrario, advertimos de las posibilidad de riesgo de capital al hacer cualquier tipo de criptoinversión o trading. La información de este sitio no representa una sugerencia de inversión. Los creadores del sitio web poseen una o varias de las monedas mencionadas en este sitio web y es posible que algunos sitios o servicios incluyan enlaces de afiliados que pueden generar beneficios a los creadores de la guía.

Licencia Creative Commons

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial 4.0 Internacional: Puedes usar, copiar o adaptar toda o parte de la obra siempre y cuando lo hagas sin fines comerciales y agregues un enlace a nuestra web.

LaCriptoGuia.org

¿Te ha sido útil la guía?

Colabora para que LaCriptoGuia.org siga funcionando

BTC


ETH


BCH


XRP


DASH


LTC


XMR


DOGE


¡Gracias!