logo
Towards The Internet of Value

Aug 0411 min read

Desarrollar apps para la web 3 en Stacks - Una primera guía

[Traducción del artículo original en inglés publicado en Medium, firmado por Harini Anantha Rajan]

Introducción

El Internet tal como hoy lo conocemos está roto. No tenemos poder sobre nuestros datos ni capa de asiento de valor nativa. Las arquitecturas de nuestros datos siguen basadas en la idea de los ordenadores de mesa, donde los datos están almacenados centralizadamente en un servidor y enviados o recuperados por un cliente, y a pesar de esto el Internet ha sido extensivamente adoptado durante treinta años.

Tal como vimos en mi anterior artículo sobre ¿Qué es Stacks?-Una primera guía, sabemos que la tecnología de una blockchain descentralizada es la solución al problema. También vimos que Bitcoin es la blockchain más segura y duradera, y que Stacks hace a Bitcoin programable.

La imagen de abajo describe la presente era de Internet (Web2) comparada con la Era Descentralizada (Web3).

Cripto y la tecnología Blockchain son complejos, y nunca existió un stack/paquete fácil para que los desarrolladores pudieran crear productos para el Internet de los usuarios. Con ‘Stacks,’ cualquiera puede desarrollar ‘Can’t Be Evil’ Web 3 apps- apps para la web 3 que “no pueden ser malvadas”, con o sin smart contracts.

En este blog, vamos a aprender sólo sobre la construcción de apps no-Defi (fuera de la esfera de las finanzas descentralizadas) para la Web3 sobre Stacks.

Nota: Referirse a mi artículo “Understanding Clarity- The smart contract programming language” para conocer los smart contracts nativos utilizados en Stacks. (*)

La ventaja más significativa de las apps construidas sobre Stacks es que tienen fricción cero, y que una persona común puede usarlo sin siquiera saber que es una DApp (aplicación descentralizada). Stacks hace que la blockchain sea programable de forma amigable para los desarrolladores. Veámoslo más a fondo.

Modelo tradicional de App Vs. Modelo Stacks de Dapp

Para cualquier aplicación, hay siempre dos áreas principales de atención para los desarrolladores:

  1. gestión de la Identidad
  2. gestión del Storage (almacenamiento)

Modelo App Model en las aplicaciones tradicionales - Aquí, los desarrolladores tienen que mantener múltiples capas.

A causa de esta estructura de las apps tradicionales, las preocupaciones surgen desde las perspectivas del usuario y del desarrollador.


Mientras tanto, en las Dapps desarrolladas usando stacks, estas preocupaciones desaparecen por completo.

Aquí, no hay necesidad de una base de datos separada o la gestión de una base de usuarios. Con la identidad creada en la blockchain, podemos acceder a todas las apps dentro del ecosistema.

Ahora, echemos una mirada a la gestión de identidad en la blockchain Sacks.

Gestión de Identidad usando el Blockchain naming System (BNS)

Confiamos en ‘naming systems’-sistemas de nombres en la vida diaria, y juegan un papel crucial en muchas aplicaciones diferentes. Sea un nombre de usuario, el nombre de una aplicación, o el nombre de un dominio, los nombres juegan un papel clave. En el ecosistema Stacks, el ‘naming/identity system’ es gestionado por el BNS.

El Blockchain Naming System (BNS) es un sistema de red -network system- que une el nombre de usuarios de Stacks con un estado off-chain sin confiar en ningún punto central de control. El BNS es implementado a través de un smart contract cargado durante el genesis block (block primigenio).

Los nombres en el BNS tienen tres propiedades:

  • los Nombres son globalmente únicos. El protocolo no permite colisiones entre nombres, y los nodos con buen comportamiento resuelven un determinando nombre con su correspondiente estado.
  • los Nombres tienen significado humano. Su creador elige cada nombre.
  • los Nombres son una propiedad muy seria. Sólo el propietario del nombre puede cambiar el estado que le corresponde. Específicamente, un nombre es propiedad de una o más ECDSA llaves privadas.

Ahora, con la ayuda del BNS, podemos crear identidades como test.id.stacks. Aquí, .stacks es lo que llamamos namespace (el top-level en la jerarquía del sistema BNS), seguido de los BNS names. En este caso, es el .id. Y el último nivel de la jerarquía es los BNS subdomains, representado en el ejemplo por test .

Lo importante a anotar es que los BNS ‘namespaces’ y ‘names’ son parte de las reglas de consenso de la blockchain, mientras que los BNS subdomains no forman parte de las reglas de consenso de la blockchain.

Para entender mejor el BNS, referirse a la documentación de Stacks: Stacks docs on BNS.

Así, si los subdomains no forman parte de las reglas de consenso, ¿cómo son almacenados los estados de los nombres off-chain?

Esto ocurre con la ayuda de la red Atlas. Atlas es parte del BNS.

El BNS permite a cada nombre almacenar cierta cantidad de state (estado) alrededor de 20 bytes. El tamaño es así de pequeño porque el estado debe ser registrado en una blockchain pública, donde el coste por byte es alto, y el protocolo de la blockchain limita el tamaño de las transacciones.

Para compensar esto, Stacks desarrolló un sistema de almacenamiento off-chain que permite a los BNS names unir y almacenar un gran número de estados para cada nombre de tal manera que preserva las propiedades de seguridad de la inscripción del estado en la blockchain.

La implementación de la referencia a Atlas actualmente permite hasta 40kb de estado unidos a un nombre BNS en lugar de los insignificantes 20 bytes. Los 40kb de datos son replicados a cada nodo BNS, donde queda almacenado para siempre.

Para saber más, ir a la documentación de Stacks sobre Atlas - Stacks docs on Atlas

De esta manera, con la ayuda del BNS+Atlas, las identidades son gestionadas eficientemente en la blockchain Stacks. Ahora, entendamos cómo se lleva a cabo la gestión del Storage (Almacenamiento).

Gestión del Storage-almacenamiento con Gaia

Las blockchains requieren consenso entre gran número de personas para que sean lentas. Además, una blockchain no está diseñada para contener muchos datos. Esto significa que usar una blockchain para cada pedacito de dato, que un usuario escribe y almacena, resulta caro. Por ejemplo, imagina si una aplicación tuviera que almacenar cada tweet en la cadena.

La blockchain Stacks aborda los problemas de funcionamiento a través de un acercamiento por capas:

  1. La capa base consiste en la Stacks blockchain y el Blockchain Naming System (BNS). Ahí las identidades son creadas.
  2. Atlas — Las identidades corresponden a datos de routing, y esto es almacenado en el Atlas Peer Network.
  3. Gaia Storage - Stacks utiliza los datos de routing para asociar identidades (nombres de dominio, nombres de usuario, y nombres de aplicación) con la localización de un almacenaje concreto en la última capa del Sistema de Almacenaje Gaia-Gaia Storage System.

Gaia Storage System (Sistema Gaia de Almacenamiento)

Un Gaia Storage System consiste en un servicio de hub y un recurso de almacén en el proveedor de cloud software. El proveedor de almacenamiento puede ser cualquier proveedor comercial como Azure, DigitalOcean, Amazon EC2, etc.

Cuando una identidad es creada, un almacén de datos correspondientes es asociado a esa identidad en Gaia. Cuando un usuario entra en una DApp, el proceso de autentificación da a la aplicación la URL del Gaia hub, y así puede escribir en el almacén en nombre del usuario en cuestión.

When an identity is created, a corresponding data store is associated with that identity on Gaia. When a user logs into a dApp, the authentication process gives the application the URL of a Gaia hub, which then writes to storage on behalf of that user.

Las aplicaciones leerán y escribirán en el Gaia hub en nombre del usuario (solamente si el usuario lo permite). El usuario mismo es el dueño de su Gaia hub o también puede usar el espacio de almacenamiento que ofrece Stacks por defecto. En ese espacio de Stacks por defecto, el hub es utilizado para almacenar datos del usuario encriptado por la llave pública del usuario. De esta manera, los proveedores de almacenamiento sólo ven blobs (binary large objects) de data y no los datos.

Entender el almacenamiento de datos Gaia

Un Gaia hub almacena los datos escritos exactamente como son entregados. Ofrece garantías mínimas sobre los datos. No asegura que los datos están formateados válidamente, contienen firmas válidas, o están encriptados. En su lugar, la filosofía del diseño es que estas preocupaciones son preocupaciones que recaen en los clientes.

Las bibliotecas de cliente (como Stacks.js) son capaces de ofrecer estas garantías. Una definición libre del principio de end-to-end guía esta decisión de diseño.

Cuando una aplicación escribe a un Gaia hub, un token de autentificación, una llave, y los datos son pasados al Gaia hub.

El token asegura que la app tiene autorización para escribir en el hub en nombre del usuario. De esta manera, desde el punto de vista del desarrollador de una aplicación, si hay algún fallo de datos a nivel de aplicación, el desarrollador no tiene nada que perder. Desde la perspectiva del usuario, somos los dueños de nuestros datos.

Ahora, veamos cómo funciona la autentificación.

Autentificación

Una app y un autentificador, como la Stacks Wallet, se comunican durante el proceso de la autentificación mediante el traspaso atrás y adelante de dos tokens. La app solicitante envía al autentificador un token authRequest

Una vez el sumario aprueba la autentificación, el autentificador responde a la app con un token authResponse .

Estos tokens son JSON Web Tokens y se pasan vía URL query strings.

El autentificador genera la llave privada de la app desde la llave privada de la dirección de identidad del usuario y del dominio de la app. La llave privada de la app tiene 3 funciones:

  • Es utilizada para crear credenciales que dan a la app acceso al espacio de almacenamiento, storage bucket, en el Gaia hub del usuario.
  • Es utilizada en la encriptación end-to-end de los archivos almacenados por la app en el almacén Gaia del usuario.
  • Sirve como secreto criptográfico, que las apps pueden usar para realizar otras funciones criptográficas.

Finalmente, el autentificador siempre generará la misma llave para una determinada dirección y dominio de Stacks durante la autentificación.

Un punto importante a anotar aquí es que los usuarios son los dueños de las llaves y que los desarrolladores de la aplicación no tienen pista alguna para los passwords asociados al nombre de usuario. De este modo. Es más seguro.

Con ese tipo de estructura, para los desarrolladores de aplicaciones, no hay coste ni mantenimiento de infraestructura. Y esto significa que crear apps en Stacks resulta mucho más fácil.

Ejemplos de unas cuantas Apps desarrolladas en la blockchain Stacks:

BlockSurvey- Private and secure forms & surveys (Formularios & encuestas seguras y privadas).
Pravica — A new Era of Communication (Una nueva era para la comunicación)
Sigle — A decentralized blogging platform (Una plataforma de blogging descentralizada)
Boom — A Wallet for STX and NFTs on Stacks 2.0. (Una cartera para Stack y NFTs en Stacks 2.0)

Resumen

El ecosistema Stacks ayuda a los desarrolladores a construir web apps éticas, que ponen a los usuarios en control de su identidad y de sus datos. El manejo de los datos en la blockchain es una operación costosa, y cuantos más datos son almacenados más pesada será la cadena. Stacks aborda esta cuestión con la ayuda de 3 capas.

  • La gestión de la identidad se lleva a cabo mediante el BNS smart contract en la blockchain Stacks.
  • El off-chain name state es gestionado por la red peer-to-peer de gestión Atlas.
  • Los Data son gestionados en el almacén de Gaia.

Con esta estructura, Stacks ayuda a los desarrolladores de aplicaciones a construir aplicaciones éticas sin tener que preocuparse por la escalabilidad, la pérdida de datos, o los costes de infraestructura.

Al mismo tiempo, Stacks ayuda a los usuarios a conservar la propiedad de su identidad y de sus datos. Por eso Stacks es una plataforma perfecta para construir el Internet en manos de los usuarios.

Call-To-Action

El ecosistema Stacks ofrece un set de herramientas ideal para construir un nuevo Internet en manos de los usuarios, dónde “nosotros ahora producto” pasamos a ser los “dueños del futuro Internet”. Ya hay más de 300+ apps construidas en La blockchain Stacks. ¡Construyamos un nuevo Internet en manos de los usuarios!

En el próximo blog de esta serie, veremos más sobre el algoritmo nativo de consenso de la blockchain Stacks, “Proof of Transfer”.(*)

Referencias

Stacks Docs

Aaron Blankstein — Introducing Blockstack

Articulo firmado por Harini Anantha Rajan (para el blog de BlockSurvey).

Traducción de Georgina García-Mauriño (Stacks advocate & Smartists co-founder)

(*) Articulos en vías de traducción. Se irán publicando en este blog.

Share this story