Artículo del blog

Parada de la red el 15 de mayo

Autor

Stellar Development Foundation

Fecha de publicación

Paralización de la red

A las 1:14pm hora del Pacífico, el 15 de mayo, la red de Stellar se detuvo durante 67 minutos debido a una incapacidad para alcanzar un consenso. Durante ese tiempo no se cerraron libros mayores y no se procesaron transacciones: básicamente, Stellar se detuvo.

Sin embargo, el estado del libro mayor se mantuvo seguro y consistente a través de la red. Stellar tiene aproximadamente 150,000 usuarios todos los días y más de 3 millones de cuentas totales. Nadie perdió su dinero; los saldos de nadie se confundieron por un bifurcación. A las 2:21, los libros mayores comenzaron a cerrarse donde se habían detenido, y la red está saludable esta mañana.

No hace falta decir que una interrupción como esta es altamente indeseable, y descubrió algunas mejoras que necesitamos hacer. Aquí están las conclusiones principales, las cuales expandimos a continuación.

  1. La parada no fue porque el Protocolo de Consenso de Stellar fallara, de hecho, funcionó como se esperaba. Para un sistema como Stellar, una parada temporal es preferible a la confusión permanente de una bifurcación. Pero ayer muestra que Stellar necesita mejores herramientas alrededor del tiempo de actividad. Necesitamos un mejor monitoreo de estado para los validadores, y necesita ser más fácil reiniciar un validador después de que se caiga.
  2. Hemos visto afirmaciones de que Stellar es “demasiado centralizado” y que de alguna manera un fallo con los nodos de SDF arrastró a toda la red. Irónicamente, lo opuesto es cierto. Stellar ha añadido muchos nodos nuevos recientemente. En retrospectiva, algunos nodos nuevos asumieron demasiada responsabilidad de consenso demasiado pronto. Necesitamos mejores estándares comunitarios alrededor de los tiempos de mantenimiento, construcción de quorumset y configuración de validador.

El papel del protocolo en la parada

Como una elección de diseño fundamental, Stellar prefiere la consistencia y la resistencia a la partición sobre la vitalidad. En otras palabras, cuando se enfrenta a la incertidumbre del consenso, el Protocolo de Consenso de Stellar (SCP) prefiere detenerse en lugar de operar en un estado potencialmente inconsistente. Esto es diferente de otras blockchains, en las que “la cadena debe continuar” incluso al precio de bifurcaciones suaves.

Las instituciones financieras prefieren el tiempo de inactividad sobre datos inconsistentes, por eso eligen Stellar. Es mucho mejor para una red financiera estar fuera de línea temporalmente que producir resultados falsos o disputados permanentemente.

Aún así, con las herramientas adecuadas, Stellar no debería necesitar detenerse. Así es como mitigaremos el riesgo futuro:

  • Mejor monitoreo y alertas. Las personas que ejecutan validadores necesitan estar al tanto cuando faltan nodos en sus quorumsets. Estamos haciendo varias cosas para mejorar esto. Estamos haciendo cambios en stellar-core que lo hacen mucho más obvio cuando faltan nodos y que permiten a los operadores recibir alertas cuando un nodo importante está caído. También trabajaremos con Stellarbeat para hacer más obvio cuando faltan nodos críticos en la red. También haremos un bot para publicar en nuestro canal público de validadores cada vez que un nodo caiga. Todo esto debería hacer mucho menos probable que la red caiga en el estado frágil en el que estuvo ayer.
  • Reinicios más rápidos. El otro enfoque importante es ayudar a los operadores a recuperarse rápidamente si la red se detiene. Ahora mismo el proceso impuesto por stellar-core es engorroso y requiere demasiada coordinación por parte de los participantes. Hay algunas formas de hacer que los validadores puedan recuperarse rápidamente y fácilmente de un estado atascado y ahora estamos priorizando conseguir que estos estén en stellar-core. Esta interrupción habría sido mucho más corta con estos en su lugar.

Incluso antes de esta parada, habíamos estado trabajando en mejorar las capacidades de informe de Stellar-core. Stellar-core 11.1.0RC ya contiene un comando para obtener un informe completo del conjunto de quorum transitivo. Otros comandos de monitoreo serán priorizados.

La creciente descentralización de Stellar En los últimos meses, la comunidad de Stellar ha estado trabajando arduamente en configurar nuevos validadores y construir conjuntos de quorum diversos, para que Stellar funcione sin la participación directa de SDF. Puedes leer más sobre este esfuerzo en la reciente publicación de SatoshiPay.

Muchos de estos nodos nuevos todavía están trabajando hacia el estándar de disponibilidad que la red espera. En las últimas semanas vimos, repetidamente, validadores mal configurados o caídos obstaculizando el consenso. Esto llevó a un estado de vitalidad inestable en el que un fallo adicional o dos en el momento equivocado podrían detener toda la red. Y eso es exactamente lo que pasó ayer: Keybase bajó su validador para mantenimiento en un momento en que otros validadores estaban inestables o caídos, y Stellar se detuvo.

Así es como evitaremos que esto suceda de nuevo:

  • Mejor incorporación para nuevos validadores. Los usuarios necesitan estándares publicados y exploradores para ayudarles a crear “buenos” quorumsets. Debería haber herramientas para permitir simples escenarios de “qué pasaría si”. Razonar sobre la intersección de quorum no es fácil, y necesita haber más orientación pública.
  • Mejores estándares para operadores. Aumentaremos la coordinación de operadores para que los horarios de mantenimiento se comuniquen públicamente. También ayudaremos a los operadores a mantener sus nodos y sus elecciones de quorum actualizadas.

El estado de la red

En respuesta a la parada de ayer, los validadores clave en la red coordinaron un cambio de configuración en el que los quorumsets se redujeron para incluir solo validadores altamente disponibles. En una hora, la red estaba viva, procesando transacciones y cerrando libros mayores.

En general, la interrupción de ayer fue una prueba de estrés, una que Stellar pasó en términos de seguridad del usuario pero falló en términos de tiempo de actividad. Ya hemos aprendido de ese fallo y aprenderemos más en los días venideros. Tomar los pasos anteriores para prevenir una interrupción como esta será nuestra prioridad inmediata. Gracias a los muchos miembros de la comunidad y socios que ayudaron a que Stellar volviera en línea tan rápidamente como lo hizo.

ACTUALIZACIÓN: La interrupción del 15 de mayo dejó la red de Stellar en un estado frágil, con solo 4 partes como los validadores centrales. Más tarde, experimentamos un problema adicional breve ya que los conjuntos de quorum de dos partes ya no tenían suficiente superposición con las otras dos. La red se bajó brevemente mientras reparábamos esto.