Wiki ZooBC
Données et stockage

Payer pour conserver des données (longévité)

Les nœuds ZooBC élaguent l’ancien historique, si bien qu’une transaction ordinaire reste sur un nœud du mainnet pendant 30 à 60 jours (élagage de l’historique). Un enregistrement de longévité conserve une transaction choisie, et le bloc qui la contient, sur chaque nœud aussi longtemps que l’enregistrement contient de l’argent. C’est ainsi qu’une preuve de paiement, le hachage d’un document ou un paiement sous séquestre à échéance lointaine reste lisible depuis n’importe quel nœud.

Ouvrir un enregistrement

Il existe deux façons d’ouvrir un enregistrement.

  • Le champ de survie. Une transaction de version 2 ou 3 porte un champ de survie : le dépôt propre de l’expéditeur, soit 0, soit au moins 0,1 ZBC (10 000 000 unités atomiques). Un dépôt placé là ouvre un enregistrement pour cette même transaction (enveloppe de la transaction).
  • FundLongevity (type 52). N’importe quel compte peut financer n’importe quelle transaction. Le corps fait exactement 28 octets : l’identifiant de la transaction cible (8 octets), le montant (8), la hauteur du bloc qui contient la cible (4) et la taille de la cible (8), soit son corps plus son message. Le montant doit être d’au moins 0,1 ZBC.

Le premier financement doit arriver tant que la cible a moins d’un intervalle d’instantané, soit 172 800 blocs (environ 30 jours) sur le mainnet, et il doit déclarer la hauteur et la taille réelles de la cible. Cette fenêtre garantit que chaque nœud détient encore la cible et peut vérifier la déclaration. Un premier financement tardif ou erroné est une opération nulle payante : les frais sont conservés et rien n’est financé.

Un complément ultérieur doit déclarer la même taille, et il peut arriver à tout moment tant que l’enregistrement vit. Son prix est fondu dans celui de l’enregistrement sous la forme d’une moyenne pondérée.

Le corps de 28 octets de FundLongevity, la fenêtre du premier financement et les deux intervalles gratuits.
Le corps de 28 octets de FundLongevity, la fenêtre du premier financement et les deux intervalles gratuits.

Ce que cela coûte

À son ouverture, l’enregistrement verrouille la taille de la cible et le prix de stockage par Mio (0,05 ZBC au départ). Il ne paie rien avant deux intervalles d’instantané après le bloc de la cible, car les nœuds conservent de toute façon la transaction aussi longtemps. Ensuite, une fois par période :

rent = ceil(payload bytes × locked price ÷ 1,048,576), at least 1 unit

Le loyer est prélevé sur le dépôt et crédité au fonds de longévité, qui verse aux nœuds une part à chaque bloc via la loterie coinbase. Au prix de départ, une charge utile de 16 octets paie 77 unités par période et une charge utile de 1 000 octets, 4 769 unités : pour la plus grande, le dépôt minimum de 0,1 ZBC couvre donc plus de 2 000 périodes. Quand l’argent d’un enregistrement atteint zéro, l’enregistrement est libéré et sa transaction redevient élagable.

Les instantanés transportent les transactions financées ainsi que les en-têtes des blocs qui les contiennent, si bien qu’un nœud qui rejoint la chaîne à partir d’un instantané les détient aussi (instantanés et synchronisation rapide).

Mettre fin à un enregistrement

Le loyer est prélevé sur l’argent des payeurs selon le principe premier entré, premier sorti : le dépôt le plus ancien est épuisé avant que le suivant ne soit touché. Un enregistrement vit tant que quelqu’un paie encore.

Pour y mettre fin plus tôt, chaque payeur dont l’argent n’est pas encore épuisé vote avec une transaction CloseLongevity ordinaire (type 309). Quand le dernier d’entre eux a voté, l’enregistrement se clôt et son reliquat va au fonds de longévité.

  • Un complément retire le vote de ce payeur, et un nouveau payeur doit voter lui aussi.
  • Un payeur qui a perdu sa clé maintient simplement l’enregistrement en vie jusqu’à épuisement de son argent.
  • Quand la facturation épuise l’argent du dernier payeur qui n’avait pas voté, l’enregistrement se clôt à ce bloc de facturation.

Rien de ce qui est versé dans un enregistrement ne revient à un payeur, si bien que personne ne peut prendre les dépôts des autres. Le type CancelLongevity (53) est retiré : toutes les chaînes le refusent. Aucun tiers, ZooBC Foundation comprise, ne peut clore un enregistrement.

Les dépôts des payeurs sont consommés du plus ancien au plus récent ; l’enregistrement se clôt dès que chaque payeur à qui il reste de l’argent a voté.
Les dépôts des payeurs sont consommés du plus ancien au plus récent ; l’enregistrement se clôt dès que chaque payeur à qui il reste de l’argent a voté.

Lire les enregistrements

L’API du nœud propose des routes pour les enregistrements et les prix : /longevity, /longevity/quote, /accounts/<address>/survival, /accounts/<address>/objects et /objects/<id>.

Voir aussi