Actualización técnica de RightMesh: 15 de abril de 2019 – RightMesh

En nuestra última Actualización técnica, describimos los distintos tipos de pruebas necesarias para lanzar una plataforma robusta que funcione "a escala". Hoy, nos gustaría darle una actualización sobre nuestro progreso.

"A escala"

Para aquellos de ustedes que pueden no tener una formación técnica, comenzaremos por definir “a escala”. En primer lugar, lo que entendemos por "a escala" es esencialmente un orden de magnitud. Así es como nos referimos a la escala de operación de la plataforma RightMesh. Básicamente, significa cuántos ceros hay al final de un número. Al igual que decir "un salario de seis cifras", la preocupación no es tanto el primer dígito como el número de ceros que nos dan una sensación de escala.

En un servidor de prueba, hemos lanzado una plataforma RightMesh que consta de un millón de subprocesos (es decir, diez a la sexta potencia, o 10⁶) Cada subproceso no es igual a un nodo en este caso; sin embargo, es un paso importante para garantizar que podamos operar la red de manera efectiva. Cualquiera que haya experimentado la comercialización de sistemas de "alta disponibilidad" distribuidos de grado de operador a escala 10⁶ sabe que esto no es una tarea fácil; es por eso que las estimaciones se revisan y, a veces, como en nuestro caso, los horarios se deslizan. Lo más seguro es que no significa que hayamos abandonado nuestro objetivo; más bien, nos centramos en analizar todo tipo de modos de falla que podrían ocurrir a esa escala y con cargas pesadas … llamadas de sistema que fallan, tiempo de espera, recursos que se agotan, casos de excepción que surgen y diseños que funcionaron bien a decenas de nodos que no funcionan bien en decenas de miles. De hecho, como se esperaba, estamos encontrando esas cosas, y estamos trabajando en ellas con un rediseño cuidadoso para que, esperamos, no vuelvan a surgir a medida que ampliemos los órdenes de magnitud aún más en el futuro.

Nos gustaría abordar algunas sugerencias de la comunidad que simplemente "parchamos y enviamos". Nunca haremos esto. Tenemos criterios de lanzamiento cuantitativos para lanzar productos en Testnet y Mainnet. No hay una autoridad de "solo envíalo". Lo que esto significa es que esperamos que la plataforma sea robusta a escala cuando lanzemos. Es una buena noticia no solo para los poseedores de fichas, sino que también es la expectativa de los usuarios finales y los socios comerciales con los que actualmente estamos discutiendo proyectos piloto.

Pruebas de transacciones

Nuestro método de permitir que los usuarios sean compensados ​​por compartir el ancho de banda con canales de pago y tokens RMESH. La capacidad global de procesamiento de transacciones de la red Ethereum es de 10¹ transacciones por segundo. Para trabajar dentro de esta limitación y realizar transacciones a una velocidad de 10 por segundo, primero establecemos un canal en cadena y luego se producen los siguientes intercambios de valor dentro de ese canal. En términos sencillos, debemos enviar IOU firmados digitalmente de manera alterna, y cuando una parte desea establecerse, solo entonces debemos involucrar un nodo Ethereum.

Necesitamos estar seguros de que no hay un modo de falla en el que una transacción pueda perderse o duplicarse. Además de nuestras propias revisiones y pruebas de diseño interno, así como las pruebas en las redes Ropsten y Kovan, tenemos nuestro contrato de canal de pago preexistente así como el código de procesamiento fuera de cadena y el código de comunicaciones del nodo Ethereum auditados por un auditor externo dos veces: una vez antes del Soft Mainnet Launch, que involucra tokens de Testnet, y luego otra vez justo antes de Mainnet Launch, en cuyo punto estarán en juego los tokens reales de RMESH. Si bien esto ha sido auditado extensivamente anteriormente y no ha cambiado significativamente desde la primera implementación, queremos asegurarnos de que las cosas funcionen según lo diseñado. La primera auditoría es valiosa para darnos el tiempo máximo para solucionar cualquier deficiencia descubierta por el auditor, y la segunda auditoría, justo antes del lanzamiento de Mainnet, ofrece una seguridad adicional de que el contrato y el código son correctos para el lanzamiento después de corregir cualquier error que surja durante el período de prueba. . Planeamos publicar los resultados de la auditoría de lanzamiento previa a Mainnet para la tranquilidad de los usuarios, socios y patrocinadores. Ahora estamos atentos a esa prueba.

Pruebas del vendedor de datos

"Vendedor de datos" es el término que usamos para dispositivos que actualmente tienen una conexión directa a un punto de acceso a Internet. Para el lanzamiento de Soft Mainnet, estamos probando que cada vendedor de datos puede admitir compradores de datos de 10³. Algunos de estos compradores de datos estarán conectados directamente con el vendedor de datos, pero otros podrían estar a varios saltos de teléfono. No obstante, aunque el sistema ha sido diseñado para admitir múltiples vendedores de datos, estamos probando como si todo el tráfico generado por cada uno de esos 10³ compradores de datos se canalizara a través de un solo vendedor de datos. En otras palabras, estamos probando el uso de recursos y la carga colocada en el teléfono del vendedor de datos en el caso extremo. Nosotros también estamos en eso.

Pruebas de Android

Nos damos cuenta de que no tenemos control sobre los usuarios finales que actualizan su sistema operativo Android o sus aplicaciones, por lo que debemos anticipar que las mallas se compondrán de dispositivos que ejecuten todas las versiones de Android desde 4.0.3 a versiones actuales y múltiples de la plataforma RightMesh y RightMesh aplicaciones habilitadas. Por lo tanto, debemos asegurarnos de que comprobamos que la plataforma funciona de manera robusta en todas las versiones de la API de Android, desde la API 15 hasta la actual y entre teléfonos que ejecutan diferentes versiones de la plataforma RightMesh. También probamos diferentes fabricantes de teléfonos y tenemos esos teléfonos en diferentes estados de batería y mientras ejecutamos una aplicación de primer plano con muchos recursos. Si bien no tenemos suficientes teléfonos para emular una malla completa con todas las variantes, tenemos una amplia selección de dispositivos en nuestra colección. Este es uno de nuestros principales enfoques actuales en el próximo trimestre.

Pruebas de Superpeers múltiples

Nuestro lanzamiento privado para el proyecto financiado por Unicef ​​solo involucra a un solo Superpeer, pero con Soft Mainnet Launch, necesitaremos apoyar a múltiples Superpeers involucrados en la conexión de múltiples mallas locales. En este caso, habrá múltiples dispositivos de compra de datos en múltiples mallas diferentes que deseen comunicarse entre sí, y habrá múltiples dispositivos de venta de datos y múltiples Superpeers involucrados en la transacción fuera de la cadena. Estamos trabajando en todos los casos y modos de falla para asegurarnos de que esas transacciones se realicen correctamente a escala. Como se mencionó anteriormente, esta es un área principal de enfoque de pruebas durante el próximo trimestre.

Procesos de falla del sistema

La red RightMesh ha sido descrita como "autocurativa". Nos referimos a esto tanto en el sentido general, ya que los nuevos dispositivos que se unen a la malla “reparan” las conexiones perdidas a medida que otros dispositivos dejan la malla, pero también en un sentido más técnico que el servicio de RightMesh que se ejecuta en segundo plano en cada teléfono puede detectar fallas en sí mismas, reaparecen, restauran el estado y continúan operando. Los usuarios finales no deben ser conscientes de las fallas del sistema en la mayoría de los casos. Por supuesto, reiniciar después de una falla no es lo mismo que una falla que nunca ocurrió, por lo que también tenemos la capacidad de enviar la información del fallo a RightMesh para el diagnóstico y la reparación de la falla. Determinar todas las diferentes fallas que podrían ocurrir en el campo es el propósito principal del Soft Mainnet Launch, y tener una forma automática de recopilar esa información (con el permiso del usuario, por supuesto) es fundamental para poder diagnosticar y reparar el defecto.

Prueba de carga

El rendimiento del rendimiento no es un objetivo para el lanzamiento de Soft Mainnet, pero el funcionamiento robusto con carga pesada sí lo es. Por lo tanto, también estamos sometiendo el sistema a pruebas de carga. Esperamos encontrar fallos relacionados con el agotamiento de recursos y la latencia, especialmente durante transferencias de paquetes grandes. Se alcanzará un límite de rendimiento, por lo que nuestro objetivo es lograr un funcionamiento robusto del sistema con al menos un rendimiento moderado para Soft Mainnet Launch. Para el lanzamiento de Mainnet, por supuesto, habremos tenido tiempo de optimizar y solucionar cualquier cuello de botella.

En resumen

Todas las pruebas que estamos haciendo son de naturaleza incremental. A medida que detectamos fallas, las reparamos con la disciplina de ingeniería adecuada (no hay soluciones rápidas de remiendos para simplemente "sacar la puerta"), y luego volvemos a probar en todas las versiones de Android para asegurarnos de que la falla haya desaparecido. Los que han pasado por esto pueden apreciar la escala de la tarea.

Finalmente, para abordar algunos comentarios sobre Rocket.Chat con respecto a nuestras actividades de divulgación: actualmente estamos en la fase de desarrollo del mercado, por lo que, en paralelo con el desarrollo de tecnología, estamos trabajando para garantizar que los usuarios finales y los socios comerciales potenciales conozcan nuestra tecnología. comprendemos plenamente las necesidades del mercado y confirmamos el potencial de nuestra tecnología para resolver diversos problemas de conectividad en todo el mundo. Tenga en cuenta que estamos introduciendo nueva tecnología en el mercado y para los clientes para los cuales existen ciclos de ventas prolongados (de uno a tres años), y no existe un "impulso del mercado" sin conocimiento. Esto, de ninguna manera, resta valor a nuestro enfoque y esfuerzos de desarrollo. Es una actividad complementaria que realizan nuestros grupos de Productos y Comunicaciones, no nuestros desarrolladores.

Continuaremos actualizando a la comunidad a medida que avanzamos. Hasta entonces, nos dirigimos hacia abajo. Pero, aquí hay una captura de pantalla que algunos de ustedes apreciarán …

Simulación de RightMesh con 1.020.520 hilos.

Cómo puedes involucrarte

Regístrese para recibir actualizaciones aquí para asegurarse de que se mantiene al tanto de nuestros desarrollos de Soft Mainnet Launch. Únase a nosotros en RocketChat: puede obtener aclaraciones, compartir sus propias ideas de casos de uso con nosotros y participar en conversaciones con otros miembros de la comunidad.

Mantente en contacto