Traducción al español de Must Blockchain be a slow and expensive Database? Cardano is going to rewrite History
Publicado por Cardanians en su blog de Medium, el 9 de Marzo de 2020.
El papel se usará cada vez menos para dejar información a las generaciones futuras. Las bases de datos pueden servirnos mejor. La información de los activos estará en la blockchain.
Durante mucho tiempo se ha dicho que la blockchain es una base de datos lenta, cara e ineficaz, y que no puede ser utilizada para nada más que para las criptomonedas. En el artículo explicaremos por qué una base de datos no puede ser una blockchain, y por qué la blockchain puede no ser necesariamente lenta o cara, a menos que se pretenda que lo sea. El consenso de la red PoS puede cambiar esa lógica, y Cardano construye uno.
La base de datos no es una blockchain
Empecemos por refutar un mito. La base de datos nunca será una blockchain. Para mantenerlo simple, una base de datos es un espacio para almacenar cosas. Tu empleador probablemente tiene una base de datos y almacena información digital sobre ti. Cada tienda electrónica tiene una base de datos que guarda información sobre todos los bienes, pedidos, clientes, etc. Blockchain es un ledger, un libro contable. Puedes imaginarte al ledger como un balance o un libro de cuentas. Es una colección de cosas del mismo tipo y donde hay información sobre la propiedad. El ledger digital es capaz de llevar un registro de la historia y es posible obtener el último estado válido. Como usuario de un monedero de criptomonedas, el libro de cuentas puede proporcionar información sobre cuántas monedas poseen Alice o Bob.
Base de datos. No hay consenso en la red y el administrador tiene un control absoluto sobre ella. Los datos no son propiedad del usuario.
Es posible crear, leer, actualizar y borrar (operaciones CRUD) datos de una base de datos, y todas las operaciones son rápidas y altamente escalables. Esto es posible porque sólo hay un nodo o servidor con la base de datos y no se requiere un consenso de red. Por lo tanto, todas las operaciones se realizan inmediatamente. Blockchain es inmutable, por lo que sólo es posible añadir nuevos datos sin la posibilidad de reescribir el historial. Por lo tanto, la historia es siempre completamente auditable. La blockchain es capaz de mantener todas las transacciones. Por lo tanto, es posible recorrer todas las transacciones históricas almacenadas desde el primer bloque de la cadena hasta el final. Una vez que se lee el último bloque añadido se puede ver el estado actual del ledger.
Lee más sobre las diferencias entre la base de datos y la blockchain en este artículo.
Una vez que se permite cambiar los datos en la base de datos y los datos cumplen las condiciones, el registro se cambia de inmediato. Normalmente sólo hay una copia de la base de datos, pero se puede hacer una copia de seguridad regularmente para evitar pérdidas de datos inesperadas. Un administrador tiene el control total sobre la base de datos, de modo que los datos pueden ser cambiados en cualquier momento por todo aquel que tenga los privilegios necesarios. Una base de datos, como único punto de fallo, puede incluso ser hackeada y los datos pueden ser cambiados por un atacante.
Por su parte, para añadir nuevos datos en una blockchain, normalmente añadiendo un nuevo bloque, se requiere un consenso en la red distribuida. Los nodos validan un nuevo bloque propuesto junto con las transacciones y se añadirá permanentemente a la blockchain sólo si la mayoría de los nodos están de acuerdo. Después del acuerdo, todos los nodos honestos tendrán la misma copia del ledger. Así que no hay una autoridad central con derecho a cambiar el ledger. Hay un grupo de operadores independientes, propietarios de nodos validadores que participan activamente en el consenso, y el poder de decisión se distribuye entre todos ellos.
Base de datos vs. blockchain.
Las principales diferencias entre la base de datos y una blockchain radican en que hay reglas específicas sobre cómo validar las transacciones y añadir un nuevo bloque a una blockchain. Además, la validación se ejecuta en todos los nodos completos de una red distribuida. Los nodos honestos mantienen el estado válido del ledger. Los datos sólo se añaden y la historia es inmutable.
Los datos en sí, por ejemplo, la posesión de monedas ADA, está como bloqueada para un propietario. En otras palabras, los datos poseen propiedad, y únicamente el dueño de una llave privada puede cambiar la propiedad. Para gastar las monedas ADA de una dirección, sólo el propietario de la llave privada correspondiente puede firmar una transacción. La transacción es validada por todos los nodos validadores, y si es correcta (y todo el bloque también lo es) entonces se cambia la propiedad de las monedas.
La blockchain es poderosa cuando se necesita almacenar inmutablemente la información que para un usuario X un estado Y es válido en el momento Z. Es muy adecuada para mantener la información de propiedad de cosas valiosas. Por ejemplo, las monedas ADA, como hemos mostrado anteriormente. La belleza de la blockchain es que el propietario realmente posee activos e incluso la red no es capaz de cambiar eso sin la llave privada. Sólo el propietario puede iniciar el cambio de propiedad a través de una transacción, y la red sólo valida la solicitud y puede aceptarla añadiendo la transacción en un nuevo bloque que se añade a la blockchain. El cambio de propiedad se produce plenamente de manera descentralizada. Es algo que no se puede lograr con una base de datos. Dentro de la base de datos, siempre hay una autoridad central en la que hay que confiar.
El usuario X firmó una transacción para cambiar el estado Y en el momento en que Z. La blockchain valida la transacción y debe llegar a un consenso de la red para aceptar el cambio propuesto. El usuario X realmente posee un activo y puede cambiar el estado Y. Nadie más puede hacerlo.
LabBlockchain sólo mantiene inmutablemente la información sobre los datos, y puede ser pública y auditable. Es fácil para la red guardar un número máximo de monedas o tokens ya que todos los datos se almacenan en el ledger. Cada nodo completo es consciente del estado actual y puede validar fácilmente la corrección de los cambios propuestos. Como dijimos, nadie es capaz de cambiar los datos en el ledger, por ejemplo, la propiedad de las monedas ADA, excepto el propietario. Por lo tanto, la red distribuida es la parte de confianza entre Alice y Bob cuando quieren interactuar entre ellos. La red distribuida no requiere de confianza básicamente por dos razones: La red en sí no puede cambiar ningún dato, ya que siempre se requiere del consenso distribuido involucrado y de la firma del propietario. En otras palabras, si eres dueño de monedas ADA, sólo tú eres responsable de mantener las llaves privadas que te permiten gastar las monedas, y nadie más puede hacerlo. La red sólo valida las voluntades y actúa.
El estado Y, que el usuario X puede cambiar, puede ser más que sólo la propiedad de las monedas ADA. Puede ser cualquier otro token fungible o no fungible emitido. Por lo tanto, la blockchain es capaz de mantener la información sobre acciones, bonos, propiedad, artículos de juego, etc. El estado Y puede ser incluso una condición definida en un contrato inteligente que diga que si Alice envía un token Q a Bob, entonces Alice se convierte en la propietaria de un token R.
Lea más sobre los contratos inteligentes en este artículo.
La blockchain es muy útil para mantener casi cualquier tipo de información de propiedad si es posible digitalizarla. Sin embargo, esta característica por sí sola no es suficiente y necesitamos trabajar en otras características útiles ya que sólo una combinación de múltiples características hará que las redes distribuidas modernas como Cardano sean aún más poderosas. Para poder hacer uso aún más de las redes distribuidas, necesitamos que escalen. Esto significa que muchos usuarios puedan usarlas al mismo tiempo. Hasta ahora ha sido un problema, y por lo tanto la narrativa apareció diciendo que la blockchain es una base de datos lenta y costosa. Si vamos a hablar de las criptomonedas, algo que la gente quiere usar a diario, las redes deben necesariamente escalar. Si las transacciones han de ser lentas y costosas, no podemos ni siquiera hablar de criptomonedas utilizables globalmente. La escalabilidad, pero también la programabilidad del dinero y los tokens, los vínculos más estrechos con el mundo físico, y el trabajo con la identidad digital abrirán puertas que ni siquiera conocemos hoy en día.
Veamos las razones por las que se dice que la blockchain es lenta y costosa.
¿Por qué la blockchain tiende a ser lenta y cara?
La razón por la que la blockchain tiende a ser lenta es muy simple y directa. El consenso de la red distribuida siempre necesitará más tiempo que una base de datos. La base de datos sólo valida rápidamente una solicitud y hace los cambios necesarios de inmediato. La escalabilidad no es un problema. Una red distribuida necesita más tiempo, ya que un nodo suele reunir unas pocas transacciones para crear un nuevo bloque. El bloque es validado luego por otros nodos. Cada consenso funciona de manera algo diferente. Algunos pueden depender de una potente comunicación interna, otros pueden ser capaces de conceder derechos de creación de bloques a un nodo en particular y luego verificar que todo esté bien.
La prueba de trabajo (PoW) es el primer consenso de red exitoso usado en el mundo de las criptomonedas, con un tiempo de bloque establecido en ~10 minutos. La prueba de trabajo es muy simple. Todos los nodos interesados en recibir una recompensa por el bloque intentan ganar en una competencia específica. Todos los nodos tratan de resolver una tarea difícil que toma aproximadamente 10 minutos. La tarea es muy exigente en cuanto a potencia de computación y es difícil predecir si la tarea toma 2, 10 o 60 minutos. Sólo un nodo ganará la competencia. Una vez que un nodo ha resuelto la tarea, sólo propaga el bloque a otros nodos para su validación. Una parte del proceso de validación del bloque es también la verificación de que la tarea ha sido realmente resuelta para que el bloque pueda ser añadido a la blockchain.
PoW es muy caro e ineficaz. La potencia de cálculo necesaria para resolver la tarea requiere mucha energía eléctrica. Para mantener una buena competencia en el consenso PoW, el bloque tiene que tener un tamaño limitado, y en el tamaño limitado sólo se puede insertar una cantidad limitada de transacciones.
Si consideramos que una transacción típica podría tener ~250B, entonces el bloque de 1MB podría contener 4000 transacciones. 4000 transacciones por 10 minutos nos da una tasa de 6,7 transacciones por segundo. El PoW de Bitcoin es actualmente capaz de procesar no más de 10 transacciones por segundo (TPS) y la razón es principalmente el largo tiempo por bloque (el tiempo necesario para producir un bloque).
Blockchain. Se requiere de un consenso en la red para cambiar los saldos. No hay una autoridad central.
PoW originalmente fue anti-spam o protegido contra DoS que se introdujo en 1993. Un solicitante del servicio tenía que proporcionar PoW, un trabajo difícil y costoso antes de que el servicio fuera proporcionado. Por lo tanto, un atacante no podía hacer spam en la red ya que una generación de una mayor cantidad de mensajes requeriría una gran cantidad de PoW, por lo que sería costoso. El PoW no fue inventado para ser un consenso de la red. Satoshi Nakamoto lo usó ya que en ese momento era difícil encontrar otro consenso distribuido confiable adecuado para una red global. El PoW es lento, ineficaz y caro. A pesar de todas las desventajas, funciona y es muy seguro. El PoW es simple y robusto, y es muy caro para producir un bloque fraudulento. Un atacante potencial en la red PoW tendría que tener una tasa de hash muy alta para solventar el ataque. La seguridad se considera la mayor ventaja del PoW. Sin embargo, el PoW tiende a estar centralizado.
Podríamos considerar dos formas de aumentar el rendimiento, es decir, para procesar más transacciones por segundo. Podríamos aumentar el tamaño del bloque para poder insertar más transacciones en él, o podríamos disminuir el tiempo por bloque para producir bloques más a menudo. La latencia de la red hace casi imposible aumentar el tamaño de los bloques. Si el bloque fuera demasiado grande, la propagación a todos los nodos llevaría mucho tiempo. Ver abajo el tiempo necesario para entregar un bloque de 2Mb desde Londres a otras partes del mundo a través de TCP/IP:
- Paris — 0.1s
- US East coast — 1.1s
- US West coast — 2.5s
- Brazil — 3.0s
- Korea — 3.4s
- Australia — 5.3s
El aumento del tamaño del bloque no estará sobre la mesa durante algún tiempo, pero en el futuro, probablemente será posible aumentarlo. Así que tenemos que reducir el tiempo por bloque. Sin embargo, esto sólo es posible si utilizamos otro consenso de red, y no comprometemos la seguridad y la descentralización.
El PoS puede ser un consenso rápido y barato
Se espera que el consenso del protocolo PoS de Cardano, Ouroboros, pueda llegar a procesar entre 200 y 250 transacciones por segundo. Otros parámetros del consenso podrían ser el tiempo por bloque en alrededor de 20 segundos, tener el 50% de las monedas delegadas necesarias para cometer el ataque del 51% y aproximadamente 1000 pools en la red.
Ouroboros elevará fundamentalmente la calidad de la descentralización en las redes públicas. La situación actual no es muy buena si se considera que sólo hay ~10 pools significativos en la red de Bitcoin. Otros proyectos importantes utilizan el DPoS, que tiene un número fijo de entidades con derecho a crear un bloque. Por ejemplo, EOS tiene 21 entidades de este tipo y Tron sólo 26. Ethereum 1.0 usa PoW, y en cuanto al número de grandes jugadores es muy similar a Bitcoin. Ethereum 2.0 migrará a PoS para lograr una mejor descentralización y escalabilidad también.
Si no estás seguro de cuál es exactamente la escalabilidad y por qué es tan necesaria, entonces lee nuestro artículo sobre este tema.
La calidad de la descentralización es la característica más importante de las redes distribuidas. A veces podemos escuchar que no es el grado de descentralización, sino el grado de seguridad. Bueno, hoy en día tenemos una red bastante segura y centralizada. La verdad es que necesitamos tanto de la descentralización como de la seguridad. Una sin la otra no puede funcionar bien a largo plazo. Sin embargo, si tuviéramos que preferir una característica, tendría que ser la descentralización. Cardano pondrá el listón muy alto en cuanto al nivel de descentralización. Sólo hará falta demostrar la calidad de la seguridad. El equipo de IOHK ha investigado durante mucho tiempo el consenso PoW, y ha descubierto cómo ofrecer un consenso PoS igualmente seguro. Esto se ha logrado gracias a una larga y detallada investigación. Ahora es necesario demostrarlo a todo el mundo.
Procesar 250 transacciones por segundo no es suficiente para un protocolo global que tiene ambiciones de ser usado para el pago e incluso para más cosas. Cardano tiene un as bajo la manga. Ouroboros Hydra incorporará el sharding (fragmentación). El sharding es una forma de procesar transacciones en paralelo a través de múltiples redes pero manteniendo un único estado consistente.
El “sharding” se basa en el supuesto de que todos los nodos de la red no tienen por qué validar todas las transacciones. Los nodos pueden dividirse en múltiples subredes, unidades o fragmentos. Cada fragmento validará entonces sólo una parte de todas las transacciones. Si la red tuviera 1000 nodos que participaran activamente en el consenso de la red y se dividieran en 10 fragmentos, la red podría validar aproximadamente 10 veces más transacciones. También es probable que se pueda aumentar el número de nodos en los fragmentos. Gracias al sharding podremos multiplicar las TPS de una blockchain por varias decenas, tal vez cientos. Podría ser posible llegar a las necesarias decenas de miles de transacciones por segundo. Por ejemplo, si Cardano tuviera 10 fragmentos, entonces el rendimiento sería de 2.500 TPS.
Sharding: 4 fragmentos, 1 estado
Mantener la red consistente y uniforme a través de todos los fragmentos es exigente para la sincronización entre los fragmentos, y la latencia de la red sigue siendo un gran enemigo. Lograr el paralelismo en un entorno de red distribuida es uno de los mayores desafíos para el equipo de IOHK.
Con el sharding, Cardano puede ser descentralizado, seguro y escalable en su primera capa. Es muy importante desde el punto de vista de la experiencia del usuario y la fiabilidad general. Veamos algunas otras alternativas sobre cómo lograr una mayor escalabilidad.
Arquitectura de capas
Básicamente, cada proyecto tiene dos opciones básicas para mejorar el problema actual más apremiante de la blockchain, la escalabilidad. El equipo puede mejorar el consenso de la red en la primera capa, o usar otra capa con diferentes propiedades. Un ejemplo de la primera opción es trabajar en con el PoS y el sharding. Un ejemplo de la segunda opción es construir una segunda capa como la Lightning Network (LN). Este enfoque se llama arquitectura en capas.
Bitcoin, como representante de la primera generación de blockchain, eligió la segunda opción. Las monedas pasan de la primera capa a la segunda, donde se pueden utilizar transacciones rápidas y baratas con un rendimiento de red mucho mayor. Lightning Network es una red completamente diferente y separada con sus propios nodos, direcciones, billeteras, etc. La transferencia de monedas desde y hacia la segunda capa requiere de transacciones en la primera capa de la cadena.
Arquitectura de capas.
Sin embargo, esta solución también tiene algunas desventajas. Una vez que la moneda aparece en la segunda capa, la seguridad de sus monedas depende totalmente de esa capa. LN no tiene un consenso de red donde los nodos traten de ponerse de acuerdo en una versión de la verdad. En lugar de esto, se hace un esfuerzo para asegurar que la transferencia de monedas entre capas sea suficientemente segura y que las monedas no puedan ser creadas de la nada o se pierdan dentro del canal de pago establecido, por ejemplo entre Alice y Bob. La seguridad será supervisada por entidades centralizadas llamadas Vigilantes (hasta donde yo sé no hay ningún mecanismo de incentivo).
Ahora imagina la situación cuando Alice ha abierto el canal de pago A con Bob para poder enviar las monedas rápidamente en Lightning Network y Bob ha abierto otro canal de pago B con Carol. Mira la foto de abajo.
Las perlas amarillas representan monedas. Cualquier participante puede enviar 3 monedas a la contraparte a través del canal. Nota que no hay un canal directo creado entre Alice y Carol. Si Alice quisiera enviar 3 monedas a Carol, entonces se podría crear un nuevo canal a través de una lenta y costosa transacción en la primera capa de la cadena. La segunda opción es utilizar los dos canales de pago ya abiertos, A y B. En este caso, las monedas de Bob deben utilizarse para transferir el valor de Alice a Carol. Al final, Alice tendrá 0 monedas, Bob tendrá 6 monedas en el canal A que está abierto entre ellos, y Carol tendrá 6 monedas. Bob tendrá 0 monedas en el canal B que está abierto entre Bob y Carol. Bob tiene 6 monedas antes y después de la transacción entre Alice y Carol. Sin embargo, su liquidez en el canal B es ahora 0.
Básicamente significa que Bob ya no puede enviar monedas a Carol y Alice no puede enviar ninguna moneda a Bob. Por lo tanto, si Alice quisiera enviar monedas a Bob, el canal A tendría que cerrarse y volver a abrirse mediante transacciones en la primera capa. Lo mismo se necesita si Bob quisiera enviar monedas a Carol. Añadido a que todas las billeteras deben estar en línea para que la transacción entre Alice y Carol se lleve a cabo.
Para poder enviar monedas a través de múltiples canales, debe haber una entidad en la red que sea capaz de monitorear constantemente el estado actual de todos los canales y buscar una ruta que pueda ser usada para el pago. Con el aumento del número de usuarios y del número de canales, esto puede convertirse en una tarea cada vez más difícil desde el punto de vista informático y el proceso probablemente conducirá a la centralización. Para poder enviar monedas a través de múltiples canales, éstos deben tener suficiente liquidez. Una vez agotada la liquidez, es necesario cerrar y reabrir los canales. LN está destinado únicamente a las microtransacciones. Siempre puede ser difícil enviar cantidades más grandes y es probable que algunos fallos de pago sean inevitables.
PoS vs. segundas capas
Las segundas capas son definitivamente importantes y serán necesarias. Por otro lado, LN no es necesariamente una solución completa y suficiente para el problema de la escalabilidad. Imagina que existan múltiples segundas capas, y esas segundas capas también intercambien monedas entre sí. Bajo esta situación, sería muy difícil confiar en cuántas monedas o tokens podrían existir. Cuantas más redes de segunda capa existan, más difícil será sincronizar los datos sobre el número de monedas en circulación.
Tener la escalabilidad resuelta dentro de la primera capa a través del PoS de Ouroboros es probablemente una solución más fiable y segura. La segunda capa y las capas adicionales también son necesarias en un sistema en el que se utilizará el sistema PoS. Sin embargo, la cuestión radica siempre en cómo garantizar una buena seguridad en las capas superiores, y con qué frecuencia y por cuánto tiempo será posible realizar el asentamiento en la primera capa. Necesitamos urgentemente escalar en la primera capa, ya que esta capa siempre será la más segura. Mantener las monedas en las capas superiores por mucho tiempo no será confiable, y si muchos asentamientos en la primera capa se hacen con frecuencia, la primera capa todavía puede atascarse y las comisiones seguirán siendo altas.
Mucha gente argumenta que el PoS nunca será tan seguro como el PoW. IOHK ha demostrado matemáticamente que es posible utilizar la criptografía moderna. Tal vez necesitemos el PoW y tal vez también el PoS. La adopción de redes distribuidas abiertas es todavía muy baja y uno de los obstáculos más debatidos es el problema de la escalabilidad. Tenemos una solución. Son la segunda capa y el PoS con el sharding. Ahora sólo necesitamos tiempo para probar ambas soluciones y hacer que la gente elija.
La segunda capa como Lightning Network probablemente siempre requerirá la apertura y cierre de los canales y cuidarlos en un sentido de liquidez. El usuario tiene que considerar con quién abre qué canal, y cuánto dinero se necesita para ponerlo. Si las transacciones en la primera capa son costosas, será costoso mantener los canales en la segunda capa. No tienes que lidiar con esto dentro del consenso PoS. Tendrás todos tus activos en una billetera, y podrás enviar una transacción directa a cualquiera en cualquier momento. Todo sucede en la blockchain. No hay dependencia a las billeteras en línea, a la liquidez, a los nodos buscando rutas, y los usuarios no necesitarán depender de redes fuera de la blockchain y el consenso de la red. Al menos desde el punto de vista de la interfaz de usuario, el PoS puede ofrecer una solución mucho más agradable.
Resumen
La blockchain puede asegurar la propiedad de tus bienes. Es una gran característica que la base de datos no puede ofrecer. Para que esta característica sea adoptada universalmente, necesita estar disponible técnicamente. No podemos hacerlo ahora mismo, pero podremos hacerlo pronto. Si la gente decide hacer un uso mayor de la blockchain y de sus posibilidades, entonces el cielo es el límite.
Los defensores del consenso PoW argumentan que el sistema PoS no funcionará. Es necesario darse cuenta de que el PoW funciona bien a pesar de que probablemente fue implementado por una sola persona durante un año. Un gran equipo de profesionales ha estado trabajando en el protocolo de Cardano durante más de 5 años. No hay ninguna razón lógica para pensar que no puedan tener éxito. No tiene sentido decir que porque tenemos PoW, no necesitemos PoS. El mercado es aún muy joven y la gente aún no ha elegido lo que quiere usar. Siempre es mejor elegir entre más alternativas que verse obligado a usar una única solución.
Considera la posibilidad de delegar tus ADA en Cardanians, ticker CRDNS.
Nuestro equipo está relacionado con el desarrollo de Adapools.org.
Si te gustan nuestros artículos, puedes apoyarnos con una donación:
[ADA] DdzFFzCqrhsp2Qsit7VGq5jpjehGFmVt9rvJzSRnWJ8S5HaMqpXxg7kguevE7jvxhPgmHbrKGtRXGGF7jVHjcnSBfQ5sEGKB7HVvDNyR
[BTC] 3GvKDw7GWfyawMo3QcHkVJCUjGvbyUqboA
Embajadores de Cardano: Jaromir Tesar y Lukas Barta
Vías de contacto
Web: https://cardanians.io
Twitter: @Cardanians_io
Adapool Twitter: @AdapoolsO
Email: hello@cardanians.io
Telegram: Telegram: Contact @cardanians
Facebook: Cardano CZ/SK: Cardano [ADA] CZ/SK | Facebook