Saltar al contenido principal

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: