# Cadena de bloques

Una cadena de bloques, conocida en inglés como blockchain, es una estructura de datos cuya información se agrupa en conjuntos (bloques) a los que se les añade metainformación relativa a otro bloque de la cadena anterior en una línea temporal para hacer un seguimiento seguro a través de grandes cálculos criptográficos. De esta forma, gracias a técnicas criptográficas, la información contenida en un bloque solo puede ser repudiada o editada modificando todos los bloques anteriores. Esta propiedad permite su aplicación en un entorno distribuido de manera que la estructura de datos blockchain puede ejercer de base de datos pública no relacional que contenga un histórico irrefutable de información.
En la práctica ha permitido, gracias a la criptografía asimétrica y las funciones de resumen o hash, la implementación de un registro contable (ledger) distribuido que permite soportar y garantizar la seguridad de dinero digital. Siguiendo un protocolo apropiado para todas las operaciones efectuadas sobre la blockchain, es posible alcanzar un consenso sobre la integridad de sus datos por parte de todos los participantes de la red sin necesidad de recurrir a una entidad de confianza que centralice la información. Por ello se considera una tecnología en la que la "verdad" (estado fiable del sistema) es construida, alcanzada y fortalecida por los propios miembros; incluso en un entorno en el que exista una minoría de nodos en la red con comportamiento malicioso (nodos sybil) dado que, en teoría, para comprometer los datos, un atacante requeriría de una mayor potencia de cómputo y presencia en la red que el resultante de la suma de todos los restantes nodos combinados. Por las razones anteriores, la tecnología blockchain es especialmente adecuada para escenarios en los que se requiera almacenar de forma creciente datos ordenados en el tiempo, sin posibilidad de modificación ni revisión y cuya confianza pretenda ser distribuida en lugar de residir en una entidad certificadora. Este enfoque tiene diferentes aspectos:
* Almacenamiento de datos: se logra mediante la replicación de la información de la cadena de bloques
* Transmisión de datos: se logra mediante redes de pares.
* Confirmación de datos: se logra mediante un proceso de consenso entre los nodos participantes. El tipo de algoritmo de consenso más utilizado es el de prueba de trabajo en el que hay un proceso abierto competitivo y transparente de validación de las nuevas entradas llamada minería.
El concepto de cadena de bloque fue aplicado por primera vez en 2009 como parte de Bitcoin.
Los datos almacenados en la cadena de bloques normalmente suelen ser transacciones (p. ej. financieras) por eso es frecuente llamar a los datos transacciones. Sin embargo, no es necesario que lo sean. Realmente podríamos considerar que lo que se registran son cambios atómicos del estado del sistema. Por ejemplo una cadena de bloques puede ser usada para estampillar documentos y asegurarlos frente a alteraciones.

## Historia

El criptógrafo David Chaum propuso por primera vez un protocolo similar a la cadena de bloques en su disertación de 1982 "Computer Systems Established, Maintained, and Trusted by Mutually Suspicious Groups". En 1991, Stuart Haber y W. Scott Stornetta describieron otros trabajos sobre una cadena de bloques criptográficamente segura. y querían implementar un sistema en el que las marcas de tiempo de los documentos no pudieran ser manipuladas. En 1992, Haber, Stornetta y Dave Bayer incorporaron árboles de Merkle al diseño, lo que mejoró su eficiencia al permitir reunir varios certificados de documentos en un solo bloque. Bajo su empresa Surety, sus hashes de certificados de documentos se han publicado en The New York Times cada semana desde 1995.
El primer blockchain fue conceptualizado por una persona (o grupo de personas) conocida como Satoshi Nakamoto en 2008. Nakamoto mejoró el diseño de manera importante utilizando un método similar al Hashcash para sellar el tiempo de los bloques sin requerir que sean firmados por una parte de confianza e introduciendo un parámetro de dificultad para estabilizar la tasa con la que los bloques se añaden a la cadena. El diseño fue implementado al año siguiente por Nakamoto como un componente central de la criptodivisa bitcoin, donde sirve como el libro de contabilidad público para todas las transacciones en la red.
En agosto de 2014, el tamaño del archivo del blockchain de bitcoin, que contiene los registros de todas las transacciones que han ocurrido en la red, alcanzó los 20 GB (gigabytes). En enero de 2015, el tamaño había crecido a casi 30 GB, y de enero de 2016 a enero de 2017, el blockchain de bitcoin creció de 50 GB a 100 GB de tamaño. El tamaño había superado los 200 GB a principios de 2020.
Según Accenture, una aplicación de la teoría de la difusión de las innovaciones sugiere que las cadenas de bloques alcanzaron una tasa de adopción del 13,5% dentro de los servicios financieros en 2016, alcanzando por tanto la fase de adopción temprana. Los grupos comerciales de la industria se unieron para crear el Foro Global de Blockchain en 2016, una iniciativa de la Cámara de Comercio Digital.

## Aplicaciones

El concepto de cadena de bloques se utiliza en los siguientes campos:
* En el campo de las criptomonedas, la cadena de bloques se usa como notario público no modificable de todo el sistema de transacciones a fin de evitar el problema de que una moneda se pueda gastar dos veces. Por ejemplo es usada en Bitcoin, Cardano, Ethereum, Dogecoin y Litecoin, aunque cada una con sus particularidades.
* En el campo de las bases de datos de registro de nombres la cadena de bloques se usa para tener un sistema de notario de registro de nombres de tal forma que un nombre solo pueda ser utilizado para identificar el objeto que lo tiene efectivamente registrado. Es una alternativa al sistema tradicional de DNS. Por ejemplo es usada en Namecoin.
* Uso como notario distribuido en distintos tipos de transacciones haciéndolas más seguras, baratas y rastreables. Por ejemplo se usa para sistemas de pago, transacciones bancarias (dificultando el lavado de dinero), envío de remesas, préstamos y en los sistemas de gestión de activos digitales puede ser usado con distintos propósitos como la toma de decisiones en las organizaciones de forma anónima.Proceso de aplicación de Blockchain en una organización para la toma de decisiones. Fuente: Adaptado de Sáenz-Royo y Fleta-Asín (2023).
* Es utilizado como base de plataformas descentralizadas que permiten soportar la creación de acuerdos de contrato inteligente entre pares. El objetivo de estas plataformas es permitir a una red de pares administrar sus propios contratos inteligentes creados por los usuarios. Primero se escribe un contrato mediante un código y se sube a la cadena de bloques mediante una transacción. Una vez en la cadena de bloques el contrato tiene una dirección desde la cual se puede interactuar con él. Ejemplos de este tipo de plataformas son Cardano, Ethereum y Ripple.
* Es utilizado en la contratación pública, donde puede ayudar a incrementar la transparencia en las licitaciones.* Implementación del componente criptográfico llamado Bulletin Boards usado, entre otros, en sistemas de voto electrónico (como por ejemplo ha implementado la empresa energética española Iberdrola en su última Junta General de Accionistas), creación de registros, subastas y foros de discusión.
* Se utiliza para el almacenamiento en la nube, por ejemplo, permite la creación de nodos en diferentes puntos geográficos que son capaces de resistir la caída de cualquier servidor.
* Es utilizado para proporcionar un sistema único seguro e inmutable que supone la solución óptima para el problema de la suplantación de las identidades digitales.

## Clasificación
### Según el acceso a los datos

Las cadenas de bloques se pueden clasificar basándose en el acceso a los datos almacenados en la misma:
* Cadena de bloques pública: es aquella en la que no hay restricciones ni para leer los datos de la cadena de bloques (los cuales pueden haber sido cifrados) ni para enviar transacciones para que sean incluidas en la cadena de bloques. En ellas es fácil entrar y salir, son transparentes, están construidas con precaución para la operación en un entorno no confiable. Son ideales para uso en aplicaciones totalmente descentralizadas como por ejemplo para el Internet.
* Cadena de bloques privada: es aquella en la que tanto los accesos a los datos de la cadena de bloque como el envío de transacciones para ser incluidas, están limitadas a una lista predefinida de entidades.
Ambos tipos de cadenas deben ser considerados como casos extremos pudiendo haber casos intermedios.

### Según los permisos

Las cadenas de bloques se pueden clasificar basándose en los permisos para generar bloques en la misma:
* Cadena de bloques sin permisos: es aquella en la que no hay restricciones para que las entidades puedan procesar transacciones y crear bloques. Este tipo de cadenas de bloques necesitan tókenes nativos para proveer incentivos que los usuarios mantengan el sistema. Ejemplos de tókenes nativos son los nuevos bitcoines que se obtienen al construir un bloque y las comisiones de las transacciones. La cantidad recompensada por crear nuevos bloques es una buena medida de la seguridad de una cadena de bloques sin permisos.
* Cadena de bloques con permisos: es aquella en la que el procesamiento de transacciones está desarrollado por una predefinida lista de sujetos con identidades conocidas. Por ello generalmente no necesitan tókenes nativos. Los tókenes nativos son necesarios para proveer incentivos para los procesadores de transacciones. Por ello es típico que usen como protocolo de consenso prueba de participación.

### Posibles combinaciones de acceso y permisos

Las posibles combinaciones de ambos tipos de características son:
* Cadenas de bloques públicas sin permisos. Un ejemplo de estas es Bitcoin. Como no es posible la existencia de cadenas de bloques privadas sin permisos, a estas también se las llama simplemente cadenas de bloques sin permisos.
* Cadenas de bloques públicas con permisos. Un ejemplo de estas son las cadenas laterales federadas. Estas cadenas no pueden tener ataques Sybil, por lo que en principio poseen un grado más alto de escalabilidad y flexibilidad frente a las públicas sin permisos.
* Cadenas de bloques privadas con permisos.
    Esta combinación es posible ya que hay distintas formas de acceder a los datos de la cadena:
   * Leer las transacciones de la cadena de bloques, quizás con algunas restricciones (p. ej. un usuario puede tener acceso solo a las transacciones en las que está involucrado directamente)
   * Proponer nuevas transacciones para la inclusión en la cadena de bloques.
   * Crear nuevos bloques de transacciones y añadirlo a la cadena de bloques.
    La última forma de acceso está restringida para cierto conjunto limitado de entidades. Sin embargo las otras dos formas de acceso no tienen por qué estar restringidas. Por ejemplo una cadena de bloques para entidades financieras sería una cadena con permisos pero podría:
   * Garantizar el acceso de lectura (quizá limitada) para transacciones y cabeceras de bloques para sus clientes con el objetivo de proveer una tecnológica, transparente y fiable forma de asegurar la seguridad de los depósitos de sus clientes.
   * Garantizar acceso de lectura completo a los reguladores para garantizar el necesario nivel de cumplimiento.
   * Proveer a todas las entidades con acceso a los datos de la cadena de bloques una descripción exhaustiva y rigurosa del protocolo, el cual debería contener explicaciones de todas las posibles interacciones con los datos de la cadena de bloques.

### Según modelo de cambio de estado

Las cadenas de bloques también se pueden clasificar según el modelo de cambio de estado en la base de datos en:
* Basado en el gasto de salidas de transacciones, también llamado modelo UTXO (en referencia a los UTXO de Bitcoin). En ellas cada transacción gasta salidas de transacciones anteriores y produce nuevas salidas que serán consumidas en transacciones posteriores. A este tipo de cadenas de bloques pertenecen por ejemplo las de Bitcoin, R3, Blockstream, BOSCoin y Qtum. Este enfoque tiene ventajas como:
** En la propia estructura de la cadena existe una prueba de que nunca se puede gastar dos veces ya que cada transacción prueba que la suma de sus entradas es más grande que la suma de sus salidas.
** Cada transacción puede ser procesada en paralelo porque son totalmente independientes y no hay conflictos en las salidas.
    Sin embargo el problema de este tipo de cadenas es que solo son utilizables para aplicaciones donde cada salida es propiedad de uno y solo un individuo como por ejemplo es el caso de las monedas digitales. Una salida multipropietario sería muy lenta y no sería eficiente para aplicaciones de propósito general. Por ejemplo, supongamos un contrato inteligente que implementa un contador que puede ser incrementado. Imagina que hay algún incentivo económico para que cada nodo incremente en uno el contador, y que hay 1000 nodos activamente intentado incrementarlo. Usando este modelo de cadena de bloques tendríamos una salida con el valor del contador que sería solicitada por muchos nodos. Finalmente, un nodo tendría éxito y produciría una transacción con una nueva salida con el contador incrementado en una unidad más. El resto de los nodos estarían forzados a reintentar hasta que su transacción sea aceptada. Este sistema es muy lento e ineficiente. Esto se debe a que aun cuando se realiza la transacción se bloquea la salida, se realiza una transformación y finalmente se produce la nueva salida. Está claro que sería óptimo si se realizará todo de una sola vez y se produjera directamente el estado resultante. Además, el problema puede estar no solo en el tiempo de la transacción, sino también en el de proceso. Supongamos que el contador tiene adjunto un buffer de 1MB cuyo valor cambia de forma determinista cada vez que el contador cambia. Se tendría que procesar 1MB cada vez que realizara una transacción
* Basado en mensajes. En este caso, la cadena de bloques representa un consenso sobre el orden de los mensajes y el estado es derivado de forma determinista a partir de estos mensajes. Este enfoque es utilizado por las cadenas de bloques de Steem y Bitshares. Por ejemplo, para implementar un contador cada usuario debería simplemente firmar un mensaje pidiendo el incremento en uno. No se necesita saber el estado actual del contador para que el mensaje sea válido. En este modelo si 1000 nodos envían la petición al mismo tiempo, el productor del bloque podría agregar todas las peticiones en un bloque y en un solo paso el contador pasaría de valer de cero a valer 1000. Una aplicación del mundo real que aprovecharía las cualidades de este modelo sería el siguiente:
       Se emite una orden de compra de productos financieros indicando un precio máximo y un volumen concreto. A partir de ahí hay una competición sobre esa salida entre los participantes que quieren la solicitud al mismo tiempo. Supongamos que se desea realizar la transacción de forma que sea lo más beneficiosa posible realizando una subasta a la baja para que la solicitud compre activos por el menor precio.

## Características clave de la red blockchain

* Consenso: Para que una transacción sea válida, todos lo participante (o la mayoría) deben de estar de acuerdo con su validez.
* Procedencia: Los participantes saben de donde viene el eslabón y como ha cambiado su propietario con el tiempo.
* Inmutabilidad: Ningún participante puede modificar la lista de registros una vez que se haya guardado en la cadena. Si una transacción es errónea, se debe hacer una nueva para corregirla, tras lo cual ambas transacciones serán visibles.
* Finalidad: Un eslabón dirige a una sola cadena para determinar la propiedad de un activo o el final de una transacción.

## Cadena lateral

Una cadena lateral, en inglés sidechain, es una cadena de bloques que valida datos desde otra cadena de bloques a la que se llama principal. Su utilidad principal es poder aportar funcionalidades nuevas, las cuales pueden estar en periodo de pruebas, apoyándose en la confianza ofrecida por la cadena de bloques principal. Las cadenas laterales funcionan de forma similar a como hacían las monedas tradicionales con el patrón oro.
Un ejemplo de cadena de bloques que usa cadenas laterales es Lisk. Debido a la popularidad de Bitcoin y la enorme fuerza de su red para dar confianza mediante su algoritmo de consenso por prueba de trabajo, se quiere aprovechar como cadena de bloques principal y construir cadenas laterales vinculadas que se apoyen en ella. Una cadena lateral vinculada es una cadena lateral cuyos activos pueden ser importados desde y hacia la otra cadena. Este tipo de cadenas se puede conseguir de dos formas:
* Vinculación federada, en inglés federated peg. Una cadena lateral federada es una cadena lateral en la que el consenso es alcanzado cuando cierto número de partes están de acuerdo (confianza semicentralizada). Por tanto tenemos que tener confianza en ciertas entidades. Este es el tipo de cadena lateral Liquid, de código cerrado, propuesta por Blockstream.
* Vinculación SPV, en inglés SPV peg donde SPV viene de simplified payment verification. Usa pruebas SPV. Esencialmente una prueba SPV está compuesta de una lista de cabeceras de bloque que demuestran prueba de trabajo y una prueba criptográfica de que una salida fue creada en uno de los bloques de la lista. Esto permite a los verificadores chequear que cierta cantidad de trabajo ha sido realizada para la existencia de la salida. Tal prueba puede ser invalidada por otra prueba demostrando la existencia de una cadena con más trabajo la cual no ha incluido el bloque que creó la salida. Por tanto no se requiere confianza en terceras partes. Es la forma ideal. Para conseguirla sobre Bitcoin el algoritmo tiene que ser modificado y es difícil alcanzar el consenso para tal modificación. Por ello se usa con bitcóin la vinculación federada como medida temporal

## Aspectos jurídicos de las cadenas de bloques y Bitcoin

El uso de una cadena de bloques en la práctica ha permitido resolver dos problemas relacionados con el intercambio de activos sin una entidad certificadora de confianza:
* Evitar el problema del doble gasto, es decir evita la falsificación y que una misma moneda pueda ser gastada dos veces.
* Conseguir la descentralización de los pagos electrónicos ya que se garantiza la realización segura de pagos y cobros directos entre particulares por vía electrónica.
Además, la confianza es otra de las características intrínsecas del sistema. Desde el punto de vista jurídico el bitcoin sería un bien patrimonial, privado, incorporal, digital, en forma de unidad de cuenta, creado mediante un sistema informático y utilizado como medida común de valor por acuerdo de los usuarios del sistema. Es un bien mueble, fungible, identificable e irrepetible pero divisible. Pero no es dinero, no es dinero electrónico ni tiene valor mobiliario, se trataría de «bienes patrimoniales que son tomados como medida común de valor en sistemas de intercambio económico, cerrados, cooperativos y descentralizados, ajenos al dinero fiduciario estatal, y basados en la confianza y acuerdo de los usuarios del sistema». Para González Granado el bitcoin sin regulación no se constituirá en una moneda de uso general como medio de pago.

## Ética en las cadenas de bloques
### Seguridad y confianza

La ética de la tecnología blockchain se enfoca en su capacidad para proporcionar seguridad y confianza a los usuarios, gracias a su transparencia y su imposibilidad de modificar los datos una vez que se han registrado en la cadena de bloques.
En primer lugar, la transparencia de la tecnología blockchain se debe a que todas las transacciones y operaciones realizadas en la red son públicas y visibles para cualquier usuario. Esto implica que los datos son accesibles y verificables por cualquier persona, lo que aumenta la confianza de los usuarios en la integridad del sistema y la transparencia en las transacciones.
Además, la tecnología blockchain es inmutable, lo que significa que los datos una vez registrados en la cadena de bloques no pueden ser alterados o eliminados. Esto garantiza que la información almacenada en la cadena de bloques sea confiable y precisa, y que no haya manipulación de datos por parte de terceros.
La tecnología blockchain se puede considerar ética ya que protege la privacidad y la integridad de los datos de los usuarios, evitando fraudes y robos de información, lo que fomenta la confianza en la red y en las operaciones realizadas en ella.

### Lucha contra la falsificación

El blockchain, una tecnología de registro distribuido, se ha establecido como una herramienta valiosa para combatir la falsificación y el fraude. Una de las características clave del blockchain es su inmutabilidad de los datos, lo que significa que una vez que se registra una transacción en la cadena de bloques, no se puede alterar o eliminar. Esto garantiza que los datos y transacciones sean auténticos y fiables, lo que a su vez conduce a una mayor eficiencia y seguridad en los procesos de negociación y en la cadena de suministro empresarial.
En la lucha contra la falsificación y el fraude, el blockchain también ha demostrado ser útil en la protección de los derechos de autor, como obras de arte y medicamentos. Al registrar la información de estos productos en la cadena de bloques, se puede garantizar su autenticidad y proteger a los consumidores de posibles fraudes.
Se podría decir que el blockchain ofrece una solución ética para abordar la falsificación y el fraude al garantizar la autenticidad y fiabilidad de los datos y transacciones. Esto tiene un impacto positivo en la sociedad al brindar mayor seguridad y protección a los consumidores y empresas.

### Responsabilidad y gobernanza

La gobernanza en blockchain se refiere a la forma en que se toman decisiones y se resuelven conflictos dentro de la red. En general, debe ser justa, transparente y democrática, para garantizar la participación equitativa de los usuarios y la toma de decisiones en beneficio del bien común.
Existen diferentes modelos de gobernanza en blockchain. Uno de los más comunes es el modelo descentralizado, en el que las decisiones se toman colectivamente por los usuarios de la red. Cada usuario tiene un voto y las decisiones se toman por mayoría, lo que promueve la participación democrática y la igualdad de todos los usuarios.
Otro modelo es el delegado, en el que un grupo de usuarios es elegido para tomar decisiones en nombre de la comunidad. Los usuarios eligen a los delegados por votación y estos tienen la responsabilidad de tomar decisiones en beneficio del bien común. La transparencia en la toma de decisiones es esencial para garantizar que los delegados actúen en beneficio de la comunidad y no en sus propios intereses.
En algunos casos, la gobernanza en blockchain puede ser automatizada mediante el uso de contratos inteligentes. Estos programas se ejecutan automáticamente en la red y siguen ciertas reglas para tomar decisiones. Por ejemplo, pueden utilizarse para distribuir recompensas a los nodos que realizan tareas específicas. Este modelo promueve la transparencia y la imparcialidad en la toma de decisiones.

### Impacto medioambiental

La ética ambiental del blockchain se centra en los efectos ambientales de la tecnología blockchain en la gestión y compartición de información. El blockchain puede reducir el impacto medioambiental mediante la gestión eficiente de la energía renovable. Sin embargo, la minería de criptomonedas conlleva un alto consumo de energía, lo que plantea preocupaciones éticas y ambientales. Además, la producción y eliminación de los equipos utilizados para la minería también son problemáticas. Se necesitan soluciones más sostenibles para abordar el impacto ambiental del blockchain y se deben considerar las implicaciones éticas al utilizar la tecnología para otros fines.

### Desafíos éticos futuros

Como una tecnología en constante evolución y expansión, enfrenta importantes desafíos éticos que deben ser abordados para garantizar su uso responsable y sostenible en el futuro. Uno de los mayores desafíos éticos es el riesgo de la creación de monopolios. Los participantes con mayor poder de cómputo y recursos pueden dominar la validación de transacciones y la creación de bloques, lo que podría limitar la participación y descentralización en la red.
Otro desafío ético importante es la gestión de datos personales y privacidad. En particular, en aplicaciones que involucren información sensible, como la salud y las finanzas, esta tecnología debe encontrar formas de garantizar la privacidad y protección de los datos personales mientras mantiene la transparencia y la integridad de la información.
Además, como se ha mencionado en el apartado anterior, el impacto ambiental del blockchain es también un tema ético importante. Debido al alto consumo de energía de las operaciones de minería y validación de transacciones, es necesario encontrar soluciones sostenibles para el uso de energía y para mitigar el impacto ambiental del blockchain.
Es importante que los desarrolladores, usuarios y reguladores del blockchain trabajen juntos para abordar estos desafíos éticos. Esto garantizará que la tecnología del blockchain pueda ser utilizada de manera responsable y sostenible en el futuro, y que su impacto en la sociedad sea positivo y beneficioso para todos los involucrados.