Evaluación comparativa de Lisk Core v3.0.0 con Lisk Core v2.1.6

julio 17, 2021 VICTOR HUGO LAZARTE 0 Comments

 


Nuestro próximo Lisk Core v3.0.0 (denominado " Lisk Core v3 " a continuación), presenta una gran cantidad de mejoras en el nivel de código, así como múltiples características nuevas en el nivel de protocolo. El propósito de esta publicación de blog es mostrar los resultados generales de nuestros análisis con respecto a las mejoras de rendimiento y compararlos con el rendimiento de Lisk Core v2.1.6 (denominado " Lisk Core v2 " a continuación), que se utiliza actualmente para operar la red Lisk. Para lograr esto nos centramos en cuatro casos específicos de prueba, a saber, consulta de rendimiento , de crecimiento bloque de tamaño , de procesamiento de bloques , y transacciones por segundo (TPS) .

Tenga en cuenta que Lisk Core v2 está construido con Lisk SDK v2.3.8 y Lisk Core v3 está construido con Lisk SDK v5.0.0, por lo tanto, la mayoría de los resultados comparativos presentados a continuación también son aplicables a aplicaciones de blockchain construidas con Lisk SDK v5. 0.0.

Además, todas las pruebas se realizaron en un servidor de DigitalOcean que constaba de 4 CPU y 8 GB de RAM para ambas versiones de Lisk Core. Para garantizar un alto nivel de precisión, realizamos todas las pruebas 500 veces para formar los niveles de límite inferior y superior, así como para calcular los valores promedio.

Rendimiento de respuesta a consultas

Una consulta se puede definir como una solicitud de información, por lo tanto, en nuestro caso, el rendimiento de la respuesta a la consulta define el tiempo necesario para obtener una respuesta de una solicitud de API. En todas las pruebas, el tiempo se midió en milisegundos (ms). Además, en Lisk Core v3 ahora admitimos puntos finales HTTP y WebSocket. Por lo tanto, ambos se comparan con los puntos finales HTTP en Lisk Core v2.

El rendimiento de la respuesta a las consultas es especialmente importante para que las interfaces de usuario recuperen rápidamente toda la información de una cadena de bloques. La adición de WebSockets respalda aún más el desarrollo de interfaces de usuario en tiempo real.

En promedio, el rendimiento de respuesta a consultas para los puntos finales HTTP ha mejorado hasta 2,5 veces y para los puntos finales WebSocket hasta 8 veces. Estas mejoras ahora hacen posible recibir información importante como una cuenta, un bloque o una transacción a través de los puntos finales de WebSocket en un promedio de 1 ms.

Se puede extraer más información de las tablas siguientes.

Obtener cuenta por dirección

 

Lisk Core v2.1.6 HTTP

Lisk Core v3.0.0 HTTP

Lisk Core v3.0.0 WS

Min (ms)

3.32

2,24

0,49

Máx. (Ms)

30,82

19,91

14.29

Promedio (ms)

4,97

3,43

1.03


Obtener bloque por ID

 

Lisk Core v2.1.6 HTTP

Lisk Core v3.0.0 HTTP

Lisk Core v3.0.0 WS

Min (ms)

4,96

2,41

0,68

Máx. (Ms)

35,26

14.80

21.40

Promedio (ms)

7.55

3,72

1,77


Obtener bloque por altura

 

Lisk Core v2.1.6 HTTP

Lisk Core v3.0.0 HTTP

Lisk Core v3.0.0 WS

Min (ms)

5.23

2,24

0,68

Máx. (Ms)

52,95

19,91

6,88

Promedio (ms)

8,74

3,43

1,10


Obtener transacción por ID

 

Lisk Core v2.1.6 HTTP

Lisk Core v3.0.0 HTTP

Lisk Core v3.0.0 WS

Min (ms)

3,54

1,73

0,41

Máx. (Ms)

29,41

13,83

7.13

Promedio (ms)

5.26

2,80

0,65


Crecimiento del tamaño del bloque

Cada blockchain utiliza una base de datos para almacenar su información. Lisk Core v2 utiliza la base de datos relacional de objetos PostgreSQL, mientras que Lisk Core v3 utiliza la base de datos de valores clave RocksDB. El crecimiento del tamaño del bloque define la cantidad de espacio que utiliza un bloque en la base de datos. Esta es una métrica importante, ya que define lo fácil que es mantener un nodo completo y sincronizarlo completamente con la red. Ambas acciones son cruciales para mantener la red descentralizada. Sin embargo, también contrasta directamente con la escalabilidad de la red, ya que los bloques más grandes dan como resultado que se puedan procesar más transacciones. Por lo tanto, es importante diseñar el sistema de la manera más eficiente posible para poder almacenar tantas transacciones como sea posible y, al mismo tiempo, mantener un crecimiento de la cadena de bloques relativamente bien equilibrado.

En estas pruebas realizadas aquí, el tamaño se midió en kilobytes (kB). Al analizar los resultados, es evidente que se produjo una gran disminución en el tamaño del bloque para los bloques vacíos y una tremenda disminución para los bloques que contienen transacciones. Para comparar el tamaño de la cadena de bloques con la cadena de bloques de producción actual operada con Lisk Core v2, hemos creado una cadena de bloques muy similar con Lisk Core v3. Con alrededor de 3.3 millones de transacciones, Lisk Core v2 tiene un tamaño de cadena de bloques de 10 GB, y Lisk Core v3 tiene un tamaño de cadena de bloques de 1 GB. Por lo tanto, el tamaño requerido de la cadena de bloques ha disminuido y ahora es alrededor de 10 veces más pequeño.

Tamaños de bloque en diferentes situaciones

 

Lisk Core v2.1.6

Lisk Core v3.0.0

5 bloques vacíos

1616

160

70 bloques vacíos

512

400

100 bloques vacíos

560

476

5 cuadras (64 txs. Cada una)

4832

328

12 cuadras (64 txs. Cada una)

10848

492

19 cuadras (64 txs. Cada una)

16080

656

30 cuadras (64 txs. Cada una)

26664

924


Procesamiento de bloques

Es necesario que cada nodo completo de la red procese cada bloque para validar que cada transacción en él sea válida. Esto asegura que cada participante de la red esté siempre en posesión de la última actualización y el estado correcto de la cadena de bloques. En caso de que el nodo completo también sea un validador en el algoritmo de consenso DPoS de Lisk, esto asegura además que todas las transacciones enviadas en la red Lisk sean válidas y puedan ser confirmadas. Por lo tanto, esto hace que la cadena de bloques continúe progresando y garantiza que todas las transacciones se manejen correctamente.

Con un tiempo de bloque de solo 10 segundos, es de vital importancia que un nodo completo pueda recibir, procesar por completo y reenviar todo el bloque con todas sus transacciones dentro de ese período de tiempo. Lisk actualmente admite múltiples tipos de transacciones, por lo tanto, realizamos la prueba con bloques que no contienen transacciones, transacciones de transferencia regulares y transacciones de voto delegado. Todas las mediciones se realizaron en milisegundos.

Los resultados muestran claramente que el procesamiento de bloques ahora es significativamente más rápido. De hecho, ha disminuido en promedio 3 veces para los bloques vacíos y más de 33 veces para los bloques que contienen transacciones.

Bloques vacíos


 

Lisk Core v2.1.6

Lisk Core v3.0.0

Min (ms)

6.576

2.777

Máx. (Ms)

806.746

34.435

Promedio (ms)

18.407

4.815

 

Bloques con transacciones de transferencia


 

Lisk Core v2.1.6

Lisk Core v3.0.0

Min (ms)

1999.467

51.263

Máx. (Ms)

6862.420

135.075

Promedio (ms)

2267.966

67.456

Bloques con transacciones de voto delegado

 

Lisk Core v2.1.6

Lisk Core v3.0.0

Min (ms)

2207.933

64.058

Máx. (Ms)

5110.120

142.892

Promedio (ms)

2445.149

78.625

Transacciones por segundo (TPS)

La métrica más extendida para comparar varias redes blockchain es la cantidad de transacciones que pueden procesar por segundo. Por ejemplo, Bitcoin actualmente puede procesar alrededor de 7 TPS y Ethereum ronda los 18 TPS.
Gracias a las mejoras de rendimiento del procesamiento de bloques, ahora se pueden validar más bloques y transacciones en menos tiempo. Además, gracias a las mejoras en el crecimiento del tamaño de los bloques, ahora se pueden almacenar más bloques y transacciones con menos espacio requerido.
Posteriormente, eso da como resultado un mayor número de transacciones que se pueden colocar en un solo bloque, ya que cada transacción tiene un tamaño específico y, por lo tanto, el número de transacciones dentro de un solo bloque se define por el tamaño del bloque.
Con Lisk Core v3, hemos definido un límite superior de 15 KB por bloque en un tiempo de bloque de 10 segundos para mantener el crecimiento anual del tamaño de la cadena de bloques por debajo de los 50 GB. Esto da como resultado 11.25 TPS o 972,000 transacciones por día para transacciones de transferencia regulares. Esto asegura que en el mundo actual todos los usuarios puedan ejecutar fácilmente un nodo completo para validar todos los bloques y transacciones ellos mismos. Por lo tanto, esta es una mejora significativa, ya que es 5 veces más de lo que Lisk Core v2 es capaz de procesar.

Conclusión

La próxima migración de Mainnet v3 no solo vendrá con una inmensa cantidad de nuevas funciones de protocolo, sino también con mejoras clave de rendimiento para aumentar la estabilidad y escalabilidad. Esto resultará en asegurar que la cadena de bloques Lisk esté lista para manejar la mayor carga de trabajo con la interoperabilidad de Lisk en el futuro.

Para obtener más información, puede encontrar nuestra presentación Lisk.js 2021 de Benchmarking Lisk Core 3.0.0 a continuación.

 


  Nuestro próximo Lisk Core v3.0.0 (denominado "  Lisk Core v3  " a continuación), presenta una gran cantidad de mejoras en el niv...