Pagos líquidos (flujos)
Un pago líquido transmite dinero de un pagador a un destinatario en flujo continuo a lo largo de un número de minutos elegido. Todo el importe se bloquea al principio y se va liberando de forma uniforme a medida que pasa el tiempo, de modo que el destinatario puede ver que el dinero está ahí y el pagador solo paga por el tiempo que realmente ha transcurrido. Los pagos líquidos sirven para servicios de pago por minuto, el pago de un turno de trabajo o alquileres.
Iniciar un flujo
Una transacción LiquidPayment (tipo 6) nombra a un destinatario, un importe y complete_minutes, la duración del flujo en minutos. Puede transmitir un token en lugar de ZBC nombrando el id del token. Cuando un bloque la incluye:
- el importe sale de inmediato del saldo del pagador y queda bloqueado;
- se libera de forma uniforme a lo largo de los minutos indicados;
- cuando se cumple el tiempo, la cadena paga por sí sola todo el importe al destinatario, sin ninguna otra transacción.
La finalización se comprueba bloque a bloque con la marca de tiempo del bloque anterior, así que un productor no puede estampar un bloque adelantado para adelantar el pago final (véase caducidad y marcas de tiempo).
Detener un flujo
Cualquiera de las dos partes puede terminar un flujo antes de tiempo con un LiquidPaymentStop (tipo 262). La cadena reparte entonces el importe según el tiempo transcurrido entre las marcas de tiempo de las dos transacciones: el destinatario recibe la parte liberada, y el resto vuelve al pagador. La parte del destinatario se redondea hacia arriba a la siguiente unidad atómica, así que el redondeo nunca perjudica al destinatario.
Ninguna de las dos partes puede llevarse más de lo que permite el reloj. El pagador no puede recuperar lo que ya se ha liberado, y el destinatario no puede llevarse lo que todavía no.
Con otras funciones
- Políticas de reparto. Los pagos de un flujo son abonos entrantes, así que pasan por la política de reparto del destinatario (véase políticas de reparto y de transacciones).
- Políticas de transacciones. Una política de transacciones solo se comprueba frente al destinatario nombrado en el propio LiquidPayment. Los pagos del flujo siguen llegando a un destinatario que más tarde se excluya de los pagos.
- Flujos de tokens. Si caduca un token que se está transmitiendo, su respaldo en ZBC se reparte entre los tenedores, y las unidades de un flujo cuentan para cada parte según lo que se haya liberado (véase mantenimiento de un token (persistencia)).
Un flujo paga una sola vez, de forma continua, a lo largo de sus minutos. Para una serie de pagos separados, como una asignación mensual, usa transferencias programadas; para un único pago en una altura de bloque futura o tras un evento, usa disparadores y atestaciones.