Transazioni
Una transazione è un'istruzione firmata rivolta alla catena: pagare qualcuno, emettere un token, piazzare un ordine, collegare un indirizzo a un gruppo. ZooBC non ha una macchina virtuale per il codice degli utenti. Ogni funzione è un tipo di transazione integrato, con regole fisse che ogni nodo applica esattamente allo stesso modo, quindi un wallet sa, prima di firmare, tutto ciò che una transazione può fare e quale sarà la sua commissione minima.
Tipi integrati
Dalla versione 0.5.8 ZooBC definisce 73 numeri di tipo di transazione, tipo 0 compreso, in dodici famiglie.
Un numero di tipo è un gruppo più 256 volte un sottotipo, quindi la numerazione ha dei vuoti: 2 è NodeRegistration, e 258 (gruppo 2, sottotipo 1) è il suo aggiornamento. Un numero che la catena non definisce viene rifiutato, e ogni tipo definito è accettato dal blocco 1.
Due numeri sono speciali. Il tipo 0, Empty, non sposta nulla: esiste per trasportare un messaggio, deve comunque pagare una commissione maggiore di zero e non incrementa il nonce del mittente, il contatore per mittente che la catena tiene. Il tipo 53, CancelLongevity, è dismesso: ogni catena lo rifiuta, e al suo posto si usa CloseLongevity (309).
La vita di una transazione
- Un wallet costruisce l'involucro, la stessa struttura per ogni tipo, e lo firma per una catena.
- Invia i byte firmati con
POST /api/v1/transactions. HTTP 202 significa che il nodo ha accettato la transazione nel suo pool, non che è in un blocco. Reinviare gli stessi byte è sicuro: la copia viene segnata come duplicato. - I nodi si passano la transazione, e un produttore di blocchi la include. Un blocco contiene al massimo 2.000 transazioni e 524.288 byte di payload, e al massimo una transazione per ogni account (vedi una transazione per account per blocco, e i batch).
GET /api/v1/transactions/<hash>/statusne riporta l'avanzamento: staging, mempool (con la sua posizione), confirmed (con l'altezza del blocco), rejected (con il motivo) o not_found.
Una transazione che nessun blocco include entro la sua finestra scade (vedi scadenza e timestamp).
Quando lo stato cambia nel frattempo
Tra la firma e l'inclusione in un blocco, altre transazioni possono cambiare ciò da cui una transazione dipende: un escrow viene regolato, un'offerta viene accettata da qualcun altro, un token scade. Una transazione del genere diventa una no-op pagata: viene inclusa in un blocco, paga la sua commissione e non cambia nient'altro. Il blocco resta valido su ogni nodo, quindi nessuno può paralizzare la catena inviando transazioni che stanno per diventare obsolete.
Un blocco non è valido solo per errori che ogni nodo vede allo stesso modo, come una firma non valida, una commissione sotto la soglia minima (vedi commissioni) o un pagamento superiore al saldo del mittente.
Articoli di questa categoria
- L'involucro della transazione: i campi che ogni transazione contiene, e la sua commissione.
- Firmare una transazione: il digest legato alla catena e i tipi di chiave che possono firmare.
- Scadenza e timestamp: per quanto tempo una transazione firmata resta valida.
- Una transazione per account per blocco, e i batch: una transazione per account per blocco, e i batch.
- Escrow: pagamenti trattenuti dalla catena finché un approvatore non decide.
- Multifirma: account che spendono solo con più firme.
- Pagamenti liquidi (flussi): denaro che fluisce verso un destinatario nell'arco di minuti.
- Trasferimenti pianificati: una serie di pagamenti firmata una sola volta.
- Trigger e attestazioni: denaro rilasciato a un'altezza o dopo un evento.
- Gruppi di account: molti indirizzi che condividono un unico account.
Vedi anche
Articoli su questo argomento
- Escrow
Come un pagamento ZooBC può essere trattenuto dalla catena finché un approvatore indicato non decide, i suoi quattro possibili esiti, quanto costa e le richieste di escrow emesse da chi riceve il pagamento. - Firmare una transazione
Che cosa copre una firma ZooBC, come si ricavano l'hash e l'id di una transazione, quali tipi di chiave possono firmare e come i wallet esterni firmano transazioni della propria catena. - Gruppi di account
Come un gruppo di account ZooBC permette a molti indirizzi, di qualsiasi tipo di chiave, di condividere un unico saldo, con un controller che decide quanto può spendere ogni membro. - L'involucro della transazione
I campi che ogni transazione ZooBC contiene, in ordine, che cosa contiene ciascuno e che cosa manca deliberatamente, come un gas limit o un chain id. - Multifirma
Come un account multifirma ZooBC spende solo quando un numero stabilito dei suoi partecipanti ha firmato, anche quando usano chiavi di catene diverse. - Pagamenti liquidi (flussi)
Come un pagamento liquido ZooBC trasmette in flusso ZBC o un token a un destinatario nell'arco di un certo numero di minuti, e come entrambe le parti possono fermarlo con una ripartizione equa. - Scadenza e timestamp
Perché ogni transazione ZooBC porta con sé il proprio istante, per quanto tempo resta valida (un'ora per impostazione predefinita, al massimo un giorno) e come blocchi e regolamenti usano il tempo. - Trasferimenti pianificati
Come un unico ScheduledTransfer di ZooBC imposta una serie di pagamenti in ZBC o in un token, bloccati in anticipo o prelevati alla scadenza, e come può essere annullato o reindirizzato. - Trigger e attestazioni
Come un trigger ZooBC blocca ZBC fino a una futura altezza di blocco o a un evento del mondo esterno, e come i nodi registrati risolvono gli eventi tramite attestazione. - Una transazione per account per blocco, e i batch
Perché un blocco ZooBC può contenere una sola transazione per ogni account, e come un batch permette a un account di effettuare più pagamenti o trasferimenti in un'unica transazione.