Resumen de herramientas para la prueba y benchmarking de blockchains

Resumen de herramientas para la prueba y benchmarking de blockchains

Hoy en día, las soluciones para pruebas y benchmarking de blockchains están diseñadas para una blockchain específica o sus forks. Sin embargo, hay algunas soluciones más generalizadas que se diferencian en funcionalidad: algunos de ellos son proyectos de código abierto, otros se ofrecen como SaaS, pero la mayoría son soluciones internas creadas por el equipo de desarrollo de la blockchain. No obstante, todas tienen objetivos similares. En este artículo, intentaré abordar brevemente varios productos enfocados específicamente en las pruebas de blockchains.

El funcionamiento de una red blockchain se asemeja al de una base de datos distribuida, por lo que se pueden aplicar herramientas y métodos similares para las pruebas. Para entender mejor cómo se prueban las bases de datos distribuidas, eche un vistazo a una buena selección de recursos y artículos. desde aquí. Por ejemplo, la latencia se analiza a fondo en esta el artículo, y para comprender cómo se buscan errores en los algoritmos de replicación, recomiendo familiarizarse con esta artículo.

Describiré algunas soluciones populares para pruebas y benchmarking de blockchains. Estaré encantado si en los comentarios mencionan otros productos de software útiles para resolver las mismas tareas.

Resumen de herramientas para la prueba y benchmarking de blockchains

Comenzaré con una herramienta, aunque no fue creada específicamente para blockchains, que permite probar su funcionamiento de manera efectiva, siempre que ya exista una red en funcionamiento sobre la cual se puede experimentar. Un factor crucial en la fiabilidad de un sistema distribuido es la capacidad de seguir operando en caso de problemas con los servidores y la red. Esto puede incluir retrasos en la red, desbordamiento de disco, inaccesibilidad de servicios externos (DNS), fallos de hardware y cientos de otras causas. Para verificar la resistencia de cualquier sistema que funcione de manera coordinada en un gran número de máquinas, se puede utilizar Gremlin. Se utiliza un enfoque extremadamente eficaz llamado Ingeniería del Caos.

Con Gremlin, un agente de red propio, se pueden crear múltiples tipos de problemas en la cantidad deseada de máquinas: retrasos en la red, sobrecarga de cualquier recurso (CPU, disco, memoria, red), desactivar protocolos individuales, etc. Para blockchain, Gremlin puede usarse en servidores de red de prueba, simulando problemas reales y observando el comportamiento de la red. Con su ayuda, desarrolladores y administradores en un entorno controlado pueden observar qué sucederá en el sistema en caso de fallos o durante la actualización de código. Para esto, la red debe ser configurada y desplegada con antelación, además de ajustar la recopilación de métricas necesarias.

Gremlin es una herramienta conveniente para arquitectos, DevOps y profesionales de la seguridad, y una solución universal para probar cualquier sistema distribuido en funcionamiento, incluidos los blockchains.

Resumen de herramientas para la prueba y benchmarking de blockchains

Hyperledger Caliper es una solución mucho más especializada Hyperledger Caliper. Actualmente, Caliper admite varios blockchains representativos de la familia Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), así como Ethereum y la red FISCO BCOS.

Con Caliper, se puede definir la topología de la red blockchain y los contratos para las pruebas, así como describir la configuración de un nodo. Los nodos blockchain se levantan en contenedores Docker en una misma máquina. Luego, puede seleccionar las configuraciones de pruebas y obtener un archivo con el informe de resultados de las pruebas tras su ejecución. Puede consultar aquí el listado completo de métricas de Caliper y su enfoque para el benchmarking. Métricas de rendimiento de Hyperledger Blockchain, es un excelente artículo si está interesado en el tema del benchmarking de blockchains. Además, se puede configurar la recopilación de métricas en Prometheus/Grafana.

Hyperledger Caliper es una herramienta orientada a desarrolladores y arquitectos de sistemas, ya que garantiza la repetibilidad de pruebas y la automatización de pruebas y benchmarking. Se utiliza en el desarrollo del núcleo de los blockchains: algoritmos de consenso, máquinas virtuales para el procesamiento de contratos inteligentes, capas peer-to-peer y otros mecanismos del sistema.

Resumen de herramientas para la prueba y benchmarking de blockchains

MixBytes Tank — una herramienta que ha surgido en el desarrollo de algoritmos de consenso y finalización para redes basadas en EOS, así como en la prueba de parachains basadas en Parity Substrate (Polkadot). Funcionalmente es similar a Hyperledger Caliper, ya que permite recopilar métricas importantes de nodos de cualquier sistema distribuido y de las máquinas clientes donde se ejecutan los scripts de prueba.

MixBytes Tank utiliza varios servicios en la nube (Digital Ocean, Google Cloud Engine, entre otros) para lanzar múltiples nodos, realizar procedimientos de configuración preliminares, ejecutar varios benchmarks en diferentes máquinas de forma paralela, recopilar métricas necesarias y apagar automáticamente la red.

MixBytes Tank permite un uso económico de los recursos en servidores en la nube, apagando automáticamente recursos innecesarios después de realizar la prueba. Otra característica distintiva es el uso del paquete Molecule, que permite al desarrollador probar el despliegue del blockchain deseado de forma local.

MixBytes Tank permite detectar cuellos de botella y errores en los algoritmos en etapas tempranas, que surgen en redes reales con un gran número de servidores y clientes distribuidos geográficamente. El tanque te ayudará a comprender qué sucederá en los nodos si los clientes envían transacciones con un tps específico bajo condiciones altamente repetibles y con un número real de nodos dispersos en diferentes continentes, si es necesario.

Resumen de herramientas para la prueba y benchmarking de blockchains

Whiteblock Genesis es una plataforma para probar blockchains basados en Ethereum. Esta herramienta tiene una funcionalidad bastante amplia: permite iniciar una red, crear el número necesario de cuentas, levantar la cantidad deseada de clientes, configurar la topología de la red, especificar parámetros de bandwidth, packetloss y ejecutar pruebas.

Whiteblock Genesis proporciona su propia potencia para la realización de pruebas. Los desarrolladores solo necesitan especificar los parámetros de las pruebas, ejecutarlas utilizando una API preconfigurada y obtener resultados a través de un dashboard conveniente.

Whiteblock Genesis permite configurar pruebas lo suficientemente detalladas que la plataforma realizará automáticamente para cada cambio significativo en el código. Esto permitirá detectar errores en etapas tempranas y evaluar de inmediato el impacto de los cambios en parámetros importantes de la red, como la velocidad de transacciones y los recursos consumidos por los nodos.

Madt

Otro interesante producto joven para probar sistemas distribuidos — madt. Está escrito en Python y permite crear la topología de red necesaria y el número requerido de servidores y clientes con un sencillo script de configuración (ejemplo). Después de esto, el servicio despliega la red en varios contenedores de Docker y levanta una interfaz web donde se pueden observar los mensajes de los servidores y clientes de la red. Madt puede usarse para probar blockchains: en el repositorio del proyecto hay una prueba de red p2p basada en el protocolo Kademlia, donde se incrementan gradualmente las latencias en la entrega de datos a los nodos y se verifica el estado de esos datos.

Madt apareció recientemente, pero dada su arquitectura muy flexible, puede desarrollarse en un producto funcional.

Otras soluciones

Prácticamente cualquier prueba de la parte del sistema de blockchains requiere ejecutar escenarios preliminares, preparar cuentas y condiciones para la prueba (esto puede incluir la prueba de errores de consenso que pueden generar numerosos forks de cadenas, la ejecución de escenarios de hard fork, cambios en parámetros del sistema, etc.). Todas estas manipulaciones se realizan de manera diferente en diferentes blockchains, por lo que a los equipos les resulta más fácil adaptar gradualmente las pruebas y el benchmarking del producto a su CI/CD interno y utilizar sus propios desarrollos, que se van complejizando a medida que el funcionalidad del blockchain avanza.

Sin embargo, el uso de soluciones listas puede reducir significativamente el tiempo de prueba para estos equipos, por lo que creo que este software se desarrollará activamente en los próximos años.

Conclusión

Concluyendo este breve resumen, enumeraré algunas características importantes de las herramientas para probar blockchains:

  • La capacidad de implementar automáticamente una red blockchain en condiciones repetibles. Este factor es importante en el desarrollo de partes del sistema de blockchains: algoritmos de consenso, finalización, contratos inteligentes sistémicos.
  • El costo de propiedad del sistema, los recursos consumidos y la conveniencia para su uso continuo. Este factor proporciona al proyecto pruebas de alta calidad a bajo costo.
  • Flexibilidad y simplicidad en la configuración de pruebas. Este factor aumenta las posibilidades de detectar problemas en el sistema; hay menos probabilidad de pasar por alto algo importante.
  • Personalización para tipos específicos de blockchain. Desarrollar una solución basada en algo existente puede mejorar significativamente la calidad y reducir los tiempos de entrega.
  • La conveniencia y accesibilidad de los resultados obtenidos y su tipo (informes, métricas, gráficos, registros, etc.). Esto es absolutamente necesario si desea rastrear la historia del desarrollo del producto o si necesita un análisis profundo del comportamiento de la red blockchain.

¡Buena suerte en las pruebas y que sus blockchains sean rápidas y resilientes!

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster