InterestBearingConfig (extensión)
Extensión del lado Mint de Token-2022 que hace que un token acumule intereses de forma continua. El saldo almacenado no cambia nunca — el importe de UI se calcula a partir de una tasa y el tiempo transcurrido.
Qué es
InterestBearingConfig es una extensión de Mint de Token-2022 que hace que un token parezca acumular intereses compuestos de forma continua. El detalle clave: nunca se escribe interés alguno en ninguna cuenta. El amount en bruto de cada Token Account permanece exactamente como se emitió o transfirió — el interés es una transformación de visualización aplicada por amount_to_ui_amount, calculada a partir de la tasa y el tiempo transcurrido.
Por qué existe
Los tokens con rebase (donde los saldos crecen on-chain) rompen la componibilidad — cada transferencia tendría que tocar un índice global, y los integradores ven los saldos cambiar bajo sus pies. El enfoque de Token-2022 mantiene el saldo on-chain inmutable y empuja el cálculo del interés a una función determinista de (principal, tasa, tiempo_transcurrido). Las billeteras y exploradores llaman a amountToUiAmount para mostrar el valor crecido; el ledger permanece limpio.
Diseño de bytes
Esta es la carga útil de una entrada TLV InterestBearingConfig (extension_type = 10, length = 52). La entrada on-chain completa añade los 4 bytes de cabecera TLV (consulta el primer de diseño TLV).
| Offset | Tamaño | Campo | Tipo | Notas |
|---|---|---|---|---|
| 0 | 32 | rate_authority |
OptionalNonZeroPubkey |
Puede cambiar la tasa. Todo a cero = None — tasa congelada para siempre. |
| 32 | 8 | initialization_timestamp |
i64 LE (segundos unix) |
Cuándo se inicializó la extensión. |
| 40 | 2 | pre_update_average_rate |
i16 LE puntos básicos |
Tasa media ponderada por tiempo que aplicaba antes de la última actualización. |
| 42 | 8 | last_update_timestamp |
i64 LE (segundos unix) |
Cuándo entró en vigor current_rate. |
| 50 | 2 | current_rate |
i16 LE puntos básicos |
Tasa vigente desde last_update_timestamp. Con signo — puede ser negativa. |
Carga útil total: 52 bytes.
Por qué dos tasas
El interés debe ser continuo a través de los cambios de tasa. El importe acumulado antes de la última actualización se calcula con pre_update_average_rate sobre (initialization_timestamp → last_update_timestamp); el importe acumulado desde entonces usa current_rate sobre (last_update_timestamp → ahora). El campo «average» comprime todo el historial previo a la actualización en una sola tasa combinada para que el cálculo siga siendo O(1) por muchas veces que haya cambiado la tasa.
Dónde lo encuentras
Las stablecoins con rendimiento y los productos de tesorería tokenizados usan esto para que el saldo mostrado de un titular crezca sin ninguna transacción on-chain. Es más común en tokens RWA (activos del mundo real) donde el emisor publica un APY como tasa en puntos básicos.
Errores comunes
- El
amounton-chain nunca refleja el interés. Si lees elamounten bruto de una Token Account y lo muestras directamente, subestimarás el valor del titular. Pásalo siempre poramountToUiAmountpara mints con interés. - La tasa tiene signo (
i16). Las tasas negativas son legales — un token con demurrage que encoge con el tiempo. No la parsees como sin signo. - Puntos básicos, compuestos de forma continua.
current_rate = 500es un 5% TAE compuesto continuamente, no un 5% simple. El programa usae^(tasa × t), así que el importe mostrado diverge del cálculo de interés simple ingenuo en horizontes largos. rate_authority = Nonecongela la tasa, no el interés. El interés sigue acumulándose a la última tasa fijada para siempre; None solo significa que nadie puede cambiarla.
Última verificación: 2026-05-20