Mi è tornata in mente questa discussione
https://bitcointalksearch.org/topic/m.10783703 con picchio su come modificare il mining per rendere il sistema più decentralizzato.
L'idea di base è quella di affiancare alla soglia A classica sotto la quale deve stare l'hash del blocco da minare un'altra soglia B legata ai singoli indirizzi.
Modificare un blocco in modo che il suo hash sia sotto una certa soglia A è il task attuale che favorisce solo la potenza computazionale dei miner più attrezzati e quindi favorisce decisamente l'accentramento.
Per bilanciare questa propensione all'accentramento è necessario aggiungere una misura legata ai singoli indirizzi che distribuisca la probabilità tra i nodi della rete, diminuendo il vantaggio competitivo dei miner più grossi senza per questo rendere facile per un singolo nodo minare più blocchi consecutivi (senza intaccare insomma la sicurezza del sistema, sicurezza che si basa sul fatto che il singolo nodo è sempre più debole del resto della rete e quindi non la può ingannare, se non per un lasso di tempo brevissimo).
Quindi aggiungerei una misura di questo tipo:
la differenza tra l'indirizzo (al quale andrebbe la ricompensa nel caso il blocco fosse minato) e l'indirizzo generato dalla chiave privata costituita dall'hash del blocco precedente deve essere sotto un'altra soglia B.
Riassumendo:
soglia finale = soglia A + soglia B
Ovviamente la formula va ulteriormente perfezionata, introducendo dei pesi opportuni
soglia finale = pesoA * sogliaA + pesoB * sogliaB
Alcune osservazioni:
- aumentando il pesoB, la probabilità che un singolo nodo anche poco dotato computazionalmente possa vincere nella gara per minare il blocco aumenta (potendosi permettere una sogliaA computazionale più alta e quindi più facile da raggiungere, a patto naturalmente di avere un buon indirizzo con cui competere, una buona carta insomma con cui giocarsi la mano)
- l'indirizzo da inserire nella coinbase deve avere un output non speso da almeno x blocchi (in sostanza ricevere una transazione bitcoin vorrebbe dire ottenere un invito a partecipare al processo di mining, spendere quel UTXO significherebbe cedere quell'invito a qualcun altro); per ovviare al fatto che un grosso miner produca una infinità di indirizzi su cui distribuire i propri bitcoin solo per aumentare le sue chance di vittoria, si potrebbe tenere conto dei bitcoin-day relativi all'UTXO, cioè anche di quanti bitcoin sono posseduti da quell'indirizzo, non solo dall'età
- nel momento in cui parte la gara per minare un nuovo blocco, anche i miner più grossi saranno limitati dal fatto di avere o meno un indirizzo che garantisca un basso valore della sogliaB (indirizzo che non può essere individuato in anticipo); qualora non avesse un "buon" indirizzo di partenza, sarebbe poi difficile per lui vincere la gara chiedendo aiuto all'esterno (la potenza computazionale la puoi anche chiedere all'esterno come si fa con le pool, ma l'indirizzo su cui riversare la ricompensa intera del blocco no; sarebbe anche rischiosa la pratica di comprare un "buon" indirizzo all'esterno, sia per questioni di tempistica, sia perchè se compri un indirizzo non puoi mai avere la sicurezza che il venditore abbia distrutto la chiave privata relativa)
- per quanto riguarda il valore complessivo della soglia, il sistema continuerebbe ad aggiornare quel valore dinamico ogni tot blocchi come avviene adesso in modo da perseguire l'obiettivo del tempo medio di 10 minuti; sicuramente però diventerebbe più imprevedibile di oggi il tempo di conferma di 1 blocco (inoltre va studiato con attenzione come evitare la possibilità concreta che nessuno riesca a minare il blocco)
Da notare infine che mentre la soglia complessiva rimane un dato puramente tecnico (che si autoaggiusta per ottenere i 10 minuti di media), i pesi A e B sono invece un dato più "politico" (quanto peso dare alla proof of work rispetto alla proof of stake e viceversa)
Che ne pensate?