Post mortem de Stuck Vault # mca3. Resumen de la razón por la que Vault # mca3… de THORChain THORChain Oct, 2020

Resumen del motivo por el que Vault # mca3 estuvo bloqueado durante 35 horas, cómo se recuperó la red y aspectos a considerar para los operadores de THORNode.

Los nodos no pudieron firmar transacciones TSS

Vault # mca3 se atascó durante la última iteración de la migración de fondos a Vault # x3ph. Aproximadamente $ 100k en fondos quedaron después de migrar alrededor de $ 33 millones.

Durante 35 horas, la red no pudo firmar ninguna transacción de TSS. El equipo se acercó a algunos operadores de nodos para obtener registros, pero no pudo encontrar nada de preocupación.

El equipo inicialmente pensó que se debía al reciente aumento en el límite de nodos de 31 a 36 nodos y lanzó una actualización (V15.1) que aumentó el tiempo de espera de TSS de 20 a 30 segundos. Después de lanzar la actualización, muchos operadores de nodos descubrieron que no podían actualizar debido a un error de consenso en sus nodos Binance, que los había detenido. Estos operadores de nodos recurrieron a restablecer sus nodos Binance.

Una vez que se restablecieron suficientes nodos Binance, la red reanudó el envío de fondos. La mejor evaluación del equipo es que la red se atascó debido a que más de un tercio de los THORNodes detuvieron los Binance Nodes.

THORChain utiliza la "delegación de liquidez asincrónica" donde hasta el 50% de los fondos de la red se mueven desde la bóveda principal de TSS (asgard) y hacia las bóvedas calientes de cada THORNode (bóvedas yggdrasil). Esto permite a THORNodes firmar pequeñas transacciones salientes (típicamente intercambios y reembolsos) casi instantáneamente sin requerir TSS lento y que consume muchos recursos. Las transacciones grandes que no se pueden enviar desde yggdrasil se colocan en una cola y se firman y envían desde Asgard.

Durante todo el evento, los intercambios continuaron procesándose desde las bóvedas de yggdrasil, por lo que el equipo no deshabilitó las interfaces ni detuvo los intercambios, ya que la red aún estaba disponible. Algunos usuarios con grandes intercambios comenzaron a informar que sus intercambios no se estaban cumpliendo y se les pidió que esperaran.

Sin embargo, dado que las bóvedas de Yggdrasil están financiadas por Asgard, la red comenzó a quedarse sin fondos disponibles lentamente y la cola de salida comenzó a crecer.

La creciente cola

THORChain tiene tres puntos de consenso:

Consenso sobre eventos de testigos (la pérdida de consenso significa que THORChain deja de presenciar eventos externos) Consenso sobre la producción de bloques de máquinas estatales (la pérdida de consenso significa una interrupción de la cadena) Consenso sobre la firma de claves de la bóveda de TSS (la pérdida de consenso significa que las transacciones de TSS salientes se detendrán)

Si 1/3 de la red se desconecta, THORChain pierde el consenso y se detendrá. En este caso, dado que los nodos de Binance Chain para muchos THORNodes se habían bloqueado, el módulo Bifröst de la pila no podía presenciar los eventos entrantes y luego firmar los eventos salientes.

Binance Chain es una cadena rápida, que produce bloques cada 500 ms y utiliza mucha lógica personalizada en su máquina de estado. También es una cadena relativamente nueva. Por alguna razón, algunos nodos encontraron un error de consenso a cierta altura y no pudieron reiniciarse. El equipo de Binance Chain es consciente de este problema y aconseja simplemente reiniciar los nodos. También hay otras consideraciones, como aumentar la asignación de recursos en caso de que esté relacionada con la memoria.

El equipo y la comunidad aún están estableciendo las mejores prácticas para desarrollar THORChain. Dado que la red no tiene líderes, no hay un servidor central que pueda indicar a las interfaces cuándo el sistema está seguro y en línea. Los frontends deben resolver esto por sí mismos, como usar el módulo bizantino para conectarse con múltiples nodos al mismo tiempo para determinar la bóveda correcta.

En cuanto a la disponibilidad, parece que por ahora la mejor indicación de si la red tiene algún problema de TSS es la cola de transacciones salientes. Si aparece un retraso, es una indicación de que la red tiene un problema y los usuarios deben estar al tanto.

Esto se puede consultar en http://54.255.107.211:1317/thorchain/queue, y la sugerencia es que cualquier cantidad superior a 10 es una indicación de un problema. Los frontends deben aconsejar a sus problemas que no intercambien grandes cantidades y ser pacientes si la cola está creciendo.

La red recuperada por el equipo que lanzó un parche y los operadores de nodos atendieron a sus nodos, pero el parche no tuvo ningún efecto, sino que el imperativo de verificar sus nodos permitió a los operadores encontrar y solucionar el problema de Binance.

La solucion es:

Mejores alertas cuando un Chain Client falla Mejor autogestión de un Chain Client fallado (reinicio automático) Mayores recursos asignados a Binance Chain

El equipo trabajará con la comunidad para abordar los tres.

En el futuro, las cadenas primarias serán ETH y BTC, que son mucho más estables, producen bloques más lentos y, por lo tanto, más fáciles de sincronizar. Esto parece ser un problema solo para Binance Chain.