Ci sono molti progetti là fuori che si affidano alla sfera pubblica per elaborare i dati per loro, ma mi chiedo come fanno in modo che ogni computer che partecipa abbia elaborato i dati correttamente.
Il primo che viene in mente è il Bitcoin mining. So che la rete Bitcoin ha un modo matematico per verificare che i dati siano stati elaborati correttamente (non ho intenzione di approfondire qui).
Tuttavia, quando penso ad altri progetti, come il progetto SETI @ home , mi chiedo spesso come lo sappiano ogni partecipante si comporta correttamente; in che modo sanno che i dati sono stati effettivamente elaborati o che i risultati restituiti sono accurati. L'unica convalida che posso pensare richiederebbe anche loro di elaborare gli stessi dati, il che significa che il modello distribuito è discutibile.
Il gioco di connettere quattro è già stato risolto, ma diciamo che qualcuno voleva sviluppare un progetto che risolvesse il gioco di connettere quattro utilizzando una rete pubblica distribuita (Internet). Il server invierà una grande quantità di dati a una macchina da elaborare, ad esempio invierà un punto di partenza e la macchina dovrebbe elaborare tutte le schede possibili con una profondità di 5 e utilizzare una formula predeterminata per il punteggio, quindi restituire il miglior passaggio al server.
- Come fa il server a sapere che questa è stata la mossa migliore usando l'algoritmo?
- Come possiamo garantire che non ci sia un attore canaglia che sta consumando il servizio e che sostituisce l'algoritmo di punteggio predeterminato con uno spazzatura che produce la migliore mossa sbagliata?