Desarrolladores
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:
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 flujos de procesos separados que tienes que unir. ¡Puaj!
Todos los movimientos de valor de token ahora fluyen a través de un solo flujo de eventos:
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'
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.
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:
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.