Wiki ZooBC
Transactions

Paiements liquides (flux de paiement)

Un paiement liquide verse de l’argent en continu d’un payeur à un destinataire, sur un nombre de minutes choisi. Le montant entier est bloqué au départ et se libère progressivement, de façon uniforme, à mesure que le temps passe : le destinataire voit que l’argent est bien là, et le payeur ne paie que le temps réellement écoulé. Les paiements liquides conviennent aux services facturés à la minute, à la rémunération d’une vacation ou aux locations.

Démarrer un flux

Une transaction LiquidPayment (type 6) désigne un destinataire, un montant et complete_minutes, la durée du flux en minutes. Elle peut verser un jeton au lieu de ZBC en indiquant l’identifiant de ce jeton. Lorsqu’un bloc l’inclut :

  • le montant quitte aussitôt le solde du payeur et il est bloqué ;
  • il se libère uniformément sur le nombre de minutes indiqué ;
  • une fois le temps écoulé, la chaîne verse d’elle-même le montant entier au destinataire, sans autre transaction.

L’achèvement est vérifié bloc par bloc d’après l’horodatage du bloc précédent, si bien qu’un producteur ne peut pas dater un bloc en avance pour avancer le versement final (voir l’expiration et les horodatages).

Arrêter un flux

Chaque partie peut mettre fin au flux plus tôt avec un LiquidPaymentStop (type 262). La chaîne répartit alors le montant selon le temps écoulé entre les horodatages des deux transactions : le destinataire reçoit la part déjà libérée, et le reste revient au payeur. La part du destinataire est arrondie à l’unité atomique supérieure, de sorte que l’arrondi ne lèse jamais le destinataire.

Une barre de 0 à 10 minutes avec un arrêt à la minute 3 : les premiers 30 % vont au destinataire, soit 3 ZBC, et les 70 % restants reviennent à l’expéditeur, soit 7 ZBC
Une barre de 0 à 10 minutes avec un arrêt à la minute 3 : les premiers 30 % vont au destinataire, soit 3 ZBC, et les 70 % restants reviennent à l’expéditeur, soit 7 ZBC

Aucune des deux parties ne peut prendre plus que ce que l’horloge autorise. Le payeur ne peut pas reprendre ce qui s’est déjà libéré, et le destinataire ne peut pas prendre ce qui ne l’est pas encore.

Avec les autres fonctionnalités

  • Politiques de répartition. Les versements d’un flux sont des crédits entrants : ils passent donc par la politique de répartition du destinataire (voir les politiques de répartition et de transaction).
  • Politiques de transaction. Une politique de transaction n’est vérifiée que pour le destinataire nommé dans le LiquidPayment lui-même. Les versements du flux parviennent quand même à un destinataire qui refuse les paiements par la suite.
  • Flux de jetons. Si un jeton versé en flux expire, sa réserve en ZBC est partagée entre les détenteurs, et les unités d’un flux comptent pour chaque partie selon la part déjà libérée (voir l’entretien du jeton).

Un flux paie une seule fois, en continu, sur toute sa durée. Pour une série de paiements distincts, comme une allocation mensuelle, utilisez les transferts programmés ; pour un paiement unique à une hauteur de bloc future ou après un événement, utilisez les déclencheurs.

Voir aussi