SHIMMER

Lo schema di voto di Shimmer prende il nome da un comportamento straordinario visto in natura. Le api “sincronizzano” il loro movimento per difendersi dai predatori. Lo fanno senza alcuna entità centralizzata, e sanno solo quando “cambiare il loro stato” osservando il comportamento dei loro pari.

Singoli agenti autonomi che agiscono secondo alcune regole predefinite possono essere trovati in molti sistemi in natura, come le api, le formiche, i banchi di pesci ed anche in alcune aree della fisica. Regole molto semplici possono creare caratteristiche incredibilmente complesse che, nel tempo, si manifestano come proprietà emergenti di un sistema. Il meccanismo del consenso Shimmer funziona allo stesso modo. Invece di cercare di ricostruire l’opinione di ogni altro nodo, ci preoccupiamo solo delle opinioni di un piccolissimo sottoinsieme di nodi e lasciamo che il consenso si formi organicamente come proprietà emergente della rete.

Quando sorge un conflitto sotto Shimmer i nodi si scambiano iterativamente opinioni su quale delle transazioni in conflitto preferiscono, fino a quando alla fine si raggiunge un consenso. I nodi ottengono una visione globale della parte preferita del Tangle, che è di cruciale importanza per garantire il consenso. Ad un certo punto un nodo può decidere di marcare ulteriormente la sua decisione come finalizzata. Ciò significa che interrompe il suo coinvolgimento nel processo di voto e non si discosterà mai più da quell’opinione, anche nel caso di un cambiamento di opinione travolgente (a causa di un attacco).

Poiché Shimmer sarà usato per il consenso nel Tangle, “gradire” o “non gradire” una transazione ha conseguenze più ampie. Se un’operazione è “gradita” da un nodo, allora deve anche “gradire” tutte le altre transazioni a cui si fa riferimento diretto od indiretto. Al contrario, se una transazione è “non gradita”, allora nessuna transazione che fa riferimento a questa transazione può essere “gradita”.

È importante notare che non è necessario votare su ogni transazione. Le transazioni che non hanno conflitti con altre transazioni possono essere considerate “gradite” solo sulla base dei modificatori locali (cioè, dopo un certo tempo trascorso). I voti sono necessari solo per risolvere conflitti e casi limite.

I nodi rifiutano i voti che “preferiscono” contemporaneamente due Subtangle in conflitto. Questo costringe i nodi a decidere su un unico sopravvissuto. I nodi che violano questa regola possono essere ignorati ed abbandonati definitivamente come vicini. Si noti anche che non c’è ragione per cui i nodi onesti vorrebbero votare per due Subtangle in conflitto, dal momento che non c’è una ricompensa da mining che li incentivi a farlo.

Si stanno esaminando due diversi approcci al modo in cui il voto è condotto e garantito. Questi sono:

  • Consenso cellulare
  • Consenso probabilistico veloce

Hanno proprietà diverse, ma entrambi mostrano dei risultati iniziali altrettanto promettenti, e saranno presto esaminati in un test pubblico. Fortunatamente, la modularità del protocollo rende molto facile testare entrambi in parallelo.