Desarrolladores

Eventos Stellar: Seguir Todo

Autor

Sydney Wiseman

Fecha de publicación

¿Alguna vez te has preguntado qué sucede bajo el capó cuando se ejecuta una transacción o contrato inteligente? No el bytecode Wasm o instrucción, sino cosas como:

  • ¿Se acuñaron tokens?
  • ¿Se transfirieron algunos?
  • ¿Se quemaron o recuperaron algunos?

Buenas noticias. CAP-67 introduce un único flujo de eventos estructurado para obtener esta información exacta para cada movimiento de valor de token en Stellar, clásico y contrato inteligente por igual.

Estado del Mundo

Hoy, los movimientos de tokens en Stellar se rastrean usando diferentes métodos: las operaciones sin contrato inteligente dependen del cálculo de diferencias en el estado del libro mayor, mientras que los contratos inteligentes de Soroban emiten sus propios registros de eventos. Esta división obliga a cualquiera que quiera la imagen completa a manejar múltiples fuentes de datos con una lógica excesivamente compleja para fusionar estos flujos de datos.

Repasemos un ejemplo “simple” de USDC. Imagina que necesitas rastrear cada movimiento de USDC para una cuenta. Ejecutan un pago directo, un pago de ruta de múltiples pasos y un intercambio de Protocolo DeFi, y quieres saber los saldos de la cuenta en cada etapa:

  1. Pago directoAnaliza la operación de pago, luego difiere las entradas del libro mayor para ver que la Cuenta A perdió 100 USDC y la Cuenta B ganó 100 USDC.
  2. Pago de rutaRastrea la ruta de múltiples pasos: A → B (USDC→XLM), luego B → C (XLM→EURC), extrayendo reservas del fondo de liquidez integrado en la red de Stellar que convirtió USDC a EURC.
  3. Intercambio de Protocolo DeFiInspecciona ContractEvents y ContractData para calcular manualmente los movimientos de participación en el fondo de USDC.

Para obtener la imagen completa debes:

  • Raspar las diferencias de entradas del libro mayor para operaciones sin contrato inteligente, luego
  • Extraer todos los eventos de contrato para USDC, y
  • Correlacionarlos por cuenta y activo

Son tres flujos de procesos separados que tienes que unir. ¡Puaj!

CAP-67

Todos los movimientos de valor de token ahora fluyen a través de un solo flujo de eventos:

  • Transferencia - Tokens movidos de una cuenta a otra
  • Acuñación - Nuevos tokens creados y asignados a una cuenta
  • Quema - Tokens quemados (destruidos permanentemente)
  • Recuperación - Tokens reclamados por el emisor
  • Tarifa - Tarifa en XLM cobrada por operaciones en la red

Ya no necesitas una lógica de raspado personalizada para rastrear movimientos de token. Todo lo que necesitas hacer es agregar los eventos anteriores para el token que quieres rastrear.

Por ejemplo, calcular el suministro total en circulación de un token es tan fácil como:

SUMA(eventos de acuñación de token) - SUMA(eventos de quema de token)

-- Suministro total en circulación de USDC
SELECT
  SUM(CASE WHEN topic = 'mint' THEN $value.amount ELSE 0 END) - 
  SUM(CASE WHEN topic = 'burn' THEN $value.amount ELSE 0 END) 
  AS circulating_supply
FROM stellar_events
WHERE asset = 'USDC'

Ejemplos de Formato de Evento

Aquí hay ejemplos concretos de los eventos que verás. El formato exacto del evento para operaciones se puede encontrar en CAP-67

Para eventos de transferencia, el orden de las direcciones denota el remitente y receptor. La primera dirección en el tema representa la cuenta fuente, de, que está enviando el activo. La segunda dirección es el destino, o para. Los detalles de los activos de Stellar se encontrarán en el 4º tema opcional, cadena.

Transferencia con SAC (Contrato de Activo de Stellar)

ContractEventXDR
{
  "ext": "v0",
  "contract_id": "CA...6LF5",
  "type_": "contract",
  "body": {
    "v0": {
      "topics": [
        {
          "symbol": "transfer"
        },
        {
          "address": "GC...F33H"
        },
        {
          "address": "CA...NIBU"
        },
        {
          "string": "USDC:GA..AGER"
        }
      ],
      "data": {
        "i128": "10000000"
      }
    }
  }
}

Transferencia con un fondo de liquidez

CAP-67 introduce un nuevo TipoDeDirecciónSC para fondos de liquidez y saldos reclamables. Las direcciones de los fondos de liquidez comenzarán con “L”, y los saldos reclamables seguirán la misma convención con “B”. En este ejemplo, la dirección de envío es un fondo de liquidez utilizando el nuevo TipoDeDirecciónSC:

ContractEventXDR
{
  "ext": "v0",
  "contract_id": "CA...6LF5",
  "type_": "contract",
  "body": {
    "v0": {
      "topics": [
        {
          "symbol": "transfer"
        },
        {
          "address": "LC...F33H"
        },
        {
          "address": "CA...NIBU"
        },
        {
          "string": "USDC:GA..AGER"
        }
      ],
      "data": {
        "i128": "10000000"
      }
    }
  }
}

Transferencia con un token de contrato

Nota que se omite el “activo”. Los contratos personalizados no tienen natalmente el concepto de código_de_activo:emisor_del_activo. El “activo” está representado por el id_de_contrato

ContractEventXDR
{
  "ext": "v0",
  "contract_id": "CA...6LF5",
  "type_": "contract",
  "body": {
    "v0": {
      "topics": [
        {
          "symbol": "transfer"
        },
        {
          "address": "GC...F33H"
        },
        {
          "address": "CA...NIBU"
        }
      ],
      "data": {
        "i128": "10000000"
      }
    }
  }
}

Cada movimiento de valor–ya sea transferencias simples entre cuentas de Stellar, eventos de contrato inteligente, depósitos y retiros de fondos de liquidez, o acciones de saldo reclamable–fluye a través de este formato unificado. Nunca te perderás un paso en el viaje de un token de nuevo.

¿Por qué es esto Importante?

Al final del día, nada cambia realmente para el usuario final. Un pago sigue siendo un pago.

Este cambio es importante porque ahora es infinitamente más simple para los desarrolladores de backend y usuarios rastrear el movimiento de valor de token de manera holística en la red, independientemente de dónde se originó la operación.

Un flujo de eventos unificado hace que:

  • Los desarrolladores puedan construir aplicaciones más fiables que son fácilmente auditables
  • Las billeteras y exploradores pueden mostrar actividad significativa en cadena para sus usuarios específicos
  • Los indexadores y herramientas de análisis pueden proporcionar acceso fácil a cualquier actividad de movimiento de valor de token en cualquier punto en el tiempo en la historia
  • Estos eventos crean un formato estándar claramente definido y fácil de usar para todo el ecosistema

Simplemente hace todo lo que amamos más fácil de hacer. Visibilidad, interoperabilidad, seguridad y confianza. Para detalles completos del lanzamiento P23, revisa el Anuncio del Protocolo 23 y la correspondiente Guía de Actualización.