¿Qué es Substrate? ¿Cómo facilita la creación de blockchains?

Rubén Colomer, 1 marzo 2021

¿Qué es Substrate?

Substrate es un framework de aplicaciones web, pero para construir sistemas distribuidos o descentralizados como criptomonedas o un bus de mensajes.

Al igual que la mayoría de las aplicaciones web no deberían necesitar reimplementar su propia versión de HTTP, Substrate trata de eliminar el esfuerzo inútil y simplificar la creación de nuevas blockchains para no tener que implementar todo el código de red y consenso desde cero.

Esto supone un ahorro importante en recursos y acelera la implementación de nuevas redes…

Substrate ha sido desarrollado por Parity y, aunque está muy relacionado con Polkadot, no forma parte del mismo sistema. De hecho, Polkadot está construido con Substrate y los proyectos construidos con Substrate pueden ejecutarse de forma nativa en Polkadot, pero también puede usarse Substrate para construir nuevas blockchains.

Ventajas de Substrate

Utilizar substrate puede ahorrar muchos costes en desarrollo ya que incluye sistemas de:

  • Consenso, finalidad y lógica de votación en bloque: significa que de forma gratuita puedes obtener tolerancia a fallos bizantina, por lo que tu sistema seguirá funcionando correctamente incluso si algunos de los nodos en él están rotos, deshabilitados o son maliciosos
  • Redes, descubrimiento de pares, replicación, etc.
  • Tiempo de ejecución eficiente, determinista y con sandbox de WebAssembly: puede utilizarse para ejecutar contratos inteligentes o incluso para ejecutar otros proyectos basados en Substrate. No es necesario usar WebAssembly, por supuesto, puedes escribir tu propio intérprete de máquina virtual
  • Capacidad de ejecutar un nodo en el navegador que puede comunicarse con cualquier nodo de escritorio o en la nube
  • Abstracción de base de datos/almacenamiento de archivos multiplataforma, que incluso funciona en el navegador
  • Actualizaciones Seamless: cualquier actualización que pueda afectar al consenso se gestiona compilando el código en WebAssembly y desplegándolo como un mensaje más en la red. No sólo eso, sino que se pueden almacenar tantas versiones del código de consenso como se quiera compilar en código nativo, y Substrate se encargará de la complejidad de asegurarse de que el código nativo que se ejecuta se alinea con el código WebAssembly desplegado en ese momento. Obtienes la velocidad del código nativo, pero como siempre hay una reserva de WebAssembly, puedes desplegar una versión nativa del código a tu propio ritmo y estar seguro de que nunca puedes conseguir accidentalmente un hard fork u otros problemas de consenso.
  • Capacidad de comenzar inmediatamente a ejecutar su proyecto en Polkadot en el momento en que se libera. Aunque los proyectos construidos con Substrate pueden ser compilados para usar clientes separados por proyecto (como lo hacen las blockchains existentes), ya que Polkadot implementa la API de Substrate puedes aprovechar la seguridad compartida y la interoperabilidad que proporciona Polkadot. Polkadot está siendo construido usando Substrate, lo que nos permite obtener una rápida retroalimentación sobre cualquier agujero en el framework y nos permite ejecutar una red de prueba de Polkadot o incluso una segunda instancia de Polkadot como parachain. Si no conoces Polkadot o si no te han hecho suficiente propaganda sobre sus beneficios, puedes consultar este post en el blog de Polkadot.

¿Qué no es lo que tienes que desarrollar/personalizar?

Substrate tiene prácticamente todo, solo le falta la máquina de estado. Esto quiere decir que para que Substrate sea lo más genérico posible, no tiene transacciones. En su lugar, tiene “extrinsics”, que no son más que bloques binarios que puedes utilizar para almacenar cualquier dato que quieras. Para la mayoría de las cadenas, estos extrinsics incluirán transacciones, pero, por supuesto, no es necesario implementarlos de esa manera.

Podrías eliminar por completo el concepto de moneda de la red y utilizar Substrate para crear un sistema concurrente descentralizado al estilo del modelo de actores de Erlang, con un conjunto de autoridades de confianza para verificar el correcto comportamiento de la red.

Sin embargo, suponiendo que quieras moneda y transacciones, implementar el formato de las transacciones es bastante sencillo: sólo un formato de intercambio y una biblioteca para acceder a esos datos desde el lenguaje que elijas. Es incluso más fácil que otras arquitecturas distribuidas como los microservicios - ya que el código y los datos sobre los que opera se almacenan en el mismo lugar, no es necesario aplicar garantías de compatibilidad con versiones anteriores para las transacciones, sólo para el almacenamiento. Para las cadenas con transacciones privadas la implementación puede ser más compleja.

Fuentes

  1. github.com
  2. youtu.be
Lemming at Work puede usar cookies para recopilar estadísticas, optimizar la funcionalidad del sitio y ofrecerte publicidad basada en tus intereses. Si sigues navegando estarás aceptando su uso. Más información de nuestras políticas.