Wiki di ZooBC
Transazioni

Escrow

Un escrow è un pagamento trattenuto dalla catena stessa finché una terza parte, l'approvatore, non decide se va a buon fine. Nessuna società custodisce il denaro e non è coinvolto alcun codice di contratto: un escrow è un normale SendZBC o TransferToken con una parte in più nel suo involucro, e sono le regole fisse della catena a regolarlo. È adatto a consegne, lavori freelance o qualsiasi accordo in cui il pagante vuole un arbitro.

Creare un escrow

La parte escrow della transazione indica:

  • l'approvatore, l'indirizzo che giudicherà l'accordo;
  • una commissione per l'approvatore;
  • una scadenza assoluta, in secondi Unix, successiva al timestamp della transazione;
  • un'istruzione per l'approvatore, come «rilascia alla consegna», di al massimo 128.000 byte e senza byte nulli.

Solo SendZBC e TransferToken possono contenere una parte escrow. Quando un blocco include la transazione, il mittente paga l'importo, la commissione della transazione, la commissione dell'approvatore e il canone dell'escrow, e la catena trattiene l'importo e la commissione dell'approvatore. In un escrow di token l'importo è nel token, mentre la commissione della transazione, quella dell'approvatore e il canone si pagano in ZBC.

Quattro esiti

Una scatola di escrow che contiene l'importo e la commissione, con quattro uscite: approvazione, rifiuto, rinuncia del destinatario e scadenza superata, ciascuna con la destinazione delle due parti
Una scatola di escrow che contiene l'importo e la commissione, con quattro uscite: approvazione, rifiuto, rinuncia del destinatario e scadenza superata, ciascuna con la destinazione delle due parti
EsitoCome avvieneL'importo va aLa commissione va a
Approvazionel'approvatore invia ApprovalEscrowil destinatariol'approvatore
Rifiutol'approvatore invia ApprovalEscrowil mittentel'approvatore
Rinunciail destinatario invia DeclineEscrowRequestil mittenteil mittente
Scadenza superatail primo blocco oltre la scadenza, da soloil mittenteil mittente

L'approvatore guadagna la sua commissione sia che approvi sia che rifiuti, perché giudicare l'accordo era comunque il suo compito. Se il destinatario rinuncia, o se nessuno agisce in tempo, il mittente riottiene entrambe le parti.

Un ApprovalEscrow ha un corpo di 36 byte: il valore di approvazione e l'hash della transazione in escrow. Solo l'approvatore indicato può inviarlo. Ogni escrow si regola una sola volta, e una seconda approvazione di un escrow già regolato è una no-op pagata: paga la sua commissione e non fa nient'altro. Il mittente non può ritirare il pagamento a piacimento: solo questi quattro esiti chiudono un escrow. La scadenza viene verificata rispetto al timestamp del blocco precedente (vedi scadenza e timestamp).

La catena registra lo stato di ogni escrow come 0 in sospeso, 1 approvato, 2 rifiutato, 3 scaduto o 4 rinunciato.

Il canone dell'escrow

Un escrow occupa lo stato della catena finché non viene regolato, quindi paga un canone oltre alla commissione:

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

Il canone viene addebitato quando l'escrow viene creato, va al pool di longevità (vedi pool) e non viene mai rimborsato, qualunque sia l'esito. GET /api/v1/blockchain/estimate-fee lo indica prima che tu firmi.

Una scadenza che cade oltre il momento in cui la transazione verrebbe eliminata viene rifiutata, a meno che il deposito di sopravvivenza della transazione non paghi per conservarla così a lungo (vedi pagare per conservare i dati (longevità)).

Richieste di escrow: chi riceve il pagamento si muove per primo

A volte è chi deve ricevere il pagamento a voler fissare le condizioni. Con un EscrowRequest, il beneficiario pubblica il pagante, l'importo, l'approvatore, la commissione, la scadenza assoluta, l'istruzione e una finestra di finanziamento in blocchi. Il pagante allora la finanzia, con un SendZBC in escrow le cui condizioni corrispondono esattamente, oppure la rifiuta con un DeclineEscrowRequest. Una transazione di finanziamento con condizioni diverse è una no-op pagata.

Un escrow a più parti contiene la co-firma del destinatario oppure l'id di una richiesta di questo tipo.

Vedi anche