Endurecimiento del protocolo THORChain. Medidas adoptadas para hacer que THORChain sea más… de THORChain THORChain Agosto 2021

Se están realizando varios cambios en el protocolo THORChain para hacerlo más impermeable a los ataques y poder reaccionar más rápido para ahorrar fondos. Estos cambios se han realizado a partir de la experiencia de primera mano de varios ataques, donde se observó el comportamiento del atacante, operadores de nodos y comunidad. Esta es una parte clave para formular exactamente qué se debe hacer y dónde.

La intención de estos cambios es hacer que cualquier atacante piense que lanzar un ataque a THORChain ni siquiera vale la pena intentarlo, sino que debería solicitar una recompensa y recibir un pago. Para hacer esto, se da más poder a los nodos, se realizan más controles continuamente y los fondos que salen del sistema se regulan para ralentizar las fugas.

El último punto a destacar, es que estos cambios tendrá un efecto negativo temporal en la experiencia del usuario. Una vez que estos cambios estén activos, es probable que el protocolo THORChain se pause con más frecuencia y los intercambios tardarán más en resolverse. Los operadores de billeteras deberán comunicar el estado de pausa de la cadena de forma continua, detectando una pausa sin problemas y comunicándola a los usuarios. Los usuarios de cadenas rápidas (BNB) notarán el retraso en la liquidación y, como resultado, los volúmenes pueden caer en estas cadenas.

Con el tiempo, a medida que la red gane estabilidad, la sensibilidad de la red se reducirá para mejorar la UX.

Ellos son:

Comprobador de solvencia automático Controles de pausa de red granular Tiempos de espera de nodo Límite de salida de salida Bot de difusión de nodo Monitorización en vivo

En realidad, hay dos partes discretas en esto: un modo reactivo y un modo proactivo. En ambos casos, la base de esto es la capacidad de cada nodo para escanear los saldos de la billetera usando sus Bifrosts e informar discrepancias negativas entre el saldo en cadena y lo que THORChain cree que tiene.

THORChain crea conciencia de los saldos simplemente sumando los fondos entrantes y luego restando los gastos. Por tanto, el equilibrio esperado es la suma de los entresijos. Las divergencias ocurren cuando los saldos reales en la cadena comienzan a divergir. Para los activos de gas (activos utilizados para pagar el gas), las pequeñas divergencias pueden ser intermitentes, pero normalmente inferiores al +/- 1%.

Modo reactivo. THORNodes monitorea continuamente las bóvedas entrantes (asgard) y cuando el saldo escaneado diverge del saldo esperado, los nodos pueden presenciar a THORChain la insolvencia observada. Si informan más de 2/3, esa cadena se detendrá automáticamente dentro y fuera de los límites. El ciclo de exploración es una exploración cada 1-2 minutos. Está limitado porque consume muchos recursos en el cliente RPC del nodo. El modo reactivo ASC podría detectar cualquier pérdida de fondos de las bóvedas, donde se utilizan activos falsos para depositar.

https://gitlab.com/thorchain/thornode/-/merge_requests/1797

Modo proactivo. Este modo es más poderoso y está destinado a detectar insolvencias incluso antes de que aparezcan. Cuando un nodo intenta firmar un txOut, hará un cálculo para verificar si al ejecutar el txOut la bóveda se vuelve insolvente. Si es así, se niega a firmar e informa de la insolvencia.

https://gitlab.com/thorchain/thornode/-/issues/1046

Anteriormente, la única capacidad de Mimir era "detener el comercio", lo que dejó de intercambiar y agregar liquidez. No detuvo los reembolsos o retiros, lo que permitió a los atacantes desviar fondos incluso cuando estaban detenidos.

Nota: Anteriormente denominado "detener", el idioma se cambiará a "pausa" porque es probable que suceda con más frecuencia y con mayor frecuencia, y describe un estado de red que es temporal y que probablemente se reanude rápidamente. Cuando está en pausa, la red todavía está en línea y en funcionamiento, simplemente reteniendo la realización de una determinada acción hasta que se reanude.

Los nuevos controles de Pausa de red:

PauseTrading. Toda la red se pausará para intercambiar / agregar, o se configurará para una cadena discreta. Si se trata de una cadena discreta, se reembolsan los cambios hacia / desde esa cadena.

PauseTradingGlobal | PauseTrading {CHAIN}

PauseChain. La red detendrá el comercio, así como los reembolsos y retiros. Dejará de firmar la cola, así como dejará de observar nuevos límites. Nada puede ingresar a la red. Los depósitos de RUNE se reembolsan.

Este estado de red es similar a 1/3 de los nodos que apagan sus bifrosts, pero es más elegante.

PauseChainGlobal | PauseChain {CHAIN}

PauseTHORChain. El libro mayor de THORChain dejará de procesar todos los SWITCH, MsgDeposits y MsgSends. Esto efectivamente congela la red permitiendo que la red atrape ataques, pero aún produce bloques. La única acción permitida será mimir: reaccionar ante la situación cambiante.

Este estado de red es similar a 1/3 de los nodos que apagan su thor-daemon, pero es más elegante.

PauseTHORChainGlobal

https://gitlab.com/thorchain/thornode/-/issues/1054

A los nodos se les otorgará acceso mimir completo antes de la red principal, esto les permite ajustar los parámetros de la red si pueden coordinarse. Admin-mimir se mantendrá hasta la Obsolencia Planificada.

Cuando ocurrieron los ataques, el nodo y la comunidad fueron muy rápidos en observar, pero no había ningún ajuste de mimir para reaccionar, o el mimir dudaba en ejecutar el alto.

Una nueva función ahora otorga a cada nodo la capacidad unilateral de llamar a PauseChainGlobal en la red, una vez por ciclo de abandono y solo durante 720 bloques (1 hora). Cada nodo que lo llame aumentará la pausa durante 720 bloques más. Cada nodo también puede llamar para reanudar, en cuyo caso se deducen 720 bloques. Esta es una forma rudimentaria y sin líderes de converger a un período de pausa que permite que la red responda a una amenaza global, pero no le da a ningún nodo la capacidad de pausar la red y mantenerla en pausa por razones maliciosas.

https://gitlab.com/thorchain/thornode/-/merge_requests/1847

Esta última característica acelera la cola de salida de modo que durante los picos de grandes cantidades de fondos que salen de la red, los intercambios se retrasan. Si se descubre un ataque, cualquier nodo puede llamar para pausar y atrapar los rebotes. Esta función tiene un impacto negativo en la experiencia de usuario de los intercambios grandes, pero para la mayoría de los usuarios no será un problema. A medida que la red se endurece, mimir abrirá el acelerador.

Las siguientes son aproximaciones aproximadas para retrasos.

$ 100 / bloque – 4 segundos $ 500 / bloque – 20 segundos $ 1000 / bloque – 40 segundos $ 5000 / bloque – 2.3 minutos $ 10k / bloque — 5 minutos

El retraso máximo es de 60 minutos. Romper la transacción no cambiará la forma en que está programada, ya que se cuenta el valor agregado de todos los fuera de límites. Una transacción más pequeña que se programe al mismo tiempo que un gran aumento en la actividad también se retrasará junto con todos los demás.

Las billeteras y las interfaces deberán monitorear la cola de valor saliente y estimar a los usuarios el retraso esperado, que será dinámico.

Si esta función (más los tiempos de espera de los nodos) se hubiera implementado durante los ataques anteriores, el atacante se habría retrasado 60 minutos completos y los nodos podrían haberse detenido y ahorrado los fondos. Incluso si el atacante hubiera entrado en transacciones mucho más pequeñas, el máximo que podría haber ganado en los primeros minutos estaría en las cercanías de $ 100k- $ 200k. Esta cantidad ahora es menor que la recompensa que podrían haber ganado, por lo que es posible que hayan pensado simplemente en informar del error.

https://gitlab.com/thorchain/thornode/-/merge_requests/1844

Los nodos tendrán la capacidad de transmitir un mensaje firmado directamente desde sus máquinas. Un bot de discordia / Telegram puede monitorear y transmitir a los canales. Los mensajes no se colocan en ninguna parte de la cadena, solo se firman mediante claves de nodo. El bot de discordia verifica que el nodo esté activo y toma su dirección, estado y monto de la fianza.

Esta característica permite que los operadores de nodos permanezcan anonimizados pero sigan transmitiendo mensajes de ayuda o de emergencia al resto de la comunidad de desarrolladores en cualquier momento.

Un segundo bot escanea la red en busca de actividad anormal e inmediatamente transmite el problema. Esta es solo una capacidad de la red para monitorear picos inusuales e investigar más de cerca.

THORChain es un intercambio de adentro hacia afuera. Hoy no existe nada parecido. Como resultado, la comunidad de THORChain está aprendiendo sobre la marcha y pensando con los pies. Se ha incurrido en daños colaterales, pero las experiencias se están utilizando para fortalecer los cimientos. Algunos de los medios anteriores tienen un impacto negativo en la UX de la red, pero THORChain debe poder sobrevivir en las siguientes décadas. No puede firmar intencionalmente todo el TVL en sus bóvedas dentro de unos segundos de un ataque, por lo que se necesita un término medio feliz. Con el tiempo, estas medidas se pueden volver a marcar. Actualmente es un campo de batalla, y THORChain traerá su mejor armadura hasta que se gane la batalla.