Saltar al contenido principal

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: