Qualunque sfida computazionale può essere trasformata in prova di lavoro?


20

L'apparente inutilità del mining di criptovaluta ha sollevato la questione delle alternative utili, vedi queste domande su Bitcoin , CST , MO . Mi chiedo se esiste un algoritmo in grado di convertire praticamente qualsiasi sfida computazionale (la cui soluzione può essere verificata in modo efficiente) in un'altra tale sfida (che viene utilizzata per la prova di lavoro) tale che Ψ ( C )CΨ(C)

  1. La funzione è randomizzata, usando una sequenza casuale (pubblica) .rΨr
  2. Risolvere è in genere difficile quanto risolvere .Ψ(C)C
  3. Se una soluzione si trova per , quindi una soluzione può essere calcolato in modo efficiente per la sfida originale .Ψ ( C ) Ψ - 1 ( x ) CxΨ(C)Ψ1(x)C
  4. Conoscere una soluzione per non aiuta a trovare una soluzione per . Ψ ( C )CΨ(C)

4 '(Aggiornamento). Come sottolineato da Noah in un commento, la condizione precedente dovrebbe essere rafforzata nel richiedere che la pre-elaborazione di non dia alcun vantaggio nel risolvere . Ψ ( C )CΨ(C)

Quest'ultima condizione è necessaria in modo che nessuno può essere messo in una posizione vantaggiosa proprio perché sanno una soluzione di . Usando questo metodo, le persone potrebbero presentare problemi computazionali che vogliono essere risolti e un'autorità centrale potrebbe scegliere alcuni degni di risoluzione (come trovare gli alieni contro rompere le password). Nota che non sembra essere un problema se il problema richiede anche una settimana per risolverlo (immagino che quegli alieni non possano essere così bravi a nascondersi;), poiché ciò potrebbe comportare una ricompensa maggiore per una soluzione. Ad ogni modo, questi argomenti non sono collegati alla soluzione del mio problema teorico, ma ovviamente sono felice di discuterne nei commenti / sul forum.C

Una possibile soluzione sarebbe la seguente: maps in , ovvero per risolvere e qualche altra sfida, computazionalmente difficile. Un problema è che conoscere una soluzione a rende la risoluzione di qualche modo più semplice (quanto più semplice dipende dalla difficoltà di ). Un altro problema è che è diventato più difficile di quanto .C ( C , H A S H r ) C C Ψ ( C ) H A S H rΨC(C,HASHr)CCΨ(C)HASHrCΨ(C)C


3
Forse questo potrebbe essere rilevante: eprint.iacr.org/2017/203.pdf
Andreas Björklund

3
Qual è la differenza tra una "sfida computazionale" e una "prova di prova di lavoro"?
Oppure Meir

2
Certo, ma la definizione stessa delle prove del lavoro richiede di solito di considerare diverse sfide, in quanto la proprietà principale che le definisce è la non ammortabilità. Questo è il motivo per cui sono stati eseguiti lavori come eprint.iacr.org/2017/203.pdf: sono necessarie garanzie di non ammortabilità per quasi tutte le applicazioni di PoW, in particolare le criptovalute. Ad ogni modo, stai cercando una soluzione verificabile pubblicamente o sarebbe sufficiente una verifica verificabile privatamente? Vuoi uno schema praticamente efficiente o stai bene con una soluzione teorica?
Geoffroy Couteau,

5
@domotorp perché pensi che eprint.iacr.org/2017/203.pdf non sia pertinente alla tua domanda?
Alon Rosen,

5
Anche se non fornisce una riduzione da qualsiasi problema nel caso peggiore in P, il documento fornisce utili PoW sulla base di una vasta gamma di problemi. In particolare, qualsiasi problema riducibile ai vettori ortogonali (OV), compresi tutti i problemi dei grafici che sono imponibili nella logica del primo ordine. Si applica anche al problema k-OV (ipotizzato per richiedere circa n ^ k tempo), così come altri problemi del mondo della complessità a grana fine. Quindi, anche se forse non è così generale come ti aspetteresti, i risultati sono ancora abbastanza generali. E per i problemi che ho menzionato sopra, le proprietà 1-4 sono davvero soddisfatte.
Alon Rosen,

Risposte:


8

( Nota : Andreas Björklund ha suggerito una soluzione nei commenti che ritengo migliore di quella descritta di seguito. Vedi http://eprint.iacr.org/2017/203 , di Ball, Rosen, Sabin e Vasudevan. In breve, forniscono prove del lavoro basate su problemi come i vettori ortogonali la cui durezza è ben compresa e ai quali molti problemi (ad esempio, k-SAT) possono essere ridotti in modo relativamente efficiente. La loro istanza PoW è dura come i vettori ortogonali nel caso peggiore, anche se l'istanza di input è semplice, in modo da evitare un grave inconveniente della soluzione descritta di seguito.CΨ(C)C

La soluzione descritta di seguito potrebbe trarre vantaggio dalla sua semplicità --- può essere descritta da un non esperto --- ma teoricamente mi sembra molto meno interessante.)

Una soluzione è possibile se si assume che "l'algoritmo più veloce per è fondamentalmente randomizzato" (e se si modella una funzione hash crittografica come un oracolo casuale). Un modo per formalizzare questo è quello di dirloC

  1. CTFNPFP (altrimenti, suppongo che non sia davvero una sfida valida);
  2. l'algoritmo randomizzato più veloce per viene eseguito nel tempo previsto su un'istanza tipica; e TCT
  3. esiste una funzione calcolabile in modo efficiente da al dominio di soluzioni a per tale che esiste sempre una con una soluzione per .{ 0 , 1 } k C k log 2 T s {f{0,1}kCklog2T f ( s ) Cs{0,1}kf(s)C

Si noti che il presupposto che implica che la ricerca della forza bruta di sia essenzialmente l'algoritmo ottimale per . Quindi, questo è un presupposto abbastanza forte. D'altra parte, se non soddisfa queste proprietà, allora è difficile per me immaginare di soddisfare entrambe le tue condizioni (2) e (4).klog2TC C{0,1}kCC

Quindi, data una funzione hash , che come un oracolo casuale, definiamo come segue, dove per alcuni è l'input casuale a . L'obiettivo è produrre tale che sia una soluzione a . In altre parole, dovrebbe hash a "buone monete casuali" per l'algoritmo sopra.Ψ H ( C ; r ) r { 0 , 1 } k Ψ H x { 0 , 1 } f ( H ( r , xH:{0,1}{0,1}kΨH(C;r)r{0,1}kΨHx{0,1}C ( r , x )f(H(r,x))C(r,x)

Vediamo che questo soddisfa tutte le tue condizioni.

  1. "La funzione è randomizzata, usando una sequenza casuale (pubblica) ." Dai un'occhiata!rΨr
  2. "Risolvere è in genere difficile quanto risolvere ." Si noti che il semplice algoritmo randomizzato per viene eseguito nel tempo previsto al massimo più il sovraccarico polinomiale, e supponendo che sia essenzialmente il tempo di esecuzione dell'algoritmo ottimale per .C Ψ H ( C , r ) 2 k 2 kT CΨ(C)CΨH(C,r)2k2kTC
  3. "Se viene trovata una soluzione per , una soluzione può essere calcolata in modo efficiente per la sfida originale ." Questo può essere fatto calcolando , che è una soluzione a per ipotesi.Ψ ( C ) Ψ - 1 ( x ) C f ( H ( r , x ) ) CxΨ(C)Ψ1(x)Cf(H(r,x))C
  4. "Conoscere una soluzione per non aiuta a trovare una soluzione per ." Per definizione, risolvere richiede di trovare tale che sia una soluzione a . Poiché abbiamo modellato come un oracolo casuale, possiamo abbassare il tempo di esecuzione previsto di qualsiasi algoritmo che risolva questo problema dalla complessità della query prevista ottimale del problema di query in cui è dato da una scatola nera e ci viene chiesto di trovare un soluzione allo stesso problema. E, sempre perché è un oracolo casuale, la complessità della query prevista è solo l'inverso della frazione di elementi Ψ ( C ) Ψ H ( C ; r ) x f (CΨ(C)ΨH(C;r)xC H H H x { 0 , 1 } k C T 2 k 2 - kk r { 0 , 1 } H C r Cf(H(r,x))CHHHx{0,1}k che sono soluzioni (fino a un fattore costante). Presumendo, il tempo di esecuzione previsto ottimale di qualsiasi algoritmo per è , il che implica che questa frazione non può essere molto maggiore di . Poiché e vengono scelti in modo uniforme a caso, ciò è vero anche con la preelaborazione che può dipendere da e (ma non da ) , e in particolare è vero anche se conosciamo in anticipo una soluzione a .CT2k2kkr{0,1}HCrC

Questa è un'ottima soluzione. L'unico posto in cui vedo una possibilità di miglioramento è la condizione (2). Per molti problemi in , ci sono algoritmi in tempo per alcuni . Sarebbe bello se si potesse preservare qualcosa del genere, ma non sono sicuro che si possa fare. Sicuramente il tuo metodo è già superiore a quelli attualmente utilizzati per le criptovalute! c n c < 2NPcnc<2
domotorp,

In effetti, forse non è nemmeno necessario cambiare molto nella blockchain. Solo la comunità può concordare sul fatto che in un determinato momento è necessario aggiungere una alla blockchain il cui hash risolve qualsiasi problema pratico. In effetti, forse la blockchain standard può continuare e questa potrebbe essere solo una sfida indipendente, da solista. Probabilmente sul mercato un'istanza di questo tipo vale più delle monete tradizionali, proprio come Rogue One è migliore di sw7 o sw8. x
domotorp,

Contento che ti piaccia :). Voglio solo chiarire che mentre le mie condizioni su implicano che "la ricerca della forza bruta su uno spazio di ricerca è essenzialmente ottimale", non implicano che la ricerca della forza bruta sullo spazio di ricerca originale sia essenzialmente ottimale. Ad esempio, per SAT, questo non è lo stesso che richiede l'esecuzione dell'algoritmo più veloce in volta. 2 nC2n
Noah Stephens-Davidowitz,

In caso di composizione, ad esempio il problema computazionale ammette una definizione del problema in cui il problema computazionale può essere composto da problemi più piccoli, la cui soluzione è più semplice, e esiste una soluzione che non si basa sulla composizione, non spiegherebbe questo ?
user3483902

Penso che un altro problema con questa soluzione sia quello che hai sottolineato in un commento alla mia domanda, vale a dire che se qualcuno può preelaborare in modo efficiente, può ottenere un serio vantaggio. Penso che questo sia un problema piuttosto delicato. Immagina di presentare un problema la cui soluzione (in un formato standard) può essere verificata in tempo, ma ho un metodo segreto per verificarlo in tempo. Questo mi dà abbastanza un vantaggio per risolvere . n Cn Ψ(C)nΨ(C)
domotorp,

1

La seguente semplice tecnica che chiamo la soluzione lotteria tecnica (SLT) può essere utilizzata insieme ad altre tecniche (come avere più problemi di prigionieri di guerra, la tecnica menzionata nella risposta di Noah Stephens-Davidowitz, ecc.) Per aiutare a trasformare le sfide computazionali in prove praticabili di problemi di lavoro. SLT aiuta a migliorare i problemi con i problemi di mining di criptovaluta diversi dalle condizioni 1-4.

Supponiamo che sia una sfida computazionale del modulo "trova un hash adatto insieme a una stringa tale che ".Cx ( k , x ) Dkx(k,x)D

Problema impostazione: Supponiamo che sia un set, sia una funzione di hash crittografica e sia una costante. Supponiamo inoltre che sia un'informazione che è facile da ottenere dopo che si determina che ma che non può essere ottenuto diversamente.D H C Dati (Ψ(C)DHC( k , x ) DData(k,x)(k,x)D

Problema obiettivo: trovare una coppia tale che sia un hash adatto e dove e dove .( k , x ) k ( k , x ) D H ( k | |Ψ(C)(k,x)k(k,x)DH(k||x||Data(k,x))<C

Analizziamo ora in che modo il problema soddisfa i requisiti 1-4.Ψ(C)

  1. Dobbiamo supporre che sia già randomizzato affinché SLT soddisfi questa proprietà.C

2-3. in genere diventerà più difficile di e questa è una buona cosa. La difficoltà di un problema di prova di lavoro deve essere finemente sintonizzabile, ma il problema originale può o meno avere un livello di difficoltà finemente sintonizzabile (ricorda che la difficoltà nel mining di Bitcoin viene modificata ogni due settimane) . La difficoltà del problema è uguale alla difficoltà di trovare qualche adatto moltiplicato per . Pertanto, poiché la costante è finemente sintonizzabile, anche la difficoltà di è finemente sintonizzabile.C C Ψ ( C ) (Ψ(C)CCΨ(C)2 n(k,x)D2nCΨ ( C )CΨ(C)

Anche se il problema è più difficile del problema originale , quasi tutto il lavoro per risolvere il problema sarà speso semplicemente per trovare una coppia con anziché calcolare gli hash (non è possibile calcolare se oppure no fino a quando uno ha calcolato e non è possibile calcolare se non si verifica che ).C Ψ ( C ) ( k , x ) ( k , x ) D H ( k | | x | | Dati ( k , x ) ) < Dati C ( k , x ) Dati ( k , xΨ(C)CΨ(C)(k,x)(k,x)DH(k||x||Data(k,x))<CData(k,x)Dati ( k , x ) DData(k,x)Data(k,x)D

Naturalmente, il fatto che sia più difficile di presenta alcune nuove preoccupazioni. Per un problema utile, è molto probabile che si desideri memorizzare le coppie dove in alcuni database. Tuttavia, per ricevere la ricompensa in blocchi, il minatore deve rivelare solo una coppia dove e invece di tutte le coppie indipendentemente dal fatto che oppure no. Una possibile soluzione a questo problema è che i minatori rivelino semplicemente tutte le coppie doveC ( k , x ) ( k , x ) D ( k , x ) ( k , x ) D H ( k | | x | | Dati ( k , x ) ) < C ( k , x ) D H ( k | | x | |Ψ(C)C(k,x)(k,x)D(k,x)(k,x)DH(k||x||Data(k,x))<C(k,x)D( D Ψ ( C ) CH(k||x||Data(k,x))<C( k , x ) D ( k , x ) D ( k , x ) (k,x)(k,x)Dper cortesia. I minatori avranno anche la possibilità di respingere le catene se i minatori non hanno inviato la loro giusta quota di coppie . Forse, si dovrebbe contare il numero di coppie per il calcolo su chi ha anche la catena valida più lunga. Se la maggior parte dei minatori pubblica le proprie soluzioni, il processo di risoluzione di produrrà altrettante soluzioni quanto il processo di risoluzione di .(k,x)D(k,x)DΨ(C)C

Nello scenario in cui i minatori pubblicano tutte le coppie , soddisferebbero lo spirito delle condizioni 2-3.Ψ ( C )(k,x)DΨ(C)

  1. 4Ψ(C) può o meno soddisfare la condizione seconda del problema specifico.4

Other Advantages of this technique:

La SLT offre altri vantaggi rispetto alle condizioni 1-4 che sono desiderabili o necessarie per un problema di prova del lavoro.

  1. Miglioramento del bilancio sicurezza / efficienza: SLT aiuterà nel caso in cui potrebbe essere troppo facile da risolvere o troppo difficile da verificare. In generale, è molto più difficile da risolvere rispetto a , ma è facile da verificare quanto . Ψ ( C ) CCΨ(C)CΨ(C)C

  2. Rimozione di un problema rotto / insicuro: SLT potrebbe essere usato per rimuovere algoritmicamente problemi POW difettosi in una criptovaluta con un problema POW di backup e più problemi POW. Supponiamo che un'entità trovi un algoritmo molto veloce per risolvere il problema . Quindi un tale problema non è più un problema di prova di lavoro adatto e dovrebbe essere rimosso dalla criptovaluta. La criptovaluta deve quindi avere un algoritmo che rimuove dalla criptovaluta ogni volta che qualcuno ha pubblicato un algoritmo che risolve il problema troppo rapidamente ma che non rimuove mai il problema altrimenti. Ecco uno schema di tale algoritmo di rimozione dei problemi utilizzato per rimuovere un problema che chiameremo ProblemaCCCCCA .

un. Alice paga una grossa commissione (la commissione coprirà i costi sostenuti dai minatori per la verifica dell'algoritmo) e quindi pubblica l'algoritmo che chiameremo Algorithm K che rompe il Problema nella blockchain. Se l'algoritmo K si basa su una grande quantità di dati pre-calcolati , Alice pubblica la radice Merkle di questo dati pre-calcolato .APCPC

b. Le istanze casuali del Problema A sono prodotte dalla Blockchain. Alice quindi pubblica le parti dei dati pre-calcolati che sono necessari affinché l'algoritmo K funzioni correttamente insieme al loro ramo Merkle per dimostrare che i dati provengono effettivamente dal . Se l'algoritmo di Alice si è alimentato rapidamente con il dati pre-calcolato , il problema viene rimosso e Alice riceve una ricompensa per la pubblicazione dell'algoritmo che rimuove il problema dalla blockchain.PCPC

Questa procedura di rimozione dei problemi è computazionalmente costosa per i minatori e i validatori. Tuttavia, SLT rimuove la maggior parte delle difficoltà computazionali di questa tecnica in modo che possa essere utilizzata, se necessario, in una criptovaluta (i casi in cui questa tecnica viene utilizzata saranno probabilmente piuttosto rari).

  1. I pool di data mining sono più fattibili: nelle criptovalute, spesso è molto difficile vincere la ricompensa del blocco. Poiché i premi del blocco sono molto difficili da vincere, i minatori spesso estraggono miniere in cose chiamate pool di miniere in cui i minatori uniscono le loro risorse per risolvere un problema e in cui condividono la ricompensa del blocco in proporzione alla quantità di "near miss" che hanno trovato . Un possibile problema per è che potrebbe essere difficile produrre una nozione qualitativa di ciò che costituisce un "near miss" per il problema e che l'algoritmo per trovare un near miss potrebbe essere diverso dal algoritmo per risolvere . Dal momento che i minatori della piscina cercheranno quasi mancati incidenti, potrebbero non essere molto efficienti nel risolvereC C C Ψ ( C ) ( k , x ) ( k , x ) D H ( k | | x | | Dati ( k , x ) ) C Ψ (CCCC (e quindi poche persone si uniranno ai pool di mining). Tuttavia, per , esiste una chiara nozione di near miss, vale a dire, un near miss è una coppia dove ma dove e l'algoritmo per la ricerca dei quasi incidenti per sarà lo stesso dell'algoritmo per la ricerca di soluzioni per .Ψ(C)(k,x)(k,x)DH(k||x||Data(k,x))CΨ ( C )Ψ(C)Ψ(C)

  2. Freeness di avanzamento: si dice che un problema di prova di lavoro è libero da progressi se il tempo impiegato da un'entità o un gruppo di entità per trovare il blocco successivo sulla blockchain segue la distribuzione esponenziale dove la costante è direttamente proporzionale alla quantità di potenza di calcolo tale entità utilizza per risolvere il problema . Per i problemi di mining di criptovaluta è necessaria la libertà di progresso affinché i minatori possano ricevere una ricompensa in blocco in proporzione alla loro potenza di mining per ottenere il decentramento. La SLT aiuta sicuramente i problemi di mining a realizzare progressi senza sosta.e - λ x λ PPeλxλP

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.