¿Cómo crear una aplicación descentralizada que escale? Utilice menos cadena de bloques

No, lanzar una aplicación descentralizada (dapp) en blockchain no conducirá a un negocio exitoso. De hecho, la mayoría de los usuarios ni siquiera piensan si la aplicación se ejecuta en blockchain: simplemente eligen un producto que es más barato, más rápido y más simple.

Desafortunadamente, incluso si blockchain tiene sus propias características y beneficios únicos, la mayoría de las aplicaciones que se ejecutan en él son mucho más caras, más lentas y menos intuitivas que sus competidores centralizados.

¿Cómo crear una aplicación descentralizada que escale? Utilice menos cadena de bloques

Muy a menudo, en los documentos técnicos de las aplicaciones construidas en blockchain, puede encontrar un párrafo que dice: "Blockchain es costoso y no puede soportar la cantidad requerida de transacciones por segundo. Afortunadamente, muchas personas inteligentes están trabajando para escalar blockchain y Cuando se lance nuestra aplicación, será bastante escalable”.

En un simple párrafo, un desarrollador de dapp puede renunciar a una discusión más profunda sobre problemas de escalabilidad y soluciones alternativas a los problemas. Esto a menudo conduce a una arquitectura ineficiente donde los contratos inteligentes que se ejecutan en la cadena de bloques sirven como backend y núcleo de la aplicación.

Sin embargo, todavía existen enfoques no probados para la arquitectura de aplicaciones descentralizadas que permiten una escalabilidad mucho mejor al reducir la dependencia de la cadena de bloques. Por ejemplo, Blockstack está trabajando en una arquitectura donde la mayoría de los datos y la lógica de la aplicación se almacenan fuera de la cadena.

Veamos primero un enfoque más tradicional, que utiliza blockchain como intermediario directo entre los usuarios de aplicaciones y que no escala particularmente bien.

Enfoque #1: Blockchain como backend

Para que quede más claro, tomemos como ejemplo la industria hotelera. Se trata de una industria enorme en la que intermediarios como Booking.com, cobran una tarifa enorme para conectar huéspedes y hoteles.

En cualquier situación en la que queramos derrotar a dicho intermediario utilizando este enfoque, intentaremos replicar su lógica de negocios utilizando contratos inteligentes en una cadena de bloques como Ethereum.

Los contratos inteligentes de código abierto que se ejecutan en la "computadora mundial" pueden conectar a los comerciantes con los consumidores sin un tercero de por medio, lo que en última instancia reduce las tarifas y comisiones cobradas por el intermediario.

Como se muestra en la imagen a continuación, los hoteles utilizan una aplicación descentralizada para publicar información en la cadena de bloques sobre las habitaciones, su disponibilidad y precios entre semana o fines de semana, y tal vez incluso una descripción de las habitaciones con toda la demás información relevante.

¿Cómo crear una aplicación descentralizada que escale? Utilice menos cadena de bloques

Cualquiera que quiera reservar una habitación utiliza esta aplicación para buscar hoteles y habitaciones alojadas en blockchain. Una vez que el usuario selecciona una habitación, la reserva se realiza enviando la cantidad requerida de tokens al hotel como depósito. Y en respuesta, el contrato inteligente actualiza la información en la cadena de bloques de que el número ya no está disponible.

Este enfoque tiene dos caras del problema de la escalabilidad. Primero, el número máximo de transacciones por segundo. En segundo lugar, la cantidad de datos que se pueden almacenar en la cadena de bloques.

Hagamos algunos cálculos aproximados. Booking.com dice que tiene casi 2 millones de hoteles registrados con ellos. Digamos que un hotel promedio tiene 10 habitaciones y cada una se reserva solo 20 veces al año, lo que nos da un promedio de 13 reservas por segundo.

Para poner este número en perspectiva, cabe señalar que Ethereum puede procesar aproximadamente 15 transacciones por segundo.

Al mismo tiempo, vale la pena considerar que nuestra aplicación también contendrá transacciones de hoteles, para descargar y actualizar constantemente información sobre sus habitaciones. Los hoteles actualizan los precios de las habitaciones con mucha frecuencia, a veces incluso a diario, y cada cambio de precio o descripción requiere una transacción en la cadena de bloques.

Aquí también hay problemas de tamaño: el peso de la cadena de bloques Ethereum recientemente superó la marca de 2TB. Si las aplicaciones con este enfoque se volvieran realmente populares, la red Ethereum se volvería extremadamente inestable.

Un sistema de este tipo basado en blockchain puede excluir a los externos debido a su imparcialidad y falta de centralización, las principales ventajas de la tecnología blockchain. Pero blockchain también tiene otras características: se distribuye y no se reescribe, estas son características excelentes, pero hay que pagar por ellas en la velocidad y la comisión de las transacciones.

Por lo tanto, los desarrolladores de dapp deben evaluar cuidadosamente si cada característica que utiliza blockchain realmente necesita distribución y no escritura.

Por ejemplo: ¿cuál es el beneficio de distribuir los datos de cada hotel entre cientos de máquinas en todo el mundo y almacenarlos allí de forma permanente? ¿Es realmente importante que los datos históricos sobre tarifas de habitaciones y disponibilidad siempre estén incluidos en la cadena de bloques? Probablemente no.

Si comenzamos a hacer preguntas como estas, comenzaremos a ver que no necesariamente necesitamos todas las costosas características de blockchain para todas nuestras funciones. Entonces, ¿cuál es la alternativa?

° 2: arquitectura inspirada en Blockstack

Aunque el énfasis principal Blockstack en aplicaciones en las que los usuarios son propietarios de sus datos (por ejemplo, como Texto aéreo, BentenSonido, Optimizador de imágenes o Grafito), blockstack también tiene la filosofía de utilizar blockchain a la ligera, solo cuando sea absolutamente necesario. Su principal argumento es que blockchain es lento y costoso y, por lo tanto, solo debe usarse para transacciones únicas o poco frecuentes. El resto de la interacción con las aplicaciones debe ocurrir a través de peer-to-peer, es decir. Los usuarios de aplicaciones descentralizadas deben compartir datos directamente entre sí, en lugar de a través de blockchain. Después de todo, las aplicaciones descentralizadas más antiguas y exitosas, como BitTorrent, el correo electrónico y Tor, se crearon antes del concepto mismo de blockchain.

¿Cómo crear una aplicación descentralizada que escale? Utilice menos cadena de bloques
Izquierda: el primer enfoque, en el que los usuarios interactúan a través de blockchain. Derecha: los usuarios interactúan directamente entre sí y la cadena de bloques solo se usa para identificación y similares..

Volvamos al ejemplo de reserva de hotel. Queremos un protocolo imparcial, independiente y abierto para conectar a los huéspedes con los hoteles. En otras palabras, queremos eliminar al intermediario centralizado. No necesitamos, por ejemplo, almacenar constantemente los precios de las habitaciones en un libro de contabilidad distribuido común.

¿Por qué no permitimos que los huéspedes y los hoteles interactúen directamente en lugar de hacerlo a través de blockchain? Los hoteles pueden almacenar sus precios, disponibilidad de habitaciones y cualquier otra información en algún lugar donde sea accesible para todos, por ejemplo, IPFS, Amazon S3 o incluso su propio servidor local. Así es exactamente como se llama el sistema de almacenamiento descentralizado de Blockstack Gaia. Permite a los usuarios elegir dónde quieren que se almacenen sus datos y controlar quién puede acceder a ellos a través de un enfoque llamado almacenamiento multiusuario.

Para generar confianza, todos los datos del hotel están firmados criptográficamente por el propio hotel. Independientemente de dónde se almacenen estos datos, su integridad se puede verificar utilizando las claves públicas asociadas con la identidad de ese hotel almacenadas en la cadena de bloques.

En el caso de Blockstack, sólo su información de identidad se almacena en la cadena de bloques. La información sobre cómo obtener los datos de cada usuario se almacena en archivos de zona y se distribuye a través de una red peer-to-peer mediante nodos. Y una vez más, no necesitas confiar en los datos que proporcionan los nodos, porque puedes verificar su autenticidad comparándolos con los hashes que se almacenan en la cadena de bloques y otros usuarios.

En una versión simplificada del sistema, los huéspedes utilizarán la red peer-to-peer de Blockstack para buscar hoteles y obtener información sobre sus habitaciones. Y la autenticidad e integridad de todos los datos que recibe se pueden verificar utilizando claves públicas y hashes almacenados en circuito virtual Pila de bloques.

Esta arquitectura es más compleja que el primer enfoque y requiere una infraestructura más completa. De hecho, aquí es exactamente donde entra en juego Blockstack, proporcionando todos los componentes necesarios para crear un sistema tan descentralizado.

¿Cómo crear una aplicación descentralizada que escale? Utilice menos cadena de bloques

Con esta arquitectura, solo almacenamos en la cadena de bloques los datos que realmente necesitan ser distribuidos y no sobrescritos. En el caso de Blockstack, solo necesita transacciones en la cadena de bloques para registrarse e indicar dónde deben almacenarse sus datos. Es posible que deba realizar más transacciones si desea cambiar parte de esta información, pero este no es un evento recurrente.

Además, la lógica de la aplicación, a diferencia del primer enfoque, se ejecuta en el lado del cliente y no en contratos inteligentes. Esto permite al desarrollador cambiar esta lógica sin actualizaciones de contratos inteligentes costosas o, a veces, incluso imposibles. Y al mantener los datos y la lógica de las aplicaciones fuera de la cadena, las aplicaciones descentralizadas pueden alcanzar los niveles de rendimiento y escalabilidad de los sistemas centralizados tradicionales.

Conclusión

Las aplicaciones que se ejecutan en Blockstack pueden escalar mucho mejor que las aplicaciones blockchain convencionales, pero es un enfoque más joven con sus propios problemas y preguntas sin respuesta.

Por ejemplo, si una aplicación descentralizada no se ejecuta en contratos inteligentes, esto reduce la necesidad de tokens de utilidad. Esto podría causar problemas a las empresas considerando que las ICO han sido la principal fuente de financiación para aplicaciones descentralizadas (incluido el propio Blockstack).

Aquí también hay problemas técnicos. Por ejemplo, es relativamente fácil implementar una función de reserva de hotel en un contrato inteligente, donde en una operación atómica, las reservas de habitaciones se realizan a cambio de tokens. Y no es muy obvio cómo funcionará la reserva en una aplicación Blockstack sin contratos inteligentes.

Las aplicaciones dirigidas a mercados globales con potencial para millones de usuarios deben escalar muy bien para tener éxito. Es un error depender únicamente de blockchains para alcanzar este nivel de escalabilidad en un futuro próximo. Para poder competir con grandes actores del mercado centralizado como Booking.com, los desarrolladores de aplicaciones descentralizadas deberían considerar enfoques alternativos para diseñar sus aplicaciones, como el que ofrece Blockstack.

Fuente: habr.com

Añadir un comentario