Desarrolladores
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:
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.
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:
Para obtener la imagen completa debes:
Son tres tuberías separadas que tienes que unir. ¡Puaj!
Todos los movimientos de valor de token ahora fluyen a través de un único flujo de eventos:
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'
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.
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:
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.