Come saprai, il metodo "classico" di redistribuzione dei bitcoin minati da una pool si basa sugli share. Trovato un blocco, la pool divide il numero di bitcoin trovati (50) per il numero di share inviati da tutti i minatori. il risultato è un certo BTC/share, e la pool moltiplica quel valore per le share inviate da ogni partecipante e accredita i bitcoin risultanti.
C'è un problema: il numero di share necessario per trovare un blocco è altamente variabile, si va da poche migliaia a diversi milioni. Di conseguenza, i blocchi trovati in poco tempo avranno un BTC/share estremamente più elevato di uno trovato dopo molto tempo.
Se una persona mina sempre nella stessa pool questo effetto tende a convergere ad una media, ma se qualcuno joina una pool ogni volta che si comincia a minare un blocco per poi cambiare qualora il blocco andasse per le lunghe, ecco che si può aumentare in modo truffaldino il proprio tornaconto a scapito dei minatori "fedeli". Questa tecnica è nota come Pool Hopping.
Il sistema da te linkato risolve questo problema usando come base per distribuire i bitcoin non le semplici shares, ma un punteggio calcolato in modo che le shares inviate dopo abbiano più peso di quelle inviate prima, secondo una legge esponenziale:
When a participant submits a share, his score for the current round increases by r^i, where i is the number of shares already submitted at the time.
Una volta trovato il blocco, la divisione è fatta su questo punteggio. In questo modo i BTC/share per i pool hopper sono praticamente 0.
Se tu mini 24h/24 con la stessa pool non dovresti accorgerti di nessuna differenza di BTC/giorno tra una pool con share e una con score, e anzi la seconda dovrebbe avere ritorni leggermente maggiori in quanto i pool hoppers vengono segati.