Blockchain como estructura de datos

¡Hola, Habr!



Hoy nos gustaría esbozar un nuevo tema de discusión, examinando brevemente la cadena de bloques desde el punto de vista de la informática, como una de las estructuras de datos. Recientemente, blockchain se ha utilizado cada vez más fuera del segmento de las criptomonedas , y esta tendencia ciertamente merece atención. ¡Hablemos de eso!



La tecnología Blockchain se puede explicar de muchas formas diferentes. Hasta hace poco, blockchain se veía principalmente en términos de criptomonedas. Bitcoin es la primera asociación de blockchain que tenemos muchos de nosotros. Pero almacenar transacciones en criptomonedas es solo uno de los muchos casos de uso de blockchain. En este artículo, retrocederemos desde este punto de vista y consideraremos blockchain en el contexto más general de la informática.



Blockchain es una estructura de datos



Una estructura de datos es una forma de almacenar, organizar y administrar datos. La estructura de datos le permite acceder a estos datos, agregarlos, modificarlos y buscar los datos contenidos en esta estructura. Las estructuras de datos más comunes y básicas incluyen matrices y listas enlazadas .



Formación



La matriz contiene varios elementos enumerados. Pueden ser números, letras, palabras o incluso archivos completos. Gracias a los índices, puede hacer referencia a cada elemento de la matriz. Por lo tanto, si desea cambiar una entrada en la matriz y sabe dónde está, puede acceder a ella instantáneamente .







Matriz unidimensional con seis elementos



Listas vinculadas



Los nodos son elementos de datos incluidos en una lista vinculada. El nodo contiene al menos un objeto de datos y un puntero al siguiente elemento. La función de un puntero es decirle a la computadora dónde está el siguiente elemento de una lista determinada.



Si observa el primer elemento de la lista y desea consultar el segundo, mire el puntero que lo llevará al siguiente nodo. Es más fácil agregar datos a una lista vinculada que a una matriz, ya que necesita expandirse en un nodo, y agregar datos a una matriz aumentará el número de elementos en esta matriz. Pero cuando trabaja con listas vinculadas, no tiene acceso instantáneo a los datos.



Si está buscando un elemento de datos específico en una lista vinculada, primero mire el primer nodo en esta lista, su encabezado... Si este no es el elemento que estaba buscando, siga el puntero que lo lleva al siguiente nodo. Si este nodo no contiene los datos que está buscando, continúe siguiendo los enlaces de un nodo a otro hasta que encuentre los datos que necesita.







Lista vinculada de tres nodos



Blockchain



En el contexto de las estructuras de datos, blockchain se parece más a una lista enlazada. Además, en la cadena de bloques, los datos se dividen en contenedores llamados bloques . Los bloques son bastante similares a los nodos de listas vinculadas. Cada bloque contiene un enlace que es un hash del bloque anterior. Actúa como un enlace al bloque anterior y ayuda a mantener el orden en la cadena de bloques.







La diferencia clave entre blockchain y la lista vinculada es que cada enlace en blockchain es criptográficamente seguro. Es posible que haya escuchado el término "agregar solo" aplicado a la cadena de bloques. Significa que solo puede agregar nuevos datos a la cadena de bloques completando la cadena desde el frente. La validez de los enlaces protegidos se comprueba constantemente. Si fuera posible insertar un bloque malicioso en el medio de la cadena de bloques, por ejemplo, entre los bloques 1 y 3 en el diagrama a continuación, entonces sería posible poner un enlace al bloque 1 anterior, pero no al bloque 3 siguiente.







Cada nuevo bloque se construye sobre el existente, y este procedimiento generalmente se llama confirmación. Cuanto más antiguo sea el bloque, más confirmaciones tendrá. Cada confirmación dificulta la manipulación de los datos del bloque. En el siguiente diagrama, el Bloque 2 tiene una confirmación. Para falsificar los datos del bloque 2, tendrá que volver a crear un bloque válido que contenga un nuevo enlace válido. Después de cada siguiente confirmación, tendrá que volver a crear otro bloque. Por lo tanto, cuanto más antiguo sea el bloque, mayor será la confianza en que no se realizarán cambios en este bloque.



Los enlaces entre bloques dependen no solo del orden de los bloques, sino también de los datos que contiene cada bloque. No es posible agregar o eliminar datos de un bloque en la cadena de bloques. Es en esta propiedad que se basa la confianza de que no pasará nada con los datos colocados en la cadena de bloques. Naturalmente, cualquier falsificación es obvia en la estructura de datos de blockchain. Cualquier cambio realizado en los datos rompe los enlaces a todos los bloques posteriores.



Si bien es imposible eliminar o cambiar datos en la cadena de bloques, es fácil agregar datos a un nuevo bloque adjunto a la cadena. Por ejemplo, se puede agregar una nueva transacción a la cadena de bloques de criptomonedas. La transacción es fácil de verificar porque todas las transacciones anteriores registradas en la red son inmutables. Cuando se requiere una cantidad de X de la dirección Y, el saldo de esta dirección debe tener una cantidad de al menos X.



Las criptomonedas son solo una aplicación particular de la tecnología blockchain. Blockchain se está convirtiendo rápidamente en una opción cada vez más viable para la gestión de la cadena de suministro, la gestión de flotas y otros fines.



Conclusión



Blockchain es un método de almacenamiento de datos aplicable en informática. Los elementos de la cadena de bloques, sus bloques, están vinculados criptográficamente entre sí. No es posible cambiar los datos después de que se hayan escrito en el bloque. Este es el valor de la cadena de bloques. Es un registro inmutable en el que puede almacenar datos de forma segura mientras opera en un entorno que no es de confianza.



Me gustaría terminar este artículo con un tweet que contiene la quintaesencia de las propiedades de la tecnología blockchain e ilustra su lugar entre otras estructuras de datos.



, , .



, , . , – — @NickSzabo4



All Articles