Wiki di ZooBC
App e sviluppo su ZooBC

Idee di progetto

ZooBC non ha una macchina virtuale, quindi nessuno vi distribuisce contratti. Offre invece un ampio insieme di tipi di transazione già pronti, e un buon progetto li combina: la catena fa da arbitro e da registro contabile, e l'app è il volto, spesso una singola pagina web (costruire un'app come singola pagina HTML). Ogni idea qui sotto usa solo tipi di transazione che il nodo esegue già, e ciascuna è accompagnata dal limite che chi la costruisce deve conoscere.

Il pagamento a fiume con LiquidPayment e LiquidPaymentStop, e altre idee costruite allo stesso modo.
Il pagamento a fiume con LiquidPayment e LiquidPaymentStop, e altre idee costruite allo stesso modo.

Pagamenti

Pagamento a fiume

LiquidPayment (tipo 6) blocca un importo, in ZBC o in un token, che matura verso il destinatario in modo uniforme nell'arco dei complete_minutes scelti; alla fine l'intero importo viene pagato automaticamente. LiquidPaymentStop (tipo 262), inviato da una delle due parti, paga la quota maturata fino a quel momento e restituisce il resto. La pagina deve solo disegnare il livello dell'acqua. Buono a sapersi: la ripartizione segue il tempo tra i timestamp delle due transazioni, e la quota del destinatario viene arrotondata per eccesso: 10.000.000 di unità su 3 minuti, fermate dopo 66 secondi, danno 3.666.667 unità al destinatario e 6.333.333 di ritorno (pagamenti liquidi (flussi)).

Deposito cauzionale

Un inquilino invia la cauzione come SendZBC in escrow che indica un approvatore, una commissione e una scadenza (escrow). L'approvatore può approvare, e l'importo va al proprietario di casa, oppure rifiutare, e torna all'inquilino; l'approvatore prende comunque la commissione. Se nessuno agisce, il primo blocco oltre la scadenza restituisce l'importo e la commissione all'inquilino. Limite: il canone dell'escrow si paga alla creazione e non viene mai rimborsato, e una scadenza oltre la portata del pruning viene rifiutata a meno che il deposito di sopravvivenza della transazione non paghi per conservarla così a lungo.

Conto di famiglia

LinkAccount (55), SetMemberPermissions (57), UnlinkAccount (56) e TransferGroupControl (58) danno a una famiglia un unico saldo dietro fino a 100 indirizzi (gruppi di account). Limite: entrare richiede il consenso dell'indirizzo che entra e trasferisce nel gruppo tutto ciò che possiede; un nuovo membro può solo ricevere finché il controller non gli concede permessi; e un membro che esce non porta via nulla.

Giochi

Sala dei dadi

CreateApp con i tipi da 16 a 19 (due dadi, testa o croce, roulette e slot) gioca contro il pool delle app. La pagina mostra il risultato circa 30 secondi dopo e può leggere /api/v1/apps/pool per mostrare la puntata massima consentita da ogni gioco. Limite: una scommessa la cui vincita massima supera il 5 % del pool viene rifiutata, e una vincita molto grande può essere pagata su più blocchi (scommesse in solitaria).

Chiosco del tris

Tipo 1, con CreateApp, JoinApp, AppMove e ClaimAppTimeout (app multigiocatore). Limite: ogni mossa è una transazione, con la sua commissione e la sua attesa per un blocco; un giocatore che se ne va tiene ferma la partita per 240 blocchi prima che l'altro possa reclamarla; e gli account con chiavi in stile Ethereum o Bitcoin non possono occupare un posto.

Duello lampo

Una partita channel a due giocatori regolata con SettleApp (app channel): le mosse volano tra i giocatori come voucher firmati, e la catena vede solo le puntate e la regolazione. Limite: la tua app deve trasportare le mosse tra i giocatori (il wallet ufficiale usa un relay), conservare ogni mossa firmata che riceve e tenere d'occhio la finestra di contestazione di 240 blocchi.

Token e scambi

Timbri del caffè

IssueToken (tipo 10) crea un token timbro con 0 decimali, quindi si muove in unità intere; TransferToken (11) consegna un timbro a un cliente; BurnToken (13) spende i timbri al bancone (emettere un token). Limite: BurnToken funziona solo su un token emesso come riscattabile, e solo chi detiene un'unità può bruciarla; e un token vive solo finché la sua manutenzione viene pagata (manutenzione dei token (persistenza)).

Chiosco degli swap

CreateSwapOffer (18), AcceptSwapOffer (19) e CancelSwapOffer (20) creano una bacheca di swap atomici tra due asset qualsiasi (offerte di swap). Limite: un solo taker paga l'intera parte richiesta, senza esecuzioni parziali, e la scadenza di un'offerta blocca solo l'accettazione, quindi un'offerta scaduta resta bloccata finché il suo maker non la annulla.

Record e messaggi

Timbro di hash

Una transazione il cui messaggio contiene lo SHA-256 di un file dimostra che il file esisteva quando quel blocco è stato prodotto, e un FundLongevity (52), o il campo di sopravvivenza, lo conserva oltre il pruning (pagare per conservare i dati (longevità)). La pagina /verify di un gateway calcola l'hash nel browser e lo cerca sulla catena (verificare un file scaricato). Limite: senza un deposito di longevità, i nodi ordinari eliminano il timbro dopo 30-60 giorni, e un primo FundLongevity deve arrivare entro un intervallo di snapshot, circa 30 giorni.

Cartoline sigillate

Un messaggio cifrato, marcato «ZBE1» e sigillato per la chiave del destinatario, può contenere fino a 268 byte di testo (messaggi firmati e cifrati). Limite: è sigillato solo il testo; la transazione stessa, con il suo mittente, il suo destinatario e il suo orario, è pubblica come qualsiasi altra.

Accedi con ZooBC

Un sito mostra una sfida monouso, l'utente la firma come messaggio ZBC-MSG-v2 con gli strumenti pubblici, una firma Ed25519 su SHA3-256("ZBC-MSG-v2" ‖ hash genesi ‖ messaggio), e il sito verifica la firma rispetto alla chiave dell'account. Limite: la firma dei messaggi non fa parte del consenso e i nodi non hanno una route per essa, quindi il sito la verifica da sé; e il wallet web ufficiale non firma messaggi.

Che cosa richiede una modifica al nodo

  • Un automated market maker. ZooBC non ha pool AMM, per scelta; il suo exchange è un order book più le offerte di swap (mercati e ordini).
  • Solidity o qualsiasi contratto EVM. Non c'è una macchina virtuale.
  • Un nuovo gioco, come il poker. Le regole dei giochi non si possono caricare come script; un nuovo gioco richiede nuove regole nel nodo.
  • Un gioco crash con un pulsante per incassare. Il crash è una scommessa in solitaria il cui obiettivo è fissato in anticipo; non esiste una mossa per incassare.

Vedi anche