El mantenimiento de un token (persistencia)
Nada en ZooBC se guarda gratis para siempre, y un token de usuario no es una excepción. Un token nuevo vive gratis durante un primer periodo; después, solo vive mientras alguien pague su mantenimiento. Cuando caduca, desaparece de la cadena y su respaldo en ZBC vuelve a sus tenedores.
La altura de persistencia
Un token vive hasta su altura de persistencia:
persist height = issue height + free period + blocks bought by survival payments
El periodo gratuito, token_free_persist_blocks, es un periodo de alquiler: 172 800 bloques, es decir, 30 días.
Pagos de supervivencia
Un pago de supervivencia compra más bloques:
blocks bought = payment × billing period ÷ token_persist_period_cost
El coste por periodo, token_persist_period_cost, empieza en 0.1 ZBC (10 000 000 unidades atómicas) por un periodo de facturación de 172 800 bloques. Así, 0.1 ZBC compran otros 30 días, y 0.3 ZBC compran 90.
Cualquiera puede mantener vivo cualquier token vivo, no solo su emisor:
- FinanceToken (tipo 14) existe solo para esto, y debe llevar un pago positivo;
- TransferToken, MintToken y BurnToken también pueden llevar un pago de supervivencia.
Un pago de supervivencia es un cargo propio, nunca parte de la comisión. Va al fondo de longevidad, que paga a los nodos una porción en cada bloque (véase fondos).
El coste por periodo es uno de los precios que votan los nodos registrados (véase votos de precio). Tiene un techo de 10 ZBC por periodo y puede votarse a la baja hasta una sola unidad atómica, y su periodo sigue al ciclo de instantánea. GET /api/v1/blockchain/fee-params indica tanto token_free_persist_blocks como token_persist_period_cost.
En devnet, donde los tiempos son cortos, el periodo gratuito es de 240 bloques (una hora) y 1 ZBC compra 240 bloques, lo que permite probar la caducidad rápidamente.
Cuando un token caduca
Una vez superada su altura de persistencia, un token está caducado:
- es invisible para cualquier lector, y las vistas de la API dejan de listarlo;
- cualquier operación sobre él se rechaza, y es una operación nula pagada si un bloque la incluye de todos modos;
- no puede revivirse: un FinanceToken solo puede alargar un token vivo.
En el bloque siguiente, el respaldo en ZBC del token, si lo tiene, se paga a sus tenedores en proporción a sus unidades. Las unidades cuentan estén donde estén: en saldos, en órdenes abiertas en un mercado y en ofertas de intercambio abiertas (abonadas a su creador), en escrows de tokens pendientes (abonadas al remitente del escrow), en programaciones en modo de liberación (abonadas al dueño de la programación), en flujos (al destinatario se le abona lo ya liberado y al remitente, el resto) y en las apuestas de los jugadores que ocupan un asiento en una app. Al emisor solo se le pagan las unidades que tiene él mismo, y solo recupera el respaldo cuando ninguna cuenta tiene una sola unidad.
Las monedas génesis se crearon sin fecha de caducidad, así que no deben ningún mantenimiento. Un FinanceToken sobre un token que nunca caduca se rechaza, porque no tiene nada que financiar; si un bloque lo incluye de todos modos, paga su comisión y no cambia nada.
Quién paga
Como cualquiera puede pagar, un token no depende de su emisor para seguir vivo: un tenedor, o una app que dependa del token, puede enviar un FinanceToken. Un token por el que nadie paga termina limpiamente, con su respaldo devuelto a quienes lo tenían.