Desarrolladores

Monitoreo de Stellar con Hypernative

Author

Michael Berryhill

Publishing date

Por qué debería monitorear

En el espacio de la blockchain, los ataques pueden ocurrir rápido, los exploits pueden drenar fondos y anomalías no identificadas pueden convertirse en pérdidas en el lapso de un bloque. El monitoreo activo ayuda a identificar esas anomalías, alertar sobre ellas y actuar antes de que tengan la oportunidad de convertirse en la próxima pérdida catastrófica. No conducirías tu auto sin velocímetro, no volarías un avión sin instrumentos y no deberías ejecutar un protocolo onchain sin monitoreo activo.

Qué debo monitorear

Una vez que hemos establecido que necesitamos monitoreo, la siguiente pregunta común es “qué debo monitorear”. A esto de “qué monitorear y cómo” lo llamamos un “plan de monitoreo”. Tenemos un tutorial disponible aquí para mostrar cómo levantar uno en detalle, pero el plan de monitoreo se deriva directamente del modelo de amenazas. Un modelo de amenazas pregunta “¿Qué puede salir mal?” y “¿Qué hacemos al respecto?” El plan de monitoreo pregunta “¿Cómo detectamos si algo sale mal?” y “¿Qué acciones debemos tomar?” Responder estas preguntas es como construir un modelo con bloques de construcción.

  • Modelo STRIDE
    • ¿En qué estamos trabajando?
    • ¿Qué puede salir mal?
    • ¿Qué vamos a hacer al respecto?
    • ¿Lo hicimos bien?
  • Plan de monitoreo
    • ¿Cómo detectamos si algo sale mal?
    • ¿Cómo actuamos en ese caso?

Cómo se ve todo esto

Si bien cada modelo STRIDE y plan de monitoreo son únicos para el proyecto y su apetito de riesgo, podemos mostrar cómo configurar monitores que cumplan tus requisitos. A continuación hay dos ejemplos que muestran cómo configurar un monitor en Hypernative, cómo configurar alertas y cómo se ven esas alertas en la vida real.

Configuración de un monitor de transferencias grandes de XLM

Escenario

Has establecido una billetera en Stellar y la has definido como la fuente para todas las transferencias de fondos relacionadas con el proyecto. Quieres que te notifiquen cada vez que se transfiera una cantidad significativa de Lumens desde esa billetera para fines de contabilidad y seguimiento.

Configuración

Para este monitor, configuraremos un agente personalizado en Hypernative y elegiremos “Actividad de transferencia de direcciones” como el tipo de monitor en “Monitoreo de direcciones”.

En la siguiente pantalla:

  • Agrega el nombre del monitor
  • Asigna una severidad
  • Configura la cadena en “Stellar”
  • Configura la dirección monitorizada “es una de” con la dirección de tu billetera
  • Configura la contraparte en “es cualquiera”
  • Configura el token “es” en XLM (nota que puedes usar cualquier token, no solo el nativo aquí)
  • Luego establece los filtros según lo que consideres “significativo”

El resultado final debería verse así:

Haz clic en Siguiente y configura tus acciones de alerta. Aquí puedes ver que elegí configurar una alerta por correo electrónico. Después de eso, elige Guardar.

Aunque elegimos usar el correo electrónico como método de alerta, hay muchas más opciones, incluidas notificaciones de Slack, Discord y Telegram, iniciar incidentes en incident.io e incluso invocaciones de contrato para ejecutar eventos onchain.

Ejecuté una transacción de prueba de 6 XLM a una cuenta de prueba para mostrar el correo de alerta que se envía:

Configurar el monitoreo de utilización de pools en Blend

Configurar un monitor básico en Hypernative, como transferencias nativas grandes, es relativamente sencillo. Pero, en rigor, es un evento simple. Hypernative también permite monitorear eventos onchain de mayor complejidad.

Escenario

Has establecido una posición en un pool de préstamos de Blend. Tu tolerancia interna al riesgo requiere que salgas de un pool con una utilización significativamente alta para limitar la exposición a grandes variaciones en la valoración del token.

Configuración

Configuraremos otro agente personalizado, pero esta vez usando el generador de agentes en blanco.

Primero, necesitamos seleccionar un disparador, que le dirá a nuestro agente cuándo ejecutarse. Aquí elegí un disparador basado en tiempo y ejecutar este cálculo en cada bloque.

Para calcular la utilización de un pool de Blend, la documentación de Blend indica que calculemos la utilización con la fórmula:

Cada uno de estos valores debe leerse del estado del contrato en cada momento de invocación.

Configuramos cuatro bloques “Leer contrato”, todos leyendo el contrato del pool de préstamos y extrayendo las diferentes variables necesarias para esta fórmula.

Para cada una de las cuatro variables:

  • Selecciona Stellar como cadena
  • Selecciona la dirección del contrato del pool de préstamos
  • Obtén el ABI del contrato
  • Configura la función en get_reserve()
  • Selecciona la dirección del activo a monitorear
  • Configura el Block Offset en 0
  • Observa los parámetros de salida de la llamada a la función para identificar el valor que necesitas para la fórmula (en este caso, tomamos d_supply).
  • Define el nombre de la variable de salida para este valor que usarás más adelante en el agente.

Repite el proceso del bloque “Leer contrato” para cada una de las cuatro variables de la fórmula.

Luego, conecta los cuatro a un bloque de cálculo.

Aquí es donde implementamos la fórmula.

Observa que establecí mi variable de salida de ese cálculo en “myUtil”. La usaremos en el siguiente paso.

Luego agregamos un bloque de condición de alerta. Esto filtra las alertas solo a lo que me concierne. Ten en cuenta que escalamos el número “myUtil” para que sea un porcentaje, ya que el cálculo representa “1” como utilización completa.

Finalmente, usamos un bloque de enviar alerta para publicar este evento con nuestros valores calculados si pasa nuestro filtro.

Conclusión

Monitorear activos, posiciones y acciones onchain es importante y beneficioso. Hypernative habilita un monitoreo profundo a escala en Stellar. Aunque este documento cubrió varios escenarios de ejemplo, estos monitores y la documentación se brindan solo con fines educativos. Haz tu propia investigación sobre contratos, monitores, disparadores y condiciones de eventos específicas para tu empresa y tolerancia al riesgo. Hypernative ha proporcionado documentación específica de Stellar sobre cómo implementar monitoreo y controles, disponible (autenticado) en https://docs.hypernative.xyz/hypernative-product-docs/hypernative-web-application/chain-specific-considerations/stellar.