Politiche di ripartizione e di transazione
Due impostazioni dell'account determinano ciò che raggiunge un account. Una politica di ripartizione inoltra quote fisse di ogni accredito in entrata, in ZBC o in qualsiasi token, a un massimo di dieci altri indirizzi: royalty, ricavi divisi tra soci o risparmi automatici. Una politica di transazione rifiuta intere categorie di transazioni in entrambe le direzioni, così che, per esempio, nessuno possa inviare all'account token indesiderati. Ognuna si imposta con una sola transazione e resta valida finché non viene cambiata.
Politica di ripartizione
Una transazione SetSplitPolicy (tipo 54) elenca fino a 10 destinatari, ciascuno con una quota in punti base (100 punti base fanno l'1 %):
- ogni quota è di almeno 1 punto base, e tutte le quote insieme arrivano al massimo a 10.000 (100 %);
- nessun destinatario può comparire due volte, e l'account non può indicare sé stesso;
- ogni destinatario deve essere in grado di detenere fondi.
Un corpo pari a 00 cancella la politica.
Che cosa viene ripartito
La politica si applica a ogni accredito in entrata, in ZBC e in token: pagamenti, rilasci di escrow, trigger, pagamenti di flussi, pagamenti in vesting, trasferimenti di token, esecuzioni di ordini, pagamenti da app e ricompense. Non si applica ai rimborsi del denaro dell'account stesso (come un escrow restituito al mittente), ai pagamenti delle pianificazioni in modalità prelievo né ai conii del bridge.
Ogni quota è floor(amount × basis points ÷ 10,000), e ciò che non viene assegnato, arrotondamenti compresi, resta all'account. Le quote non si propagano a cascata: la politica di ripartizione di un destinatario non si applica a ciò che riceve tramite una ripartizione, quindi il denaro non può girare in cerchio. Un destinatario la cui politica di transazione rifiuta i pagamenti viene saltato, e la sua quota resta all'account.
In un gruppo di account, solo il controller imposta la politica, e la politica del gruppo si applica al denaro inviato a qualsiasi membro. Un indirizzo che ha una politica di ripartizione non può entrare in un gruppo.
Politica di transazione
Una transazione SetTransactPolicy (tipo 50) memorizza sull'account una maschera di 2 byte. Ogni bit rifiuta una categoria di transazioni in entrambe le direzioni: l'account non le invierà né le riceverà.
| Bit | Categoria |
|---|---|
| 0 | Pagamenti |
| 1 | App |
| 2 | Token |
| 3 | Exchange |
| 4 | Archiviazione dati |
| 5 | Escrow e multifirma |
| 6 | Infrastruttura dei nodi |
| 7 | Bridge (AttestEvent) |
| 8 | Governance |
Alcuni tipi non vengono mai rifiutati: Empty, SetTransactPolicy, SetSplitPolicy, i tipi di longevità e i tipi dei gruppi di account.
Come funziona il rifiuto
Un nodo rifiuta una transazione vietata da una politica non appena viene inviata. Se un blocco la contiene comunque, viene respinta: il mittente paga la commissione e non si muove nulla. Viene verificato solo il destinatario indicato nell'involucro della transazione, quando la transazione viene eseguita. I pagamenti che la catena effettua in seguito per conto di una transazione precedente, come i pagamenti delle pianificazioni, i rilasci dei trigger e i pagamenti dei flussi, raggiungono comunque un destinatario che ha scelto di rifiutarli.
Una politica di transazione non è un'impostazione delle commissioni, dato che le commissioni derivano dalla soglia minima di ogni transazione, e non sceglie i produttori dei blocchi, che la catena estrae. Per i limiti di spesa dei membri di un account condiviso, vedi gruppi di account.