Traducción al español de A Database is not a Blockchain
Publicado por Cardanians en su blog de Medium, el 31 de Octubre de 2019.
Nuestro futuro descentralizado
A menudo se dice que la cadena de bloques es una base de datos lenta y costosa. Además, no puede escalar bien. Así que no hay razón para usarla para nada más que para Bitcoin.
Nada de eso es una afirmación correcta. La cadena de bloques puede ser un almacenamiento de datos escalable, rápido y económico. Bueno, la cadena de bloques nunca será tan rápida como una base de datos tradicional. Sin embargo, una cadena de bloques posee algunas ventajas sobre una base de datos, y tiene sentido hablar de ellas.
En el artículo, abordaremos qué es exactamente la cadena de bloques desde la perspectiva de los datos, y luego echaremos un vistazo a las diferencias más importantes entre una cadena de bloques y una base de datos.
Cadena de bloques
Desde el punto de vista del almacenamiento de datos, una cadena de bloques es una forma de almacenar datos en bloques. Es una estructura de datos muy similar a una lista enlazada.
Listas enlazadas
Una lista enlazada es una estructura de datos lineal donde cada elemento es un objeto separado. Cada elemento de una lista consta de dos elementos: los datos y una referencia al elemento siguiente. El último nodo tiene una referencia a null (nulo). El punto de entrada en una lista enlazada se llama la cabecera de la lista.
La cadena de bloques añade una característica adicional, y es la protección contra la manipulación de su historial. El primer estudio sobre una cadena de bloques protegida criptográficamente fue descrito en 1991 por los autores Stuart Haber y W. Scott Stornetta. Querían implementar un sistema en el que las marcas de tiempo de los documentos no pudieran ser alteradas. En 1992, Bayer, Haber y Stornetta incorporaron árboles de Merkle al diseño, lo que mejoró su eficiencia, al permitir que varios certificados de documentos se recopilaran en un solo bloque. Nótese que no utilizaron el término “blockchain” sino “chain of blocks” en su trabajo. Satoshi Nakamoto utilizó el mismo término “chain of blocks” en el white paper de Bitcoin.
La afirmación de que Satoshi inventó la cadena de bloques no es correcta. Es un error. Él reutilizó un trabajo existente.
Cadena de bloques asegurada criptográficamente
La pregunta es qué tan rápido se puede añadir un nuevo bloque a una cadena de bloques. De hecho, se pueden añadir muchos bloques en un solo segundo. La cadena de bloques no es lenta respecto a la adición de bloques. Este proceso puede ser muy rápido si los datos que deben ser agregados a una cadena de bloques están en el mismo equipo. Básicamente, se pueden añadir muchos bloques inmediatamente. La velocidad, la escalabilidad y el coste de añadir un nuevo bloque a la cadena de bloques están influenciados por un mecanismo de consenso.
Es el consenso basado en PoW lo que hace de Bitcoin una base de datos muy lenta y costosa. En caso de que se utilice DPoS o PoS, el sistema puede ser más rápido, barato y escalable.
¿Qué es una cadena de bloques? (Recargado)
Hoy en día, muchos proyectos y gigantes de TI hablan sobre la tecnología de la cadena de bloques. ¿De qué hablan? Como se puede ver, el significado original del término “cadena de bloques” está relacionado con la cadena de bloques asegurada criptográficamente. El significado del término shifted, y ahora el término blockchain, se utiliza generalmente para hablar de red distribuida que utiliza una cadena de bloques como estructura de datos.
Tal vez el término ledger distribuido (DL) pueda ser menos confuso ya que sólo expresa que hay un ledger que se distribuye en muchos nodos, y que se debe existir un consenso mutuo para cambiarlo. Personalmente, prefiero el término de ledger distribuido.
¿Cómo almacena datos una base de datos, y qué puede hacer el usuario?
Una base de datos común no trabaja con bloques sino con tablas. Una tabla es una colección de datos relacionados que se mantienen en un formato de tabla dentro de una base de datos. Dicha tabla consta de columnas y filas.
Base de datos de tablas
En las bases de datos relacionales, una tabla es un conjunto de elementos de datos (valores) que utilizan un modelo de columnas verticales (identificables por nombre) y filas horizontales, siendo la celda la unidad donde se intersectan una fila y una columna. Una tabla tiene un número específico de columnas pero puede tener cualquier número de filas. Cada línea se identifica con uno o más valores que aparecen en un subconjunto de columnas determinado. Una selección específica de columnas que identifican de forma unívoca las filas se denomina “clave primaria”.
Se pueden utilizar cuatro operaciones básicas dentro de la base de datos en relación con los datos: crear, leer, actualizar y borrar (CRUD). Las cadenas de bloques actuales sólo pueden añadir un bloque entero (con transacciones dentro) al final de la cadena de bloques. Luego de una adición, los datos no pueden actualizarse ni borrarse. Una cadena de bloques permite sólo dos operaciones: crear y leer.
Una base de datos permite en todo momento cambiar e incluso borrar datos que han sido almacenados en el pasado. Una cadena de bloques mantiene intencionalmente los datos históricos inalterables y siempre disponibles. Hablaremos con más detalle sobre cómo se protegen los datos contra modificaciones.
¿Quién controla los datos?
La diferencia más significativa entre una cadena de bloques y una base de datos es el número de operaciones permitidas, y quién es responsable de ello. Además, cuán seguras son algunas operaciones restringidas.
Una base de datos es mantenida por un administrador, o por un grupo de administradores. El administrador tiene el derecho de hacer todo lo que quiera con los datos (CRUD). Los administradores son a menudo empleados de una gran empresa y deben seguir las reglas establecidas por los propietarios de la empresa. Los administradores otorgan derechos limitados a los usuarios para crear, leer, modificar o eliminar datos. Depende de la implementación y de las aplicaciones o servicios utilizados. Sin embargo, incluso si alguien registra datos correctos en la base de datos, el administrador siempre puede modificarlos o eliminarlos. Nadie tiene ninguna, o muy pocas, chance de comprobar que se han ingresado datos correctos en caso de que exista alguna disputa sobre la corrección de los mismos. El administrador siempre tiene más derechos que los demás.
No hay administrador con derechos de modificación y borrado en la cadena de bloques. Hay nodos en la red que deben llegar a un consenso sobre cualquier nuevo bloque que deba añadirse a ella. Una vez que se agrega el bloque (y se confirma) nadie puede cambiar fácilmente el historial, y siempre se puede probar que algo sucedió en el pasado.
Cadena de bloques pública y privada
En este punto, es necesario diferenciar entre cadenas de bloques privadas (autorizadas) y públicas. Veamos para qué sirve cada una.
Una cadena de bloques pública es apta en casos donde existe una mayoría de usuarios que no confían los unos en los otros y necesitan interactuar de una manera confiable. Si el grupo no puede o no quiere encontrar a un tercero de confianza, podría considerar la posibilidad de utilizar la cadena de bloques. En el sistema financiero actual, los terceros de confianza son los bancos. La gente les cree y sabe qué hacer si algo sale mal. La cadena de bloques puede hacer un trabajo similar al de los bancos. La cadena pública puede ser usada muy bien para criptomonedas y puede servir a millones de usuarios.
En caso de que sólo existan dos empresas que no confíen la una en la otra, a menudo es mejor y más económico encontrar terceros de confianza que gestionen una base de datos para ellas. ¿Pueden utilizar una base de datos sin evitar la participación de un tercero de confianza? La pregunta aquí es: ¿quién sería responsable de mantenerlo y quién será el administrador? ¿Debería ser alguien de la empresa A, o de la empresa B? ¿O ambas cosas? Como ya hemos mencionado el administrador puede hacer todo con la base de datos. Así que la base de datos no siempre funciona bien en este caso, y el uso de la cadena de bloques puede ser una opción válida.
Ahora imagina que hay 10 de estas compañías requiriendo cierto nivel de confianza. ¿Debería haber también 10 administradores, uno de cada empresa? Sin embargo, ¿quién será responsable de la base de datos central?
Una base de datos puede funcionar bien en algunos casos. Sin embargo, en algunos otros casos, considerar una cadena privada es una opción superadora. Por qué? Naturalmente, las empresas no confían unas en otras. Cuando algunos datos deben ser agregados a la cadena de bloques, entonces un acuerdo de todas las partes podría ser un requisito relevante. Imaginemos que hay 10 nodos de validación en un entorno privado y que cada empresa posee un nodo. Todos los nodos (o una mayoría significativa de ellos) tienen que estar de acuerdo con añadir un nuevo bloque a la cadena. En este caso, ninguna empresa puede modificar los datos almacenados en otros nodos, por lo que no tiene sentido modificar los datos del propio nodo. Además, ninguna empresa es capaz de registrar datos que serían considerados inválidos por cualquier otra empresa. Las funciones de los administradores se limitan a ejecutar un nodo.
No hay necesidad de usar ningún token en una cadena privada. Un simple consenso (basado en el BFT) es suficiente. Una cadena privada puede ser muy rápida y el tiempo insumido en la creación de un bloque puede llegar a ser de unos pocos segundos (incluso un segundo). Los costes de operación son muy bajos, ya que cada empresa sólo opera un nodo de validación.
¿Qué hay de la seguridad? Para unas pocas empresas, una cadena privada es suficientemente segura si sólo interactúan entre sí. Ningún otro nodo puede unirse al grupo, y si la transmisión de datos está cifrada, sólo las empresas participantes tienen acceso a los datos. Es una configuración necesaria cuando se supone que los datos no son públicos, y deben protegerse contra el uso indebido. En este caso, no se puede utilizar una cadena pública. Nadie quiere dejar que otros accedan a ciertos secretos comerciales, lo que es otra razón para evitar los ledgers públicos.
Una cadena de bloques privada no se consideraría naturalmente segura si fuera utilizada por usuarios ajenos a la empresa. Las empresas se conocen entre sí y podrían actuar de forma deshonesta contra los usuarios. Los usuarios sólo pueden confiar plenamente en una red pública abierta en la que todos puedan unirse y participar de forma consensuada.
Como puedes ver, todos pueden beneficiarse de la descentralización de la cadena de bloques, independientemente de si utiliza una cadena pública o privada.
Servidor centralizado vs. red distribuida
En informática, cliente-servidor es un modelo de arquitectura de software que consta de dos partes, sistemas cliente y sistemas servidor, ambos comunicándose a través de una red informática, o bajo el mismo ordenador. Una aplicación cliente-servidor es un sistema distribuido compuesto de software cliente y servidor. Hablamos de una solución centralizada donde el servidor es el centro.
Muchos clientes están conectados a un único servidor
Una base de datos se encuentra en el servidor. Por lo tanto, si sólo hay un único servidor, se trata de un único punto de fallo. En caso de que el servidor no sea capaz de operar, todos los clientes no serán capaces de comunicarse con el servidor y por lo tanto, tampoco entre sí. Desde el punto de vista de los datos, todos los clientes deben contar con que el servidor se comporta honestamente, y está debidamente protegido contra ataques. Sin embargo, no suele ser el caso.
Si un cliente solicita algún cambio para ser agregado a la base de datos, entonces el cliente supone que los datos serán almacenados de forma segura sin cambios inesperados. Hoy en día, no es frecuente ver una sola instancia de servidores. En la mayoría de los casos, existen servidores redundantes en una red. Si un servidor se cae, o no está disponible temporalmente, habrá otro que podrá responder todas las peticiones. Pero esto sólo es posible cuando los datos se copian entre servidores.
Si un cliente una transacción o una solicitud a un servidor, los datos se escriben sólo en una base de datos en un momento dado. Después de eso, los datos se replican a otras bases de datos (de respaldo). La copia a menudo ocurre un poco más tarde, por lo que en la mayoría de los casos hay retrasos, y los datos son inconsistentes en los servidores. El proceso de copia se denomina replicación de datos.
La replicación de datos consiste en almacenar datos en más de un sitio o nodo. Es útil para mejorar la disponibilidad de los datos. Se trata simplemente de copiar datos de una base de datos de un servidor a otro servidor para que todos los usuarios puedan compartir los mismos datos sin ninguna inconsistencia. Puede generarse alguna inconsistencia si un servidor se cae antes de la replicación. Esto es un problema, ya que una transacción se podría considerar como confirmada, pero la próxima vez que se inicie sesión en el servidor, la transacción desaparecería. Sin embargo, hoy en día esta situación es bastante inusual.
Replicación de datos
Es importante entender que la replicación de datos puede proteger los datos sólo en el sentido de protección contra posibles pérdidas. No tiene nada que ver con la protección contra la manipulación del historial, o la reescritura del estado actual desde el lado del administrador. Si un servidor acepta cambios y otro no, se generará una inconsistencia de datos.
La cadena de bloques resuelve los problemas descritos anteriormente de una manera elegante, a través de la utilización de un consenso descentralizado. Una vez que todos, o la mayoría de, los nodos de la red acuerdan añadir un nuevo bloque, los datos se escriben simultáneamente en muchos discos duros. No importa que un nodo, que ha propuesto un nuevo bloque, se colapse inmediatamente después del acuerdo. Los datos están siempre a salvo en otros nodos, y el nodo caído podrá obtener luego una versión válida de todos los bloques creados.
Los datos se escriben en todos los discos después de lograr el consenso entre todos los nodos
¿Se pueden utilizar bases de datos replicadas que tengan el mismo grado de seguridad que una cadena de bloques? No. La replicación de datos significa que un servidor envía datos a otros servidores para realizar copias de seguridad. No hay consenso entre los servidores para acordar una sola versión de la verdad antes de almacenar los datos. Si un servidor envía datos inválidos o falsos, los otros servidores los toman ciegamente y los almacenan (algún tipo de validación de datos podría estar en juego). Por el contrario, en la cadena de bloques la mayoría de los nodos deben estar de acuerdo con un bloque propuesto antes de almacenarlo en la cadena de bloques.
Lograr un consenso entre los nodos descentralizados es lo que hace que la cadena de bloques sea más segura en comparación con las bases de datos. En lugar de un servidor, mantenido por el/los administrador(es), existe un grupo de nodos independientes que se ponen de acuerdo sobre qué datos añadir al bloque.
Puedes leer más sobre la descentralización en este artículo. Existe una marcada diferencia entre redes descentralizadas y distribuidas, y es bueno entenderla.
La cadena de bloques privada utilizada entre unas pocas entidades puede considerarse como un sistema distribuido y descentralizado desde el punto de vista de los participantes directos. Si una cadena privada se utiliza dentro de una sola empresa, entonces tendrá ciertas ventajas desde el punto de vista distribuido, sin embargo, es una solución centralizada, y para este caso la base de datos podría ser una mejor opción.
ICO y base de datos
Algunas personas asumen erróneamente que una ICO no necesita de una cadena de bloques, y que la base de datos es una solución suficientemente viable. Vamos a analizarlo. Alguien debe ser responsable de la base de datos para que el equipo responsable pueda ofrecer públicamente los tokens. Así que existirá un administrador que podrá cambiar lo que sea en la base de datos. También podrá abandonar el proyecto o desaparecer inesperadamente, y si guarda para sí todas las contraseñas y claves necesarias de la base de datos, nadie más podrá cambiar nada. Una sola base de datos también puede fallar, y en ese momento todos los datos sobre la distribución de monedas se perderían para siempre. Por lo tanto, hay un solo punto de falla. En caso de que el administrador sea una persona honesta, es posible que no tenga la experiencia suficiente para proteger la base de datos. Un hacker puede atacar la base de datos y modificar lo que quiera. En todos los casos, los inversores deben confiar en el equipo, y se arriesgan a perder su capital invertido en caso de que una sola persona del equipo decida destruir o hacer un mal uso de la base de datos.
Alternativamente, el proyecto puede solicitar a un tercero de confianza que mantenga la base de datos. Tú, como inversionista, debes entonces confiar en un tercero, que fue elegido por el equipo responsable del proyecto, que se comportará honestamente y que será capaz de proteger los registros en la base de datos. Imagina entonces que se trata de un tercero que vive en algún lugar de Rusia y tú eres un inversor que vive en los EE.UU. o Europa. Supongo que no confiarás mucho en esa ICO. Una vez más, hay un solo punto de falla.
Hubo un gran auge de las ICO en 2017
Una cadena de bloques pública posee una gran ventaja sobre la base de datos. Los tokens de una ICO pueden tener algún valor, están disponibles en todo el mundo y resulta difícil que se pueda ajustar a alguna regulación en el contexto internacional cuando algo sale mal. El uso de la cadena de bloques pública es necesario aquí, ya que el contrato inteligente y la cadena de bloques garantizan la seguridad, la disponibilidad, la inmutabilidad y otras propiedades importantes. La cadena de bloques suele ser una red global con nodos distribuidos en todo el mundo. No hay un administrador central, y se debe lograr el consenso para transferir una sola moneda o token. Nadie es capaz de crear más monedas. Nadie puede realizar transacciones falsas ya que las claves privadas están en manos de los inversores.
¿Cuáles propiedades de la cadena de bloques son las más importantes?
Echemos un vistazo a algunas propiedades que no pueden ser replicadas por una base de datos tradicional. Las bases de datos son herramientas sólidas y puedes lograr con ellas casi todo lo que necesites. Sin embargo, hay algo que sólo una cadena de bloques puede ofrecer:
- Inmutabilidad de los datos: La cadena de bloques es una red de naturaleza distribuida, y los datos se escriben simultáneamente en muchos discos una vez que se alcanza el consenso. Por lo tanto, es muy difícil o imposible cambiar la historia.
- Registro seguro de los datos: Similar al punto anterior, un nuevo bloque se añade sólo si la mayoría de las entidades están de acuerdo con ello. Por lo tanto, no es posible insertar algo que se considera inválido. Las normas deben seguirse estrictamente, y las entidades más independientes deben vigilarlas.
- Sin administrador: No hay un administrador con derecho a cambiar nada. La cadena de bloques no agrega un nuevo bloque sin un consenso mutuo previo. La responsabilidad se distribuye entre los nodos validadores. La cadena de bloques es fiable y resistente a la censura.
- Sin un punto de falla: Aplica principalmente en los consensos PoS y PoW. DPoS puede ciertos problemas cuando algunos de sus nodos no están disponibles en simultáneo.
- Con los contratos inteligentes: La cadena es capaz de ejecutar acuerdos de una manera confiable, constituyendo un reemplazo del sistema legal vigente.
Lee más sobre contratos inteligentes, aquí.
Nota que todas las propiedades listadas pueden ser fácilmente abarcadas por una sola palabra: Descentralización.
Se trata del consenso
La eficiencia de una cadena de bloques se basa únicamente en el algoritmo de consenso. Está bastante claro que cuando se utiliza PoW la solución es naturalmente lenta y costosa. Tal cadena es inútil desde una perspectiva de negocios. El tiempo aproximado por bloque es de 10 minutos, y se consume mucha energía durante el proceso. PoW hace de Bitcoin la base de datos más lenta y costosa. No hablamos de la tecnología de la cadena desde la perspectiva de los datos. El tiempo y el tamaño del bloque son las principales razones por las que Bitcoin no escala.
El otro extremo es la cadena de bloques privada, con una cantidad limitada de nodos. Muy a menudo podemos ver aquí algún tipo de consenso DPoS. Puede ser muy rápido y también barato. Además, con mayor privacidad. Es por eso que proyectos como Hyperledger o R3 Corda son tan exitosos. En algunos casos, tiene sentido usarlos.
El mayor desafío es hacer que las redes abiertas, públicas y descentralizadas sean eficientes. Es posible a través del consenso PoS, ya que puede ser más barato y escalable. El protocolo de consenso PoS de Cardano, Ouroboros, soporta un tiempo por bloque de 20 segundos, y consume electricidad como dos casas grandes. Además, el equipo de IOHK para Cardano planea emplear sharding en el futuro, lo que permitirá un aumento significativo en su escalabilidad.
Es ingenuo pensar que debemos apegarnos al protocolo PoW, y usarlo por siempre. Las personas siempre pueden adecuar y mejorar la tecnología para que les sea útil. También se puede mejorar el algoritmo de consenso.
Es difícil lograr una alta escalabilidad y mantener un alto nivel de descentralización. Los datos deben distribuirse por todo el mundo, por lo que debe tenerse en cuenta la latencia de la red. Llegar a un consenso mundial lleva un tiempo considerable. La cadena de bloques nunca será tan efectivo como una base de datos tradicional, pero puede ofrecernos confianza, descentralización y protección contra la manipulación del historial. Esto no puede lograrse con una base de datos.
También se cree que necesitamos PoW para mantener una alta seguridad de los datos. Como puedes ver, también se trata de la distribución de datos y el consenso. En realidad, el consenso hace que los datos estén seguros. PoW es bueno para hacer difícil y costoso crear un bloque. Pues bien, también es el meollo de su ineficiencia, y no es realmente necesario. Es posible alcanzar el mismo nivel de seguridad a través del PoS. Ouroboros no te permite crear un bloque válido en caso de que no tengas derecho a hacerlo. Un atacante puede crear un bloque, pero no puede proporcionar pruebas válidas, por lo que la red no aceptará dicho bloque inválido. A diferencia del PoW, en el PoS de Cardano se utiliza la criptografía moderna (Verifiable Random Function, Key Evolving Signature).
Conclusión
Una base de datos no es una cadena de bloques, pero la cadena de bloques puede ser considerada como un tipo de base de datos. La base de datos tradicional es siempre una solución centralizada, y si se piensa en ello, internet también está centralizada. Internet ha conectado a personas de todo el mundo, pero sólo unas pocas empresas centralizadas como Google, Facebook y Amazon se benefician de ella. Todas estas empresas utilizan bases de datos para sus negocios. La cadena de bloques tiene el potencial de descentralizar todo internet, y poder deshacernos de las grandes empresas. Por lo tanto, no sólo los propietarios de empresas centralizadas, sino todos los usuarios se beneficiarán de la descentralización de la cadena de bloques. Una vez que proyectos como Cardano asuman el papel de los actuales gigantes de la tecnología de la información, el mundo podría ser un mejor lugar para vivir, ya que los usuarios serán los propietarios efectivos de la red, y podrán decidir sobre su futuro.
Considera la posibilidad de delegar tus monedas ADA en Cardanians.
Si te gustan nuestros artículos, puedes apoyarnos con una donación en ADA:
DdzFFzCqrhseNP1C9XEs1MA82rgnVZwNpeiNCbLxrJfRzwaceXB9VYqPFYyRrYegc67SERjcQ1xvwB6jryp5vgGUf1cvzbeZP2a92tQe