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 :
| Champ | Signification |
|---|---|
| identifiant du jeton | l’actif à verser ; 0 désigne le ZBC |
| montant | le montant de chaque paiement |
| intervalle | le temps entre deux paiements, en secondes |
| nombre de paiements | de 1 à 520 |
| délai initial (cliff) | un délai facultatif avant le premier paiement |
| mode de financement | 0 pour le mode acquisition (vesting), 1 pour le mode prélèvement (pull) ; voir plus bas |
| politique d’annulation | révocable ou irrévocable |
| date de fin | facultative |
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
- 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).