Descifrando el enigma del blockchain en siete pasos - Parte 1
Publicado el

Descifrando el enigma del blockchain en siete pasos - Parte 1

Blockchain, criptomonedas, Dapps, wallets, tokens, NFTs, etc. Son términos que se han vuelto comunes en los últimos años, pero ¿qué es realmente el blockchain? ¿Cómo funciona? La idea de esta serie de articulos (siete en total) es explicar el paradigma del blockchain en siete pasos, de una manera sencilla y práctica, para que puedas entenderlo y aplicarlo en tus proyectos.

¿Qué es la blockchain?

El termino blockchain es un acrónimo de la frase en inglés “block chain”, que significa “cadena de bloques”. En términos simples, un blockchain es una base de datos distribuida, que almacena información de manera segura y confiable, y que es compartida por todos los nodos de la red. La información se almacena en bloques, que son registros de datos que se agregan a la cadena de bloques. Cada bloque contiene información sobre el bloque anterior, y así sucesivamente. La información que se almacena en los bloques puede ser cualquier cosa, desde texto, hasta archivos, hasta datos de una base de datos, hasta código ejecutable, etc. La información que se almacena en los bloques se almacena en forma de hash, que es una cadena de caracteres que representa un valor único. Los bloques se almacenan en una estructura de datos llamada blockchain, que es una lista enlazada de bloques. La blockchain es una estructura de datos que se puede utilizar para almacenar cualquier tipo de información, pero es más común que se utilice para almacenar información financiera, como transacciones de criptomonedas, o información de identidad, como datos biométricos.

¿Cómo funciona la blockchain?

De acuerdo con los autores del artículo Ethereum: A secure decentralised generalised transaction ledger una blockchain se puede entender como una maquina de estados basada en transacciones. Desde las ciencias de la computación una maquina de estados es un modelo matemático que describe el comportamiento de una sistema en términos de una serie de estados y transiciones. En este contexto, estado se refiere a una situación en la que se encuentra un sistema en un momento determinado y transición se refiere al cambio del sistema de un estado a otro en respuesta a un evento o acción (transacciones).

Blockchain

En el caso de una Blockchain, por ejemplo Ethereum, se utiliza una máquina de estados para representar el estado actual de la red (ver Figura 1), es decir, quienes son los nodos que la conforman, cuál es el estado de sus cuentas, cuáles son los contratos activos, etc. Cada transacción en la red es una acción que modifica el estado de la red, por ejemplo, una transacción de transferencia de tokens, una transacción de creación de un contrato, etc. En el formalismo matemático presentado en el artículo: Ethereum: A secure decentralised generalised transaction ledger, una blockchain como una maquina de estados basada en transacciones luce así:

σt+1Υ(σt,T)\begin{equation} \sigma_{t+1} \equiv \Upsilon(\sigma_{t}, T) \end{equation}

En donde σt\sigma_{t} es el estado de la red en el tiempo tt, Υ\Upsilon es la función de transición que describe el comportamiento de la red, y TT es la transacción que se ejecuta en el tiempo tt. Toda esta ecuación nos está diciendo que el estado de la red en el tiempo t+1t+1 es el resultado de ejecutar la función de transición Υ\Upsilon sobre el estado de la red en el tiempo tt y la transacción TT que se ejecuta en el tiempo tt.

¿Cómo se almacena la información en el blockchain?

En la blockchain, la información se almacena en bloques. Las transacciones son recopiladas y agrupadas en bloques. Cada bloque contiene un paquete de datos que incluye información sobre las transacciones realizadas.

Blockchain

Los nuevos bloques son agregados a la blockchain mediante un proceso llamado minería. El proceso de minería consiste en resolver un problema matemático complejo, que requiere de una gran cantidad de recursos computacionales y energéticos por paarte del nodo que lo está creando. Por lo tanto, se necesita de un mecanismo para incentivar a las personas a participar de la red. Cada ve que un nodo crea un nuevo bloque, recibe una recompesa. La recompensa es un incentivo para que los nodos participen de la red, y es una forma de asegurar que la red sea descentralizada.

Cada bloque contiene un número determinado de transacciones. En el caso de Bitcoin, el tamaño mínimo de una transacción es de 83 bytes, lo que permitiría aproximadamente 10,000 transacciones por bloque. Una transacción regular (es decir, de la parte A a la parte B) tiene un tamaño de alrededor de 250 bytes, lo que resulta en alrededor de 4,000 transacciones. El número de transacciones que se pueden incluir en un solo bloque depende del límite de tamaño de un bloque. A partir de 2019, el límite de tamaño para un bloque de Bitcoin era de dos megabytes. Tenga en cuenta que un bloque contiene más información que solo los datos de transacción incluyendo elementos como sellos de fecha y otros datos de referencia.

Por lo tanto, de acuerdo al artículo de Ethereum, un bloque se puede representar de la siguiente manera:

B(,(T0,T1,))\begin{equation} B \equiv (\dots, (T_0, T_1, \dots)) \end{equation}

Esta ecuación representa un bloque como una lista de transacciones (y algunas cosas más que omitiremos por ahora). En la ecuación (2), BB es el bloque, y T0,T1,T_0, T_1, \dots son las transacciones que se incluyen en el bloque.

Como hemos visto ya con el caso de Bitcoin, las blockchain no procesan las transacciones individualmente para actualizar el estado de la red. Por lo tanto la ecuación (1) se puede reescribir para representar mejor este paradigma:

σt+1Π(σt,B)\begin{equation} \sigma_{t+1} \equiv \Pi (\sigma_t, B) \end{equation}

En donde Π\Pi es la función transacción que describe el cambio de estado de la red. En la ecuación (3), σt+1\sigma_{t+1} es el estado de la red en el tiempo t+1t+1, σt\sigma_{t} es el estado de la red en el tiempo tt, y BB es el bloque que se incluye en el tiempo tt. Esta ecuación dice que el estado de la red se actualizará aplicando las transacciones de un bloque al estado actual, produciendo un nuevo estado. Todo este proceso es consolidado en un nuevo bloque que se agrega a la blockchain, de la siguiente manera:

Π(σ,B)Ω(B,Υ(Υ(σ,T0),T1),)\begin{equation} \Pi(\sigma, B) \equiv \Omega(B, \Upsilon(\Upsilon(\sigma, T_0), T_1), \dots) \end{equation}

Cuando el bloque BB es minado, las transacciones T0,T1,T_0, T_1, \dots son aplicadas en secuencia, y el nuevo estado generado por cada una de estas transacciones se pasa como entrada a la siguiente transacción. El resultado final es el nuevo estado de la red. La función Ω\Omega es la block-finalisation state transition function que se encarga de recompensar a los nodos que validan las transacciones y crean nuevos bloques en la blockchain. Esta función determina cómo se distribuyen las recompensas entre los nodos y cómo se actualiza el estado de la blockchain después de que se agregue un nuevo bloque.

En resumen, la ecuación (4) describe la forma como la blockchain funciona. Un nodo mina un bloque, las transacciones que contiene son aplicadas en secuencia modificando el estado de la red, el nuevo estado es agregado a la blockchain, y finalmente el nodo que ha minado el bloque recibe una recompensa.

Blockchain

Imágenes

Referencias

  1. Metaplex Docs
  2. Web3.js
  3. Metaboss