Gestión de activos
El stellar-cli puede usarse para emitir y administrar activos en la red Stellar.
La siguiente guía asume que el stellar-cli ha sido configurado para usar testnet o una red de prueba local. 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 selecciona 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 funding usa friendbot, la fuente 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 que se usará para firmar transacciones:
stellar keys use issuer
Configuración del emisor
Las cuentas emisoras tienen varias flags de configuración que pueden activarse o desactivarse y afectan todos los activos emitidos por el emisor.
En esta guía, la cuenta del emisor se configurará con las funciones revocables y habilitadas para clawback. Estas funciones permiten que el administrador del activo revoque la autorización para usar un activo, lo que tiene el efecto de congelar su saldo, y que recupere, lo que tiene el efecto de 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 1 a 12 caracteres.
El código de activo junto con la dirección de la cuenta emisora identificarán de forma única al activo. Un emisor puede emitir múltiples activos, diferenciados 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
Existe un contrato integrado en la red para cada activo. Su dirección está reservada y puede calcularse 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 puede usarse 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. Creemos otra cuenta que será el administrador.
stellar keys generate admin
stellar keys public-key admin
stellar keys fund admin
Usando la cuenta del emisor, invoca la función set_admin
del contrato del 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, pueden efectuarse las siguientes acciones.
Acuñar (Solo admin)
Genera y financia 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 tenerlo.
stellar keys use user
stellar tx new change-trust --line ABC:issuer
Para acuñar el activo al usuario, usa la cuenta de administrador e invoca la función mint
del contrato del activo.
stellar keys use admin
stellar contract invoke --id mycontract -- mint --to user --amount 25
Verifica el saldo después de acuñar.
stellar contract invoke --id mycontract -- balance --id user
Transferir
Genera y financia una segunda cuenta de usuario a la que la cuenta del usuario anterior puede 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 tenerlo.
stellar keys use user2
stellar tx new change-trust --line ABC:issuer
Usando la cuenta de usuario, invoca la función transfer
del contrato del activo.
stellar keys use user
stellar contract invoke --id mycontract -- transfer --from user --to user2 --amount 3
Revisa 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 del activo.
stellar keys use user
stellar contract invoke --id mycontract -- burn --from user --amount 5
Verifica el saldo después de quemar.
stellar contract invoke --id mycontract -- balance --id user
Revocar autorización / Congelar (Solo admin)
Un administrador puede revocar la autorización de un usuario para usar el activo. El usuario seguirá teniendo el saldo pero no podrá transferirlo ni crear nuevos pagos. Cualquier responsabilidad existente, como las creadas por ofertas en Stellar, continuará existiendo y puede seguir ejecutándose.
Usando el admin, invoca la función set_authorized
del contrato del 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 del activo. La invocación fallará porque ya no está autorizado para transferir.
stellar keys use user
stellar contract invoke --id mycontract -- transfer --from user --to user2 --amount 3
Recuperar (Solo admin)
Un administrador puede recuperar el saldo de un usuario. La cantidad recuperada será quemada.
Usando el admin, invoca la función clawback
del contrato del activo.
stellar keys use admin
stellar contract invoke --id mycontract -- clawback --from user --amount 1
Verifica el saldo después de la recuperación.
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
Gestionar el ciclo de vida de un contrato inteligente Stellar utilizando la CLI
📄️ Desplegar un contrato a partir de bytecode Wasm instalado
Desplegar una instancia de un contrato compilado que ya está instalado en la red
📄️ Desplegar el Contrato de Activo Stellar para un activo Stellar
Desplegar un SAC para un activo Stellar para que pueda interactuar con contratos inteligentes
📄️ Extender el TTL de una instancia de contrato desplegada
Usar el 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
Usar la 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 del contrato, con o sin binario local
📄️ Instalar y desplegar un contrato inteligente
Combina los comandos de instalar y desplegar en la Stellar CLI para realizar ambas tareas
📄️ Subir bytecode Wasm
Usa el CLI de Stellar para subir un contrato inteligente compilado al ledger
📄️ Pagos y Activos
Envía XLM, stellar classic o un activo soroban usando el CLI de Stellar
📄️ Restaurar un contrato archivado usando el CLI de Stellar
Restaurar una instancia de contrato archivada usando el CLI de Stellar
📄️ Restaurar datos de contrato archivados utilizando el CLI de Stellar
Restaurar entradas de almacenamiento de contrato archivadas utilizando el CLI de Stellar
📄️ Crear saldo reclamable
Crear saldos reclamables con varios predicados de reclamación usando la CLI de Stellar
📄️ Comandos tx
Crear transacciones Stellar utilizando el CLI de Stellar
📄️ tx op agregar
Crear transacciones Stellar usando el CLI de Stellar
📄️ firma tx y envía tx
Crear transacciones stellar utilizando el CLI de Stellar