
consensoScopo di questo documento: spiegare la versione 1.1 dell'algoritmo di consenso di Chia
Pubblico di destinazione: un pubblico tecnico che ha familiarità con blockchain ma non con Proofs of Space (PoS), Proofs of Time / Verifiable Delay Functions (VDF) e Chia.
Se sei nuovo su Bitcoin / blockchain, leggi prima questo libro di testo: Spiegazione del consenso sulla rete di Bitcoin e ChiawwTecnologie di criptovaluta.
Per favore chiedere domande sulla base dei tasti in modo da poter migliorare questo documento!
Motivazione
IL L'algoritmo di Chia Consensus mira a creare un'alternativa rispettosa dell'ambiente, sicura e decentralizzata alla prova del lavoro e alla prova della posta in gioco.
Prova di lavoro (PoW) le criptovalute bruciano enormi quantità di elettricità. Inoltre, tendono a diventare centralizzati a causa della concentrazione della produzione e della proprietà dell'hardware e della concentrazione di prodotti economici energia, rendendo PoW inaccessibile agli utenti ordinari e suscettibile a vari attacchi.
La prova della posta in gioco ha molte forme, ognuna con i suoi pro e contro. Alcuni punti deboli comuni sono: controllo concentrato dei fondi da parte degli scambi; concentrazione della delega; fare affidamento su punti di controllo e soggettività (un requisito per essere online periodicamente); inaccessibilità agli utenti regolari; rischio di taglio; ipotesi di sincronizzazione dell'orologio, ipotesi di retee altre ipotesi di sicurezza.
Introduzione
Gli algoritmi di consenso decentralizzati richiedono la resistenza di Sybil con una risorsa che sia crittograficamente verificabile e scarsa (non infinita). Nei precedenti sistemi blockchain le scarse risorse sono state la potenza di calcolo e la posta in gioco. La prova dello spazio è un'alternativa che si avvicina molto di più all'ideale originale di Bitcoin di "una CPU un voto" utilizzando la capacità di archiviazione come risorsa scarsa. Ad esempioampLui, qualcuno che archivia 500 GiB ha 5 "voti", qualcuno che archivia 100 GiB ha 1 "voto", Dove un votoe si riferisce alla possibilità di vincere e convalidare un blocco, non un vero voto a catena. Utilizzando solo sla capacità di toraggio, tuttavia, non è sicura. L `uno e l` altro pezzo di puzzle crittografico viene utilizzato per proteggere questo sistema: vale a dire una funzione di ritardo verificabile, che è a crittografico prova che il tempo reale è passato. Un sistema equo può essere creato combinando prove di spazio e tempo. In un tale sistema, gli utenti memorizzano in modo casuale–cercando i dati sui loro dischi rigidi per periodi di tempo e la loro possibilità di vincere Chia è proporzionale allo spazio assegnato. Inoltre, un tale sistema scala fino a miliardi di partecipanti in modo simile alla lotteria di prova. Non sono necessari fondi, hardware speciale, registrazione o autorizzazione per partecipare, solo un disco rigido. E il sistema è completamente trasparente e deterministico: chiunque può verificare in modo efficiente e oggettivo quale catena sia quella canonica.
Prove di spazio
Una prova del protocollo spaziale è quella in cui:
- un Verifier può inviare una sfida a un Prover e
- il Prover può dimostrare al verificatore che il Prover sta riservando una specifica quantità di spazio di archiviazione in quel preciso momento.
La prova del protocollo spaziale ha tre componenti: tracciare, provare / coltivare e verificare. Dettagli qui.

Figura 1: Primo, il prover “traccia” o alloca una porzione di spazio su disco (1). Quindi il prover “coltiva” rispondendo alle sfide con prove di spazio (2,3,4). Il verificatore controlla che la prova sia valida per quella sfida.
Tracciare è il processo mediante il quale un prover, che chiamiamo agricoltore, inizializza una certa quantità di spazio. Un agricoltore può essere qualsiasi persona che ha almeno 100 GiB disponibili da riservare sul proprio laptop o un'azienda pronta ad allocare un grande volume di spazio di archiviazione inutilizzato. Non c'è un limite massimo. La stampa richiede l'ordine di ore o giorni e viene eseguita solo una volta. Lo spazio inizializzato è occupato da a file chiamato trama. Le dimensioni del grafico sono determinate dal parametro ak, dove spazio = 780 * k * potenza(2, e – 10), con un k minimo di 32 (101.4 GiB). A partire da Chia 1.0, un grafico k32 può essere creato in giro sei ore con una macchina veloce delle merci, e 24 ore con una macchina lenta che utilizza un core della CPU e pochi GB di memoria. Ci sono opportunità per enormi accelerazioni. La costruzione PosSpace si basa su Beyond Uomo dell'inferno [8 Scarica], ma è nidificato 6 volte e contiene altre euristiche per renderlo pratico.
Il risultato è una trama file che può essere, per esample, 100 GiB. Il file contiene sette tabelle con dati dall'aspetto casuale. Ogni tabella ha 2^k voci. Ogni voce nella tabella i contiene due puntatori alla tabella i-1 (la tabella precedente). Infine, ogni voce della tabella 1 contiene una coppia di numeri interi tra 0 e 2 ^ k, chiamati "valori x". Una prova di spazio è una raccolta di 64 valori x che hanno una certa relazione matematica.
Nel diagramma sopra, una volta che il Prover ha inizializzato 100 GiB, sono pronti a ricevere una sfida e creare una prova. Una proprietà interessante di questo schema è che non è interattivo: nessuna registrazione o è necessaria una connessione in linea per creare una trama. Niente colpisce la blockchain fino a quando non si vince una ricompensa, simile a PoW.
Agricoltura è il processo attraverso il quale un agricoltore riceve una sequenza di sfide per dimostrare di aver legittimamente messo da parte una quantità definita di stoccaggio. In risposta a ogni sfida, l'agricoltore controlla i propri appezzamenti, genera una prova e la presenta vincente prove alla rete per la verifica.
Ogni iterazione di questo processo è una ricerca nella tabella. UN cercare accetta una sfida a 256 bit come input e fornisce una prova. L'agricoltore risponde a una sfida di leggendo una coppia di valori in formato tabella 7. Questi indicano due voci nella tabella 6, ecc. Infine, l'agricoltore recupera l'intero albero dei valori x. Ciò richiede una lettura per la tabella 7, due per la tabella 6, quattro per la tabella 5, ecc. L'intero processo richiederebbe circa 640 ms, assumendo un HDD lento con un tempo di ricerca di 10 ms. La quantità di dati letti è piccola ed è indipendente dalla dimensione del grafico.
Poiché la maggior parte delle prove generate da questo processo non sono abbastanza buone (come discusso più avanti) per essere inviate alla rete per la verifica, possiamo ottimizzare questo processo controllando solo un ramo dell'albero, che si traduce in due valori x, a seconda della sfida. Quindi abbiamo hash i valori x generati in questo modo in una stringa a 256 bit per determinare se la dimostrazione è buona. L'hash di questi valori x ci fornisce la stringa di qualità, un valore casuale a 256 bit. Questo è combinato con la difficoltà e la dimensione della trama per generare il necessario_iterazioni. Se il required_iterazioni è inferiore a un certo numero (possiamo entrare nella blockchain), quindi cerchiamo l'intero PoSpace. La ricerca di un ramo richiede solo circa 7 ricerche e letture del disco o circa 70 ms su un disco rigido lento.
Figura 2: Struttura di una trama file. I 64 valori x rossi rappresentano la prova, i 2 valori x verdi rappresentano la qualità. 
Un'ulteriore ottimizzazione è quella di squalificare una certa proporzione (ad esample 511/512) trame dall'idoneità per ogni sfida. Questo è indicato come il filtro tramaPer esempioample, richiedendo che l'hash della sfida e il plot_id inizi con 9 zeri. Questo danneggia tutti allo stesso modo (tranne che per ripiegare gli attaccanti), ed è quindi giusto. Ciò fa sì che l'agricoltura non richieda quasi alcuna risorsa e pochissime letture del disco ogni pochi minuti. Gli utenti di Chia hanno coltivato con successo più PiB di archiviazione su un singolo Raspberry Pi. Partiamo dal presupposto che gli agricoltori utilizzino sempre gli HDD poiché sono economici e non vi è alcun motivo per utilizzare gli SSD poiché la velocità non è rilevante per l'agricoltura. Tuttavia, è possibile utilizzare SSD / RAM per una stampa più rapida.
La chiave della trama è una chiave privata che è memorizzata nella trama file. L'id della trama viene generato eseguendo l'hashing della chiave pubblica della trama e il chiave pubblica del pool. La creazione di un blocco con una prova di spazio richiede la firma sia con la chiave della trama che con la chiave del pool. Pertanto la piscina non può essere modificata dopo aver creato la trama. In pratica, la chiave della trama è una chiave pubblica aggregata 2/2 BLS tra una chiave locale memorizzata nella trama e una chiave memorizzata dal software dell'agricoltore. Per sicurezza ed efficienza, un agricoltore può eseguire un server centralizzato utilizzando questo schema di chiavi e firme. Il server può essere collegato a molte macchine mietitrici che memorizzano i grafici. L'agricoltura richiede la chiave dell'agricoltore e la chiave locale, ma non richiede la chiave del pool, poiché la firma del pool può essere memorizzata nella cache e riutilizzata per molti blocchi.
Verificando: Dopo che l'agricoltore ha creato con successo una prova di spazio, la prova può essere verificata eseguendo alcuni hash ed effettuando confronti tra i valori x nella dimostrazione. Ricorda che la dimostrazione è un elenco di 64 valori x, dove ogni valore x è lungo k bit. Per un k32 questo è 256 byte, ed è quindi molto compatto. La verifica è molto veloce, ma non abbastanza veloce per essere verificata in modo solido su ethereum (qualcosa che consentirebbe trasferimenti senza fiducia tra catene), poiché richiede operazioni blake3 e chacha8.
Prove di tempo
Una prova del tempo o a Verificabile Ditardo Funzione, è una prova che una funzione sequenziale è stata eseguita un certo numero di volte.
Verificabile: questo significa che dopo aver eseguito il calcolo (che richiede tempo), il prover può creare una dimostrazione molto piccola in un tempo molto breve, e il il verificatore può verificare questa prova senza dover rifare l'intero calcolo.
Ritardo: questo significa che il prover ha effettivamente impiegato molto tempo (anche se non sappiamo esattamente quanto) per calcolare la funzione.
Funzione: questo significa che è deterministico: il calcolo di un VDF su un ingresso x produce sempre lo stesso risultato y.
La parola chiave qui è "sequenziale", come l'hashing più volte: hash (hash (hash (a))), ecc. Ciò significa che il prover non può semplicemente acquistare più macchine per andare più veloce, a differenza di Bitcoin / proof of work. Pertanto possiamo presumere che il calcolo di un VDF richieda tempo reale (orologio da parete). La costruzione che utilizziamo è una squadratura ripetuta. Il prover deve quadrare una sfida x T volte. Ciò richiede tempo ϴ (T). Il prover deve anche creare una prova che ciò sia stato eseguito correttamente.
Figura 3: il verificatore (blockchain) invia una sfida a un prover (timelord) e il prover calcola l'output e la prova. 
Sebbene i seguenti dettagli non siano molto importanti per la comprensione dell'algoritmo di consenso, la scelta di quale VDF utilizzare è rilevante, perché se un attaccante riesce ad ottenere una macchina molto più veloce, alcuni attacchi sono possibili.
Il VDF utilizzato da Chia viene ripetuto in quadratura in un gruppo di classi di ordine sconosciuto. Esistono due modi principali per generare un grande gruppo con un ordine sconosciuto. Il primo è usare un modulo RSA e utilizzare gli interi mod N come gruppo. L'ordine del gruppo non è noto se puoi generare il tuo modulo con molte parti partecipanti utilizzando un file MPC cerimonia. Un approccio più semplice consiste nell'usare gruppi di classi con un grande discriminante primo, che sono gruppi di ordine sconosciuto. Ciò non richiede alcuna configurazione complessa o affidabile, quindi abbiamo scelto questa opzione per Chia. Per creare uno di questi gruppi, è sufficiente un numero primo casuale grande. Lo svantaggio è che il codice del gruppo di classi è meno testato nella vita reale e le ottimizzazioni sono meno conosciute rispetto ai gruppi RSA. Usiamo lo stesso elemento iniziale per il quadrato (a = 2, b = 1 elemento classgroup), e invece usiamo la sfida per generare un nuovo numero primo casuale per ogni VDF, che viene utilizzato come discriminante. Il discriminante ha una dimensione di 1024 bit, il che significa che le dimensioni della prova sono di circa 1024 bit. Noi usiamo il Schema Wesolowski [Scarica] suddivisa in n (1<=n<=64) fasi in modo che la creazione delle prove sia molto veloce. Poiché le dimostrazioni n-wesolowski possono essere grandi, le sostituiamo con dimostrazioni 1-wesolowski non appena sono disponibili, poiché queste sono più piccole, ma richiedono più tempo per essere realizzate. Le prove stesse non sono impegnate a catena, quindi sono sostituibili.
Infusione
Ricapitolando, i VDF accettano un input, chiamato challenge, e producono un output insieme a una prova che certifica che la funzione è stata valutata correttamente.
L'infusione di un valore in un VDF significa che quel valore viene combinato con un'uscita di un VDF, per generare un nuovo valore, che viene utilizzato come input / challenge per il VDF successivo. Pertanto, stiamo concatenando VDF ma ci stiamo impegnando per un nuovo valore (blocco) nel mezzo. Questo viene utilizzato in modo da avere una progressione lineare di blocchi, alternando prove di spazio con prove di tempo.
Algoritmo di consenso
Firme BLS
Ogni volta che si fa riferimento alle firme in questo documento, si presume che venga utilizzata una firma BLS deterministica, seguendo la specifica IETF con lo schema Augmented. Le chiavi private che eseguono queste firme digitali sono controllate e archiviate dagli agricoltori e per ogni parcella viene utilizzata una chiave privata univoca.
Ruoli dei nodi
Contadini
Contadini sono nodi che partecipano all'algoritmo di consenso memorizzando i grafici e controllandoli per le prove di spazio. Comunicano con un nodo completo (di solito sulla stessa macchina). Gli agricoltori comunicano anche con una o più mietitrici, che è un servizio che risiede sulla macchina in cui sono archiviate le parcelle e cerca prove di spazio per conto del processo dell'agricoltore.
Signore del Tempo
I timelord sono nodi che partecipano all'algoritmo di consenso creando prove di tempo e infondendo blocchi nei loro VDF.
Nodi completi
I nodi completi possono essere timelord o agricoltori, oppure possono semplicemente svolgere i ruoli di un nodo completo. Ciò comporta la trasmissione di prove di spazio e tempo, la creazione di blocchi, il mantenimento di un mempool di transazioni in sospeso, l'archiviazione della blockchain storica e il caricamento di blocchi su altri nodi completi e su wallet (client leggeri).
Sfide
L'algoritmo di consenso di Chia si basa sull'esecuzione di VDF per periodi di tempo chiamati sotto-slot, che vengono regolati periodicamente per aggiungere fino a circa 10 minuti. Periodicamente vengono rilasciate sfide, che avvia una sorta di mini lotteria in cui gli agricoltori controllano i loro appezzamenti per le prove di spazio. Quando gli agricoltori trovano una prova di spazio idoneo, la trasmettono alla rete. La difficoltà cambia per mirare a 32 prove vincenti per l'intera rete in ogni slot secondario. Queste prove vengono infuse nel VDF in momenti diversi all'interno dello slot secondario. Gli agricoltori seguono la catena più pesante, che è la catena con la difficoltà più cumulativa (di solito la catena con il maggior numero di blocchi).
Figura 4: tre sotto slot. L'asse x rappresenta il tempo. Le linee tratteggiate rappresentano l'esecuzione VDF, che avanza nel tempo da sinistra a destra. Le frecce rappresentano le dipendenze hash (un oggetto che punta a un altro oggetto include l'hash del secondo oggetto). 
Nella figura 4, possiamo vedere tre punti di sfida, c1, c2 e c3. Nei punti c1, c2 e c3 i timelord creano sfide (hash a 256 bit) che vengono fornite come input ai VDF. I Timelord prendono questi hash e iniziano a calcolare un VDF su questa sfida, per il numero specificato di iterazioni. In questo example, ogni slot è 100,000,000 di iterazioni. Quando il VDF è terminato, il timelord pubblica la nuova sfida e la prova del VDF. Un'infusione di informazioni di fine slot avviene alla fine di ogni sub-slot.
Sotto slot: un segmento di un numero fisso di iterazioni VDF, soggetto a regolazione della difficoltà di lavoro, adattandosi sempre a un periodo di tempo prefissato (es. 10 minuti).
Iterazioni di sotto slot: una costante che viene periodicamente aggiustata che determina quante iterazioni VDF deve avere ogni sotto slot.
Sfida: stringa di output sha256 utilizzata come prova delle sfide spaziali per gli appezzamenti degli agricoltori, nonché per la catena di sfide VDF. Questo è anche indicato come sfida hash.
Come puoi vedere nella Figura 4, ci sono tre VDF eseguiti contemporaneamente, ciascuno che ha uno scopo diverso. Sono spiegati nelle sezioni seguenti.
Punti di segnaletica e punti di infusione
Ogni sotto slot nelle catene di sfide e ricompense è diviso in 64 VDF più piccoli e tra ciascuno di questi piccoli VDF c'è un punto chiamato punto di segnaletica. I signori del tempo pubblicano l'output VDF e la prova quando raggiungono ogni punto di segnaletica. Nota che sia la catena della sfida che le catene della ricompensa hanno punti segnaletica (ma non la catena della sfida infusa). Il numero di iterazioni tra ogni punto di segnaletica è iterazioni dell'intervallo sp, che è uguale alle iterazioni dello slot secondario / 64.
La sfida all'inizio del sotto slot è anche un valido punto di segnaletica. Quando ciascuno dei 64 punti di segnaletica viene raggiunto, vengono trasmessi attraverso la rete da timelords e nodi. Gli agricoltori ricevono questi punti segnaletica e calcolano un filtro di trama in base al punto di segnaletica, il loro ID di trama e la sfida dello slot secondario. Se i bit del filtro del grafico iniziano con 9 zeri, quella trama passa il filtro per quel punto segnaletico e può procedere. Questo squalifica circa 511/512 di tutta la trama files nella rete, per quel punto di segnaletica.

IL la prova della sfida spaziale viene calcolata come l'hash dei bit del filtro di trama:

Usando questa sfida, gli agricoltori recuperano stringhe di qualità per ogni appezzamento che ha superato il filtro dal disco. Ricorda che questo processo è quasi istantaneo e che il punto di segnaletica è un hash derivato da una parte della prova di spazio (ma l'intera prova di spazio non è stata ancora recuperata).
L'agricoltore calcola il iterazioni richieste per ogni prova di spazio. Se le iterazioni richieste <sp intervallo iterazioni, la prova di spazio è idonea per l'inclusione nella blockchain, quindi l'agricoltore recupera l'intera prova di spazio dal disco (che richiede più tempo del solo recupero della qualità), crea un sottoblocco incompiuto e lo trasmette alla rete. Si noti che la stragrande maggioranza delle iterazioni richieste sarà troppo alta, poiché in media 32 si qualificheranno per l'intera rete per ogni slot secondario. Questo è un processo casuale quindi è possibile che un gran numero di prove si qualifichino, ma molto improbabile. Il iterazioni del punto di segnaletica è il numero di iterazioni dall'inizio dello slot secondario al punto di segnaletica.
IL iterazioni di infusione è il numero di iterazioni dall'inizio del sotto slot in cui il blocco con la qualità di cui sopra può essere incluso nella blockchain. Questo è calcolato come:

Pertanto, le iterazioni di infusione saranno comprese tra 3 e 4 punti di segnaletica Dopo il punto di segnaletica. Gli agricoltori devono presentare le loro prove e blocchi prima che venga raggiunto il punto di infusione. Il modulo è lì per consentire gli overflow nel successivo slot secondario, se il punto di segnaletica è vicino alla fine del sotto slot. Questo viene ampliato in seguito.
Al punto di infusione, il blocco dell'agricoltore viene combinato con l'uscita VDF del punto di infusione per creare un nuovo input per il VDF da quel punto in poi, ovvero noi infondiamo il blocco dell'agricoltore nel VDF. Il blocco è pienamente valido solo dopo che le iterazioni di infusione sono state raggiunte e la prova VDF è stata allegata al blocco.
Affinché il blocco b1 sia valido / finito, devono essere incluse due prove VDF: una da r1 al punto di segnaletica e una da r1 a b1. (in realtà è più visto che ci sono tre catene VDF, spiegate più avanti). Nella Figura 5, l'agricoltore crea al momento del punto di segnaletica, (chiamiamolo B1 '). Tuttavia, B1 'non è ancora finito, poiché necessita del punto di infusione VDF. Una volta che le iterazioni di infusione VDF vengono rilasciate, vengono aggiunte a B1 'per formare il blocco finito in B1.
Figura 5: signori del tempo creare prove sia per il punto di segnaletica che per il punto di infusione. Ma solo loro infondere (cambiare il gruppo di classi VDF) per quest'ultimo. Il quadrato simboleggia le infusioni, dove viene avviato un nuovo VDF. Sp_iterval_iterrs = 3.125 milioni. AGGIORNAMENTO A 64 SP
Consideriamo l'example in figura 5. Le iterazioni del sottoslot sono 200M e le iterazioni dell'intervallo sp sono 3.125M. Supponiamo che un agricoltore abbia un totale di 1000 appezzamenti.
Per ciascuno dei 64 punti di segnaletica, quando vengono rilasciati alla rete ogni 9 secondi o ogni 3.125 milioni di iterazioni, l'agricoltore calcola il filtro di trama e vede quanti appezzamenti passano. Per ciascuno degli appezzamenti che superano il filtro per ogni punto segnaletico, l'agricoltore calcola le iterazioni richieste. In questo example, l'agricoltore ottiene richieste_iterazioni < 3.125 M una sola volta nell'intero sotto-slot (diciamo che è 2.2879 M). Nella Figura 5, questo è il 14° punto segnaletico. Le iterazioni di infusione sono calcolate come:



Dopo aver realizzato di aver vinto (al 14 ° punto di infusione), l'agricoltore recupera l'intera prova dello spazio, crea un blocco, includendo facoltativamente le transazioni, e lo trasmette alla rete. Hanno pochi secondi (fino alle iterazioni di infusione), per raggiungere i timelords, che infonderanno il blocco, creando i VDF del punto di infusione. Con questi VDF, il blocco può essere completato e aggiunto alla blockchain.
Iterazioni dell'intervallo sp: Definito come floor (iterazioni sotto slot / 64).
Punti segnaletica: 64 punti intermedi nel tempo all'interno di uno slot secondario nelle catene di sfide e ricompense, per i quali vengono periodicamente rilasciati VDF. In ogni punto di segnaletica, viene creata un'uscita VDF e trasmessa attraverso la rete. Il primo punto di segnaletica nello slot secondario è la sfida stessa. Ogni blocco ha un punto di segnaletica tale che la prova di spazio nel blocco deve essere idoneo per quel punto di segnaletica.
Iterazioni richieste: Un numero calcolato utilizzando la stringa di qualità, utilizzato per scegliere prove di spazio idonee a creare blocchi. La stragrande maggioranza delle prove di spazio avrà richiesto iterazioni troppo elevate e quindi non idonee per l'inclusione nella catena. Questo numero viene utilizzato per calcolare il punto di infusione.
Punto di infusione: il punto nel tempo a iterazioni di infusione dal punto di sfida, per una prova di spazio con una certa sfida e iterazioni di infusione. A questo punto, il blocco del contadino viene infuso nella catena di ricompense VDF. Il punto di infusione di un blocco è sempre compreso tra 3 e 4 punti di segnaletica dopo il punto di segnaletica di quel blocco. Calcolato come iterazioni del punto di segnaletica + 3 * iterazioni dell'intervallo sp + iterazioni richieste.
Il ritardo tra il punto di segnaletica e il punto di infusione ha molti vantaggi, tra cui la difesa contro l'agricoltura orfana ed egoista, le forcelle ridotte e nessuna pausa VDF. Questo ritardo di circa 30 secondi viene concesso in modo che gli agricoltori abbiano tempo sufficiente per firmare senza ritardare lo slot VDF. Gli agricoltori che si comportano bene firmano un solo punto di segnaletica con ogni prova di spazio, il che significa che gli aggressori non possono facilmente riorganizzare la catena.
Blocchi multipli
Figura 7: più blocchi. Sp1 = punti segnaletica 1
Come puoi vedere nella figura 7, più blocchi possono essere infusi nello stesso sub-slot. Il sistema di Chia mira a 32 blocchi per sottoslot e questo viene regolato tramite l'algoritmo della difficoltà di lavoro. I VDF vanno dal punto di infusione precedente al punto di segnaletica corrente e dal punto di infusione precedente al punto di infusione corrente. Notare che le prove VDF richieste per ogni blocco possono sovrapporsi. Ad esempioampLui, B2 contiene una prova VDF da B1 A sp2, e da B1 A B2. B3 contiene una prova da B1 A sp3, e da B2 A B3. B2 non dipende affatto da B3, Ma B3 dipende da B2, poiché il suo VDF proviene da B2's punto di infusione. Anche in questo caso, i blocchi vengono creati nei punti di segnaletica, ma mancano del punto di infusione VDF; una volta aggiunto questo VDF, il blocco è finito e fa parte della blockchain. Non ci sono firme nel punto di infusione; le uniche cose aggiunte al punto di infusione sono i VDF.
Tre catene VDF
Se usassimo solo un VDF (per la catena di ricompensa), l'inclusione o l'esclusione di blocchi consentirebbe il controllo della sfida per lo slot successivo. Ciò significa che un attaccante potrebbe provare molte combinazioni diverse e scegliere la sfida più adatta a lui. Questi tipi di attacchi sono chiamati grinding attack e sono una delle principali difficoltà nel passare da Proof of Work a Proof of Space o PoStake. Maggiori dettagli sono forniti nella sezione "Attacchi e contromisure".
Per mitigare ciò, le sfide si baseranno solo sul primo blocco da infondere in uno slot.
Figura 8: tre catene VDF. Un attaccante può manipolare i risultati della catena di ricompense, ma questo non ha alcun effetto su c2 e quindi non ha alcun effetto sulla lotteria PoSpace. cc = catena di sfide, rc = catena di ricompense, sp = punto di segnaletica. B = blocco.
C'è molto da fare in questo diagramma. Innanzitutto, come puoi vedere, sono 4 blocchi: B1, B2, B3, B4, sono blocchi creati dagli agricoltori, che contengono tutti i dati a cui puntano. Partiamo dal presupposto che più di 5 blocchi siano stati creati in quel sotto slot, ma non li disegniamo tutti a causa di vincoli di spazio.
Inoltre, sia la catena di sfide che la catena di ricompense creano 64 punti di segnaletica. I blocchi devono includere i VDF del punto di segnaletica per entrambe le catene. I blocchi devono includere anche i VDF del punto di infusione per tutte e tre le catene.
Come puoi vedere, la catena challenge esegue il VDF dall'inizio del sub-slot alla fine senza nulla infuso in esso (i cerchi sono prove VDF ma non interrompono il VDF). La catena di ricompensa infonde ogni blocco incluso. La catena al centro si chiama catena sfida infusa, e inizia dal primo blocco infuso per ogni sfida e continua fino alla fine dello slot.
A fessura è l'elenco delle sub-slot che contengono almeno 16 blocchi della catena di ricompense in base alla sfida della prima sub-slot, o delle sub-slot successive. Ad esempioample, potremmo avere solo 10 blocchi in un sub-slot, e poi 3 e poi 7, il che significa che quei tre sub-slot formano uno slot. Di solito ogni sub-slot è anche uno slot, poiché in media sono inclusi molti più di 16 blocchi. Il disavanzo è il numero di blocchi ancora necessari per terminare lo slot: questo è descritto più in dettaglio più avanti.
Alla fine dello slot, la catena della sfida viene combinata con la catena della sfida infusa per generare la nuova sfida c2, che viene utilizzata per avviare la catena della sfida per il successivo slot secondario.
L'unico blocco che influisce sulla catena della sfida è il primo blocco, che qui è B1e solo una parte deterministica di B1, CC B1, che dipende solo dai dati della catena delle sfide. Un attaccante che vuole macinare non può cambiare la sfida trattenendo B2, B3o qualsiasi altro blocco a parte il primo.
Supponendo che l'attaccante abbia il blocco più veloce (B1), hanno tre opzioni: trattenerlo, ritardarlo o rilasciarlo. Per sapere se la nuova sfida andrà a vantaggio di loro, dovranno eseguire il VDF fino a c2. A quel punto, la loro possibilità di essere inclusi nella catena delle ricompense è svanita, poiché gli agricoltori onesti firmano solo un blocco per prova di spazio. Ritenuta B1 non fornisce molti vantaggi all'autore dell'attacco, poiché deve rilasciarlo prima sp2 per coinvolgere gli agricoltori nella loro filiera. Gli agricoltori sceglieranno la catena più pesante, che è quella con più (più pesanti) blocchi della catena di ricompensa.
Perché ci impegniamo in qualsiasi blocco nella catena delle sfide? Bene, se non lo facessimo, un utente malintenzionato potrebbe guardare avanti con un VDF più veloce, poiché non avrebbe bisogno dell'aiuto di partecipanti onesti per calcolare la catena di sfide nel futuro. La catena delle sfide sarebbe totalmente deterministica. Ciò consentirebbe alcuni vantaggitage ritracciando. Inoltre, la catena di sfide può essere utilizzata per dimostrare probabilisticamente il peso della catena di ricompense ai clienti leggeri, senza condividere tutti i blocchi della catena di ricompense (poiché la catena di sfide dipende dal blocco "migliore" nello slot, è possibile calcolare il numero di ricompense blocchi di catena).
Catena di sfide: La catena VDF basata su ogni sfida per ogni slot secondario, che non infonde nulla al centro di ogni slot secondario. Le sfide vengono utilizzate anche per le prove di spazio. I punti di segnaletica in questa catena vengono utilizzati per il filtro SP.
Catena di ricompense: La catena VDF che contiene le infusioni di tutti i blocchi. Questa catena tira la catena della sfida e, facoltativamente, la catena della sfida infusa alla fine di ogni slot secondario.
Catena di sfide infuse: Una catena VDF che inizia dal primo blocco infuso in uno slot (che non si basa sulla sfida dello slot precedente, questo è chiamato blocco challenge) e termina alla fine dello slot.
Slot: l'elenco dei sotto-slot che contengono almeno 16 blocchi della catena di ricompensa in base alla sfida del primo sotto-slot, o successivi sotto-slot. Alla fine dello slot, la catena della sfida infusa si interrompe, la catena della sfida attira il risultato della catena della sfida infusa e il deficit viene ripristinato a 16.
Bloccare: un blocco è una raccolta di dati infusa nella catena di ricompense che contiene: una prova di spazio per un hash di sfida con meno iterazioni rispetto alle iterazioni di slot, VDF sp e ip per entrambe le catene, VDF ip opzionale per la catena di sfida infusa e un indirizzo premi. Alcuni blocchi sono anche blocchi di transazioni. C'è un massimo di 128 blocchi per slot.
Blocco transazione: Un blocco idoneo per la creazione di transazioni, insieme a un elenco di transazioni associato.
Blocco sfida: Il primo blocco da infondere in ogni slot, che non si basa sulla sfida di uno slot precedente. Il blocco sfida ha sempre un deficit di 15 e inizia sempre la catena di sfida infusa.
Psbuffo: Il picco della blockchain visto da un nodo è il blocco con il peso maggiore. Il peso è la somma della difficoltà di un blocco e di tutti i suoi antenati, che è simile all'altezza, ma una catena più corta può avere un peso maggiore, a causa delle difficoltà di regolazione.
Affinché un blocco sia considerato valido, deve fornire VDF per la catena di sfida e la catena di ricompense e, facoltativamente, per la catena di sfida infusa, se presente. Forzare l'inclusione di tutti i VDF significa che è garantito che tutte e tre le catene avanzano alla stessa velocità.
Blocchi di overflow
Affinché un agricoltore crei un blocco, le sue richieste_iterazioni devono essere inferiori a 3.125 M, o le iterazioni sotto-slot / 64, come descritto sopra. Ciò significa che le iterazioni di infusione potrebbero essere maggiori delle iterazioni di sotto slot e quindi l'infusione deve avvenire nel successivo sotto slot.
Blocco di overflow: un blocco il cui punto di infusione si trova in uno slot secondario diverso dal suo punto di segnaletica.
Sfida slot corrente: Rispetto a un determinato blocco B, le sfide dello slot corrente di B includono tutte le sfide che iniziano alla prima sfida nello slot e terminano alla fine dello slot (non incluse). Ciò è rilevante perché a volte uno slot si estende su più slot secondari e quindi su più sfide.

Figura 9: B4 in questo diagramma è presente un blocco di overflow, poiché l'infusione è nello slot successivo. B4 non si basa su una sfida di slot corrente e quindi non riduce il deficit né crea un blocco di sfida. DA FARE: i diagrammi dovrebbero essere 16 e non 5.
I blocchi di overflow non possono esistere nel primo slot secondario dell'epoca (poiché le iterazioni del sotto slot cambiano).
Inoltre, i blocchi di overflow non modificano il deficit a meno che non siano basati su una sfida dello slot corrente, poiché i blocchi di overflow sono risposte alla sfida del sotto-slot precedente. I blocchi di overflow non sono blocchi di sfida a meno che non siano basati su una sfida di slot corrente. Si noti che è raro che i blocchi di overflow riducano il deficit, poiché il deficit verrà quasi sempre ridotto a zero e verrà avviato un nuovo slot su ogni slot secondario.
Requisito minimo di blocco
Un minimo di 16 blocchi sfida slot attuali devono essere inseriti nella catena di ricompense affinché uno slot possa essere completato.
Il deficit è un numero compreso tra 0 e 16 che è presente all'inizio di un sotto slot. Questo è definito come il numero di blocchi della catena di ricompense che dobbiamo infondere per finire uno slot. Viene ripristinato a 16 ogni volta che si avvia uno slot (quindi devono esserci almeno 16 blocchi totali per infusione di catena di sfida). Il deficit diminuisce per ogni infusione della catena di ricompense basata su una sfida con slot corrente.
Il blocco con deficit 15 è un blocco sfida.
Il caso normale è quello in cui il deficit inizia a 16 e scende a zero all'interno del sotto slot, per poi tornare a 16 quando finiamo lo slot e ne iniziamo uno nuovo. Nel caso in cui non riusciamo a ridurlo a 0 entro la fine dello slot, la catena della sfida e la catena della sfida infusa (se presente) continuano e il deficit non si ripristina a 16. Blocchi (inclusi i blocchi di overflow ora) , continua a sottrarre dal deficit fino a raggiungere 0. Quando finiamo un sotto slot con un deficit zero, la catena di sfida infusa viene inclusa nella catena di sfida e il deficit viene reimpostato a 16.
Questo requisito viene aggiunto per prevenire attacchi a lungo raggio ed è descritto in dettaglio nella sezione Contromisure di seguito. La stragrande maggioranza degli slot secondari avrà> = 5 blocchi, quindi non influisce molto sul normale funzionamento.

Figura 10: c2 è la fine del sotto slot ma non la fine dello slot. c2 NON punta a ic2, poiché lo slot non terminava in questo sotto slot. Il deficit è 2 invece di reimpostare a 5 e la catena di sfide infuse continua.
Peso
IL peso di un blocco è la somma della difficoltà di questo blocco, più tutti i blocchi precedenti che sono antenati di questo blocco. I full node onesti devono scegliere il picco della blockchain in modo che il picco sia il blocco con il peso più pesante che conoscono. Questo è un requisito cruciale ed è identico alla regola della catena più pesante di Bitcoin. A causa di questa regola, un attaccante con meno del 50% dello spazio e nessun vantaggio VDFtagAvranno difficoltà a guadagnare più della loro giusta quota, dal momento che devono essere fortunati e creare più blocchi di catena di ricompense rispetto alla catena onesta. Inoltre, gli agricoltori coltivano solo sulle sfide che corrispondono alla catena più pesante.
Sia la velocità del VDF che la quantità totale di spazio sono importanti per il peso e le modifiche possono innescare aggiustamenti della difficoltà. Se la quantità di spazio aumenta, verranno creati più di 32 blocchi per slot, quindi la difficoltà deve essere aumentata. Se la velocità VDF della rete aumenta, vengono creati più di 32 blocchi ogni 10 minuti e quindi la difficoltà (e le iterazioni dei sotto-slot) deve essere aumentata.
Un agricoltore con accesso esclusivo a un VDF leggermente più veloce, tuttavia, non può ottenere facilmente più ricompense di un agricoltore con il VDF a velocità normale. Se un attaccante cerca di rendere orfano uno dei blocchi sulla catena, avere un VDF più veloce non aiuterà, poiché la catena dell'attaccante avrà meno blocchi (e quindi un peso inferiore). Gli agricoltori devono firmare il blocco su cui stanno costruendo e costruiranno solo in cima alla catena di peso più alta.
Tuttavia, la velocità VDF entra in gioco quando l'attaccante desidera lanciare un attacco del 51%. In questo caso, un agricoltore attaccante può utilizzare il VDF per creare una catena completamente alternativa senza blocchi onesti e superare la catena onesta.
Fogliame
Nei diagrammi sopra, non c'è spazio per gli agricoltori per specificare le loro ricompense, poiché tutti i blocchi sono canonici. Gli agricoltori non hanno voce in capitolo su come è costruito il loro blocco, poiché devono utilizzare la prova esatta dello spazio, i VDF e le firme specificate. Per includere le ricompense agricole, così come le transazioni nel sistema, dobbiamo introdurre un componente aggiuntivo di blocchi chiamato fogliame. Finora abbiamo discusso della componente "trunk".
Tronco: Il componente dei blocchi e della blockchain che include VDF, prove di spazio, firme PoS, sfide e precedenti blocchi del tronco ed è completamente canonico. Il tronco non si riferisce mai alla catena del fogliame.
Fogliame: Il componente dei blocchi e la blockchain che include la specifica di dove dovrebbero andare i premi, quali transazioni dovrebbero essere incluse e qual è il blocco fogliame precedente. Spetta all'allevatore decidere ed è macinabile, quindi non può mai essere utilizzato come input per le sfide.
Riorganizzazione: Una riorganizzazione (o riorganizzazione) è quando un nodo view dei cambiamenti di picco, in modo tale che il vecchio view contiene un blocco che non è incluso nel nuovo view (alcuni blocchi sono invertiti). Sono possibili sia riorganizzazioni del tronco che del fogliame, ma nella pratica dovrebbero essere rare.
Nella figura 11 sotto possiamo vedere che il fogliame viene aggiunto ai blocchi per produrre una catena aggiuntiva. Questo fogliame include un hash del fogliame precedente, un hash del blocco ricompensa e una firma. Questi indicatori di fogliame sono separati dalla catena del tronco e non canonici. Cioè, gli agricoltori potrebbero teoricamente creare un reorg del fogliame in cui il fogliame viene sostituito, ma viene utilizzato lo stesso identico tronco (prove di spazio e tempo). Per evitare ciò, gli agricoltori onesti creano solo un blocco di fogliame per blocco. Non appena un contadino onesto ha aggiunto un blocco di fogliame, il fogliame diventa impossibile da riorganizzare oltre quell'altezza con lo stesso PoSpace, poiché quell'agricoltore non firmerà più con lo stesso PoSpace.
Inoltre, blocchi come B3 che vengono paralleli con un altro blocco di fogliame (B2) non devono firmare il precedente blocco di fogliame, poiché non hanno necessariamente tempo sufficiente per vederlo. Con "arrivo in parallelo", si intende che il punto di segnaletica del secondo blocco si trova prima del punto di infusione del primo blocco. Le frecce rosse nel diagramma rappresentano un puntatore di fogliame che è firmato dalla chiave della trama per la prova dello spazio in quel blocco. Le frecce grigie rappresentano un puntatore hash che non è firmato dalla chiave di trama (quindi la freccia grigia in formato B3 può essere sostituito se B2 cambia o viene trattenuto). Questo previene gli attacchi dove B2 modifica il loro blocco e le forze B3 a reorg.
I blocchi che hanno i puntatori rossi possono anche creare transazioni e sono quindi chiamati blocchi di transazione. Un blocco è un blocco di transazione se e solo se è il primo blocco il cui punto di segnaletica si verifica dopo l'infusione del blocco di transazione precedente. sp3 viene prima B2, (un blocco di transazioni e il blocco precedente di B3), COSÌ B3 non può essere un blocco di transazioni. Le frecce rosse forniscono sicurezza seppellendo i blocchi di fogliame, ma le frecce grigie no. Lo scopo delle frecce grigie è mantenere un elenco collegato nel fogliame e ridurre la complessità nelle implementazioni. Tuttavia, i blocchi con il grigio le frecce che le puntano vengono sepolte nel blocco successivo.

Figura 11: Blocchi e blocchi di fogliame. I blocchi hanno transazioni e hanno puntatori rossi (puntatori all'ultimo blocco). Notare che l'inizio del sotto-slot è anche un punto di segnaletica.
L'hash a blocchi è un hash dell'intero blocco di fogliame e tronco. I reorg funzionano sugli hash di blocco. Anche se vediamo una catena con le stesse prove di spazio e tempo, fintanto che le foglie sono diverse, i blocchi sono diversi. Nota che entrambi gli agricoltori (B2 E B3) potrebbero avere la possibilità di creare il blocco, quindi devono fornire sia il puntatore firmato che le transazioni. Tuttavia, qualsiasi blocco di transazione può essere incluso anche come un blocco normale, e da allora B2 E B3 sono in parallelo, solo uno di loro può creare un blocco di transazione.
Sebbene tutti i blocchi scelgano ancora gli hash del puzzle di dove vanno i loro premi, quelle transazioni non vengono incluse nella blockchain fino al successivo blocco di transazione.
Per la mainnet di chia, ci saranno 32 blocchi ogni 600 secondi, per un tempo di blocco medio di 18.75 secondi. Ci saranno 64 punti di segnaletica, quindi il tempo minimo tra i blocchi è 3 * 600/64 = 28.125 secondi. Ciò pone il tempo medio di blocco delle transazioni a 46.875 secondi.
Epoche e regolazione della difficoltà
Sotto-epoca: La sotto-epoca N inizia quando la sotto-epoca
finisce (eccetto per la 0a sotto-epoca), e finisce alla fine del primo slot dove
blocchi sono stati inclusi sin dalla genesi.
Epoca: L'epoca N inizia quando finisce l'epoca N-1 (eccetto la 0a epoca) e termina alla fine del primo slot in cui
blocchi sono stati inclusi sin dalla genesi.
Difficoltà: Una costante che scala il numero di iterazioni per una data prova di spazio. Le iterazioni vengono calcolate come difficoltà / qualità.
Ogni 4608 blocchi, la regolazione della difficoltà interviene. Ciò modifica due parametri: il parametro slot_iterations e il parametro difficoltà.
Il parametro sub_slot_iterations viene reimpostato, quindi uno slot di 300 secondi richiede molte iterazioni vicine a slot_iterations. Il ripristino viene effettuato utilizzando i valori dell'ultima epoca per approssimare concretamente le iterazioni al secondo.
Per un'epoca, epoch* denota il periodo leggermente spostato in cui epoch* inizia con l'ultimo blocco che è stato infuso prima dell'inizio dell'epoca e termina con l'ultimo blocco che è stato infuso in un'epoca. I valori t1,i1 e w1 denotano il timestamp, iterazioni dalla generazione e peso dalla generazione all'inizio dell'epoca*, (t2,i2,w2) sono i valori alla fine dell'epoca*.


Cioè, il delta in iterazioni totali dall'inizio alla fine dell'epoca, diviso per il delta in timestamps, i2, sono le iterazioni totali del punto di infusione dell'ultimo blocco nell'epoca. i1 sono le iterazioni totali del punto di infusione dell'ultimo blocco nell'epoca precedente. Iterazioni sottoslot è il numero totale di iterazioni per sottoslot.


Nota che non prendiamo le iterazioni e il tempo esattamente alla fine di un'epoca, ma all'ultimo punto di infusione di un blocco in un'epoca, il motivo è semplicemente che abbiamo solo il tempoamps disponibile quando i blocchi sono infusi.






Questo può essere riorganizzato per utilizzare solo una divisione del piano:

The sub-slot iterations are adjusted such that each slot lasts around 600 seconds. The difficulty is adjusted such that every challenge gets 32 blocks on average with less iterations than the slot_iterations. It is important to note that the VDF iterations per slot is not material to the weight. That is, if there were two identical worlds where VDF speeds were equal and space was equal, but the sub-slot iterations parameter was 2 times higher in one world, then the blockchain with the higher sub-slot iterations would get twice as many blocks included per slot, but each slot would take twice as long, so the weight per second added to the chain is the same in both cases. Another way to look at it is that increasing sub-slot iterations increases the number of blocks per slot, but it also makes slots last longer, and thus has no effect on weight / second.
Sotto-epoche
Come descritto in precedenza, la catena della sfida è completamente separata e non si riferisce a nulla nella catena delle ricompense. Se queste catene rimanessero separate per sempre, un attaccante con un VDF più veloce sarebbe in grado di guardare nel lontano futuro e prevedere le sfide. L'attaccante può creare un blocco per slot, con spazio limitato, creando così un'intera catena di sfide. Ciò consentirebbe loro di creare trame e creare istantaneamente prove di spazio per queste trame che vinceranno in futuro, quindi eliminare le trame (un attacco di ricollocazione a lungo raggio). In questo modo, possono riempire la loro catena di ricompense e aumentare il loro peso.
La soluzione a questo problema è infondere periodicamente (ogni 384 blocchi, che è una media di 2 ore) l'estremità della catena di ricompensa dello slot nella catena della sfida. Ciò significa che l'attaccante può eseguire l'attacco di repotting solo per poche ore nel futuro. La trama da sola richiede alcune ore, ma anche se l'attaccante potesse rimpiazzare istantaneamente, il costo di un attacco di rimpiazzamento supererà i benefici. Non infondiamo l'attuale output della catena di ricompense, ma l'output della catena di ricompense della fine della sotto-epoca precedente (2 ore fa).
Il costo di creazione di un lotto include l'elettricità per calcolare tutte le tabelle, la RAM necessaria durante la creazione di questo lotto ei costi fissi di infrastruttura (spazio, alimentazione, raffreddamento, ecc.). Supponendo lo scenario peggiore di un VDF super veloce e la stampa ASIC istantanea, i vantaggi sarebbero equivalenti ai vantaggi di memorizzare quel grafico su un HDD per alcune ore. È chiaro che questo attacco non vale la pena e che archiviare le trame è molto più economico (analisi sotto).
Quanto sopra spiega perché l'intervallo sub-epocale dovrebbe essere mantenuto relativamente basso. Ma perché non possiamo ridurlo ulteriormente a meno di 2 ore per disincentivare ulteriormente gli attacchi di ricomposizione? Il motivo è che ogni volta che i dati non canonici vengono infusi nella catena di sfide, si verifica un'opportunità per la rettifica. Ciò significa che un utente malintenzionato può eventualmente scegliere di includere o escludere blocchi per manipolare quale sarà la sfida 2 ore nel futuro. Se questo tempo è troppo breve, possono guadagnare un piccolo spazio in piùtage facendo questo più spesso.
Il secondo scopo per le sotto-epoche è di agire come punti di controllo in un protocollo simile a flyclient spiegato di seguito, per aumentare l'efficienza dei client leggeri.
Verifica client leggera
Il supporto client leggero è un altro vantaggio della prova dello spazio rispetto alla prova della posta in gioco, poiché tutte le prove possono essere verificate in modo oggettivo crittograficamente e richiedono il controllo di una risorsa effettiva in un determinato momento.
Per i clienti leggeri che desiderano sincronizzarsi rapidamente alla catena (ad esampi portafogli mobili), un nodo completo può creare una prova di piccole dimensioni che può convincere il cliente leggero che il peso di una catena è vicino a un certo valore. Questo si chiama a prova di peso. Ingenuamente, il client leggero può scaricare ogni singolo blocco e tutte le prove richieste e verificarli, ma con un numero così elevato di blocchi, ciò richiederebbe molta larghezza di banda e CPU.
Un metodo più efficiente si basa su un protocollo simile a Flyclient[4]. Il nodo (prover) invia tutti i riepiloghi delle sub epoche dal punto di fork, che includono i ripristini di difficoltà, al client light. Ce n'è solo uno ogni 384 blocchi, quindi questo può raggiungere solo pochi MB di dati. Il nodo anche deterministicamente samples diverse sottoepoche basate sulla sfida dell'ultimo blocco. Le sub-epoche hanno la possibilità di essere scelte proporzionalmente alla difficoltà durante quella sub-epoca. Per la sotto-epoca scelta, il client leggero scarica uno dei blocchi della catena challenge (che sono circa 1/32 di tutti i blocchi) e calcola le iterazioni di infusione medie di tutti i blocchi challenge in quella sotto-epoca. Sulla base di questo tempo, il client leggero può estrapolare quanti blocchi contiene la catena di ricompense. Ad esempioample, se i blocchi challenge si verificano tutti con iterazioni molto piccole (vicino all'inizio dello slot), è probabile che ci siano molti blocchi in quello slot. Al contrario, se le iterazioni sono vicine al centro dello slot, è probabile che ci sia solo un blocco per slot. Ciò consente al client leggero di scaricare solo 1/32 dei blocchi in ogni slot, ma di ottenere comunque una buona stima del peso totale.
Inoltre, le ultime sotto-epoche dovrebbero essere scaricate integralmente per il client leggero. Ciò aggiunge una piccola quantità di dati, ma impedisce agli aggressori di creare piccoli fork alla fine della catena. La principale differenza tra questo protocollo e flyclient è che i blocchi non sono impegnati a utilizzare una catena montuosa merkle, ma invece il client leggero scarica l'intero elenco di hash di sotto-epoca dalla genesi, garantendo che le sotto-epoche interrogate siano incluse nella catena . Un'altra differenza è che vengono scaricate intere sezioni, anziché singoli blocchi.
Sono necessarie ulteriori analisi su quante sotto-epoche dovrebbero essere scaricate e quali sono i limiti per ciò che implica la prova di peso.
pooling
Il pooling in Chia è progettato per essere estremamente semplice e più decentralizzato rispetto al pooling in Bitcoin / Ethereum. A Chia, la chiave pubblica della piscina è incorporata negli appezzamenti, per impedire all'agricoltore di rubare ricompense dalla piscina partecipando a più di una piscina. L'agricoltore scarica l'indirizzo della piscina e la sua firma. Un agricoltore invia periodicamente parziali per prove di spazio che hanno meno di T iterazioni, dove T è scelto dal pool.
Quando l'agricoltore vince un blocco, invia la firma dell'agricoltore e la firma del pool. Le commissioni di transazione, insieme a ⅛ della ricompensa del blocco vanno all'agricoltore, mentre ⅞ delle ricompense del blocco vanno al pool. Il motivo per dare una parte della ricompensa all'agricoltore è quello di disincentivare gli attacchi in cui un pool ne attacca un altro "raggruppandosi" per loro, ma non presentando effettivamente le prove vincenti. Questo è un attacco che può far fallire l'altro pool.
Questo è più semplice perché il pool non ha bisogno di fare nulla oltre a pubblicare la propria firma una volta su a websito, raccogliendo parziali ed effettuando periodicamente pagamenti. È più decentralizzato perché i blocchi sono fatti dagli agricoltori, quindi i grandi pool centralizzati hanno poco controllo sulla rete e questo aumenta la resistenza alla censura delle transazioni.
Un secondo protocollo di pooling più complicato ti consentirà di specificare uno smart contract singleton in cui memorizzare l'indirizzo del pool. Le trame includerebbero quindi l'hash del puzzle del contratto intelligente, consentendo agli agricoltori di cambiare pool in qualsiasi momento, con un ritardo. Lo svantaggio di questo protocollo di pooling è che è necessaria una transazione on-chain per avviare l'agricoltura e quindi non è strettamente migliore del primo protocollo di pooling.
Algoritmo Timelord
Un timelord tiene traccia del picco corrente che include un blocco infuso a una certa altezza e punti di segnaletica dalla vetta in poi. Un signore del tempo potrebbe ricevere nuovi blocchi da infondere, nuovi picchi (blocchi già infusi) o nuovi punti segnaletica.
In che modo un signore del tempo decide su quali sfide creare prove del tempo, dato un numero limitato di processori disponibili? Mentre è probabile che gli ASIC si sviluppino in futuro, al momento le implementazioni VDF per gruppi di classi più veloci sono su hardware per scopi generali poiché sembra che il VDF per gruppi di classi sia hard FPGA. Inoltre, anche dopo lo sviluppo degli ASIC, è importante che qualsiasi utente con una CPU possa essere un timelord, per fornire fallback nel caso in cui i timelord ASIC si interrompano o diventino dannosi, ecc.
In generale, i signori del tempo lavorano sulla catena più pesante. Creano prove del tempo nei punti di segnaletica e le trasmettono alla rete non appena le raggiungono. Infondono anche blocchi il più spesso possibile. Quando il signore del tempo riceve un blocco infuso che ha un peso maggiore del picco corrente, passa immediatamente ad esso.
Signori del Tempo anche eseguire le tre catene VDF in parallelo. Pertanto sono necessari almeno 3 core CPU veloci per far avanzare la blockchain a un ritmo efficiente. Saranno necessari core CPU aggiuntivi per creare prove a un ritmo efficiente, ma non devono essere altrettanto veloci.
Se il signore del tempo riceve una sfida con un peso inferiore al loro picco attuale, lo ignorano.
Se il signore del tempo riceve un punto sfida più avanti nella catena corrente, la cosa più sicura da fare è ignorarlo. Il motivo è che, passando a un altro punto in futuro, il signore del tempo potrebbe saltare l'infusione di blocchi e quindi rendere orfani i blocchi validi.
Se il signore del tempo riceve un blocco per l'infusione che è in ritardo (abbiamo già raggiunto il punto di sfida in cui il blocco avrebbe dovuto essere infuso), lo ignoriamo, poiché il passaggio a esso consentirebbe agli aggressori di trattenere i blocchi [TODO espandere]. Pertanto, l'operazione principale del signore del tempo consiste nel mantenere una cache di blocchi futuri da infondere, trasmettere i punti sfida quando vengono raggiunti e infondere blocchi quando raggiungiamo i loro punti sfida.
Se il signore del tempo riceve una sfida con lo stesso peso del picco corrente, sceglie il blocco incompiuto che ha visto per primo (cioè il blocco che non è stato ancora infuso), invece di scegliere il blocco infuso (picco) che ha visto primo. Questo disincentiva anche la ritenuta di blocchi.
Attacchi e contromisure rilevanti
51% (46%) attacco:
Un attacco del 51% comporta la creazione di una catena alternativa che alla fine raggiunge un peso maggiore rispetto alla catena onesta e costringe gli utenti a riorganizzarsi. Il classico attacco a lungo raggio che è presente anche nei sistemi proof of work è l'attacco del 51%. Nell'attacco del 51%, l'attaccante con il 51% dello spazio di rete crea una catena alternativa e alla fine raggiunge. Ci sono due differenze principali tra Chia consenso e Proof of work: la prima è che l'attaccante può estendersi e coltivare su molte catene contemporaneamente. Il secondo è che se l'attaccante ha il VDF più veloce, può ottenere uno spazio aggiuntivo in piùtage/potenziare.
Estendendo molte catene
Se un utente malintenzionato crea la propria catena privata, può scegliere quale blocco viene infuso nella catena della sfida e può quindi provare molte infusioni diverse in modo da ottenere la migliore catena possibile. A causa della media di 32 blocchi con la stessa sfida, l'attaccante può provare solo circa 32 combinazioni diverse (quale blocco includere nella catena della sfida), e la ramificazione esponenziale del tentativo di ciascuno di questi darebbe un piccolo aumento nello spazio per l'attaccante (avendo 5 PiB possono fingere di averne 6 o 7, ecc.). Questo perché le catene alternative provate sono inferiori e hanno meno probabilità di superare quella più lunga. Questo è stato analizzato in [1].
La quantità effettiva di spazio necessaria per eseguire questo attacco (affinché l'attaccante ottenga una catena più pesante rispetto al resto della rete combinata) è del 46.3%, grazie alla capacità dell'attaccante di "provare" diverse combinazioni di blocchi, ad es.ample omettere o non omettere il primo blocco. Se ci fosse una nuova prova di sfida spaziale per ogni singolo blocco, l'attaccante può moltiplicare il proprio spazio per un fattore e = 2.718, dove solo il 27% è necessario per superare la rete. Impostando il numero di blocchi a 32, lo spazio richiesto dall'aggressore aumenta al 46%.
The reason for not increasing this further than 32 is the following: if we increased the number of blocks per 10 minute slot to something like 200, then the ability for someone with a slightly faster VDF to orphan others would increase. This is because the time between blocks would get very small. With 32 blocks, the time between blocks is around 15-25 seconds, and a much faster VDF is required to orphan.
Furthermore, the Stanford paper [Tse et. al, 1] shows that increasing the number of blocks per challenge increases security at a very slow rate, so increasing this number slightly does not provide much benefit.
Se l'attaccante dovesse manipolare la difficoltà, può cambiarla in modo da ottenere meno blocchi di ricompensa per slot. Quindi possono includere o escludere ogni blocco ed estendere esponenzialmente tutte le catene simultaneamente e sarebbero in grado di moltiplicare il loro spazio per un piccolo fattore [1]. Non è chiaro se questo attacco guadagni molto, poiché l'attaccante deve modificare la difficoltà, il che richiede di sacrificare un po 'di peso. Tuttavia, per prevenire questo attacco, è necessario creare almeno 16 blocchi della catena di ricompensa per includere un blocco sfida. Ciò porta lo spazio necessario per l'attaccante nel peggiore dei casi dal 27% al 42%.
VDF più veloce e 46% di spazio
L'attacco del 46% peggiora se il VDF dell'attaccante è più veloce. Supponiamo che il VDF dell'attaccante sia 2 volte più veloce. Quindi la loro catena sarà in grado di creare sfide e blocchi al doppio della velocità del resto della rete, il che significa che possono creare una catena "più pesante" con la stessa quantità di spazio.
Questo spazio richiesto scende dal 46% a circa il 30% dello spazio di rete totale. 0.46/0.54 = 2x/(1-x). x=0.30. Se l'attaccante non ha accesso al VDF più veloce, non sarà in grado di ottenere un vantaggio di spaziotage.
Spazio Chia / spazio su disco rigido globale
C'è la preoccupazione che se il sistema Chia non ha una quantità significativa di spazio rispetto allo spazio libero disponibile dei produttori di dischi rigidi o delle grandi aziende, sarà vulnerabile agli attacchi del 51%. Quindi maggiore è lo spazio occupato dal sistema Chia, più sicura è la rete. Uno scenario plausibile è che si crea molto spazio, rendendo i premi per TB piuttosto bassi e non abbastanza significativi da giustificare l'acquisto di unità o l'eliminazione di dati aziendali. Inoltre, la creazione di un grafico richiede una quantità fissa di tempo e denaro in anticipo (dai calcoli correnti in beta17, circa 1 kWh per un k32, o circa 10 centesimi, che è $ 1 per terabyte).
Attacco al 100%
Se la regolazione della difficoltà è stata attivata ogni X slot VDF, a differenza di ogni X blocchi, questo consentirebbe un attacco del 100%, in cui tutti i contadini colludono per diminuire o aumentare costantemente la difficoltà. Durante il normale funzionamento, ci sono 32 blocchi per slot. Sotto un attacco del 100%, la difficoltà viene manipolata in modo tale che la difficoltà diminuisca di 2, quindi ci sono 64 blocchi per slot, quindi aumenta di 4, quindi ci sono 16 blocchi per slot, alternati per sempre. Ciò consentirebbe agli agricoltori di guadagnare in media 64 + 16/2 = 36 premi di blocco per slot. Questo è il motivo per regolare la difficoltà in base al numero di blocchi.
Attacco di repottaggio a corto raggio
La stampa di solito richiede diverse ore (8 ore per un k32 in beta 14 con un core), ma è molto parallelizzabile, quindi gli aggressori potrebbero trovare modi per creare trame dopo che una sfida è stata rilasciata, e quindi eliminare la trama, in effetti essendo in grado di fattoria senza immagazzinare continuamente lo spazio. Ciò richiederà probabilmente hardware specializzato costoso con memoria veloce, poiché il grafico deve essere creato in tempo per l'infusione (meno di 30 secondi).
Se assumiamo lo scenario peggiore in cui un agricoltore è in grado di creare un appezzamento istantaneamente, la domanda diventa: qual è il costo e qual è il vantaggio dell'attacco? Il costo è l'elettricità, la memoria, l'hardware e il costo dell'infrastruttura per creare quella trama. Il costo per la creazione di 1 TB è attualmente dell'ordine di $ 1 in costi di elettricità. Il vantaggio sarebbe lo stesso della memorizzazione di quel grafico per 80 minuti (l'intervallo del punto di segnaletica moltiplicato per la costante del filtro del grafico). Questo perché l'attaccante può scegliere una trama che supera il filtro della trama. Supponendo un valore di $ 5 all'anno per terabyte, il valore di un grafico da 1 TB per 80 minuti è $ 0.00094. Pertanto, con gli attuali software e hardware di plottaggio, è molto più economico memorizzare i grafici anziché ricrearli.
La costante del filtro di trama è molto utile per ridurre la quantità di ricerche su disco che gli agricoltori devono eseguire. Con un filtro di trama di 512, invece di 7 letture disco per trama ogni 9 secondi, gli agricoltori devono solo eseguire circa 7 letture ogni 80 minuti. La costante del filtro di trama fornisce un moltiplicatore del vantaggio di ripopolamento all'attaccante, quindi non deve essere impostata su un valore troppo alto. Con una costante del filtro del grafico di 512, i grafici 1/512 sono validi per ogni sfida. L'attaccante può quindi creare solo trame che superano il filtro, quindi non è necessario creare gli altri 511/512. Impostandolo su 512 si ottiene un moltiplicatore 512x, ecc.
VDF più veloce (ma non il 51% di attacco)
Con il VDF più veloce del sistema, un attaccante può eseguire in modo più efficace un attacco del 51%: ovvero espandere il proprio spazio, quando si coltiva in una catena privata. Se l'attaccante non raggiunge un totale del 51% di spazio (con il VDF che aumenta ed estende molte catene come sopra), l'utilità del VDF più veloce diminuisce sostanzialmente. Questo perché l'inclusione e l'esclusione dei blocchi non dipende dalla velocità con cui puoi eseguire il VDF, ma dipende invece dal fatto che sia inferiore alle iterazioni dei sotto-slot. Inoltre, un utente malintenzionato ha bisogno dello spazio del resto della rete per avanzare e quindi deve rilasciare le sfide alla rete.
In alcuni casi in cui i blocchi si avvicinano molto, avere un VDF più veloce può consentire a un utente malintenzionato di isolare determinati blocchi, sebbene ciò non aumenti i premi a breve termine e rischia di minare la rete a lungo termine. DA FARE: espandere: bram
Agricoltura egoista
L'agricoltura egoistica è un attacco in cui l'aggressore coltiva i blocchi in privato e li rilascia solo quando rischia di essere superato dalla catena onesta. In Nakamoto PoW questo fornisce guadagni significativi, perché in qualsiasi punto in cui il miner è in vantaggio sul resto della rete, il resto della rete spreca il proprio hashpower su una catena che non vincerà. A Chia il consenso è diverso, a causa del ritardo di 30-40 secondi e del fatto che rendere orfani i blocchi di altri agricoltori non aumenta le ricompense. (??)DA FARE: espandere: bram
Contadino corrompere attacco al tronco
Un attacco interessante esplorato da [10] è l'attacco di corruzione che prende vantaggiotage della prevedibilità dei “leader” eletti in ciascuna fascia oraria. Gli autori analizzano una prova della catena del gioco e sostengono che quando i partecipanti sanno che vinceranno in anticipo, c'è un potenziale attacco di corruzione. Se i partecipanti sapessero in anticipo quali trame vincerebbero, ogni utente può notificare a un attaccante che è disposto a partecipare all'attacco e, se raggiungono una certa soglia, può riorganizzare completamente la catena (o orfano chi non partecipa, censurare transazioni, ecc.). Questo attacco NON richiede la partecipazione della maggior parte dello spazio nella rete; solo i vincitori in quel breve periodo di tempo. Inoltre, non è rilevabile, poiché l'attaccante può creare una catena dall'aspetto normale.
Questo problema non è presente in questa revisione dell'algoritmo di consenso di Chia. Questo problema viene risolto riducendo la prevedibilità: ogni agricoltore non sa con certezza se la propria prova di spazio è pienamente ammissibile fino al punto di segnaletica. Pertanto, un attaccante deve corrompere la maggior parte dello spazio per sferrare questo attacco.
Coltivatore corrompo fogliame reorg attacco
Poiché i blocchi sono firmati da chiavi PoSpace, un agricoltore può teoricamente firmare più blocchi con lo stesso PoSpace, alla stessa altezza. L'attacco richiede che una parte malintenzionata corrompa gli agricoltori con una certa quantità di fondi affinché forniscano la firma di una catena alternativa. Se l'aggressore riesce a convincere ogni singolo agricoltore in N blocchi a firmare, può annullare o riordinare qualsiasi transazione in quegli N blocchi. Potenzialmente si potrebbero utilizzare prove di frode, ma queste non sono state scelte poiché consentono altri attacchi e complicano il comportamento.
Invece, la soluzione è semplicemente aspettare più a lungo. Dopo 32 blocchi (circa 10 minuti), l'ipotesi che almeno un agricoltore stia seguendo il protocollo e non la doppia firma è ragionevole. Se il 54% non è colluso (ipotesi per il 46% di resilienza all'attacco), la probabilità di un'inversione dopo 32 blocchi è
. Inoltre, questo attacco è rilevabile quindi non è facile da portare a termine.
Ogni utente può scegliere la propria soglia per la quale accettare una transazione/blocco come definitiva. Ad esempioample, nei casi in cui lo spazio totale di rete diminuisce improvvisamente, gli utenti possono essere più attenti e non considerare le transazioni definitive, nel caso in cui sia presente un altro fork esistente, a causa di una divisione della rete, ad es.amplui.
Blocchi di transazione orfani per le commissioni di transazione
Transazione bi blocchi sono diversi dai blocchi non di transazione, poiché contengono commissioni di transazione. Questi possono superare i premi di blocco. Al momento della stesura di questo articolo (novembre 2020), nel picco di defi hype stiamo assistendo a 2 premi per il blocco eth con 8 commissioni eth per blocco. In Chia questo sarà più estremo, poiché non tutti i blocchi contengono transazioni. Questo porta ad attacchi in cui l'agricoltore del 2 ° posto ignora il 1 ° posto nel tentativo di vincere il blocco delle transazioni. Se il 2 ° blocco arriva meno di 30 secondi dopo il 1 °, non specificano il blocco precedente, e quindi il 2 ° posto non può rendere orfano il 1 °. Il 3 ° posto potrebbe rendere orfani entrambi, ma nessuno seguirà questa catena poiché è più corta.
Tuttavia, se non ci sono blocchi entro 30 secondi dal 1 ° blocco, il 2 ° potrebbe rendere orfano il 1 °, ma dovrebbero convincere il blocco successivo a coltivare sulla loro catena alternativa. Un attacco più facile sarebbe se l'attaccante controllasse sia il 2 ° che il 3 °, nel qual caso potrebbe ignorare il primo ed essere ancora più lungo. Questi attacchi orfani non consentono all'attaccante di rubare ricompense, ma piuttosto consentono all'attaccante di abbassare leggermente la difficoltà. Poiché sono molto situazionali e richiedono molto spazio, tentare questo attacco probabilmente danneggerà la rete più del potenziale guadagno per l'attaccante.
Tasso di orfani
Nel consenso di Chia, due blocchi concorrenti nello stesso periodo possono essere inclusi entrambi nella blockchain in parallelo, senza conoscersi l'un l'altro. (Anche se al massimo uno può essere un blocco). Poiché tutti i blocchi di transazione sono anche blocchi, sono entrambi inclusi nella catena, risultando in una catena con un peso maggiore. Ciò significa che il tasso di orfani a Chia sarà essenzialmente zero, assumendo una bassa latenza di rete. Se la latenza di rete supera il ritardo di infusione (30-40 secondi), l'orfano di un blocco è quasi garantito, quindi è più una funzione graduale. Ciò è in contrasto con Nakamoto-PoW in cui il tasso di orfani è alto se c'è un ritardo di rete e diminuisce gradualmente con il miglioramento delle condizioni della rete, ma non raggiunge mai lo zero.
Analisi
Sicurezza
La sicurezza è simile ad altri algoritmi di consenso Nakamoto come Bitcoin. Non esiste una finalità garantita, ma più conferme ha una transazione, più è sicura. Una transazione necessita di un certo numero di conferme affinché un destinatario possa presumere che non possa essere riorganizzata, sotto il <46%(* vdf advantage) ipotesi di collusione. Poiché gli agricoltori possono teoricamente firmare più blocchi alla stessa altezza, a Chia . dovrebbero essere utilizzate più conferme rispetto a Bitcoin. Tuttavia, con una velocità di 32 blocchi per 10 min, 6 conferme in Bitcoin equivalgono a 192 in Chia, il che è più che sufficiente per essere considerato sicuro. Finché uno di quei 192 agricoltori si sta comportando bene (non una doppia firma), tale transazione non sarà annullata.
Vale la pena notare che non è richiesto il 54% di spazio agricolo onesto, ma il 54% non colluso. Gli agricoltori in cerca di profitto guadagnano molto poco deviando dal protocollo.
C'è l'ulteriore ipotesi che almeno un signore del tempo veloce debba essere connesso alla parte non collusa della rete e che il signore del tempo dell'attaccante non sia significativamente più veloce.
Vitalità
La vivacità del sistema Chia consensus è uno dei suoi maggiori punti di forza. Come Bitcoin, il sistema Chia continua ad avanzare anche quando la maggior parte dello spazio è offline. A differenza del bitcoin, tuttavia, il sistema non rallenta in modo significativo quando ciò accade, poiché non tutti i blocchi sono blocchi di transazione. Pertanto, la velocità effettiva delle transazioni non diminuisce troppo se molti partecipanti vanno offline. Continuerà anche se solo 1 agricoltore è online, sebbene ci saranno molti slot vuoti, poiché un blocco di transazione può essere creato solo se è al di sotto della soglia di iterazioni del sotto-slot.
Naturalmente, in caso di una divisione della rete a lungo termine, gli effetti sono che deve essere scelta una catena, quindi in questo caso possono esserci grandi reorg. Tuttavia, la rete sceglie la catena più pesante, simile a PoW.
Confronto con BFT algoritmi di consenso
La prova di spazio potrebbe anche essere utilizzata come meccanismo resistente a Sybil per avviare un Bsistema di consenso yzantino (k-agreement). Filemoneta, e molti sistemi proof of stake utilizzano aspetti del consenso bizantino.
I pro ei contro dell'utilizzo di Chia Nakamoto Consensus vs Byzantine Consensus, che variano da algoritmo ad algoritmo:
- + Molto più semplice
- + Nessun requisito di registrazione
- + Nessun requisito di scalabilità (scala fino a milioni di agricoltori)
- + Più resistente alla censura. Finché una piccola porzione dello spazio agricolo non censura, alla fine puoi entrare nella blockchain.
- + Nessun requisito di vita, potenzialmente meno presupposti di rete
- + Completamente oggettivo (un nodo può confrontare la catena 1 e la catena 2 e sapere immediatamente quale è più pesante). Non c'è bisogno di posti di blocco con ⅔ consenso.
- + Migliore supporto per i client leggeri [11]
- – Nessuna finalità, solo probabilistica.
- – Necessità di attendere più a lungo per le conferme delle transazioni (relative a nessuna finalità).
- – Tempi di blocco e throughput delle transazioni meno coerenti
Confronto con Nakamoto PoW
- + Risorse diverse. PoSpace è resistente agli ASIC e quindi chiunque può partecipare all'agricoltura. Si spera più decentralizzato.
- + Facile unione dell'agricoltura. Altre criptovalute possono utilizzare lo stesso formato e tutti possono condividere lo spazio. Probabilmente quello in alto sarà l'unico sicuro, poiché gli agricoltori possono attaccare quelli più piccoli.
- + Minima energia utilizzata, poiché solo pochi nodi eseguono VDF e questi non sono parallelizzati. Costo marginale molto basso al mio.
- + Tempi di blocco delle transazioni più coerenti (uno per ~ 1 min).
- + Meno suscettibile agli attacchi minerari egoistici
- + Tariffe orfane e fork più piccoli, poiché i blocchi possono essere inclusi in parallelo.
- + Avanza ancora alla stessa velocità quando lo spazio diminuisce, poiché solo 1/16 dei blocchi include le transazioni. Il consenso di PoW nakamoto rallenta.
- – Svantaggio di più potenziali aggressori (grandi aziende). L'hardware è di uso generale e quindi gli aggressori possono passare dall'agricoltura, all'attacco e all'utilizzo per l'archiviazione dei dati.
- – Velocizzare VDF potrebbe dare un vantaggio di spaziotage per qualcuno che attacca la rete.
- – Maggiore complessità a causa di sotto slot e VDF, ipotesi potenzialmente più crittografiche
Confronto con Proof of Stake
Questo algoritmo di consenso può essere utilizzato anche per la prova della posta in gioco, in cui gli agricoltori spaziali vengono sostituiti da stakers che possiedono monete nel sistema. Il vantaggio sarebbe la possibilità di tagliare (eliminare la posta in gioco delle persone) e gli agricoltori avrebbero "la pelle nel gioco", ma ci sono alcune preoccupazioni se viene utilizzata la prova della posta in gioco. (+ significa vantaggio per l'utilizzo di spazio vs puntata).
- + Un attaccante può trasferire la propria puntata a qualcun altro, ma biforcare la catena appena prima che la sua puntata venga trasferita. In questa catena alternativa, l'attaccante ha ancora tutta la sua posta in gioco e può quindi far avanzare la catena. La questione del "nulla in gioco" è diversa in PoStake rispetto a PoSpace poiché la creazione di un PoSpace richiede una risorsa fisica (spazio su disco rigido), mentre la creazione di un PoS richiede solo una chiave.
- + Un attaccante può garantire la propria parte dell'intera torta puntando le proprie ricompense (i ricchi diventano più ricchi), poiché il numero totale di monete è limitato.
- + Là potrebbero essere situazioni in cui l'attaccante può macinare in molti modi diversi per trasferire la posta in gioco. Forse questo può essere mitigato richiedendo un lungo periodo prima che la posta in gioco diventi attiva.
- + È richiesta la registrazione, non puoi partecipare alla prova di palo finché non ti registri. Ciò riduce la privacy e la scalabilità (quante persone possono puntare).
- + Barriera più alta all'ingresso: depositi cauzionali e tagli rendono difficile la partecipazione ai piccoli utenti. Il taglio può essere un rischio enorme per i partecipanti alla rete. I custodi centralizzati portano a un gruppo di partecipanti meno distribuito.
- + Alcuni ipotesi [11] sono richiesti per eseguire sincronizzazioni di client leggeri in prova di stake.
- – Skin nel gioco: con PoSprendere, il consenso può tagliare la posta in gioco delle persone e richiede anche alcuni investimenti nel sistema (esposizione al prezzo). In Proof of space i dischi rigidi possono essere utilizzati per altri scopi e non è possibile "tagliare" l'hardware delle persone.
Riferimenti
- Vivek Bagaria, Amir Dembo, Sreeram Kannan, Sewoong Oh, David Tse, Pramod Viswanath, Xuechao Wang, Ofer Zeitouni, Proof of Stake Protocolli a catena più lunga, sicurezza vs prevedibilità [Download]
- Aggelos Kiayias, Alexander Russell, Bernardo David, Roman Oliynykov, Ouroboros: A Protocollo Blockchain Proof-of-Stake provabilmente sicuro [Download]
- Bram Cohen e Krzysztof Pietrzak, Il Chia Network Blockchain
- Benedikt Bunz, Lucianna Kiffer, Loi Luu e Mahdi Zamani, 2019-226 [PDF]
- Krzysztof Pietrzak, Funzioni di ritardo verificabili efficienti [Download]
- Benjamin Wesolowski, Funzioni di ritardo verificabili semplici [Download]
- Stefan Dziembowski, Sebastian Faust, Vladimir Kolmogorov e Krzysztof Pietrzak, Prove di spazio [Scarica]
- Hamza Abusalah, Joel Alwen, Bram Cohen, Danylo Khilko, Krzysztof Pietrzak e Leonid Reyzin, 2017-893 [Scarica]
- Rete Chia, Chia prova di costruzione spaziale Space
- Soubhik Deb, Sreeram Kannan, David Tse, PoSAT Proof-of-Work Disponibilità e imprevedibilità, senza il lavoro [Scarica]
- Aleksandr Skidanov, Clienti leggeri nei sistemi Proof of Stake
– –
Riferimenti
- Manuale d'usomanual.tools