Crear saldo reclamable
Los saldos reclamables te permiten enviar pagos que el destinatario puede reclamar según condiciones específicas. Esto es útil para funcionalidades tipo escrow, pagos condicionales o transferencias con bloqueo temporal.
Configuración
Para los siguientes ejemplos usaremos estas cuentas:
stellar network use testnet
stellar keys generate --fund alice
stellar keys generate bob --fund
stellar keys generate charlie --fund
Ejemplos básicos
Saldo reclamable incondicional
Crear un saldo reclamable que el destinatario pueda reclamar inmediatamente:
stellar tx new create-claimable-balance \
--source alice \
--amount 50_000_000 \
--asset native \
--claimant bob
También puedes especificar explícitamente incondicional:
stellar tx new create-claimable-balance \
--source alice \
--amount 50_000_000 \
--asset native \
--claimant 'bob:"unconditional"'
Múltiples reclamantes
Crear un saldo reclamable que pueda ser reclamado por cualquiera de varios destinatarios:
stellar tx new create-claimable-balance \
--source alice \
--amount 75_000_000 \
--asset native \
--claimant bob \
--claimant charlie
Predicados basados en tiempo
Antes de un tiempo absoluto
Crear un saldo reclamable que debe reclamarse antes de una fecha específica:
stellar tx new create-claimable-balance \
--source alice \
--amount 30_000_000 \
--asset native \
--claimant 'bob:{"before_absolute_time":"1735689599"}'
Antes de un tiempo relativo
Crear un saldo reclamable que debe reclamarse dentro de 1 hora (3600 segundos) desde la creación:
stellar tx new create-claimable-balance \
--source alice \
--amount 25_000_000 \
--asset native \
--claimant 'bob:{"before_relative_time":"3600"}'
Predicados lógicos
Predicado NOT
Crear un saldo reclamable que pueda reclamarse después de cierto tiempo (NO antes del tiempo relativo):
stellar tx new create-claimable-balance \
--source alice \
--amount 40_000_000 \
--asset native \
--claimant 'bob:{"not":{"before_relative_time":"7200"}}'
Esto significa: "Puede reclamarse, PERO NO antes de que hayan pasado 2 horas" (efectivamente: puede reclamarse después de 2 horas).
Predicado AND
Crear un saldo reclamable con múltiples condiciones que TODAS deben ser verdaderas:
stellar tx new create-claimable-balance \
--source alice \
--amount 60_000_000 \
--asset native \
--claimant 'bob:{"and":[{"before_absolute_time":"1735689599"},{"not":{"before_relative_time":"86400"}}]}'
Esto significa: "Puede reclamarse antes del 31 de diciembre de 2024 Y después de que haya pasado 1 día".
Predicado OR
Crear un saldo reclamable donde cualquiera de las condiciones pueda ser verdadera:
stellar tx new create-claimable-balance \
--source alice \
--amount 35_000_000 \
--asset native \
--claimant 'bob:{"or":[{"before_relative_time":"3600"},{"not":{"before_absolute_time":"1717200000"}}]}'
Esto significa: "Puede reclamarse dentro de 1 hora O después del 1 de junio de 2024".
Ejemplos complejos
Reclamantes mixtos con diferentes predicados
Crear un saldo reclamable con múltiples reclamantes que tienen distintas condiciones de reclamación:
stellar tx new create-claimable-balance \
--source alice \
--amount 100_000_000 \
--asset native \
--claimant 'bob:{"before_relative_time":"3600"}' \
--claimant 'charlie:{"not":{"before_relative_time":"86400"}}'
Esto crea un saldo donde:
- Bob puede reclamar dentro de 1 hora
- Charlie puede reclamar después de que haya pasado 1 día
Pago tipo escrow
Crear un escrow donde el destinatario tiene 30 días para reclamar, de lo contrario vuelve al remitente:
stellar tx new create-claimable-balance \
--source alice \
--amount 200_000_000 \
--asset native \
--claimant 'bob:{"before_relative_time":"2592000"}' \
--claimant 'alice:{"not":{"before_relative_time":"2592000"}}'
Esto significa:
- Bob puede reclamar dentro de 30 días
- Alice puede reclamar de nuevo después de 30 días si Bob no ha reclamado
Saldo reclamable con activo personalizado
Crear un saldo reclamable para un activo personalizado:
stellar tx new create-claimable-balance \
--source alice \
--amount 1000_000_000 \
--asset USDC:GBUG7QTBTT47XVDVE6RZYWRUZBPLOIO57INE6LYZDMIXMMDCREQRUQKI \
--claimant 'bob:{"before_absolute_time":"1735689599"}'
Comprender los predicados
Nota: Los predicados deben ser JSON válido, por lo que debes usar comillas y escape adecuados.
Tipos de predicados
Tipo | Descripción | Ejemplo |
---|---|---|
unconditional | Puede reclamarse en cualquier momento | "unconditional" |
before_absolute_time | Debe reclamarse antes de un timestamp específico | {"before_absolute_time":"1735689599"} |
before_relative_time | Debe reclamarse dentro de X segundos desde la creación | {"before_relative_time":"3600"} |
not | Niega otro predicado | {"not":{...}} |
and | Ambos predicados deben ser verdaderos | {"and":[{...},{...}]} |
or | Cualquiera de los predicados puede ser verdadero | {"or":[{...},{...}]} |
Notas sobre el formato de tiempos
- Tiempos absolutos: Usa timestamps Unix (segundos desde epoch)
- Tiempos relativos: Segundos desde la creación del saldo reclamable
- Timestamps: Deben estar en el futuro al crear el saldo
Casos de uso comunes
1. Pago simple con fecha límite
# Bob has 7 days to claim
stellar tx new create-claimable-balance \
--source alice \
--amount 50_000_000 \
--claimant 'bob:{"before_relative_time":"604800"}'
2. Pago diferido
# Bob can only claim after 1 day
stellar tx new create-claimable-balance \
--source alice \
--amount 100_000_000 \
--claimant 'bob:{"not":{"before_relative_time":"86400"}}'
3. Fondo de emergencia
# Bob can claim immediately, but if he doesn't claim within 48 hours, Alice can reclaim
stellar tx new create-claimable-balance \
--source alice \
--amount 500_000_000 \
--claimant 'bob:{"before_relative_time":"172800"}' \
--claimant 'alice:{"not":{"before_relative_time":"172800"}}'
Notas
--amount
: Cantidad en stroops (1 XLM = 10,000,000 stroops)--asset
: Usa "native" para XLM o formato "CODE:ISSUER" para otros activos--claimant
: Cuenta con predicado opcional (puede especificarse varias veces)- Los predicados se evalúan cuando se reclama el saldo, no cuando se crea
- Los predicados
And
yOr
deben tener exactamente 2 subpredicados - Los predicados complejos pueden anidarse para crear condiciones sofisticadas de reclamación
Guías en esta categoría:
📄️ Gestión de activos
Emitir un activo Stellar, desplegar su contrato y acuñar, quemar, congelar y recuperar.
📄️ Ciclo de vida del contrato
Gestiona el ciclo de vida de un contrato inteligente Stellar usando la CLI
📄️ Desplegar un contrato desde el código byte Wasm instalado
Desplegar una instancia de un contrato compilado que ya está instalado en la red
📄️ Implementar el Contrato de Activos Stellar para un activo Stellar
Implementa un SAC para un activo Stellar para que pueda interactuar con contratos inteligentes
📄️ Extender el TTL de una instancia de contrato desplegada
Usa la CLI para extender el tiempo de vida (TTL) de una instancia de contrato
📄️ Extender el TTL de la entrada de almacenamiento de un contrato desplegado
Usa el CLI para extender el tiempo de vida (TTL) de la entrada de almacenamiento persistente de un contrato
📄️ Extender el TTL del código Wasm de un contrato desplegado
Usar Stellar CLI para extender el TTL del bytecode Wasm de un contrato, con o sin el binario local
📄️ Instalar y desplegar un contrato inteligente
Combina los comandos instalar y desplegar en la CLI de Stellar para realizar ambas tareas
📄️ Subir bytecode Wasm
Usa el CLI de Stellar para subir un contrato inteligente compilado en el ledger
📄️ Pagos y activos
Envía XLM, stellar classic o un activo soroban usando la CLI de Stellar
📄️ Restaurar un contrato archivado usando la CLI de Stellar
Restaurar una instancia de contrato archivada usando la CLI de Stellar
📄️ Restaurar datos de contratos archivados usando la CLI de Stellar
Restaurar entradas de almacenamiento de contratos archivados usando la CLI de Stellar
📄️ Crear saldo reclamable
Crear saldos reclamables con varias condiciones de reclamación usando el CLI de Stellar
📄️ Comandos tx
Crear transacciones Stellar usando la CLI de Stellar
📄️ tx op add
Crear transacciones Stellar utilizando la CLI de Stellar
📄️ tx sign y tx send
Crear transacciones Stellar usando la CLI de Stellar