Cómo funciona la cadena de bloques

Completado

Después de repasar los conceptos básicos de la cadena de bloques, vamos a ver cómo funciona por dentro. Con esta información podrá decidir si la cadena de bloques valdría para su caso.

¿Cómo se distribuyen los datos?

En nuestro escenario, hay varias empresas. Podríamos tener una base de datos centralizada en la empresa de procesamiento de lácteos. Pero ningún participante quiere ser la autoridad central. Podríamos usar un libro de contabilidad distribuida de la cadena de bloques. Al usar la cadena de bloques, ya no se necesita una autoridad central. Además, cada participante con un nodo de la cadena de bloques tiene una copia del libro de contabilidad para que pueda realizar su propia auditoría e integración con sus sistemas. Pero no hay ningún requisito para que cada empresa tenga su propio nodo. Los nodos se pueden compartir entre socios.

Cada nodo está conectado a otros nodos mediante una red de cadena de bloques. Por ejemplo, la granja Dalia Pelayo, la fábrica de helados y las heladerías administran cada una su propio nodo. Contoso West y Contoso East son asociados independientes que comparten la misma empresa principal. Contoso tiene un nodo. No es necesario que haya una relación de uno a uno entre los nodos y las empresas.

Several participant blockchain nodes connected by a network.

Cambiar el estado

Los datos de una cadena de bloques representan el estado. Este es el motivo por el que los tokens digitales como la criptomoneda funcionan así de bien con la cadena de bloques. Piense en la propiedad de una moneda física: una moneda solo puede estar en el bolsillo de una persona a la vez. Si la moneda está en su bolsillo, usted tiene la propiedad de la moneda. Si le da la moneda a su amigo, el estado cambia de modo que su amigo es quien tiene la propiedad de la moneda. En nuestro escenario, los envíos se desplazan a través de la cadena de suministro. La responsabilidad sobre el producto debe transferirse. Los datos que nos interesan son la parte responsable, la temperatura y si el producto cumple los requisitos.

La cadena de bloques usa las transacciones para cambiar el estado de los datos de un valor a otro. Por ejemplo, necesitamos saber si el helado se almacena a una temperatura inferior a la de congelación. Durante el transporte del helado, se notifica periódicamente la temperatura registrada por un sensor térmico. La temperatura notificada es una transacción que se envía a un nodo de transacción de la cadena de bloques.

Example transaction from an IoT temperature sensor. The transaction sets the temperature to -2° celsius in the ledger.

En el escenario del helado, cuando se envía un envío a través de la cadena de suministro, se envía una transacción cada vez que cambia el estado. Por ejemplo, en la imagen vemos las transacciones para un envío típico a la fábrica de helados. Cada transacción refleja un cambio en la parte responsable o en la temperatura. El estado actual del libro de contabilidad son las transacciones que se aplican en orden.

List of transactions in order that change the responsible party and temperature. The combination of transactions result in a ledger state based on the order of transaction changes.

Al enviar una transacción, se envía a un nodo de transacción de la cadena de bloques. Supongamos que la granja Dalia Pelayo realiza un envío de leche con el transportista Contoso West Shipping. El sistema de envíos de la granja Dalia Pelayo envía una transacción a su nodo de la cadena de bloques. La transacción cambia la responsabilidad del envío de la granja al transportista Contoso West Shipping.

A transaction from the farmer being sent to the farmer's blockchain node.

La cadena de bloques envía la transacción a lo largo de la red de la cadena de bloques. Cada nodo recibe una copia de la transacción.

A transaction being copied to all participant blockchain node peers.

Cada nodo procesa la transacción, pero sigue siendo necesaria su validación mediante un mecanismo de consenso. El consenso permite mantener la coherencia y la confianza para el libro de contabilidad distribuida.

¿Cómo puede confiar en que los datos de contabilidad son coherentes?

En una red distribuida, es difícil determinar qué es cierto, ya que los cambios en los datos deben realizarse en todos los nodos. ¿Qué ocurre si el nodo de la fábrica de helados no recibe una transacción de envío? ¿Cómo pueden saber si se ha enviado la leche de la granja? ¿Qué ocurre si se produce una avería en el camión refrigerado de la empresa de transporte y la leche se echa a perder? ¿Podría la empresa de transporte modificar el libro de contabilidad para evitar la responsabilidad?

La cadena de bloques usa un mecanismo de consenso para validar y aceptar los datos en todos los nodos de la cadena de bloques. El consenso ofrece una manera de que todos los nodos descentralizados entren en el mismo estado. Al transferir el valor o la responsabilidad, el orden es importante. Por ejemplo, si transfiere la propiedad de un automóvil a un amigo, no puede transferir también la propiedad a un compañero de trabajo. Este problema se conoce como el problema de doble gasto que se soluciona mediante el consenso. El consenso garantiza el orden correcto de las transacciones y la integridad de la cadena de bloques. Como parte del consenso, un grupo de transacciones se valida como un bloque y la red debe aceptar si el bloque debe incluirse en la cadena de bloques.

Consensus mechanism agrees on validated transactions across nodes. Each blockchain node writes the latest validated block to the blockchain.

Hay varios algoritmos de consenso de la cadena de bloques, entre los que se incluyen prueba de trabajo, prueba de participación y prueba de autoridad. Cada algoritmo resuelve la coherencia de manera diferente. En términos simples, el consenso ofrece una manera de que el libro de contabilidad distribuida tenga un estado común.

¿Qué es un bloque?

Un bloque es un clúster de datos dentro de la cadena de bloques que almacena la información de la transacción. El número de transacciones de un bloque suele basarse en el tiempo. Por ejemplo, en la imagen vemos un bloque que contiene las transacciones que se produjeron en los últimos diez minutos.

Example of several transactions representing a block. The order of transactions result in a given state.

A través del consenso, los bloques validados se agregan a la cadena de bloques en cada nodo. Como todos los nodos tienen los mismos bloques en la cadena, el libro de contabilidad es coherente en toda la red. Como resultado, todos los nodos contienen los mismos datos validados en un orden acordado.

¿Cómo puede tener la certeza de que el libro de contabilidad es inmutable?

Podría pensar que si tiene el control del libro de contabilidad en su nodo, podría simplemente cambiar los datos de la copia. ¿Cómo puede ser inmutable?

La cadena de bloques usa un hash criptográfico para crear un vínculo entre los bloques. Al vincular los bloques, el orden de las transacciones se puede acordar a través del algoritmo de consenso. Un hash criptográfico es un algoritmo que asigna datos de un tamaño arbitrario a una representación de bits de tamaño fijo. Puede considerarlo como una huella digital. Bitcoin usa el algoritmo hash SHA-256. Si usa una función hash SHA-256 en un documento de 100 páginas, el resultado de la función es un valor hash de 256 bits. Si cambia un solo carácter del documento y vuelve a generar el hash, el resultado es un valor hash distinto de 256 bits. Ahora supongamos que usa un bloque como entrada para la función hash. El resultado es un valor hash único para los datos del bloque.

A block is sent through a hash function and a cryptographic hash is generated.

La cadena de bloques usa códigos hash para detectar si se han realizado cambios en los bloques. Al incluir el valor hash del bloque anterior mientras se genera el hash del bloque siguiente, los bloques se encadenan entre sí a través de códigos hash.

A block includes the previous block's hash when generating it's hash. Including the previous hash links the blocks together.

La cadena de bloques proporciona confianza mediante el uso de códigos hash para demostrar que el historial de datos no ha cambiado. Al incluir el hash del bloque anterior durante la creación de un nuevo bloque, se crea una cadena inmutable de transacciones en orden.

Three blocks linked together by the previous block's hash

Si se modifica algún bloque en la cadena, el hash de los bloques posteriores es diferente. Como resultado, la validación detecta la discrepancia.

Lógica de confianza

La cadena de bloques permite almacenar datos coherentes y en los que se puede confiar. ¿Cómo se agrega la lógica que se ejecuta por igual en cada nodo?

En nuestro escenario, se necesita lógica para transferir la responsabilidad del producto de un participante a otro. También es necesario usar datos del sensor de temperatura de IoT para saber si la temperatura es demasiado alta.

Una aplicación descentralizada (DApp) es una aplicación de un sistema informático distribuido. En este módulo, nos centraremos en el uso del protocolo Ethereum de cadena de bloques. Las DApps de Ethereum se denominan contratos inteligentes. Un contrato inteligente contiene lógica que se ejecuta como parte de una transacción. En Ethereum, puede programar la lógica con un lenguaje de programación denominado Solidity.

Los contratos inteligentes se implementan en la cadena de bloques y se hace referencia a ellos mediante una dirección. Para usar un contrato inteligente, cree una instancia. Una instancia de contrato inteligente contiene datos de estado y lógica de programa. En nuestro escenario, una instancia de contrato inteligente contiene datos como, por ejemplo, el participante responsable, la ubicación y si la temperatura del producto no cumple las condiciones. Podemos ejecutar funciones para transferir la responsabilidad o recibir la telemetría de la temperatura de la instancia.

Components of a smart contract include address, logic, and data.

Cuando se transfiere a otra parte la responsabilidad de un producto, se ejecuta una transacción. La lógica de contrato inteligente actualiza los datos de estado. En nuestro escenario de los helados, el sistema de envío de la fábrica de helados crea una instancia de contrato inteligente para un nuevo envío de helados. El sistema de envío de la fábrica envía una transacción que llama a la función TransferResponsibility para transferir la responsabilidad del envío al transportista Contoso East Shipping. La red de cadena de bloque envía la transacción a todos los nodos. La lógica de contrato inteligente se ejecuta en cada nodo.

A smart contract transaction is sent to one node and copied to the other peer nodes.

¿Qué ocurre si durante el transporte se produce una avería en la refrigeración y la temperatura de los helados está por encima de la de congelación? Un sensor térmico de IoT supervisa la temperatura de los helados y envía transacciones periódicamente. Si la temperatura está por encima de la de congelación, la lógica de contrato inteligente marca el envío con un estado de incumplimiento.

A smart contract transaction executes logic to set the shipment to out of compliance due to the temperature. The transaction is copied and executed on other peer nodes.

Como la transacción está incluida en una cadena de bloques, hay un registro inmutable de cuando el envío tenía el estado de incumplimiento. La heladería puede rechazar la entrega y evitar así problemas de seguridad alimentaria.

Al igual que ocurre con los datos de la cadena de bloques, un contrato inteligente es inmutable. Una vez implementado, no se puede cambiar la lógica. Por tanto, puede confiar en que la lógica de contrato inteligente siempre se ejecuta en todos los nodos. Para cualquier cambio en el código es necesario implementar un nuevo contrato inteligente en una nueva dirección.