Gestión de activos
El stellar-cli se puede usar para emitir y administrar activos en la red Stellar.
Esta guía asume que el stellar-cli ha sido configurado para usar testnet o una red local de prueba. Para usar testnet, ejecuta el siguiente comando.
stellar network use testnet
Emisión de activos
Para crear un activo Stellar usando el stellar-cli, se realizan varios pasos:
- Debe existir una cuenta emisora.
- Se debe seleccionar un código de activo.
- Opcionalmente, se configura un administrador.
Creación del emisor
Para crear un emisor, genera una clave y fóndala. El financiamiento usa friendbot, el grifo de testnet, y solo está disponible en testnet.
stellar keys generate issuer
stellar keys fund issuer
Visualiza la clave pública con:
stellar keys public-key issuer
Configura la clave del emisor para firmar transacciones:
stellar keys use issuer
Configuración del emisor
Las cuentas emisoras tienen varias flags de configuración que se pueden activar y afectan a todos los activos emitidos por el emisor.
En esta guía, la cuenta emisora se configurará con las funciones revocables y de clawback habilitadas. Estas funciones permiten al administrador del activo revocar la autorización para usar un activo, lo que tiene el efecto de congelar el saldo, y realizar clawback, lo que equivale a quemar forzosamente el activo.
stellar tx new set-options \
--set-revocable \
--set-clawback-enabled
Para otras opciones, consulta el manual del comando stellar tx new set-options.
Para ver la transacción antes de enviarla, usa la opción --build-only
y pasa la transacción por el comando tx edit:
stellar tx new set-options \
--set-revocable \
--set-clawback-enabled \
--build-only \
| stellar tx edit \
| stellar sign \
| stellar send
Elección del código de activo
Elige un código de activo de entre 1 y 12 caracteres.
El código del activo junto con la dirección de la cuenta emisora identificarán de forma única el activo. Un emisor puede emitir múltiples activos, cada uno distinguido por su código de activo.
Para el resto de esta guía se usará el código de activo ABC
.
Configuración del contrato de activo
En la red existe un contrato incorporado para cada activo. Su dirección está reservada y puede ser calculada usando el siguiente comando.
stellar contract asset id --asset ABC:issuer
El contrato no se despliega automáticamente. Cualquiera puede desplegar el contrato, no es una acción que requiera autorización.
Despliegue del contrato
Despliega el contrato de activo incorporado.
La opción --asset
especifica el nombre del activo, que tiene el formato <asset-code>:<asset-issuer>
.
La opción --alias
almacena localmente un alias que se puede usar en comandos posteriores para referenciar la dirección del contrato.
stellar contract asset deploy --asset ABC:issuer --alias mycontract
Ejecuta el siguiente comando para obtener algunos datos de solo lectura del contrato y confirmar que está desplegado.
stellar contract invoke --id mycontract -- name
Configuración del administrador
En este punto, el emisor es el administrador del contrato. Vamos a crear otra cuenta que será el administrador.
stellar keys generate admin
stellar keys public-key admin
stellar keys fund admin
Usando la cuenta emisora, invoca la función set_admin
del contrato de activo.
stellar keys use issuer
stellar contract invoke --source issuer --id mycontract -- set_admin --new_admin admin
Acciones
Una vez que el contrato de activo está desplegado y configurado, se pueden realizar las siguientes acciones.
Acuñar (Solo administrador)
Genera y fondea una cuenta de usuario a la que se transferirá el activo acuñado.
stellar keys generate user
stellar keys fund user
stellar keys public-key user
Usando la cuenta de usuario, confía en el activo para que la cuenta pueda mantenerlo.
stellar keys use user
stellar tx new change-trust --line ABC:issuer
Para acuñar el activo al usuario, usa la cuenta de administrador, invocando la función mint
del contrato de activo.
stellar keys use admin
stellar contract invoke --id mycontract -- mint --to user --amount 25
Consulta el saldo después de acuñar.
stellar contract invoke --id mycontract -- balance --id user
Transferir
Genera y fondea una segunda cuenta de usuario a la que la cuenta de usuario del paso anterior pueda transferir el activo.
stellar keys generate user2
stellar keys fund user2
stellar keys public-key user2
Usando la cuenta user2, confía en el activo para que la nueva cuenta pueda mantenerlo.
stellar keys use user2
stellar tx new change-trust --line ABC:issuer
Usando la cuenta de usuario, invoca la función transfer
del contrato de activo.
stellar keys use user
stellar contract invoke --id mycontract -- transfer --from user --to user2 --amount 3
Consulta los saldos después de la transferencia.
stellar contract invoke --id mycontract -- balance --id user
stellar contract invoke --id mycontract -- balance --id user2
Quemar
Usando la cuenta de usuario, invoca la función burn
del contrato de activo.
stellar keys use user
stellar contract invoke --id mycontract -- burn --from user --amount 5
Consulta el saldo después de quemar.
stellar contract invoke --id mycontract -- balance --id user
Revocar autorización / Congelar (Solo administrador)
Un administrador puede revocar la autorización de un usuario para usar el activo. El usuario seguirá manteniendo el saldo pero no podrá transferirlo ni crear nuevos pagos. Cualquier responsabilidad existente, como las creadas por ofertas en Stellar, seguirá existiendo y podría ejecutarse.
Usando la cuenta de administrador, invoca la función set_authorized
del contrato de activo.
stellar keys use admin
stellar contract invoke --id mycontract -- set_authorized --id user --authorize false
Usando la cuenta de usuario, invoca la función transfer
del contrato de activo. La invocación fallará porque ya no están autorizados para transferir.
stellar keys use user
stellar contract invoke --id mycontract -- transfer --from user --to user2 --amount 3
Clawback (Solo administrador)
Un administrador puede recuperar el saldo de un usuario. La cantidad recuperada será quemada.
Usando la cuenta de administrador, invoca la función clawback
del contrato de activo.
stellar keys use admin
stellar contract invoke --id mycontract -- clawback --from user --amount 1
Consulta el saldo después del clawback.
stellar contract invoke --id mycontract -- balance --id user
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