Wiki ZooBC
Économie et gouvernance

Les frais

Chaque transaction ZooBC paie des frais en ZBC. Leur minimum, le plancher, est calculé de la même façon par chaque nœud à partir de la transaction elle-même et de quelques paramètres communs à tout le réseau, si bien qu’un portefeuille le connaît avant de signer. Tout ce qui est déclaré au-dessus du plancher revient dans le même bloc, et les frais conservés vont à la loterie qui paie les nœuds enregistrés. Rien n’est brûlé, et aucun nœud ni aucune organisation ne s’approprie les frais.

Les frais minimaux

Le plancher comporte deux parties :

floor = base action fee × fee scale
      + price of the body and message bytes, kept for the minimum window,
        × number of registered nodes
  • Les frais d’action de base sont de 2 500 000 unités atomiques (0,025 ZBC). Il n’existe pas de frais de base propres à chaque type : un paiement, une émission de jeton et un ordre de marché partent tous de la même base.
  • L’échelle de frais correspond aux frais de transfert, que votent les sièges du registre. Elle démarre à 1,0 et peut évoluer une fois par cycle de 30 jours (votes de prix).
  • La charge sur les octets fixe le prix du corps et du message de la transaction, conservés pendant une fenêtre minimale de 17 280 blocs (3 jours) sur le mainnet, au prix de stockage des jeux de données. À partir de la version 0.5.8, elle est multipliée par le nombre de nœuds enregistrés au bloc précédent, car chaque nœud conserve une copie de ces octets.

Le plancher d’un simple paiement est donc d’un peu plus de 0,025 ZBC. La route GET /api/v1/blockchain/estimate-fee de l’API du nœud renvoie le plancher avant que vous signiez.

Une transaction qui déclare moins que son plancher est refusée, et un bloc qui en contient une est invalide. Le type 0, la transaction d’opération nulle qui ne déplace rien, doit tout de même payer des frais supérieurs à zéro. Un nœud ne refuse jamais des frais parce qu’ils sont trop élevés. Plusieurs actions regroupées en une seule transaction paient la somme de ce que chaque action paierait seule, le message n’étant facturé qu’une fois (une transaction par compte et par bloc, et les lots), et chaque charge calculée est arrondie vers le haut à au moins une unité atomique.

Le trop-payé est remboursé

Vous pouvez déclarer plus que le plancher. Lorsque le bloc est appliqué, la totalité des frais déclarés quitte votre compte, et la partie au-dessus du plancher revient directement dans le même bloc, sous la forme d’une écriture de remboursement distincte dans l’historique de votre compte. Par exemple, un paiement sur le testnet qui déclarait 0,02550004 ZBC a été facturé 0,02500003 ZBC et remboursé de 0,00050001 ZBC. Payer trop par erreur ne coûte donc rien.

Payer trop n’achète rien non plus. Le mempool d’un nœud classe les transactions selon les frais que le nœud conservera réellement, par octet, c’est-à-dire le plancher, puisque le trop-payé est remboursé ; en cas d’égalité, l’ordre d’arrivée départage, puis l’identifiant de transaction. Déclarer dix fois le plancher donne le même rang que déclarer le plancher : des frais plus élevés n’achètent ni une place plus tôt, ni une protection contre l’éviction quand le mempool est plein, et ne peuvent pas évincer d’autres transactions.

Où vont les frais

Tous les frais qu’un bloc conserve rejoignent sa cagnotte de récompenses, avec les pièces nouvellement libérées et une tranche du fonds de longévité, et la loterie coinbase répartit cette cagnotte entre les nœuds enregistrés en proportion de leur score de participation. Le nœud qui a produit le bloc n’a aucun droit particulier sur les frais. Ils ne sont pas brûlés (ZBC n’est jamais brûlé), et la ZooBC Foundation n’en prend aucune part.

Les frais déclarés se divisent : les frais minimaux rejoignent la cagnotte de récompenses du bloc avec la coinbase et sont partagés par loterie entre les nœuds ; le trop-payé est remboursé à l’expéditeur dans le même bloc.
Les frais déclarés se divisent : les frais minimaux rejoignent la cagnotte de récompenses du bloc avec la coinbase et sont partagés par loterie entre les nœuds ; le trop-payé est remboursé à l’expéditeur dans le même bloc.

Un prélèvement distinct fonctionne différemment. Sur les marchés intégrés, les frais de preneur d’un échange, 0,1 % au départ, prélevés sur ce que reçoit le preneur, vont au producteur du bloc ; les créateurs n’en paient pas (marchés et ordres).

Les devoirs sans frais

Certaines transactions sont un travail qu’un nœud accomplit pour le réseau plutôt que pour lui-même. Ces devoirs doivent déclarer des frais d’exactement zéro, et ils doivent provenir du propre compte d’un nœud enregistré, l’adresse construite à partir de sa clé de nœud :

Un devoir avec d’autres frais, ou envoyé depuis une autre clé, est refusé. Gratuit ne veut pas dire illimité : un nœud peut avoir au plus un devoir en attente par objet de devoir (un fragment de stockage dans une époque, un événement, un paramètre, une fenêtre de vote), et les devoirs circulent dans leur propre voie du mempool d’un nœud, si bien que le trafic ordinaire ne peut pas les évincer.

Autres charges

Certaines fonctions comportent leurs propres charges en plus des frais, et celles-ci ne sont jamais remboursées : le loyer d’un séquestre (séquestre), un dépôt de longévité qui maintient une transaction stockée au-delà de l’élagage (payer pour conserver des données (longévité)) et l’entretien d’un jeton (entretien du jeton (persistance)). Elles aboutissent au fonds de longévité, qui verse aux nœuds une tranche à chaque bloc (fonds).

Voir aussi