Desarrolladores

Eventos Stellar: Seguimiento de Todo

Autor

Simon Chow

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 transfirió alguno?
  • ¿Se quemaron o se 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 directo Analiza 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 ruta Sigue la ruta de múltiples pasos: A → B (USDC→XLM), luego B → C (XLM→EURC), extrayendo reservas del fondo de liquidez integrado de la red Stellar que convirtió USDC a EURC.
  3. Intercambio de Protocolo DeFi Inspecciona Eventos de Contrato y Datos de Contrato 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 tuberías separadas que tienes que unir. ¡Puaj!

CAP-67

Todos los movimientos de valor de token ahora fluyen a través de un único 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 XLM cobrada por operaciones en la red

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

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

SUM(eventos de acuñación de token) - SUM(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 el 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 Stellar se encontrarán en el 4º tema opcional, cadena.

Transferencia con SAC (Contrato de Activo 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 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 usando 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 natively el concepto de asset_code:asset_issuer. El “activo” está representado por el contract_id

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 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, realmente nada cambia 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 los usuarios rastrear el movimiento de valor de token de manera holística en la red sin importar de dónde provino la operación.

Un flujo de eventos unificado hace que:

  • Los desarrolladores puedan construir aplicaciones más confiables que son fácilmente auditables
  • Las billeteras y exploradores pueden mostrar actividad significativa en cadena para sus usuarios específicos
  • Los indexadores y herramientas analíticas 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.