Saltar al contenido principal

Activos

Las cuentas en la red Stellar pueden ser utilizadas para rastrear, mantener y transferir cualquier tipo de activo. Los activos pueden representar muchas cosas: criptomonedas (como bitcoin o ether), monedas fiduciarias (como dólares o pesos), otros tokens de valor (como NFTs), participaciones en fondos, o incluso bonos y acciones.

Los activos en Stellar tienen dos características identificativas: el código del activo y el emisor. Dado que más de una organización puede emitir un crédito que representa el mismo activo, los códigos de activo a menudo se superponen (por ejemplo, múltiples empresas ofrecen un token USD en Stellar). Los activos se identifican de manera única por la combinación de su código de activo y emisor.

Componentes del activo

Código de activo

El código identificador de un activo. Existen tres formatos diferentes: Alfanumérico 4, Alfanumérico 12 y participaciones en fondos de liquidez.

Aprende sobre las participaciones en fondos de liquidez en la Entrada de la Enciclopedia de Fondos de Liquidez.

Aprende más sobre los códigos de activos en la sección Nombrando un Activo

Emisor

No existe una operación dedicada para crear un activo en Stellar. En su lugar, los activos se crean con una operación de pago: una cuenta emisora realiza un pago utilizando el activo que está emitiendo, y ese pago crea el activo en la red.

La clave pública de la cuenta emisora está vinculada en el ledger al activo. La responsabilidad y el control sobre un activo residen en la cuenta emisora. Dado que los ajustes se almacenan a nivel de cuenta en el ledger, la cuenta emisora es donde utilizas las operaciones set_options para vincular a la meta-información sobre un activo y establecer los flags de autorización.

Uso de los activos Stellar en contratos inteligentes

Los activos emitidos en la red Stellar son accesibles a contratos inteligentes. Cada activo Stellar tiene reservado un Contrato de Activo Stellar que puede ser desplegado por cualquier persona que quiera poder interactuar con el activo desde un contrato.

El CLI de Stellar puede desplegar un Contrato de Activo Stellar para un activo Stellar. Desplegar el Contrato de Activo Stellar para un activo Stellar permite que ese activo se utilice con contratos inteligentes.

Aprende más en la sección SAC.

Representación

En Horizon, los activos se representan en un objeto JSON:

{
asset_code: "AstroDollar",
asset_issuer: "GC2BKLYOOYPDEFJKLKY6FNNRQMGFLVHJKQRGNSSRRGSMPGF32LHCQVGF",
// `asset_type` is used to determine how asset data is stored.
// It can be `native` (lumens), `credit_alphanum4`, or `credit_alphanum12`.
asset_type: "credit_alphanum12",
}

En los SDK de Stellar, se representan con la clase de activo:

var astroDollar = new StellarSdk.Asset(
"AstroDollar",
"GC2BKLYOOYPDEFJKLKY6FNNRQMGFLVHJKQRGNSSRRGSMPGF32LHCQVGF",
);

Precisión de monto

Cada cantidad de activo está codificada como un entero firmado de 64 bits en las estructuras XDR que Stellar utiliza para codificar transacciones. The asset amount unit seen by end-users is scaled down by a factor of ten million (10,000,000) to arrive at the native 64-bit integer representation.

For example, the integer amount value 25,123,456 equals 2.5123456 units of the asset. Esta escala permite siete lugares decimales de precisión en unidades de cantidad amigables para humanos.

The smallest non-zero amount unit, also known as a stroop, is 0.0000001 (one ten-millionth) represented as an integer value of one. The largest amount unit possible is 2631107\frac{2^{63}-1}{10^7} (derived from the maximum 64-bit integer, scaled down) which is 922,337,203,685.4775807.

Los números se representan como int64s. Los valores de cantidad se almacenan solo como enteros firmados para evitar errores que surgen de mezclar enteros firmados y no firmados.

Relevancia en Horizon y Bibliotecas de Clientes de Stellar

En Horizon y bibliotecas del lado del cliente como js-stellar-sdk, el valor codificado entero está abstraído. Muchas API esperan un monto en valor de unidad (la cantidad aumentada que se muestra a los usuarios finales). Algunos lenguajes de programación (como JavaScript) tienen problemas para mantener la precisión en un monto numérico. Se recomienda utilizar bibliotecas de “números grandes” que pueden registrar números decimales de precisión arbitraria sin pérdida de precisión.

Eliminando o quemando activos

Para eliminar, o "burn", un activo, debes enviarlo de vuelta a la cuenta que lo emitió.

Contratos de token personalizados

Los contratos de token personalizados pueden ser desplegados en Stellar al desplegar un contrato que implementa la Interfaz de Token, que es la misma interfaz implementada por el Contrato de Activo Stellar (SAC) para los activos Stellar.