Tutorial: Conceptos clave de la cadena de bloques Lisk SDK

junio 02, 2023 VICTOR HUGO LAZARTE 0 Comments

 


¿Qué es una cadena de bloques?

En esencia, una cadena de bloques es una base de datos compartida entre varias computadoras.

Los activadores de las operaciones de la base de datos se denominan transacciones. Los datos contenidos en una transacción especifican la operación que se va a realizar.

En una cadena de bloques basada en cuentas , la validez de una nueva transacción se compara con una base de datos de cuentas de usuario. 

Una cuenta es una parte de la base de datos identificada por la dirección de la cuenta . Esto se opone a las cadenas de bloques basadas en UTXO (como Bitcoin), donde no existe un concepto de cuenta y la validez de una transacción se basa en una base de datos de transacciones pasadas referenciadas.

El costo de procesar la transacción y actualizar la cadena de bloques se especifica en la tarifa de transacción y se paga con tokens .

Las transacciones se comparten entre los nodos conectados en una red P2P y se agrupan en bloques .

La validez de un bloque (y todas las transacciones dentro de él) se determina en función del estado de las cuentas.

El protocolo de consenso especifica quién tiene derecho a forjar un nuevo bloque y cómo se llega a un acuerdo sobre los bloques. Una vez que se ha forjado el bloque, se agrega a la cadena de bloques y se aplican todos los cambios de estado inducidos por las transacciones del bloque.

Aplicaciones de cadena de bloques

¿Qué son las aplicaciones de cadena de bloques?

Una aplicación de cadena de bloques es cualquier tipo de aplicación que utiliza su propia cadena de bloques como capa de base de datos.

Más específicamente, dentro de la documentación de Lisk, cada vez que hablamos de aplicaciones blockchain, nos referimos a aplicaciones que se ejecutan en blockchains que son compatibles con el protocolo Lisk .

Diagrama de topología de red

Una aplicación de cadena de bloques generalmente consta de una red de servidores, que también se denominan nodos en este contexto.

Una red típica de nodos se ilustra en el siguiente diagrama:

red de nodos

P2P: red de nodos parcial no estructurada

La red de nodos P2P no está estructurada, lo que significa que todos los nodos son participantes iguales en la red

También es una red de malla parcial, lo que significa que cada nodo solo está conectado a un pequeño subconjunto de nodos en la red.

Las redes de malla parcial no estructuradas permiten que los nodos compartan información en la red de una manera muy rápida y segura con todos los demás nodos. También poseen la capacidad de escalar extremadamente bien, incluso para redes grandes con miles de nodos conectados.

Arquitectura de aplicaciones blockchain

Todos los componentes importantes de una aplicación de cadena de bloques se muestran en el siguiente diagrama:

arquitectura-marco-lisk

Lógica en cadena

La arquitectura en cadena es una capa de abstracción que proporciona una colección de funciones para configurar y ejecutar cualquier lógica comercial en la cadena de bloques.

En resumen, la lógica en cadena cubre los siguientes puntos:

  • 🔴 Introduce mutaciones de estado a través de bloques o transacciones .

  • 🔴 Es parte del protocolo blockchain.

  • 🔴 Es verificable por cualquier persona mediante la sincronización con la cadena de bloques.

  • 🔴 Se encuentra en módulos.

Los siguientes módulos ya están incluidos en la aplicación predeterminada, proporcionan una aplicación básica de cadena de bloques con una cadena de bloques DPoS que permite transferencias básicas de tokens entre usuarios:

Módulo DPoS , módulo Token , módulo Keys , módulo Sequence

Para ampliar y personalizar la aplicación, registre módulos adicionales a la aplicación.

Para agregar un nuevo módulo a su aplicación, reutilice un módulo ya existente de otra aplicación de blockchain o cree un nuevo módulo basado en los requisitos específicos de su aplicación.

Lógica fuera de la cadena

En resumen, la lógica fuera de la cadena cubre los siguientes puntos:

  • 🔴 Introduce nuevas características de la aplicación blockchain.

  • 🔴 No es parte del protocolo blockchain.

  • 🔴 Es opcional ejecutar en un nodo completo.

  • 🔴 Se encuentra en complementos.

La aplicación predeterminada no incluye ningún complemento de forma predeterminada, sin embargo, el SDK de Lisk se incluye con algunos complementos comunes que se enumeran a continuación, que se pueden importar directamente: for

Complemento de API HTTP , complemento de forjado, complemento de monitor , complemento de informe de mala conducta

Para ampliar y personalizar la aplicación, registre los complementos deseados en la aplicación.

Para agregar un nuevo complemento a su aplicación, reutilice un complemento ya existente de otra aplicación de cadena de bloques o cree un nuevo complemento basado en los requisitos específicos de su aplicación.

Interfaces de comunicación / API

arquitectura de la comunicación

La arquitectura de comunicación del Lisk SDK permite que los componentes de la aplicación interna y los servicios externos se comuniquen con la aplicación blockchain a través de varios canales.

El SDK de Lisk proporciona dos protocolos de comunicación estándar de la industria: Comunicación entre procesos (IPC) y Web Sockets (WS). El protocolo de comunicación de la aplicación blockchain se cambia en la configuración .

Es posible comunicarse con módulos y complementos directamente invocando acciones a través de una solicitud RPC, o suscribiéndose a eventos .

Se recomienda utilizar los protocolos IPC/WebSocket siempre que sea posible, ya que brindan un rendimiento más mejorado con respecto a los tiempos de respuesta (consulte la publicación del blog: Evaluación comparativa de Lisk Core v3.0.0 contra Lisk Core v2.1.6 ). Sin embargo, si prefiere una API HTTP, es posible agregar soporte para API personalizadas registrando complementos adicionales, como el complemento API HTTP .

Para obtener más información sobre la arquitectura de comunicación, consulte la explicación de los puntos finales .

Interfaz y backend

Las aplicaciones de cadena de bloques generalmente consisten en una parte frontal y una parte trasera, al igual que las aplicaciones web normales.

A diferencia de las aplicaciones normales de servidor-cliente, no hay un backend central, sino una red completa de nodos que juntos aseguran y mantienen el estado de la cadena de bloques. Cada nodo puede manejar una lógica empresarial compleja y proporciona una API flexible y personalizable. La propia cadena de bloques se utiliza como capa de base de datos para la aplicación.

La interfaz permite a los usuarios interactuar convenientemente con la aplicación blockchain. La implementación de un frontend es totalmente flexible. Por ejemplo, esto se puede lograr de las siguientes maneras:

  1. 🔴 Cree un nuevo complemento para la aplicación blockchain. Un ejemplo de implementación de una interfaz como complemento es el complemento LNS UI para la aplicación de ejemplo Lisk Name Service .

  2. 🔴 Utilice su marco de trabajo/lenguaje de programación favorito para desarrollar una interfaz de usuario y comunicarse con el nodo a través de las interfaces de comunicación/API . Un ejemplo es la interfaz de la aplicación de ejemplo SRS , que se ha desarrollado con React.js. Otro ejemplo es la interfaz de usuario de la aplicación Hello World, que se detalla en la guía Creación de una interfaz de usuario .

  3. 🔴 Para requisitos posteriores en un entorno de producción, se debe usar un middleware similar a Lisk Service, que agregará los datos de la red blockchain y posiblemente también de otras fuentes de terceros. Luego, la interfaz puede solicitar estos datos a través de solicitudes API del middleware.

diagramas de interfaz de usuario

Aplicaciones de cadena de bloques frente a dApps

Como las aplicaciones de cadena de bloques también son, en cierto sentido, aplicaciones descentralizadas, es posible que se pregunte cuál es la diferencia entre las aplicaciones de cadena de bloques y las dApps, o si existe alguna diferencia.

En resumen, la principal diferencia entre las dApps y las aplicaciones de cadena de bloques es que las aplicaciones de cadena de bloques se ejecutan en su propia cadena de bloques/cadena lateral, mientras que las dApps comparten la red de cadenas de bloques con otras dApps.

Las dApps generalmente se construyen como contratos inteligentes, por ejemplo, en la cadena de bloques Ethereum. El desarrollo de aplicaciones de blockchain es bastante diferente, porque es mucho más similar a construir una aplicación web normal.

La mayoría de las funcionalidades de los contratos inteligentes se pueden implementar en aplicaciones de cadena de bloques de manera mucho más fácil y directa. Sin embargo, hay una diferencia importante aquí con las dApps, cuando se trata de aplicar una nueva lógica en cadena a la aplicación: los nuevos contratos inteligentes se pueden aplicar directamente en la cadena de bloques en ejecución, mientras que agregar una nueva lógica en cadena a las aplicaciones de cadena de bloques siempre requiere un bifurcación dura en la red. Por lo tanto, las aplicaciones de blockchain son menos flexibles que las dApps cuando se trata de cargar nueva lógica en la cadena en ejecución.

Si se desean las características flexibles de los contratos inteligentes dentro de una aplicación de cadena de bloques, por supuesto, también es posible desarrollar una aplicación de cadena de bloques que admita contratos inteligentes. Por ejemplo, se podría agregar un nuevo módulo a la aplicación, que acepta contratos inteligentes. De esta manera es posible tener lo mejor de ambos mundos combinados.

Además, los contratos inteligentes pueden reutilizar una cadena de bloques ya existente, lo que ahorra tiempo al iniciar la aplicación, ya que no es necesario ocuparse de configurar una red de cadena de bloques independiente, encontrar delegados  , etc.

Las aplicaciones de cadena de bloques, por el contrario, dependen de su propia cadena de bloques y, por lo tanto, también deben cuidar de mantener su propia red. Al principio, esto hará que el lanzamiento de la aplicación sea un poco más complejo; sin embargo, tener una red independiente conlleva numerosos beneficios que se tratan en los siguientes párrafos.

La documentación de Lisk se refiere a las aplicaciones creadas con Lisk SDK como "aplicaciones de cadena de bloques" y no como "dApps". Para aclarar la diferencia aquí, las aplicaciones no comparten una cadena de bloques común, sino que cada una se ejecuta en su propia cadena. Como resultado, las aplicaciones de blockchain tienen las siguientes ventajas:

  • 🔴 Tarifas de transacción más bajas, ya que el alto tráfico de una aplicación de cadena de bloques no tiene efecto en otras aplicaciones de cadena de bloques.

  • 🔴 La cadena de bloques para la aplicación se puede diseñar con las características óptimas para el caso de uso específico (por ejemplo, ajustando el tiempo de bloqueo o el número de delegados, o incluso cambiando todo el algoritmo de consenso).

  • 🔴 Una cadena de bloques mucho más escalable, ya que solo maneja los datos de una aplicación de cadena de bloques. Por lo tanto, está creciendo mucho más lentamente en tamaño y no sufre tanto de posibles cuellos de botella en la red, que pueden ocurrir durante momentos de alta carga de trabajo en muchas dApps diferentes.

  • 🔴 Interoperabilidad: Registre una aplicación de cadena de bloques como una cadena lateral para conectarla a Lisk Mainchain (esto estará disponible pronto ). Esto proporcionará una interoperabilidad perfecta para Lisk Mainchain y todas sus cadenas laterales conectadas.


Fuente: Documentation Lisk

           

  ¿Qué es una cadena de bloques? En esencia, una  cadena de bloques  es una base de datos compartida entre varias computadoras. Los activado...