Manutenzione dei token (persistenza)
Niente su ZooBC viene conservato gratis per sempre, e un token degli utenti non fa eccezione. Un nuovo token vive gratis per un primo periodo; dopo di che vive solo finché qualcuno ne paga la manutenzione. Quando scade, scompare dalla catena e la sua copertura in ZBC torna ai suoi detentori.
L'altezza di persistenza
Un token vive fino alla sua altezza di persistenza:
persist height = issue height + free period + blocks bought by survival payments
Il periodo gratuito, token_free_persist_blocks, è un periodo di canone: 172.800 blocchi, cioè 30 giorni.
Pagamenti di sopravvivenza
Un pagamento di sopravvivenza compra altri blocchi:
blocks bought = payment × billing period ÷ token_persist_period_cost
Il costo per periodo, token_persist_period_cost, parte da 0,1 ZBC (10.000.000 di unità atomiche) per un periodo di fatturazione di 172.800 blocchi. Quindi 0,1 ZBC comprano altri 30 giorni, e 0,3 ZBC ne comprano 90.
Chiunque può mantenere in vita qualsiasi token vivo, non solo il suo emittente:
- FinanceToken (tipo 14) esiste solo per questo, e deve contenere un pagamento positivo;
- anche TransferToken, MintToken e BurnToken possono contenere un pagamento di sopravvivenza.
Un pagamento di sopravvivenza è un addebito a sé, mai parte della commissione. Va al pool di longevità, che paga ai nodi una fetta in ogni blocco (vedi pool).
Il costo per periodo è uno dei prezzi su cui votano i nodi registrati (vedi voti sui prezzi). Ha un tetto di 10 ZBC per periodo e può essere votato fino a una sola unità atomica, e il suo periodo segue il ciclo di snapshot. GET /api/v1/blockchain/fee-params riporta sia token_free_persist_blocks sia token_persist_period_cost.
Su devnet, dove i tempi sono brevi, il periodo gratuito è di 240 blocchi (un'ora) e 1 ZBC compra 240 blocchi, il che rende rapido provare la scadenza.
Quando un token scade
Una volta superata la sua altezza di persistenza, un token è scaduto:
- è invisibile a qualsiasi lettore, e le viste dell'API smettono di elencarlo;
- ogni operazione su di esso viene rifiutata, ed è una no-op pagata se un blocco la include comunque;
- non può essere riportato in vita: un FinanceToken può prolungare solo un token vivo.
Nel blocco successivo, la copertura in ZBC del token, se ne ha una, viene pagata ai suoi detentori in proporzione alle loro unità. Le unità contano ovunque si trovino: nei saldi, negli ordini aperti su un mercato e nelle offerte di swap aperte (accreditate al loro maker), negli escrow di token in sospeso (accreditate al mittente dell'escrow), nelle pianificazioni in vesting (accreditate al proprietario della pianificazione), nei flussi (al destinatario viene accreditato ciò che è maturato, al mittente il resto) e nelle puntate dei giocatori che occupano un posto in un'app. L'emittente viene pagato solo per le unità che detiene lui stesso, e riceve la copertura solo quando nessun account detiene più nemmeno un'unità.
Le monete genesi sono state create senza una data di scadenza, quindi per loro non è dovuta alcuna manutenzione. Un FinanceToken su un token che non scade mai viene rifiutato, perché non ha nulla da finanziare; se un blocco lo include comunque, paga la sua commissione e non cambia nulla.
Chi paga
Poiché chiunque può pagare, un token non dipende dal suo emittente per restare in vita: un detentore, o un'app che si basa sul token, può inviare un FinanceToken. Un token per cui nessuno paga finisce in modo pulito, con la sua copertura restituita alle persone che lo detenevano.