# 14 settembre - Post mortem
Salve, Cittadini di XYM City!
# Cos'è la finality
La finality è un concetto importante nella blockchain - rappresenta la garanzia che una transazione non possa essere modificata, annullata o cancellata. La maggior parte delle chain (come Bitcoin) utilizza la finality probabilistica - cioè, le probabilità che una transazione possa essere modificata decrescono al passare del tempo. In Symbol abbiamo sia la finality probabilistica che quella deterministica come funzionalità accessoria - una transazione è considerata finalizzata quando è inclusa in un blocco che è finalizzato.
Per finalizzare un blocco, i 2/3 delle monete in staking su nodi che hanno attivato il voto devono aver votato l'hash del blocco. I nodi possono attivare e disattivare il voto in qualsiasi momento. La modifica del gruppo di votanti diventa effettiva nell'epoca successiva.
---
# Il problema
Domenica 12 abbiamo notato che la rete aveva problemi con l'epoca 361. Questo non era del tutto inatteso - sapevamo che quest'epoca sarebbe stata di grande stress per il processo di finalizzazione.
I nodi votanti che hanno utilizzato symbol-bootstrap per registrare le chiavi per votare al lancio della rete le hanno registrate per le epoche da 1 a 360
A causa della mancanza di pubblicità sull'importanza di aggiornare regolarmente le chiavi di voto, molti utenti non hanno registrato le chiavi per le epoche 361+. Di conseguenza, molti nodi votanti nell'epoca 360 non votavano nell'epoca 361.
Tuttavia, c'era ancora abbastanza accordo per procedere all'epoca successiva (362). Sfortunatamente, ecco dove si è verificato lo stallo. Alcuni nodi più grandi hanno smesso di votare e, ora, la rete non è in grado di raggiungere un accordo per una maggioranza di voti.
Sembrava che si stesse prendendo in considerazione gli stake scaduti, il che era indesiderabile. Dopo un'indagine, abbiamo scoperto che, sebbene il cliente stesse ignorando correttamente lo stake delle chiavi di voto degli account mai registrate, non stava ignorando lo stake degli account con chiavi di voto precedentemente registrate. Siamo stati in grado di identificare rapidamente qualcosa che non andava osservando i dati memorizzati negli ImportanceBlocks corrispondenti alle epoche 360 e 361. Se tutto avesse funzionato come previsto, ci saremmo aspettati di vedere una forte diminuzione del TotalVotingBalance, ma invece è stato per lo più invariato.
---
# Correzione primaria
Abbiamo corretto questo bug filtrando gli account senza chiavi di voto registrati all'epoca corrente. Inoltre, abbiamo abbassato la soglia della supermaggioranza dal 70% al 67%. Con queste modifiche, ci aspettiamo che la finalizzazione riprenda non appena questa correzione verrà distribuita a una maggioranza di voti.
Ci sarà un hardfork al blocco 528.000. Ciò è necessario per correggere il calcolo delle statistiche archiviate in ImportanceBlocks perché devono essere convalidate da tutti i nodi.
Poiché la finalizzazione è implementata come gadget in Symbol, la catena sta ancora progredendo durante questo stallo della finalizzazione. La produzione di blocchi PoS+ è proseguita indipendentemente dalla finalizzazione. Quando la finalizzazione è corretta, ci aspettiamo che tutti i blocchi vengano finalizzati rapidamente.
Modifiche secondarie
Quando un nodo di voto esaurisce le chiavi di voto, il comportamento originale provoca l'arresto anomalo del nodo. Per rendere questo meno dirompente, abbiamo apportato una modifica per registrare semplicemente un errore. Sebbene sia meno rumoroso, non è consigliabile eseguire un nodo in questo stato per un lungo periodo di tempo. Invece i nodi che vogliono interrompere la votazione dovrebbero impostare enableVoting su false e riavviare.
Ci sono state alcune lamentele sul fatto che un account multisig ha sempre bisogno di un altro account (l'iniziatore) per pagare la sua quota. Stiamo allentando questo vincolo in modo che, al fork block, l'account multisig possa pagare indirettamente la propria commissione trasferendo la propria commissione all'iniziatore. Tieni presente che ciò non modifica il comportamento degli invii parziali di transazioni che richiedono un blocco hash.
---
# Lavoro futuro
Nella versione attuale di Symbol, non ci sono premi o penalità per i nodi di voto. Sebbene ciò abbia semplificato notevolmente la nostra implementazione della finalizzazione per il lancio, non crea gli incentivi corretti che intendiamo per i nodi di voto. Aggiungeremo un sistema adeguato per premiare gli elettori nel (prossimo) futuro.
Abbiamo capito che dobbiamo investire in strumenti migliori. Essere in grado di monitorare il numero di nodi di voto attivi e un calo della quota di voto ci avrebbe avvisato di un problema prima che la finalizzazione si bloccasse. Daremo priorità alla nostra infrastruttura per i prossimi mesi, incluso un nuovo block explorer, API REST migliorate e analisi dei dati che sono facilmente comprensibili e utili sia per gli utenti che per i ricercatori. Se desideri lavorare con noi, unisciti a noi su [Discord](https://www.discord.gg/xymcity).
---
Traduzione a cura di [Symbolico](https://twitter.com/symbolico1) ed [Alessio](https://twitter.com/alediemmee)
---
# Delegate harvesting
Se hai trovato questa traduzione utile, considera di delegare al mio nodo:
http://node.symbolitalia.com:3000