Wiki di ZooBC
Transazioni

Pagamenti liquidi (flussi)

Un pagamento liquido trasmette denaro in flusso da un pagante a un destinatario nell'arco di un numero scelto di minuti. L'intero importo viene bloccato all'inizio e matura in modo uniforme con il passare del tempo, così il destinatario può vedere che il denaro c'è, e il pagante paga solo il tempo effettivamente trascorso. I pagamenti liquidi sono adatti a servizi pagati al minuto, alla paga di un turno o ai noleggi.

Avviare un flusso

Una transazione LiquidPayment (tipo 6) indica un destinatario, un importo e complete_minutes, la durata del flusso in minuti. Può trasmettere un token invece di ZBC indicandone l'id. Quando un blocco la include:

  • l'importo lascia subito il saldo del pagante e viene bloccato;
  • matura in modo uniforme nell'arco dei minuti indicati;
  • quando il tempo è scaduto, la catena paga da sé l'intero importo al destinatario, senza bisogno di altre transazioni.

Il completamento viene verificato blocco per blocco rispetto al timestamp del blocco precedente, quindi un produttore non può datare un blocco in anticipo per anticipare il pagamento finale (vedi scadenza e timestamp).

Fermare un flusso

Ciascuna delle due parti può chiudere in anticipo un flusso con un LiquidPaymentStop (tipo 262). La catena divide allora l'importo in base al tempo trascorso tra i timestamp delle due transazioni: il destinatario riceve la parte maturata, e il resto torna al pagante. La parte del destinatario viene arrotondata per eccesso all'unità atomica successiva, così l'arrotondamento non penalizza mai il destinatario.

Una barra da 0 a 10 minuti con uno stop al minuto 3: il primo 30 % va al destinatario, 3 ZBC, e l'altro 70 % torna al mittente, 7 ZBC
Una barra da 0 a 10 minuti con uno stop al minuto 3: il primo 30 % va al destinatario, 3 ZBC, e l'altro 70 % torna al mittente, 7 ZBC

Nessuna delle due parti può prendere più di quanto l'orologio consenta. Il pagante non può riprendersi ciò che è già maturato, e il destinatario non può prendere ciò che non lo è ancora.

Con altre funzioni

  • Politiche di ripartizione. I pagamenti di un flusso sono accrediti in entrata, quindi passano attraverso la politica di ripartizione del destinatario (vedi politiche di ripartizione e di transazione).
  • Politiche di transazione. Una politica di transazione viene verificata solo rispetto al destinatario indicato nel LiquidPayment stesso. I pagamenti del flusso raggiungono comunque un destinatario che in seguito rifiuta i pagamenti.
  • Flussi di token. Se un token trasmesso in flusso scade, la sua copertura in ZBC viene divisa tra i detentori, e le unità di un flusso contano per ciascuna parte in base a quanto è maturato (vedi manutenzione dei token (persistenza)).

Un flusso paga una volta sola, in modo continuo, nell'arco dei suoi minuti. Per una serie di pagamenti separati, come una paghetta mensile, usa i trasferimenti pianificati; per un unico pagamento a una futura altezza di blocco o dopo un evento, usa i trigger.

Vedi anche