Wiki de ZooBC
Transacciones

Escrow

Un escrow es un pago que retiene la propia cadena hasta que un tercero, el aprobador, decide si sigue adelante. Ninguna empresa guarda el dinero y no interviene ningún código de contrato: un escrow es un SendZBC o un TransferToken normal con una parte adicional en su sobre, y lo liquidan las reglas fijas de la cadena. Sirve para entregas, trabajos por encargo o cualquier trato en el que el pagador quiera un árbitro.

Crear un escrow

La parte de escrow de la transacción nombra:

  • el aprobador, la dirección que juzgará el trato;
  • una comisión para el aprobador;
  • un plazo absoluto, en segundos Unix, posterior a la marca de tiempo de la transacción;
  • una instrucción para el aprobador, como «liberar a la entrega», de como máximo 128 000 bytes y sin ningún byte cero.

Solo SendZBC y TransferToken pueden llevar una parte de escrow. Cuando un bloque incluye la transacción, el remitente paga el importe, la comisión de la transacción, la comisión del aprobador y el alquiler del escrow, y la cadena retiene el importe y la comisión del aprobador. En un escrow de tokens el importe va en el token, mientras que la comisión de la transacción, la comisión del aprobador y el alquiler se pagan en ZBC.

Cuatro finales

Una caja de escrow que retiene el importe y la comisión, con cuatro salidas: aprobar, rechazar, el destinatario rechaza y vence el plazo, cada una mostrando adónde van las dos partes
Una caja de escrow que retiene el importe y la comisión, con cuatro salidas: aprobar, rechazar, el destinatario rechaza y vence el plazo, cada una mostrando adónde van las dos partes
FinalCómo ocurreEl importe va aLa comisión va a
Aprobarel aprobador envía ApprovalEscrowel destinatarioel aprobador
Rechazarel aprobador envía ApprovalEscrowel remitenteel aprobador
Declinarel destinatario envía DeclineEscrowRequestel remitenteel remitente
Vence el plazoel primer bloque pasado el plazo, por sí soloel remitenteel remitente

El aprobador gana su comisión tanto si aprueba como si rechaza, porque juzgar el trato era su trabajo en ambos casos. Si el destinatario declina, o si nadie actúa a tiempo, el remitente recupera ambas partes.

Un ApprovalEscrow tiene un cuerpo de 36 bytes: el valor de la aprobación y el hash de la transacción en escrow. Solo el aprobador designado puede enviarlo. Cada escrow se liquida una sola vez, y una segunda aprobación de un escrow ya liquidado es una operación nula pagada: paga su comisión y no hace nada más. El remitente no puede retirar el pago a voluntad: solo estos cuatro finales cierran un escrow. El plazo se comprueba con la marca de tiempo del bloque anterior (véase caducidad y marcas de tiempo).

La cadena registra el estado de cada escrow como 0 pendiente, 1 aprobado, 2 rechazado, 3 vencido o 4 declinado.

El alquiler del escrow

Un escrow ocupa el estado de la cadena hasta que se liquida, así que paga un alquiler además de la comisión:

escrow rent = storage price of the escrow part's bytes × lock duration in blocks ÷ billing period

El alquiler se carga cuando se crea el escrow, va al fondo de longevidad (véase fondos) y nunca se reembolsa, sea cual sea el final. GET /api/v1/blockchain/estimate-fee lo indica antes de firmar.

Un plazo que queda más allá del momento en que la transacción se podaría se rechaza, salvo que el depósito de supervivencia de la transacción pague por mantenerla almacenada ese tiempo (véase pagar por conservar datos (longevidad)).

Solicitudes de escrow: el beneficiario va primero

A veces es el beneficiario quien quiere fijar las condiciones. Con una EscrowRequest, el beneficiario publica el pagador, el importe, el aprobador, la comisión, el plazo absoluto, la instrucción y una ventana de financiación en bloques. El pagador entonces la financia, con un SendZBC en escrow cuyas condiciones coincidan exactamente, o la declina con un DeclineEscrowRequest. Una transacción de financiación cuyas condiciones difieran es una operación nula pagada.

Un escrow entre varias partes lleva la cofirma del destinatario o el id de una de esas solicitudes.

Véase también