Wiki ZooBC
Transactions

Transferts programmés

Un transfert programmé est une série de paiements mise en place par une seule transaction. Le payeur signe une fois, et la chaîne effectue chaque paiement à son échéance : un salaire, un abonnement, une allocation ou l’acquisition progressive d’une dotation. Il peut payer en ZBC ou dans n’importe quel jeton.

Mettre en place un programme

Un ScheduledTransfer (type 29) a un corps de 47 octets qui indique :

ChampSignification
identifiant du jetonl’actif à verser ; 0 désigne le ZBC
montantle montant de chaque paiement
intervallele temps entre deux paiements, en secondes
nombre de paiementsde 1 à 520
délai initial (cliff)un délai facultatif avant le premier paiement
mode de financement0 pour le mode acquisition (vesting), 1 pour le mode prélèvement (pull) ; voir plus bas
politique d’annulationrévocable ou irrévocable
date de finfacultative

Les frais sont payés une seule fois, à la création du programme. Les paiements suivent ensuite l’intervalle ; chacun arrive à échéance d’après l’horodatage du bloc précédent, si bien qu’un producteur ne peut pas dater son bloc en avance pour y attirer un paiement.

Deux modes de financement

Deux voies le long d’un axe du temps : le mode acquisition, où un coffre verrouillé libère un paiement égal à chaque échéance, et le mode prélèvement, où chaque paiement est pris au payeur et où quatre échecs d’affilée mènent à l’annulation
Deux voies le long d’un axe du temps : le mode acquisition, où un coffre verrouillé libère un paiement égal à chaque échéance, et le mode prélèvement, où chaque paiement est pris au payeur et où quatre échecs d’affilée mènent à l’annulation
  • Acquisition (mode 0) : la totalité est bloquée à la création du programme et libérée un paiement à la fois. Le destinataire sait que l’argent est vraiment là.
  • Prélèvement (mode 1) : rien n’est bloqué. Chaque paiement est prélevé sur le solde du payeur à son échéance. Après quatre paiements manqués d’affilée, le programme s’annule de lui-même.

Les paiements en mode acquisition passent par la politique de répartition du destinataire, comme tout crédit entrant ; les paiements en mode prélèvement n’y passent pas (voir les politiques de répartition et de transaction).

Annuler et rediriger

  • CancelSchedule (type 30) met fin à un programme. Le payeur ne peut l’annuler que s’il est révocable. Le destinataire peut l’annuler à tout moment : c’est ainsi qu’un destinataire décline un programme. Quand un programme en mode acquisition est annulé, tout ce qui est encore bloqué revient au payeur.
  • ReassignSchedule (type 31) permet au destinataire de rediriger les paiements futurs vers une autre adresse.

Une politique de transaction n’est vérifiée que pour le destinataire nommé dans le ScheduledTransfer lui-même : ses paiements ultérieurs parviennent donc quand même à un destinataire qui refuse les paiements par la suite.

Ce qu’un programme ne fait pas

Un programme ne guette pas un moment bon marché sur le réseau : ses frais sont payés à la création, et ses paiements suivent l’intervalle fixé par le payeur. Il n’échange pas non plus d’actifs : il verse l’actif qu’il désigne, et convertir un actif en un autre est le rôle des offres d’échange et des marchés et ordres.

D’autres outils couvrent d’autres formes de paiement. Pour de l’argent qui doit se libérer progressivement en continu, minute par minute, voir les paiements liquides. Pour un paiement unique libéré à une hauteur de bloc future ou lorsqu’un événement est confirmé, voir les déclencheurs et attestations.

Si un jeton programmé expire, les unités encore bloquées dans un programme en mode acquisition comptent pour le propriétaire du programme lorsque la réserve en ZBC du jeton est répartie (voir l’entretien du jeton).

Voir aussi