¿Qué es Blockstack?

La llegada de las DApps o aplicaciones descentralizadas al mundo de las criptomonedas marcó el inicio de un enorme salto evolutivo en la tecnología blockchain, pero ha quedado vinculado en gran medida a la blockchain de Ethereum (ETH). No obstante, Blockstack busca llevar ese salto evolutivo al ecosistema de la criptomoneda más famosa y usada: Bitcoin (BTC).

¿El objetivo? Extender las capacidades de esta blockchain para ofrecer a sus usuarios y desarrolladores smart contracts o contratos inteligentes potentes. Esto junto con toda la infraestructura y herramientas necesarias para desplegar aplicaciones descentralizadas (DApps) que aprovechen este potencial.

Sin lugar a dudas un proyecto muy interesante y que genera grandes expectativas puesto que, además, es un proyecto que ya funciona y comienza a mostrar todo su potencial.

Introducción a Blockstack

Blockstack es un proyecto de software libre que está enfocado en extender la funcionalidad de la blockchain de Bitcoin. Para ello, Blockcstack ha generado toda una infraestructura de apoyo dedicada a ofrecer capacidades de smart contracts y toda la infraestructura necesarias para que las DApps funcionen de forma correcta sobre la blockchain de Bitcoin, y lo mejor, sin tener que afectar de forma negativa el protocolo de Bitcoin.

Origen del proyecto

La historia de este proyecto comienza en 2013, año en el cual Muneeb Ali y Ryan Shea fundaron Blockstack. El objetivo de esta empresa era resolver los problemas subyacentes de las aplicaciones web y móviles actuales. Para el verano de 2014, Muneeb y Ryan presentaron su propuesta ante el acelerador YCombinator, y adicional llevaron a cabo una ronda de financiación semilla en la que participaron Union Square Ventures (USV), Naval Ravikant, SV Angel y otros.

Resultado de estas primeras inversiones y del trabajo en la tecnología blockchain, en el año 2017 se lanzaba la primera versión de Blockstack, la cual tenía en funcionamiento un explorador de DApps (Blockstack Browser) y un sistema de almacenamiento distribuido en funcionamiento. Así, para finales de 2017, la compañía también aseguró dos rondas de financiamiento adicionales a través de una Serie A, liderada por USV, con la participación de Lux Capital, Digital Currency Group y otros, así como una oferta de tokens.

Lanzamiento de la primera versión de Blockstack

Con la nueva ronda de financiación asegurada, Blockstack lanzó una red de prueba o testnet para su cadena de bloques (denominada Stacks) en el segundo trimestre de 2018, poniendo en marcha oficialmente la red principal Stacks v1 en octubre de ese mismo año. Este lanzamiento también distribuyó tokens a los primeros inversores que participaron en la ronda de compra de tokens.

El equipo también presentó un piloto de su programa App Mining con 38 aplicaciones registradas. App Mining es un mecanismo de Blockstack para incentivar a los proyectos y desarrolladores a construir en la red Stacks, ya que las principales aplicaciones de los usuarios activos mensuales reciben recompensas de STX. El número de aplicaciones basadas en Blockstack participantes se disparó a casi 300 en sus primeros doce meses. En la actualidad, App Mining se encuentra en pausa, tras lograr más de 500 proyectos registrados y está en estudio la activación de un App Mining 2.0

Pero siguiendo con los logros, para julio de 2019, Blockstack PBC realizó la primera oferta de tokens para calificar en la exención Reg A. Según un informe del Wall Street Journal, la startup pasó casi un año trabajando con la SEC para cumplir con los requisitos. Al cumplir con los términos requeridos para la exención, la oferta de tokens sin precedentes de Blockstack le otorgó a la compañía otros 15,5 millones $ USD en capital. Los inversores recibieron sus tokens a través de un hard fork de la red aproximadamente un mes después del cierre de la venta. En total, Blockstack pudo captar un total de 23 millones de dólares en inversiones.

A partir de octubre de 2019, con casi 300 aplicaciones creadas en la plataforma y con contribuciones de más de 100 equipos de desarrolladores independientes, la red Stacks todavía estaba en la v1, y se espera que la v2 se lance a finales de 2020. Con este nuevo lanzamiento, las capacidades de Blockstack se vieron incrementadas de forma significativa, en especial, con la inclusión de Clarity, su lenguaje dedicado para smart contracts.

¿Cómo funciona Blockstack?

Blockstack es un protocolo de segunda capa, por lo que todo su funcionamiento pese a depender de Bitcoin, no almacena información directamente dentro de la blockchain de Bitcoin, manteniendo una clara separación entre la interactividad de la blockchain y las aplicaciones sobre Blockstack.

Por otro lado, esto significa que Blockstack depende de toda una infraestructura de funcionamiento externa a la blockchain de Bitcoin, y estas partes son las que realmente permiten que Blockstack ejecute sus DApps.

Sin embargo, la estructura de funcionamiento de Blockstack actual cambiará significativamente con la llegada de su versión 2, la cual se estima para principios de 2021. Debido a ello, te explicaremos de la forma más detallada y sencilla posible el funcionamiento del Blockstack actual, y los próximos adelantos que incluirá la plataforma con su próxima mainnet.

Aclarado este punto, el funcionamiento actual y futuro de Blockstack puede verse como una estructura cruzada de servicios. Esto nos dejaría entonces con un esquema de funcionamiento como este:

Cómo funciona Blockstack

Como podemos ver, Bitcoin y su blockchain se encuentra en la capa más abstracta de todo el sistema, es decir abajo del todo. Esto significa que todo el trabajo de la red Blockstack depende del trabajo computacional que se da sobre esta red. Esta primera característica se usa actualmente y se mantendrá con la segunda versión de la plataforma.

Adicional a esto, Blockstack usa su sidechain Stack, para tener una contabilidad interna para todas sus aplicaciones. Esta es una función que también está activa en la actualidad, pero con la segunda versión se mejorará al añadir la capacidad de desplegar smarts contracts y otros tokens.

Sobre la sidechain de Stack, se construyen una serie de servicios y protocolos pensados para expandir las capacidades de smart contracts y DApps de Blockstack. Entre dichas funciones podemos mencionar su servicio de almacenamiento distribuido (Gaia), el sistema de autenticación descentralizada, un sistema descentralizado DNS, servicios financieros y demás servicios que se deseen añadir a futuro. En la actualidad, servicios como Gaia, DNS e identidad digital distribuida ya se encuentran funcionando sobre la versión 1 del protocolo, pero sus capacidades mejorarán enormemente con la versión 2.

Finalmente, para facilitar el desarrollo de aplicaciones, Blockstack crea una serie de protocolos bien definidos que facilitan el acceso a todas estas funciones, permitiendo así que los desarrolladores puedan crear DApps de forma sencilla y desplegar las mismas sobre Blockstack, cerrando con ello el ciclo de desarrollo de una DApps sobre esta plataforma.

Stack Tokens (STX), una moneda para la plataforma

Blockstack cuenta con su propio token, el cual se llama Stack Token (STX). En su actual red, la generación inicial de este token responde a una emisión dada en su Genesis Block o bloque génesis. Esta emisión produjo un total de 1,32 mil millones de tokens cuando la red se puso en marcha en noviembre de 2018. De estos, 1,32 mil millones de tokens del Genesis Block, se asignaron un total de 866.827.880 tokens de Stacks a compradores anteriores con el lanzamiento del Genesis Block, mientras que 453.172.120 permanecieron sin asignar.

Esta asignación inicial sirvió para distribuir tokens a los inversores que participaron en la ICO y las rondas de financiación del proyecto durante 2017 y 2018. El resto de tokens por su parte, fue asignado y distribuido junto con el hard fork de la red que distribuyó los tokens vendidos o asignados como parte de varias ventas y distribuciones que tuvo lugar en 2019.

Ahora bien,en la actualidad estos tokens tienen una función que está limitada dentro de la sidechain Stack. Esto se debe a que, al movilizar tokens STX, realmente lo que movemos es un valor de unos pocos satoshis dentro de la blockchain de Bitcoin, y esta operación se ve reflejada tanto en la sidechain Stack (para contabilidad interna) como en la blockchain de Bitcoin. En pocas palabras, de momento STX es un token dentro de la blockchain de Bitcoin, y esto lleva a la plataforma a tener fuertes problemas de escalabilidad y uso.

Pero para ver esto de una forma más clara, tomemos por ejemplo esta dirección dentro de la sidechain Stack:

Aquí podemos ver que dicha dirección cuenta con una contabilidad como la de cualquier otra criptomoneda. Sin embargo, cuando seleccionamos alguna de sus operaciones para obtener más datos podremos ver claramente que estas operaciones tienen incidencia en Stack y Bitcoin.

Podemos ver que la operación tiene asociadas dos direcciones Stack (empiezan con “S”) y también tiene asignado un Block Num (Número de bloques) e incluso, un TX ID (Identificación de Transacción) de Bitcoin. Así, por ejemplo, si revisamos la información de la TX de Bitcoin obtenemos lo siguiente:

Visualización de una transacción de Blockstack en la blockchain de Bitcoin

Es decir, la transacción también existe en Bitcoin, y es una operación de bajo valor (cercano a los 0,05 €). Este modelo es el mismo que usa Tether sobre OmniLayer, la cual trabaja sobre Bitcoin.

Para salvar las limitaciones de este modelo, Blockstack busca lanzar su segunda versión, donde el token STX responderá a nuevas reglas y tendrá nuevas capacidades. La primera de ellas, es que la generación de tokens STX responderá a un proceso de minería utilizando un esquema que une la Prueba de Trabajo (PoW) con la Prueba de Quemado (PoB). Este nuevo esquema se llama Prueba de Transferencia o PoX.

La principal característica de este sistema es que su emisión y dificultad de minería es variable, adaptándose así a las necesidades de la red y afectando lo menos posible el valor del token dentro de los mercados. Así por ejemplo en momentos de alta actividad de la red, la misma generará más tokens STX, y en momentos de menos actividad, reducirá la emisión de estos tokens hasta un mínimo programado en el protocolo. Vale destacar que este proceso es automático y es controlado directamente por el protocolo de Blockstack.

La idea de este sistema pensado para Blockstack v2 es procesar aproximadamente 4383 bloques por mes (unos 52.596 bloques por año). De igual forma la generación mínima de tokens STX será de 500 tokens durante los primeros 262.980 bloques (aproximadamente 5 años). Esta emisión se irá reduciendo cada 262.980 bloques hasta llegar a los 300 tokens STX por bloque, el cual será el punto de generación más bajo por bloque que podrá alcanzar la red. Es decir, a partir de ese punto, cada bloque podrá generar como mínimo 300 tokens.

De la misma forma, la cantidad máxima de tokens generados será de 3.000 tokens por bloque para los primeros 262.980 bloques. Dicha cantidad se irá reduciendo en 1000 tokens cada 262.980 bloques hasta llegar a 1.000 tokens. En ese punto, 1.000 tokens será la generación máxima de cada bloque subsiguiente. Esto claramente nos dice que el token STX es un token de emisión inflacionaria, y también que su inflación será bastante alta.

Ahora bien la utilidad de estos nuevos tokens estará centrada inicialmente en:

  1. Registrar activos digitales en Blockstack. Los usuarios de Blockstack podrán usar sus tokens STX para registrar diferentes tipos de activos digitales como nombres de usuarios, nombres de dominios, licencias de software, podcasts y mucho más.
  2. Registrar y ejecutar smart contracts. Para ejecutar smart contracts es necesario tener “Gas” para financiar el coste de verificar la exactitud del Smart contract y el coste de su ejecución. Los tokens Stacks también pueden ser utilizados para cubrir los costes de almacenamiento del smart contract en la Stacks blockchain.
  3. Tasas de las transacciones. Los tokens Stacks son utilizados para pagar las tasas derivadas de incluir una transacción dentro de la Stacks Blockchain.
  4. Anchored app chains (Aplicaciones de la cadena ancladas). Para que las apps se conviertan populares en Blockstack, nuestra blockchain tiene una “rampa de escalabilidad” dónde una app puede inicializar su blockchain encima de la Stacks blockchain. Dicha “aplicación cadena” quema los tokens Stacks para su minado y progresión.

Clarity, el lenguaje de programación de smart contracts

Una de las funciones más esperadas de Blockstack v2 es su capacidad de ejecutar smart contracts programados en Clarity, el lenguaje de programación de este protocolo. Clarity, es un lenguaje de programación pensado en la seguridad, optimización y tener una sintaxis sencilla y muy parecida a Lisp, un conocido lenguaje de programación.

Sin embargo, la principal característica de Clarity es su enfoque proactivo en la seguridad, algo que tiene mucho sentido en entornos abiertos y públicos como las blockchain. Esto está pensado en evitar situaciones como las de Ethereum y Solidity, donde los fallos de programación llevan a la pérdida de miles de millones de dólares y son un dolor de cabeza continuo para los desarrolladores.

Pero ¿Cómo logra esto Clarity? Pues bien, lo hace siguiendo un camino distinto a Solidity, y es que para empezar Clarity es un lenguaje adaptativo. Esto quiere decir que puede ser Turing Incompleto o Turing Completo, dependiendo de la forma en cómo se analice y ejecute. Esto por un lado resta flexibilidad a la hora de programar, pero brinda un mayor rango de seguridad al limitar las acciones que son posibles de realizar con este lenguaje. Además permite crear un código más limpio, algo que también se traduce en menos errores de código y facilidad para analizar por otras personas y crear herramientas de análisis y depuración.

Esto simplifica los requisitos de ejecución de ese lenguaje, haciéndolo menos exigente a nivel de potencia de cómputo con el fin de obtener resultados más escalables. Es un lenguaje interpretado por lo que los smart contracts llegan a la blockchain tal cual han sido programados sin ninguna ofuscación o codificación inteligible para cualquier persona.

Clarity el lenguaje de smart contracts de Blockstack

Proof of Transfer o Prueba de Transferencia (PoX), el corazón de Blockstack

El corazón de la próxima versión de Blockstack es su protocolo de consenso llamado Proof of Transfer o Prueba de Transferencia (PoX). Este es un protocolo derivado del protocolo Proof of Burn (PoB) y que permite establecer una correlación de trabajo computacional entre la blockchain de Bitcoin y la sidechain Stacks de Blockstack. Vale decir que este diseño aplica solamente a la versión 2 de Blockstack, puesto que su actual versión 1 ejecuta sus acciones directamente sobre la blockchain de Bitcoin limitando así su capacidad de escalar.

El nacimiento de PoX se debe gracias a la creación del SIP-001, llamado Burn Election, en el cual se propone un sistema conocido como Pruebas Ajustables o Tunables Proof. Este sistema permite elegir un líder de minería usando una serie de pruebas. De esta forma, el sistema permite iniciar una nueva cadena de bloques en la parte superior de una cadena de bloques existente teniendo en cuenta dos procesos:

  1. Destruyendo los tokens de la cadena de bloques existente (generando una prueba de quemado)
  2. Generando una prueba de trabajo adjunta separada

Al final, ambas pruebas de trabajos se ponderan para crear el protocolo de consenso final de la sidechain Stack, donde el líder elegido puede validar las transacciones para un bloque determinado, y se reinicia el proceso de selección para el nuevo bloque.

Para mejorar la seguridad del sistema, la dificultad de estas Pruebas Ajustables cambia regularmente a medida que participan más y más líderes. Esto permite que la cadena Stacks aproveche la seguridad de una cadena de bloques establecida para preservar sus historiales de transacciones mientras la participación de los líderes es baja (como durante la infancia de la cadena) y, con el tiempo, la transición hacia su propio grupo de líderes a medida que la cadena se vuelve más popular.

Atlas, una red P2P de alta velocidad y escalabilidad

Dado que el objetivo principal de Blockstack es generar una plataforma para el despliegue de aplicaciones DApps de alta demanda, esto hace necesario la creación de una P2P capaz de hacer frente a una altísima cantidad de datos en tránsito y que tenga una escalabilidad de alto nivel para ajustarse al crecimiento futuro de la red.

La solución para esto es Atlas, una red P2P que está basada en el modelo del protocolo gossip para su funcionamiento. Atlas tiene la capacidad de que cada par mantiene un registro de los pares existentes en la red, y cada par intenta almacenar una copia completa de todos los datos de la red. De esta manera, se busca que la red sea altamente tolerable a fallos y al mismo tiempo tenga una escalabilidad de alto nivel.

Junto a esto Atlas es una red de funcionamiento segregado. Esto quiere decir que la red está dividida en dos partes. La primera parte de la red sirve para almacenar los datos de la blockchain propiamente (hashes de bloques y de transacciones). Mientras que la segunda almacena los datos de esos hashes. Como mecanismo de protección, los datos almacenados en la segunda sección están relacionados criptográficamente a los fines de evitar manipulaciones.

¿Resultado? Blockstack propone que puede llegar a ser una blockchain de bajo peso, rápidamente sincronizable y replicable, y con gran nivel de escalabilidad debido a la poca cantidad de información que maneja.

Extendiendo la funcionalidad de Blockstack

Finalmente, Blockstack busca crear una serie de protocolos que simplifiquen el uso de sus herramientas. En este caso, Blockstack actualmente tiene en funcionamiento varios de estos protocolos, pero en su segunda versión añadirá la capacidad de interactuar con estos por medio de smart contracts, ampliando la descentralización de este sistema.

Entre los protocolos iniciales de esta red están:

  1. Gaia, un sistema de almacenamiento de datos controlado por el usuario y de funcionamiento distribuido. Puede verse como una versión de Filecoin, IPFS o Sia, proyecto que tienen amplia trayectoria en este tipo de desarrollos. La idea es que Gaia sirva de espacio de almacenamiento necesario para la ejecución de las DApps, sosteniendo la interacción y generación de datos entre estas y los usuarios.
  2. Sistema de Autenticación Blockstack, un sistema de autenticación digital descentralizado que permitirá a los usuarios crear un ID en Blockstack para usarlo como medio de interacción con las DApps de la plataforma. Los datos son almacenados usando la sidechain Stack, Gaia y el sistema de Servicios de Nombres de Blockstack (BNS).
  3. Servicio de Nombres de Blockstack (BNS), un sistema DNS que permite registrar desde nombres de usuario o sitios web de forma descentralizada. Una evolución de Namecoin y contrincante de sistemas como Ethereum Nameservice (ENS).
  4. Servicios de Finanzas Descentralizadas (DeFi), con la creación de la capacidad de smart contracts y el resto de funciones añadidas, Blockstack apunta al cada vez más creciente ecosistema DeFi. Con todas estas capacidades, Blockstack será capaz de permitir la creación de aplicaciones DeFi sin inconvenientes, y de hecho, podrían tener una mejor escalabilidad y seguridad en comparación con su contraparte, Ethereum.