Show Posts
|
Pages: [1] 2 3 4 5 »
|
Non è certo su un singolo blocco o su una sequenza piccola di blocchi. Su una sequenza molto grande di blocchi (da qui il punto: basta che l'attaccante abbia pazienza) invece tende a 1 la probabilità che il miner 51 ci metta meno tempo a minare lo stesso numero di blocchi.
... NO !  Ennesimo esempio già fatto, ma lo ripeto sperando sia più di impatto Compri il 51% delle combinazioni super enalotto ad ogni estrazione. Sei sicuro che alla lunga vincerai tu più estrazioni rispetto ad altri? Puoi anche vincerne 0. STOP. La reward è casuale! Se non introduci questi elementi che sono IMPRESCINDIBILI non ne usciamo più, sto ripetendo le stesse identiche cose da 4 pagine di topic! Ma il miner ostile NON STA COMPRANDO, per ogni nuovo blocco, il 51% dei biglietti di una lotteria la cui vincita è aver minato per primi il prossimo blocco  . Se lo facesse non sarebbe ostile, starebbe minando assieme agli altri. Il miner ostile sta minando una catena alternativa, essendoci soltanto lui a minarla, ogni blocco di tale catena è aggiunto da lui. Ogni nuovo blocco che il miner ostile aggiunge alla sua catena viene minato in un tempo medio di 9 minuti e 50 secondi. Immagina una gaussiana di distribuzione di tempi attesi per ogni nuovo blocco centrata su 9 minuti e 50. Ogni nuovo blocco che la rete normale aggiunge alla catena pubblica viene minato in un tempo medio di 10 minuti. Immagina una gaussiana di distribuzione di tempi attesi per ogni nuovo blocco centrata su 10 minuti. ... Se costruisco una farm che supera tale hash rate, con la stessa difficoltà, mediamente la mia catena alternativà avrà un blocco in meno di 10 minuti. ...
Non credo possa essere una condizione minimamente realistica.... che ne so magari su un pianeta lontano stanno minando una catena alternativa e tra 100 anni ce la spiettelleranno dicendo "eh avete usato un fork"... ma non ha senso... è davvero parlare di Ultra - Fantascienza E' ovvio che è una condizione irrealistica, convengo anch'io, e lo stiamo dicendo tutti assieme da 4 pagine. Ti invito per l'ennesima volta ad assumere che sia invece una condizione del puro esercizio teorico. E' su quell'esercizio teorico su cui sto ragionando.
|
|
|
@Wrib No. Non è certo al 101% che un miner con il 51% possa minare più veloce del 49% .
Non è certo su un singolo blocco o su una sequenza piccola di blocchi. Su una sequenza molto grande di blocchi (da qui il punto: basta che l'attaccante abbia pazienza) invece tende a 1 la probabilità che il miner 51 ci metta meno tempo a minare lo stesso numero di blocchi. Se così non fosse non funzionerebbe tutto il meccanismo di aggiustamento della difficoltà per avere un nuovo blocco in media ogni 10 min. Con un certo hash rate complessivo, serve una certa difficoltà per avere mediamente un blocco ogni 10 minuti. --- IMPLICA --> Se costruisco una farm che supera tale hash rate, con la stessa difficoltà, mediamente la mia catena alternativà avrà un blocco in meno di 10 minuti. @Wrib La reward del blocco è casuale! È vero che ha una sorta di vantaggio come potenza di calcolo ma il meccanismo che da la reward è casuale altrimenti il mining sarebbe semplicemente un processo centralizzato. Quando si fanno i conti su profittabilità degli hardware etc etc si parla sempre di stima non di certezza di riuscita
Non è la reward del blocco ad essere casuale, la reward è fissa per ogni era, 50 bitcoin a blocco, 25 bitcoin a blocco, ecc 3,125 bitcoin a blocco + l'ammontare delle fees delle transazioni incluse nel tale blocco. Per favore usiamo una terminologia corretta. Ad essere incerto è il fatto che sarò io o meno a validare per primo il prossimo blocco, ma qui parliamo di catena condivisa. Nel 51% attack io ho certezza 100% di minare il prossimo blocco DELLA MIA CATENA ALTERNATIVA, quello che è incerto è se la mia catena alternativa crescerà, come numero di blocchi nell'unità di tempo, più velocemente della catena degli altri. Ma più tempo passa in queste condizioni (io ho più dell'hash power di tutti gli altri) più la probabilità che la mia catena sia più lunga tende a 1.
|
|
|
@Wirb il processo di assegnazione della reward quando trovi il blocco resta casuale! non permette di fare alcunchè perchè questo vantaggio è irrisorio per poter fare qualsiasi forma di attacco. Anche con questo vantaggio può comunque minare meno blocchi. Potenzilamente può solo minare 51% dei blocchi ma nulla che permette realmente di sovrascrivere blocchi precedenit o eccedenti (ripeto come fa a minare 2-3 volte più veloce - 100% o 200% con... 1%! ..... credo sia ovvio che non ha potenza per fare alcunchè nonostante queste condizioni rimangono invariate).
Anche se aspetta non conclude NIENTE. E' da solo in lotta contro la rete. Il mio esempio di blocchi non trovati per ore non è cosi raro (e coinvolge il 100% della rete) . Il miner malevolo non è immune anzi ha solo la metà di questa potenza di calcolo!
Questi esempi su "conteggi" standard o fissi NON valgono con il mining perchè la reward è casuale!
Guarda questa immagina:  Le due catene, quella blu e quella rossa, crescono ciascuna con una certa velocità. A parità di coefficiente di difficoltà, chi ha più hash power fa crescere più velocemente la sua catena. La rete benevola sta minando il 100% dei blocchi blu, il miner ostile sta minando il 100% dei blocchi rossi. Non c'è nessuna gara probabilistica tra blu e rossi. Semplicemente se l'attaccante "rosso" ha più hash power dei "blu" la catena rossa crescerà più velocemente. Quando la catena rossa avrà un blocco in più di quella blu, se la propagherà agli altri, tutti adotteranno quella blu.
|
|
|
Mi piace il tuo esempio.  Riprendo dal "minare blocchi del passato"... Anche se dovesse minare 1 solo blocco indietro, in 10 minuti deve produrre 2 blocchi...e dobbiamo aggiungere che per non essere "superato" deve anche produrre un terzo blocco! La catena precedente ha il vantaggio di partire già da un blocco in più, il miner malevolo deve fare "il doppio, se non il triplo" del lavoro per essere sicuro di vincere questa corsa. (restiamo sempre nelle condizioni dell'esercizio teorico dove il miner 51 avrà sempre almeno il 51 ) Il punto è che non deve andare al doppio della velocità degli altri, se ha tempo sufficiente per aspettare, prima o poi avrà una catena più lunga, anche se è di poco più veloce degli altri. Certo se fosse veloce il doppio degli altri (66% hash power vs 33% hash power) il sorpasso avverrebbe prima. E' come due tir in autostrada che si sorpassano, uno va agli 80Km/h, l'altro a 81Km/h. Prima o poi il sorpasso ha termine (nel frattempo se ci sono solo due corsie gli automobilisti dietro hanno bestemmiato tutti i santi  ). Immagina uno scenario in cui lancia questo attacco, mina in segreto e per assurdo non becca nessun blocco per ore e ore. E' possibilissimo che anche per un'ora l'intero network non riesce a risolvere il blocco (100%) figuriamoci lui con il 51%
Certo è normale, ma non cambia nulla. Il tir che va agli 80Km/h ogni tanto ha degli affanni e momentaneamente rallenta a 40km/h e ogni tanto ha dei colpi di fortuna e viaggia a 120km/h. Stessa cosa per il tir che va a 81km/h. Hanno entrambi ogni tanto dei significativi scostamenti dalla loro media, ma se la media di uno dei due è più alta, alla lunga percorre più strada.
|
|
|
@Wrib Vado a memoria... I miner aggiungono blocchi alla catena più lunga. Ricordo che in passato si sono verificati dei casi di reorg massivi (gente che minava su catene orfane)...
L'assunto che riesca a mantenere il 51% per quanto lo possiamo fare passare come valido non garantisce nulla. Potrebbe non beccare nemmeno un blocco a prescindere perché il sistema è sempre casuale.. potenzialmente questo può verificarsi anche con percentuali maggiori. Ora, capisco l'esercizio ma bisogna tenere conto di alcuni fattori "real world" che sono imprescindibili per il mining Anche se avesse a lungo termine questo vantaggio ipotetico non sarebbe mai un vantaggio "100% vinco io con il 51%". Questo aspetto del miner segreto non ha senso. La catena scelta è sempre la più lunga. Non avrebbe mai la certezza di essere più veloce degli altri ( @bitcoiner180 parlo di brevissimo tempo proprio per questo... Quanto tempo può rischiare senza mandare blocchi? ) Ovvero...ok vince il primo blocco , ma quanti ne può vincere di fila considerato che ha solo un vantaggio irrisorio ed il premio del blocco viene assegnato comunque in maniera casuale? Parliamo sempre di probabilità in una gara che riparte da 0. Con premi assegnati casualmente ... Non ha quella probabilità ndel 75% perché lassgnazione è casuale... Sarebbe quella se realmente ogni xxx blocchi è certo di beccare quel numero ... Se ci pensi non è possibile perché il processo è casuale! Potrebbe magari partire con il piede giusto e poi farsi superare durante questa gara...o semplicemente altri miner producono più veloce di lui. Il discorso di probabilità (mio modestissimo parere) viene annullato nel momento il reward è casuale... Se fosse stato fisso assolutamente i conteggi della AI erano corretti.
Consideriamo questo grassetto, accettiamo intanto come valido l'assunto che il miner ostile abbia e avrà sempre da oggi in poi il 51% (o più) dell'hash power. Questo assunto dobbiamo considerarlo valido altrimenti l'esercizio teorico si chiude già qui prima di affrontarlo  . Prendiamo per vera questa assunzione e concentriamoci sulla seconda parte del grassetto che riporta "Potrebbe non beccare nemmeno un blocco a prescindere perché il sistema è sempre casuale.". Per favore segui il mio ragionamento. Il miner con il 51% dell'hash power può operare in tre modi: 1)si comporta in modo del tutto onesto, aggiunge ai suoi blocchi le transazioni che legge dalla mempool, quando e se mina per primo un nuovo blocco lo propaga al resto della rete, quando lo minano prima gli altri accetta il blocco degli altri 2)si comporta in modo "semi onesto", invece di prendere le transazioni dalla mempool senza discriminazioni ne esclude alcune a piacere (censura) oppure mina direttamente blocchi vuoi (disservizio). Come nel punto 1 quando e se mina per primo un nuovo blocco lo propaga al resto della rete, quando lo minano prima gli altri accetta il blocco degli altri. Qui il miner non genererà mai un 51% double spending, ci saranno come sempre i soliti reorg di pochi blocchi che già capitano quando due miner trovano un blocco quasi in contemporanea rispetto ai tempi di propagazione dello stesso. Romperà soltanto un po' le balle alla rete, per esempio alcuni blocchi per colpa sua saranno vuoti e chi vuole transare richia di aspettare di più. In questi due casi 1 e 2, vale il tuo ragionamento "che ogni nuovo blocco è una nuova scomessa", qui sì che non si sa con certezza chi minerà il prossimo blocco. Nonostante il vantaggio probabilistico per il miner 51 potrebbero tranquillamente capitare sequenze di diversi blocchi minati tutti dai miner 49. Io mi riferisco ad uno scenario diverso (in cui può essere segreto o meno): 3)il miner 51, NON è segreto, smette di compotarsi onestamente, inizia da un certo blocco in poi (che può essere quello attuale o un blocco nel passato) a minarci sopra una nuova sequenza di blocchi. Non deve vincere nessuna gara ad ogni blocco. Dato l'attuale livello di difficoltà ci metterà poco meno di 20 minuti (in media) ad aggiungere un nuovo blocco alla sua sequenza. Certo a volte ci metterà 15 minuti a volte 25, a volte 18 e a volte 22 ecc ma in media, produrrà un nuovo blocco dato il coefficiente attuale di difficoltà ogni 19 minuti e 50 secondi. Nel frattempo il resto della rete sta aggiungendo alla sua catena un blocco mediamente ogni 20 minuti e 10 secondi. Il coefficiente di diff era stato calcolato sulla presenza sia del miner 51 che dei miner 49, quindi con la presenza di tutti si minava un blocco in media ogni 10 min, staccandosi dalla rete e minando da solo una catena alternativa ci mette circa 20 minuti (poco meno) e gli altri a continuare sulla catena pubblica ci mettono circa 20 minuti (poco più). Sono due corridori, uno corre ad un blocco ogni 19 minuti e 50 secondi, uno corre ad un blocco ogni 20 minuti e 10 secondi. Al di là di momentanei su e giù statistici (i miner 49 potrebbero tranquillamente partire in vantaggio nei primi metri) dopo un po' che corrono sarà in testa il miner che corre mediamente più veloce. Dopo un po' di tempo avranno minato gli stessi blocchi ma il miner 51 ci avrà messo meno tempo. Dopo ancora un po' di tempo il miner 51 avrà addirittura minato più blocchi dei miner 49. 4)il miner 51, SEGRETO è una variante al punto 3 dove invece che 20 min circa si ragiona su 10 minuti circa, perchè se metto su segretamente una mega mining farm, sto superano tutta la potenza di tutti gli altri sulla quale è calcolato il coefficiente di difficoltà.
|
|
|
@Wrib Ogni 10 minuti (in media) viene trovato un nuovo blocco. Il miner malevolo deve essere quindi in grado di vincere la lotteria più e più volte per poter effettuare la sua operazione in un tempo brevissimo. Ogni 10 minuti è come se inizia tutto da 0 ed il suo vantaggio è del 51%. Ma come nel gambling, un evento che si verifica nel 51% non è che abbia un pattern perfetto parallelo +1 (!) per chi ha il 51%. Ok, sul lungo termine questa proporzione rimane immutata vedremo questo fenomeno (percentuale 51 vs 49) Nella pratica non è così visto che altri soggetti continuano ad aggiungere potenza di calcolo (in poco tempo abbiamo avuto un rialzo del 50%....) Nel breve o brevissimo potrebbe anche minare molti meno blocchi proprio perche è un processo di assegnazione casuale. Se il mining fosse stato un processo esclusivamente "capitalistico" sarebbe una shitcoin stile masternode dove con il staking la reward è assegnata in maniera standard e dove praticamente i protocolli possono essere definiti centralizzati visto che questi "validatori" costituisconola maggioranza praticamente assoluta. In questo modo hanno talmente "peso" da poter veramente decidere cosa processare e cosa no ... Un disastro per Bitcoin e anche un sistema non più "democratico". Teoricamente puoi risolvere un blocco con "carta e penna"... Chiunque può trovare un blocco (seppur in proporzione sempre più "difficile") anche con un hardware minimale.
Il fatto è che continui a rispondermi mixando condizioni reali della pratica come "Ok, sul lungo termine questa proporzione rimane immutata vedremo questo fenomeno (percentuale 51 vs 49)" mentre tra le condizoni dell'esercizio puramente teorico si assume che il miner segreto sia in grado di mantenere il vantaggio 51 vs 49 nel tempo, anche potenziando la propria farm se dovesse crescere la potenza esterna. Che nella pratica sia impossibile o quasi siamo già tutti d'accordo. Restando quindi sul piano puramente teorico, la lotteria su chi indovina il prossimo blocco c'è soltanto quando il miner che ha il 51% aggiunge i suoi blocchi alla blockchain pubblica condivisa con tutti gli altri 49. Nessuno ha la certezza di chi minerà il prossimo blocco, ogni nuovo blocco è un nuovo lancio di una monetina leggermente sbilanciata verso un lato. Invece quando il miner mina una catena sua (con tutte le assunzioni puramente teoriche del caso come il fatto che resti sempre sopra al 51% di hash power) lui si prende tutto il tempo che vuole a minare il suo prossimo blocco e lo aggiunge alla sua catena segreta. Qui la "gara" non è a chi mina per primo il prossimo blocco, perchè ci sono due catene separate che vanno per due strade diverse. Tra il miner ostile e il resto della rete non esiste proprio il concetto di "prossimo blocco", sono due universi separati. Seperati fino a quando il miner ostile pubblica la sua sequenza se è diventata più lunga di quella degli altri. La "gara", o la domanda, è: dopo quanto tempo la catena del miner 51% avrà più blocchi dell'altra?
|
|
|
@arulbero grazie dei vari conteggi ed esempi. Il discorso del 51% deve essere rapportato anche a livello pratico ad oggi e non al 2008 quando scrisse il WP. La possibilità che riesca a mantenere questo rapporto di maggioranza rispetto agli altri miners... va da se che è impossibile* Ergo è sempre da solo contro tutta la rete, e la corsa praticamente è infinita. Non trovo cosi scontato ne semplice che possa mantenere questo rapporto a lungo e effettivamente riuscire ad effettuare un vero attacco (i conteggi di plutosky credo riassumono benissimo QUANTO servirebbe per avere un 51% ad oggi) Per quanto possa essere possibile questo attacco (sopratutto inizialmente vista la natura del network praticamente irrisoria rispetto a oggi), il meccanismo di block reward è sempre una lotteria! Purtroppo non condivido questo punto che un miner con il 51% DOMINA la rete. Al di la che alcuni miners beccano blocchi anche con hardware lillipuziani, potrebbe anche verificarsi la produzione "più rapida" rispetto ai canonici 10 minuti. Per quanto mini "in segreto" è sempre in gara, è sempre in lotta con gli altri. Teoricamente ogni 10 minuti si inizia da capo....
Ai bei tempi di cex.io, quando raggiunsero il 51% (oltre ad avere un po di GHS da loro usavo AWS per minare con istanze gratuite tanto per dare un esempio di quanto fosse ancora easy il mining) era già evidente come nonostante avessero raggiunto questo livello... non era comunque OVVIO che avessero dominato il resto dei blocchi. Boh è davvero come se ci stessimo preoccupando di un meteorite... si è pieno di meteoriti la fuori (e qualcuno soffre anche di meteorismo). Oggi questo non lo considererei affatto un problema... (mia opinione personale ovviamente). *Da un punto di vista teorico è ovvio che è possibile una roba del genere, ma è davvero complicato all'atto pratico, se non letteralmente impossibile tenendo conto anche dell'aumento repentino (e costante) dell'intero network.  In un anno abbiamo un +50% . Il miner malevolo (o pool che sia) dovrebbe crescere a sua volta dello stesso ritmo... Se fosse stato possibile fare una cosa del genere, già l'avrebbero fatto. Il tesoretto per chi riuscisse a violare la rete è ENORME...eppure è ancora li da anni... Innanzitutto ti ringrazio e ringrazio anche tutti gli altri partecipanti a questa discussione, la trovo molto più interessante delle solite sul prezzo e le news varie. Ho appena distribuito merit a tutti i partecipanti a questa discussione per ringraziarvi della partecipazione, ora li ho momentaneamente finiti  Ovviamente stiamo facendo seghe mentali del tutto teoriche in pratica siamo tutti d'accordo che sia impossibile un 51% attack Per me il bello di questa discussione è immaginarsi un esercizio di calcolo delle probabilità e provare a risolvero, certo resta un esercizio fine a se stesso nella pratica si sono impedimenti reali che farebbero subito notare al mondo che c'è una farm segreta (si nota: è grossa, costosa, ha logistica immensa, ecc) e motivi di teoria dei giochi che salverebbero comunque bitcoin (incentivi economici a essere miner onesti ecc). Sempre restando su un piano puramente teorico posso chiederti maggiori dettagli su cosa intendi con questa parte grassettata: Per quanto possa essere possibile questo attacco (sopratutto inizialmente vista la natura del network praticamente irrisoria rispetto a oggi), il meccanismo di block reward è sempre una lotteria! Purtroppo non condivido questo punto che un miner con il 51% DOMINA la rete. Al di la che alcuni miners beccano blocchi anche con hardware lillipuziani, potrebbe anche verificarsi la produzione "più rapida" rispetto ai canonici 10 minuti. Per quanto mini "in segreto" è sempre in gara, è sempre in lotta con gli altri. Teoricamente ogni 10 minuti si inizia da capo....
Se sto minando in segreto, ma anche pubblicamente, a testa bassa una mia chain alternativa ignorando i blocchi degli altri, ogni 10 minuti non ho nessuna sfida probabilistica a testa o croce contro gli altri che ricomincia da capo. Semplicemente ogni 10 minuti circa aggiungo alla mia catena un blocco che mino io, punto e basta. Gli altri aggiungeranno alla loro catena il blocco che minano loro, punto e basta. Però avendo il 51% io, in media, non mino un blocco ogni 10 minuti, ma in poco meno mettiamo ogni 9 minuti e 50 secondi. Non saranno tutti minati in 9 minuti e 50 esatti, alcuni ci metterò di più, altri di meno, ma in media avrò un blocco ogni 9 minuti e 50 secondi. Per gli altri vale lo stesso discorso ma con media 10 minuti esatti. Prendi quei 10 secondi di scarto medio atteso. Se miniamo per qualche giorno in queste condizioni teoriche, la mia chain sommando quei 10 secondi ogni 10 minuti ad un certo punto accumulerà un vantaggio che supererà i 10 minuti, appena il mio vantaggio temporale accumulato supera i 10 minuti circa nella mia catena ci sta un blocco in più degli altri a parità di tempo: ho una catana più lunga con certezza 100%. Aggiungo anche una considerazione su questo: Se fosse stato possibile fare una cosa del genere, già l'avrebbero fatto. Il tesoretto per chi riuscisse a violare la rete è ENORME...eppure è ancora li da anni...
Qui penso che entri in gioco la teoria dei giochi, il tesoretto in realtà è un tesoretto effimero. Se cerco di guadagnare da un double spending attack, mino la credibilità del network e i bitcoin che ho minato non valgono più niente..
|
|
|
Ora a scanso di equivoci, quella mia citazione "Quindi la probabilità che il prossimo blocco sarà ostile è p=0.51. In percentuale 51%." si riferiva allo scenario 1, quello che come fa notare @arulbero non è un vero attacco double spending ma un semplice spam attack (anzi forse più che spam più simile ad un DOS, non sto riempiendo di dati i blocchi ma sto minando inutili blocchi vuoti):
1) SCENARIO UNO. Il "miner ostile 51%" pubblica sempre e subito il blocco vuoto (o con transazioni censurate) che mina. Tale blocco va subito in append alla unica blockchain esistente nel mondo. Anche quando i "miner onesti 49" trovano un blocco ovviamente anche questo blocco va in append alla unica blockchain. Dato che il miner ostile è pubblico troverà un blocco in poco meno di 20 minuti e gli altri in poco più di 20, perchè il coefficiente di difficoltà è aggiustato sulla presenza di tutti quanti.
Forse non l'avevo scritto ma davo per scontato che in questo scenario il miner ostile accetta la blockchain quando ad aggiungere un nuovo blocco sono gli altri 49.
L'attaccante potrebbe invece benissimo non accettare quei blocchi.Se parli di un spam attack ovvero di pubblicare sempre solo blocchi vuoti, con il 51% l'attaccante sarebbe di fatto quasi sempre in vantaggio: esempio: ora siamo al blocco 100, l'attaccante mina 101a e 102a, quindi la rete mina il 103r, l'attaccante ignora il 103r e continua a lavorare per produrre il 103a, quindi il 104a e così via. Avendo più potenza, l'attaccante sarà sempre in vantaggio, tranne per qualche momento, come nel caso del blocco 103r, ma quel blocco verrà scartato in seguito tramite reorganizzazione della parte finale della catena. In questo senso avere il 51% di potenza permette all'attaccante di assumere il ruolo della rete, ovvero di decidere tutti i blocchi. Con una differenza sostanziale: la rete non discrimina nessun blocco, mentre l'attaccante deciderebbe quali blocchi tenere (i suoi) e quelli sui quali non lavorare, ovvero da scartare (quelli del resto della rete). Be certo ma se l'attaccante non decide di accettare i blocchi degli altri, non è più un semplice spam, ma (come facevi notare) ci riconduciamo allo scenario di un vero tentativo di 51% attack in cui l'attaccante mina a testa bassa una chain tutta sua (segreta o pubblica che sia) la quale dopo un tot di tempo sarà più lunga dell'altra con probabilità 1. Qui: https://bitcointalk.org/index.php?topic=5552695.msg65658005#msg65658005 avevo calcolato che in 10gg circa a spanne mi attendo un vantaggio di 3 blocchi. Il momento in cui avviene il reorg a favore della catena dell'attaccante è proprio quando la sua catena è diventa più lunga. Ma deve scegliere: faccio un semplice spam attack (quindi accetto i blocchi degli altri quando arrivano prima e ci mino sopra, posso avere anche meno del 51% per creare questo leggero disservizio) oppure ignoro i blocchi degli altri, ma loro ignoreranno i miei fino al momento del reorg (quando si palesa il vero e proprio 51% attack double spending, quando la mia chain sovrascriverà improvvisamente la loro tramite reorg). La domanda è quanto tempo ci metto ad avere questa chain più lunga, se io con il 51% ci metto mediamente poco meno di 20 minuti e gli altri poco più di 20 minuti, (10 min se ho messo su segretamente un farm) il valore atteso è quando quelle piccole differenze di tempo attese sommate superano la durata media di un blocco per averne quindi almeno uno in più degli altri.. Se ho il 51% ci andrà qualche giorno o settimana, se ho il 60% molto meno..
|
|
|
Quindi la probabilità che il prossimo blocco sarà ostile è p=0.51. In percentuale 51%.
No state sbagliando. La probabilità che il prossimo blocco sarà ostile è del 100% perché il minatore ostile se ne infischia che la rete onesta ha eventualmente minato un blocco per prima, se ne infischia che la rete onesta ha vinto alla lotteria, lui continua imperterrito a cercare di vincere alla lotteria già vinta dalla rete onesta e a minare il prossimo blocco in sostituzione di quello onesto con l'obiettivo di creare un fork. Il minatore disonesto impiegherà poco meno di 20 minuti in media per minare il prossimo blocco, la rete onesta invece impiegherà poco più di 20 minuti in media. Nel breve termine si verrà a creare un fork formato da 2 o più catene, una del minatore disonesto e una o più altre della rete onesta. Dato che il minatore disonesto ha un hash rate superiore a quello della rete onesta, riuscirebbe nel lungo termine a mantenere il fork più lungo di quello della rete onesta. Questo anche se la rete onesta fosse capace di cooperare al meglio mantenendo solo una catena concorrente a quella disonesta. Cerchiamo prima di capire se stiamo parlando della stessa cosa. Nel mio post che hai citato con tutti i calcoli delle probabilità analizzavo due scenari diversi. Prima di fare altri ragionamenti vorrei quindi essere sicuro che stiamo parlando dello stesso scenario. Gli scenari di cui parlavo sono: 1) SCENARIO UNO. Il "miner ostile 51%" pubblica sempre e subito il blocco vuoto (o con transazioni censurate) che mina. Tale blocco va subito in append alla unica blockchain esistente nel mondo. Anche quando i "miner onesti 49" trovano un blocco ovviamente anche questo blocco va in append alla unica blockchain. Dato che il miner ostile è pubblico troverà un blocco in poco meno di 20 minuti e gli altri in poco più di 20, perchè il coefficiente di difficoltà è aggiustato sulla presenza di tutti quanti. 2)SCENARIO DUE. Il "miner ostile 51%" mette su in segreto una mining farm che da sola supera di poco la potenza di calcolo di tutto il mining presente nel mondo. Inizia a minare a testa bassa una nuova chain segreta in parallelo nella quale inserisce TUTTI i blocchi che sta minando cioè SOLTANTO blocchi ostili. L'obiettivo del miner ostile sarà quello di pubblicare al mondo tale catena ostile quando sarà più lunga dell'altra. Il resto del mondo, ignaro della sua presenza, contiuna a minare la blockchain pubblica nella quale vengono inseriti SOLTANTO blocchi onesti. Qui i tempi sono di poco meno di 10 min per il miner ostile e di 10 min esatti per il resto del mondo, non c'è stato aggiustamento di difficoltà perchè il miner ostile non contribuisce all'hash rate pubblico. Ora, a scanso di equivoci, senza entrare nel merito di cosa succede nei due casi, ti chiedo, stiamo parlando degli stessi scenari? La tua obiezione appena quotata, si riferisce esattamente ad uno di questi due o ad un terzo scenario ancora diverso (nel caso descrivimelo) ? Io parlo invece di un terzo scenario che è un mix tra lo scenario 1 e lo scenario due: 3) SCENARIO TRE. Il "miner ostile 51%" pubblica sempre e subito il blocco vuoto (o con transazioni censurate) che mina. Tale blocco non va in append all'unica blockchain al mondo sostituendo un blocco già esistente generato dalla rete onesta, creando un fork della catena e creando così una blockchain con due rami, come consentito dal protocollo bitcoin. Nel momento in cui sto scrivendo, l'ultimo blocco della catena è il numero 908855. Nulla vieta a me, miner disonesto, di provare ora a minare nuovamente il blocco numero 908855 inserendo dentro le transazioni che mi piacciono e assegnandomi la coinbase di quel blocco. Se riesco a farlo, il protocollo bitcoin mi da diritto di pubblicare questo secondo blocco 908855 e i nodi di bitcoin sono obbligati a tenere in memoria anche il mio blocco. In questo scenario la blockchain avrà due blocchi 908855, quello minato da me disonesto e quello minato dal resto della rete. Quale dei due blocchi deve essere considerato ufficiale? Bisogna aspettare e vedere quale dei due fork diventa più lungo. Ovviamente se ho una potenza di calcolo maggiore di tutto il resto della rete il mio fork col tempo tenderà ad essere più lungo.La risposta è in questa tua frase in grassetto, stai descrivendo lo scenario 2: 2)SCENARIO DUE. Il "miner ostile 51%" mette su in segreto una mining farm che da sola supera di poco la potenza di calcolo di tutto il mining presente nel mondo. Inizia a minare a testa bassa una nuova chain segreta in parallelo nella quale inserisce TUTTI i blocchi che sta minando cioè SOLTANTO blocchi ostili. L'obiettivo del miner ostile sarà quello di pubblicare al mondo tale catena ostile quando sarà più lunga dell'altra. Il resto del mondo, ignaro della sua presenza, continua a minare la blockchain pubblica nella quale vengono inseriti SOLTANTO blocchi onesti. Qui i tempi sono di poco meno di 10 min per il miner ostile e di 10 min esatti per il resto del mondo, non c'è stato aggiustamento di difficoltà perchè il miner ostile non contribuisce all'hash rate pubblico. Ma nella sotto variante in cui per qualche motivo ti palesi al mondo di blocco in blocco, per coincidenza si presta bene questo pezzo di risposta che ho appena dato a @arulbero: Se ci atteniamo alla definizione rigorosa di che cos'è un "attacco 51% double spending", esiste soltanto uno scenario, quello in cui mino a testa bassa una chain alternativa sapendo che a tendere, dopo un tempo ragionevolmente lungo, la mia probabilità di avere una catena più lunga tende a 1. Poi, che io la tenga segreta o la palesi di blocco in blocco sono due sotto varianti, c'è da dire che se paleso la mia esistenza c'è il rischio che gli altri nodi si organizzino in anticipo per tempo per cambiare il consenso escludendomi dato che sono fortemente sospettato di essere malevolo. Se la pubblico soltanto quando è più lunga, genero più ore o giorni di trambusto prima che si organizzino per fixare con un fork. Io avrei chiamato queste due sotto varianti 51% attack e 101% attack. Nel 51% sono un soggetto noto che ha raggiunto la maggioranza dell'hash power pubblico. Nel 101% sono un soggetto che in segreto ha messo su una mining farm che da sola supera l'hash rate di tutti quanti. Ma ovviamente stiamo facendo pura filosofia teorica  Cambia il fatto che "vengo attenzionato prima in tempo reale", in teoria, poi in pratica una farm così grossa si noterebbe comunque in anticipo. Ma in una shitcoin POW piccolina con poca potenza di calcolo, questa distinzione avrebbe molto senso perchè la farm potrebbe essere segreta senza problemi. Ora facciamo un passo indietro, stavamo parlando di questo: Quindi la probabilità che il prossimo blocco sarà ostile è p=0.51. In percentuale 51%.
No state sbagliando. La probabilità che il prossimo blocco sarà ostile è del 100% perché il minatore ostile se ne infischia che la rete onesta ha eventualmente minato un blocco per prima, se ne infischia che la rete onesta ha vinto alla lotteria, lui continua imperterrito a cercare di vincere alla lotteria già vinta dalla rete onesta e a minare il prossimo blocco in sostituzione di quello onesto con l'obiettivo di creare un fork. Il minatore disonesto impiegherà poco meno di 20 minuti in media per minare il prossimo blocco, la rete onesta invece impiegherà poco più di 20 minuti in media. Nel breve termine si verrà a creare un fork formato da 2 o più catene, una del minatore disonesto e una o più altre della rete onesta. Dato che il minatore disonesto ha un hash rate superiore a quello della rete onesta, riuscirebbe nel lungo termine a mantenere il fork più lungo di quello della rete onesta. Questo anche se la rete onesta fosse capace di cooperare al meglio mantenendo solo una catena concorrente a quella disonesta. Ora a scanso di equivoci, quella mia citazione "Quindi la probabilità che il prossimo blocco sarà ostile è p=0.51. In percentuale 51%." si riferiva allo scenario 1, quello che come fa notare @arulbero non è un vero attacco double spending ma un semplice spam attack (anzi forse più che spam più simile ad un DOS, non sto riempiendo di dati i blocchi ma sto minando inutili blocchi vuoti): 1) SCENARIO UNO. Il "miner ostile 51%" pubblica sempre e subito il blocco vuoto (o con transazioni censurate) che mina. Tale blocco va subito in append alla unica blockchain esistente nel mondo. Anche quando i "miner onesti 49" trovano un blocco ovviamente anche questo blocco va in append alla unica blockchain. Dato che il miner ostile è pubblico troverà un blocco in poco meno di 20 minuti e gli altri in poco più di 20, perchè il coefficiente di difficoltà è aggiustato sulla presenza di tutti quanti. Forse non l'avevo scritto ma davo per scontato che in questo scenario il miner ostile accetta la blockchain quando ad aggiungere un nuovo blocco sono gli altri 49.
|
|
|
Cerchiamo prima di capire se stiamo parlando della stessa cosa. Nel mio post che hai citato con tutti i calcoli delle probabilità analizzavo due scenari diversi. Prima di fare altri ragionamenti vorrei quindi essere sicuro che stiamo parlando dello stesso scenario. Gli scenari di cui parlavo sono:
1) SCENARIO UNO. Il "miner ostile 51%" pubblica sempre e subito il blocco vuoto (o con transazioni censurate) che mina. Tale blocco va subito in append alla unica blockchain esistente nel mondo. Anche quando i "miner onesti 49" trovano un blocco ovviamente anche questo blocco va in append alla unica blockchain. Dato che il miner ostile è pubblico troverà un blocco in poco meno di 20 minuti e gli altri in poco più di 20, perchè il coefficiente di difficoltà è aggiustato sulla presenza di tutti quanti.
2)SCENARIO DUE. Il "miner ostile 51%" mette su in segreto una mining farm che da sola supera di poco la potenza di calcolo di tutto il mining presente nel mondo. Inizia a minare a testa bassa una nuova chain segreta in parallelo nella quale inserisce TUTTI i blocchi che sta minando cioè SOLTANTO blocchi ostili. L'obiettivo del miner ostile sarà quello di pubblicare al mondo tale catena ostile quando sarà più lunga dell'altra. Il resto del mondo, ignaro della sua presenza, continua a minare la blockchain pubblica nella quale vengono inseriti SOLTANTO blocchi onesti. Qui i tempi sono di poco meno di 10 min per il miner ostile e di 10 min esatti per il resto del mondo, non c'è stato aggiustamento di difficoltà perchè il miner ostile non contribuisce all'hash rate pubblico.
Ora, a scanso di equivoci, senza entrare nel merito di cosa succede nei due casi, ti chiedo, stiamo parlando degli stessi scenari? La tua obiezione appena quotata, si riferisce esattamente ad uno di questi due o ad un terzo scenario ancora diverso (nel caso descrivimelo) ?
Esiste in realtà un solo scenario, e cercherò di spiegare perchè. Iniziamo dallo scenario 2 (ma con una piccola aggiunta, il ritardo di partenza dell'attaccante rispetto al resto della rete che si quantifica in z blocchi). Se ho più del 50% di power hash, posso minare di nascosto una catena tutta mia, e pubblicarla quando più mi fa comodo. In questo modo posso modificare gli ultimi k blocchi della blockchain, con k > z. Ricordo in cosa consiste l'obiettivo di un 51% attack: sostituire una transazione già effettuata in passato (z blocchi fa) con un'altra per poter fare double spending. E' questo l'attacco di cui parla Nakamoto ed è l'unico veramente pericoloso (perchè mette in dubbio il concetto di irreversibilità di tutte le transazione della blockchain). L'obiettivo dell'attaccante (e il pericolo per il resto della rete) non è mai costruire una catena alternativa della blockchain, ma è sostituire solo l'ultimo pezzo con un altro pezzo, aggiustato. E ha convenienza a farlo solo dopo che il ricevente i bitcoin della tx da annullare ha accettato questo pagamento come definitivo (tempo di attesa che si quantifica in z blocchi). In tal modo l'attaccante potrebbe ricevere il prodotto/servizio acquistato (inviato dopo z blocchi di attesa) e rispendere i bitcoin in una successiva transazione. Lo scenario 1 equivale al 2 in realtà, in quanto l'attaccante parte da z blocchi più indietro, quindi genera una catena alternativa e solo lui continua ad aggiungere blocchi a quella catena, finchè non diventa più lunga. Anche se sta pubblicando i suoi blocchi, è solo lui che lavora a quella catena, perchè comunque è indietro rispetto a quella della rete.Solo quando la catena dell'attaccante raggiunge quella della rete anche gli altri miner inizieranno ad aggiungere altri blocchi alla sua catena, esattamente come accadrebbe nello scenario 2 subito dopo che l'attaccante ha pubblicato l'intero pezzo di catena minato di nascosto. I 2 scenari quindi sono del tutto equivalenti dal punto di vista del calcolo delle probabilità. Il dato fondamentale qui è che l'obiettivo dell'attaccante non è creare da un certo punto in poi una catena alternativa minata solo da lui che si prolunghi in modo indefinito (questo non è possibile, e forse questo voleva dire bitbollo) ma il suo obiettivo è solo sostituire un pezzo finito alla parte finale dell'attuale catena e basta, da quel momento in poi la catena viene sviluppata ancora in modo random dal resto della rete ed eventualmente dall'attaccante. Capisco cosa vuoi dire e mi trovi d'accordo. Se ci atteniamo alla definizione rigorosa di che cos'è un "attacco 51% double spending", esiste soltanto uno scenario, quello in cui mino a testa bassa una chain alternativa sapendo che a tendere, dopo un tempo ragionevolmente lungo, la mia probabilità di avere una catena più lunga tende a 1. Poi, che io la tenga segreta o la palesi di blocco in blocco sono due sotto varianti, c'è da dire che se paleso la mia esistenza c'è il rischio che gli altri nodi si organizzino in anticipo per tempo per cambiare il consenso escludendomi dato che sono fortemente sospettato di essere malevolo. Se la pubblico soltanto quando è più lunga, genero più ore o giorni di trambusto prima che si organizzino per fixare con un fork. Io avrei chiamato queste due sotto varianti 51% attack e 101% attack. Nel 51% sono un soggetto noto che ha raggiunto la maggioranza dell'hash power pubblico. Nel 101% sono un soggetto che in segreto ha messo su una mining farm che da sola supera l'hash rate di tutti quanti. Ma ovviamente stiamo facendo pura filosofia teorica  Cambia il fatto che "vengo attenzionato prima in tempo reale", in teoria, poi in pratica una farm così grossa si noterebbe comunque in anticipo. Ma in una shitcoin POW piccolina con poca potenza di calcolo, questa distinzione avrebbe molto senso perchè la farm potrebbe essere segreta senza problemi. Quello che ho descritto come SCENARIO 1 non è un attacco finalizzato al double spending (un double spending fatto in questo modo ha probabilità che tende a zero di succedere) ma uno spam attack*, potrei anche farlo con meno del 51% dell'hash power, anche il 20%. In un caso genero il 51% di blocchi vuoti nell'altro il 20%. Creo un costante disservizio minando un po' la credibilità della rete, ma non avverrà mai un double spending. Forse non l'avevo scritto ma davo per scontato che in questo scenario il miner ostile accetta la blockchain quando ad aggiungere un nuovo blocco sono gli altri 49. *anzi forse più che spam più simile ad un DOS, non sto riempiendo di dati i blocchi ma sto minando inutili blocchi vuoti
|
|
|
Ho guardato il video e riletto pag.6,7,8 del paper di satoshi https://bitcoin.org/bitcoin.pdf. Minare una catena alternativa (in segreto) con il 51% di hash power porta l'attaccante con probabilità 1 (100%) a recuperare z blocchi di ritardo rispetto alla catena principale (z blocchi di ritardo, nel caso voglia fare doppia spesa annullando una propria transazione di z blocchi fa). Lo scrive esplicitamente Nakamoto: probabilità che l'attaccante recuperi z blocchi = 1 (se ha la maggioranza di hash power) Lo dà talmente per scontato che tutta la sua analisi si concentra invece su cosa succederebbe a un attaccante che ha probabilità q di trovare un blocco minore di p, minore ovvero della probabilità che ha la rete degli onesti di trovare un blocco: in quel caso effettivamente le probabilità si riducono in modo esponenziale: la probabilità di recuperare z blocchi di ritardo è (q/p)^z, ed essendo q < p, tende a zero al crescere di z. Il video si riferisce a questo caso, al caso in cui la potenza dell'attaccante sia minore di quella del resto della rete, esattamente come fa Nakamoto nel suo paper. Nakamoto calcola ad esempio che con il 10% di potenza, un attaccante avrebbe solo 1 possibilità su 1000 di recuperare 5 blocchi di svantaggio, da qui la regola di aspettare 5-6 blocchi per avere la conferma definitiva di una transazione (in quanto anche un attaccante molto forte con ben il 10% di hash power avrebbe scarse probabilità di effettuare una double spending). L'attacco del 51% è anche intuitivo, se ho maggiore potenza di calcolo rispetto a te, in 1 giorno può succedere che tu mini più blocchi di me, in 1 settimana o in 1 mese no ('sostanzialmente' no). E più il tempo si allunga meno è probabile che la rete possa difendersi da un attaccante più forte di lei. Non devo minare tutti i singoli blocchi più velocemente di te, basta che il tempo complessivo sia minore (e quindi che riesca a minare più blocchi nel tuo stesso tempo, certificando con la catena più lunga la mia maggiore potenza computazionale). Questo è almeno il discorso legato alla mera probabilità. E' quello che sto cercando di dire da diversi post, sempre restando nel campo di teorici esercizi di calcolo di probabilità e trascurando la teoria dei giochi che nella pratica di fatto salva sempre bitcoin, bisogna distinguere queste due situazioni, il cui "esercizio di calcolo delle probabilità associato" è estremante diverso. situazione 1: ho il 51% e mino blocchi ostili in segreto aspettando di avere a tendere una catena più lunga da pubblicare solo in quel momento situazione 2: ho il 51% e mino blocchi ostili pubblicandoli fin da subito (sempre che non saltino fuori altri scenari che non ho considerato ovviamente)
|
|
|
Quindi la probabilità che il prossimo blocco sarà ostile è p=0.51. In percentuale 51%.
No state sbagliando. La probabilità che il prossimo blocco sarà ostile è del 100% perché il minatore ostile se ne infischia che la rete onesta ha eventualmente minato un blocco per prima, se ne infischia che la rete onesta ha vinto alla lotteria, lui continua imperterrito a cercare di vincere alla lotteria già vinta dalla rete onesta e a minare il prossimo blocco in sostituzione di quello onesto con l'obiettivo di creare un fork. Il minatore disonesto impiegherà poco meno di 20 minuti in media per minare il prossimo blocco, la rete onesta invece impiegherà poco più di 20 minuti in media. Nel breve termine si verrà a creare un fork formato da 2 o più catene, una del minatore disonesto e una o più altre della rete onesta. Dato che il minatore disonesto ha un hash rate superiore a quello della rete onesta, riuscirebbe nel lungo termine a mantenere il fork più lungo di quello della rete onesta. Questo anche se la rete onesta fosse capace di cooperare al meglio mantenendo solo una catena concorrente a quella disonesta. Cerchiamo prima di capire se stiamo parlando della stessa cosa. Nel mio post che hai citato con tutti i calcoli delle probabilità analizzavo due scenari diversi. Prima di fare altri ragionamenti vorrei quindi essere sicuro che stiamo parlando dello stesso scenario. Gli scenari di cui parlavo sono: 1) SCENARIO UNO. Il "miner ostile 51%" pubblica sempre e subito il blocco vuoto (o con transazioni censurate) che mina. Tale blocco va subito in append alla unica blockchain esistente nel mondo. Anche quando i "miner onesti 49" trovano un blocco ovviamente anche questo blocco va in append alla unica blockchain. Dato che il miner ostile è pubblico troverà un blocco in poco meno di 20 minuti e gli altri in poco più di 20, perchè il coefficiente di difficoltà è aggiustato sulla presenza di tutti quanti. 2)SCENARIO DUE. Il "miner ostile 51%" mette su in segreto una mining farm che da sola supera di poco la potenza di calcolo di tutto il mining presente nel mondo. Inizia a minare a testa bassa una nuova chain segreta in parallelo nella quale inserisce TUTTI i blocchi che sta minando cioè SOLTANTO blocchi ostili. L'obiettivo del miner ostile sarà quello di pubblicare al mondo tale catena ostile quando sarà più lunga dell'altra. Il resto del mondo, ignaro della sua presenza, contiuna a minare la blockchain pubblica nella quale vengono inseriti SOLTANTO blocchi onesti. Qui i tempi sono di poco meno di 10 min per il miner ostile e di 10 min esatti per il resto del mondo, non c'è stato aggiustamento di difficoltà perchè il miner ostile non contribuisce all'hash rate pubblico. Ora, a scanso di equivoci, senza entrare nel merito di cosa succede nei due casi, ti chiedo, stiamo parlando degli stessi scenari? La tua obiezione appena quotata, si riferisce esattamente ad uno di questi due o ad un terzo scenario ancora diverso (nel caso descrivimelo) ?
|
|
|
semplicemente rallenterà la rete nel senso che ogni 100 blocchi ne avremo 51 vuoti e 49 "normali"
Non proprio, se l'attaccante iniziasse fin da subito con la sua strategia, senza aspettare 3 mesi, dopo un po' di tempo avremmo una catena formata da 51 blocchi consecutivi vuoti dell'attaccante ed una o più catene prodotte dal resto della rete (che non è formata da alleati ma da entità in competizione) Ad ogni nuovo blocco abbiamo un 51% di probabilità che a minarlo per primo sarà il miner ostile (quindi blocco vuoto) e un 49% di probabilità che a minarlo sarà un miner benevolo. Quindi la probabilità che il prossimo blocco sarà ostile è p=0.51. In percentuale 51%. Qual è la probabilità che si presentino due blocchi ostili di seguito? p= 0.51 * 0.51 = 0,2601. In percetentuale 26% circa. Qual è la probabilità che si presentino tre blocchi ostili consecutivi 0.51 * 0,51 * 0.51, ovvero 0.51 alla terza, p= 0.132651. In percentuale 13% circa. Qual è la probabilità che si presentino 51 blocchi ostili consecutivi? 0.51 alla 50, ovvero p= 0 virgola tanti zeri qualche cosa. Praticamente il "dopo un po' di tempo" potrebbere essere un evento che capiterà una volta ogni n migliaia, milioni o non so quanto di anni (non ho voglia di mettermi a quantificare tutti quegli zeri). Vedilo grosso modo come (approssimando il 51% al 50%) far uscire croce 51 volte di fila lanciando una moneta, hai voglia ad aspettare che accada. Questo sì che è un evento raro tanto quanto quello di riuscire a fare il bruteforce in tempi umani di una chiave privata, da qui il mio sospetto che @bitbollo pensasse a questa situazione nei suoi paragoni. La probabilià si riduce esponenzialmente con il crescere del numero di blocchi vuoti che si spera di ottenere di fila...ogni tanto avremo sequenze di diversi blocchi vuoti ma mai più di tanto, diventa prima insolvibile l'attore malevolo rispetto al presentarsi di una sequenza di anche solo 10, 15, 20 o esageriamo 30 blocchi vuoti di fila. Come vincere al superenalotto? Inoltre l'attaccante si sta palesando ad ogni nuovo blocco, se dovesse veramente resistere per molto tempo a minare blocchi vuoti gli altri potrebbero con calma fare un soft fork per escludere i suoi blocchi, ma non credo sarebbe il caso si aspetterà che l'attaccante finisca i fondi, tra l'altro minare blocchi normali in sequenza ai suoi blocchi vuoti va "comunque bene", a parte il rallentamento della rete per presenza di blocchi vuoti inutili. Ora, questo esercizio di calcolo delle probabilità è completamente diverso da quello ( https://bitcointalk.org/index.php?topic=5552695.msg65658005#msg65658005) in cui segretamente l'attaccante stia minando una chain parallela formata soltanto da blocchi vuoti. Dato che lui mina un nuovo blocco in poco meno di 10 minuti e il resto della rete mina un nuovo blocco in 10 minuti, dopo un tempo sufficiente l'attaccante avrà certamente una catena di blocchi più lunga da presentare improvvisamente al resto del mondo. Dove "certamente" è una probabilità del 99,tanti nove %.
|
|
|
la modifica software sarebbe minimale
E se invece l'attacco avvenisse istantaneamente? Cioé invece di attendere 3 mesi questa entità iniziasse fin da subito a pubblicare i suoi blocchi con una velocità leggermente superirore a quella del resto della rete? La rete come si comporterebbe? I minatori continuerebbero a minare la loro catena o per qualche motivo dettato dal loro software inizierebbero a produrre blocchi legati alla catena dell'attaccante? Blocchi che verrebbero comunque esclusi dall'attaccante ma che sarebbero in ogni caso legati alla catena dell'attaccante e dunque persi per sempre. L'eventuale "modifica minimale" quale catena ripristinerebbe? La rete si coalizzerebbe subito contro l'attaccante o per un certo periodo di tempo si creerebbero fork a profusione? Non accadrebbe nulla di che, e sospetto sia proprio lo scenario che ha in mente @bitbollo Se la tengo segreta tre mesi e poi la pubblico quando la mia è seppur di poco, ma certamente, più lunga, vengono reorgati tre mesi di blocchi. E' un disastro, bitcoin inviati da indirizzi ad altri in questi tre mesi per pagamenti tornano al primo indirizzo risaltente a tre mesi fa! Qui per forza serve in tempi brevi un fork per ignorare questi tre mesi di blocchi diversi minati dall'attaccante! Se invece l'attaccante pubblica subito per primo il prossimo blocco, magari vuoto (o inserendo soltanto le transazioni che vuole censurandone alcune) semplicemente rallenterà la rete nel senso che ogni 100 blocchi ne avremo 51 vuoti e 49 "normali", ci toccherà aspettare mediamente un po' di più prima che un miner dei 49 benevoli ci mini la nostra transazione. Basterà portare pazienza per il tempo in cui l'attaccante finirà il suo badget da sprecare..In effetti però si potrà rifinanziare anche vendendo i bitcoin che vincerà minando per primo il 51% dei blocchi, cmq ad un certo punto si stuferà di questi mancati guadagni.
|
|
|
BIP148 (UASF) fu pubblicata il 4 luglio per entrare "in vigore" il 1° agosto. Già al 21 Luglio, i miner che rifiutavano segwit iniziarono a cambiare idea...  Qui, vista l'emergenza, sarebbe tutto più rapido, la modifica software sarebbe minimale e i full node non sono gestiti da bitcoiner occasionali ma da soggetti che avrebbero tutto l'interesse ad aggiornare nel più breve tempo possibile. I nodi "benevoli" sarebbero tutti meno uno. Il miner, dopo aver buttato nel cesso tonnellate di dollari per questo suo capriccio, si troverebbe contro tutti: exchange (che avrebbero interesse a non listare la sua altcoin), wallet. aziende sviluppatrici, fondi di investimento, altri governi...tutti rifiuterebbero la sua blockchain Per non parlare poi del rischio di essere scoperto: minare segretamente una chain più lunga in modo totalmente invisibile è praticamente impossibile, si noterebbero blocchi orfani con frequenza più alta del normale riconducibili allo stesso soggetto. Inoltre il miner malevolo dovrebbe assegnare timestamp retroattivi ai blocchi che produce per non farli apparire troppo recenti e si noterebbe un disallineamento tra timestamp e reali orari di propagazione. Se una nazione volesse danneggiare bitcoin otterrebbe un risultato migliore (risparmiando anche miliardi di dollari) semplicemente rendendolo illegale o rendendo illegale il mining. Oops anche questo però è già successo: la Cina nel 2021 fece proprio questo, l'hashrate calò del 70% in poche settimane...come è andata a finire lo sapete... Il network effect, la teoria dei giochi e l'interesse economico sono fattori di cui viene spesso sottovalutata l'immensa forza. P.s: veramente vogliamo usare gli USA come esempio? Con il Presidente che al momento holda 15.000 BTC ?   Ottimo stiamo parlando della stessa teoria di giochi grazie alla quale sono d'accordo pure io che di fatto un attacco 51% è impossibile. Concordiamo che tutti questi dollari spesi per arrecare un disservizio di pochi giorni se non ore non ne valga la pena, oltre a tutte le altre implicazioni di chi è "immanicato" con cosa. Quello che mi premeva maggiormente dimostrare erano gli ordini di grandezza in gioco: un attacco 51% non è paragonabile ad un bruteforce di una chiave privata. Benchè stupido, inefficacie alla fine della fiera, costoso, risulta fattibile in tempi umani a differenza del bruteforce. Comunque qui si apre una parentesi filosofica interessante: bitcoin è tanto decentralizzato quanto è difficile mettere d'accordo la maggioranza su un cambio di regole anche soltanto in soft fork. A meno di una minaccia esistenziale. Esempio: per adottare che ne so C.I.S.A. ci andrà un soft fork e non sarà per nulla detto che la maggioranza si convincerà della cosa, bitcoin potrebbe già essere ossificato perchè troppo decentralizzato. Esempio due: avviene un 51% attack segreto oppure inventano un computer quantistico che scopre in tempi umani le chiavi private, sono entrambe minaccie esistenziali. Avverrà per forza un fork per il semplice fatto che i nodi che non implementeranno la modifica non sopravviveranno. In un caso chi non implementerà la modifica non sopravviverà perchè resterà in una chain economicamente sfiduciata dal 51% avvenuto, nel secondo caso perchè restaranno in una chain in cui è il far west di chi ruba chiavi privata agli altri quindi anch'essa una chain senza valore.
|
|
|
@Wrib ho fatto decine di esempi anche numerici se oltre a aver letto "guarda il video " dovresti anche averli intravisti  Scusami ma i tuoi esempi numerici in questo post mi sono poco chiari, in particolare, forse li interpreto male io, mi sembra di capire che stai calcolando le probabilità di costruire una catena più lunga avendo il 51% della potenza in un modo che non mi torna. Se ti chiedessi più direttamente, in questo mio post: https://bitcointalk.org/index.php?topic=5552695.msg65658005#msg65658005 cosa c'è che numericamente non ti torna o ti sembra scorretto, cosa mi correggeresti? Così tagliamo la testa al toro, io non sono qui per insegnare, ma per capire se sbaglio qualcosa.
|
|
|
Ragazzi ma dove eravate nel 2017?  A parte che parliamo di fantascienza ma in ogni caso la maggioranza dei nodi potrebbe sempre attivare un UASF con cui respingere i blocchi del miner malevolo (con più del 50%) modificando le regole del consenso. Nel protocollo bitcoin i nodi seguono la catena più lunga, ma a condizione che sia valida. Se il miner insistesse, si avrebbe un chain split e il miner si troverebbe sì su una catena più lunga peccato che sarebbe un altcoin tipo bitcoin cash In ogni caso a nessuno converrebbe mai arrivare a tanto, ma proprio a nessuno per cui stiamo parlando di asini che volano. Bitcoin non è solo codice e hashpower, ma soprattutto un sistema sociale e politico. La storia dimostra che la forza bruta da sola conta molto poco nel definire "cosa è bitcoin". Ragioniamoci assieme. Non mi sembra esattamente la stessa situazione di uno scisma annunciato come per esempio bitcoin cash. Qui si tratta di un'operazion segreta che si svela improvvisamente. Gli Stati Uniti (o la Cina o altro mega soggetto) sta minando segretamente un chain di blocchi vuoti parallela da 3 mesi. Tale chain è più lunga di quella pubblica che è la "vera e propria" chain di bitcoin. Gli Stati Uniti decidono dopo tre mesi di propagare ai nodi di bitcoin la chain segreta più lunga, i full node di tutto il mondo iniziano a fare reorg a partire da tre mesi fa. Le persone che gestiscono i full node, che tempi di reazione hanno ? Quanto ci mettono ad accorgersi che il full node sta automaticamente facendo dei danni e che occorre far girare una versione modificata del full node stesso per rifiutare, con una nuova regola di consenso*, i blocchi che arrivano da tale miner malevolo? Ci sono meccanismi già pronti istantanei che non conosco che riducono questo transitorio dovuto ai tempi di reazione umani dell'accorgersi del problema e dell'accordarsi sulla pezza? *parentesi, basta un UASF o serve un hard fork? Per le mie limitate conoscenze "da 2017  " mi viene da pensare che prima che ci si accorga della situazione, si metta in campo la modifica (condivisa tra la maggioranza dei nodi benevoli) al software per fare un fork che escluda i blocchi, fino a nuovo cambio del consenso di fatto validi, del miner malevolo, passa un certo periodo di tempo. Sicuramente a tendere il problema rientrerà ma tale periodo di tempo di disservizio è una cosa che sfiducia la rete bitcoin -> obiettito dell'attaccante raggiunto.
|
|
|
Anche se detiene più del 50% non ci fa nulla all' atto pratico. Ha un leggero vantaggio, che non serve a nulla. Oltre a non avere senso, non cambia nulla che ha il 51%. Ennesimo esempio. Compri il 51% delle combinazioni super enalotto (che è uno scricciolo come numero rispetto alla difficoltà di mining). Hai qualche "certezza" di vincere una o più lotterie di fila? Davvero, non mi stancherò di ripeterlo, ma guardare quel video esplicativo... no?!
Guarderò il video, ma sarebbe interessante che portassi qualche tuo ragionamento numerico invece di ripetere "guardate il video", magari tra qualche anno non ci sarà più online "quel video" e chi leggerà questa discussione penserà ma di che cavolo stanno parlando. Io penso che non stai inquadrando correttamente gli ordini di grandezza delle cose coinvolte, ma soltanto tutta la teoria dei giochi che ci salva di fatto dal 51% attack. Supponiamo che per assurdo gli Stati Uniti si pongano come obiettivo di stato quello di scalfire la credibilità di bitcoin. Supponiamo che siano determinati a farlo come erano determinati ad arrivare sulla luna prima dei sovietici. Si stanno ponendo un'obiettivo molto grande ma forse fattibile. Non si stanno ponendo l'obiettivo di fare un volo interstellare su alpha centauri che non è fattibile in tempi umani, così come non si pongono come obiettivo quello di fare un bruteforce ad una chiave privata di bitcoin. Torniamo all'obiettivo di fare questo 51% attack. Sarà fattibile? Facciamo due conti a spanne. Supponiamo quindi che gli Stati Uniti mettano su una mining farm ostile che da oggi in poi si mette a minare nuovi blocchi vuoti in segreto con l'obiettivo di scalfire la credibilità di bitcoin, dannaggiandolo. La mining farm avrà sempre più potenza di calcolo di tutti i miner del mondo assieme, diciamo questo benedetto 51%. Quanto ci sta mettendo, mediamente, il resto del mondo a minare un nuovo blocco con l'attuale difficoltà? 10 minuti. 1 blocco ogni 10 min -> 6 blocchi ora -> 144 blocchi giorno -> 1440 blocchi in 10 giorni In 10 giorni il resto del mondo mina 1440 blocchi come valore atteso. Ora ci si deve chiedere, il 51% dell'hash power totale, o detto in atri termini, abbiamo il 102% rispetto al 100% "pubblico", in quanto tempo mediamente valida un nuovo blocco? Se con 100 di hash power si mina un blocco in mediamente 10 minuti (600 secondi), con 102 di hash power mi aspetto mediamente un blocco ogni 588 secondi (ho tolto il 2%). Minando per 10 giorni, i miner di bitcoin hanno minato come valore atteso 1440 blocchi. La farm segreta a minare 1440 blocchi ci mette 9,8 giorni che sono approssimativamente 9 giorni, 23 ore e 30 minuti. Quindi la farm segreta in 10 giorni esatti ha guadagnato mezz'ora che sono tre blocchi di vantaggio allo scoccare del decimo giorno. Ci si attende, probabilisticamente parlando, che in 10gg la farm segreta abbia una catana più lunga di 3 blocchi rispetto a quella pubblica. Gli Stati uniti vogliono stare tranqulli e minano per 1 mese, il loro vantaggio atteso sale a 9 blocchi. Se ci fossero scenari statisticamente sfortunati continuerebbero a minare un ulteriore mese, facciamo 2 mesi per essere molto sicuri. A questo punto si palesano al resto del mondo e i full node di tutto il mondo reorgano in favore di questa chain più lunga (si è usata la stessa difficoltà) piena di blocchi vuoti: disastro. Facendo i malevoli, gli Stati Uniti rinunciano al potenziale ritorno dei bitcoin minati che avevo stimato essere sui 22 milioni di dollari in uno dei post precedenti. Gli Stati Uniti la corrente la pagano meno che il cittadino finale in un contesto del genere quindi il loro mancato guadagno consumando corrente da centrali adibite "al piano" è minore ma lasciamo questa cifra di 22 milioni. Abbiamo detto 2 mesi, quindi sono 1 Miliardo e 320 milioni di dollari. Facciamo 2 miliardi per esagerare. Aggiungiamo qualche miliardo per realizzare gli asics e le centrali elettriche di vario tipo? Facciamo 10-20-50 miliardi? 30 miliardi di dollari era il budget stanziato per l'intero programma Apollo per andare sulla luna nel 1969, che corrispondono a 150 miliardi di dollari di oggi considerando l'inflazione. L'Italia stato dal pil molto più piccolo, si è indebitata con il bonus 110% dell'era covid di 100-200 miliardi. Quindi gli ordini di grandezza in gioco mi dicono che per gli Stati Uniti sarebbe fattibile un 51% attack da un mero punto di vista tecnico/economico. Ma poi, se mettono su una linea produttiva di asics in segreto, si metterebbero a produrne soltanto per un 51% di hash power? A sto punto ne produrrebbero per avere il 60% dell'hash power con un incremento di costi minino e tempi mediamente attesi di riuscita dell'attacco più bassi.
|
|
|
No non è la stessa cosa.  È un po' come avere timore di un evento estremamente improbabile. Ti ho fatto un esempio con un evento ancora più improbabile ma non è che cambi molto. Anche se hai il 51% non concludi assolutamente nulla per quanto teoricamente hai un po' meno "zeri" rispetto a dover indovinare una chiave privata . Ergo, sono due eventi praticamente impossibili, matematicamente... Che poi uno abbia ,256 volto 0 e un altro solo 100 non è che lo rende più plausibile. Se questa cosa dell' attacco 51% fosse stato una realtà plausibile (imho) avrebbero benissimo fatto di tutto per attuarlo. E nei primi tempi era possibile, vedi il "ban" delle schede grafiche dal mining  o anche reorg massive dei blocchi .... Ma ricadiamo nel praticamente impossibile in un caso e nell'economicamente sconveniente nell'altro. Un bruteforce in tempi umani è come sognare di fare un viaggio interstellare, uno stato che vuole fare un 51% attack è come stanziare il budget per un viaggio su marte. Ti faccio una domanda diretta. Se sono gli Stati Uniti e dirotto l'energia di alcune centrali nucleari ad un datacenter di asics che supera l'hash power di tutti gli altri messi assieme e ogni giorno aumento di un poco le dimensioni di tale datacenter per non farmi mai superare anche dall'aumento del resto della rete, c'è qualche legge fisica che mi impedisce di realizzare un 51% attack?
|
|
|
@Wrib Teoricamente, puoi anche generare una chiave che possiede migliaia di Bitcoin... Vien da sé che per quanto non sia IMPOSSIBILE come evento in realtà lo è visto che dovrei scrivere un numero che abbia diverse centinaia di 0. Della serie, la matematica dietro btc non è "assoluta" ma ovviamente si assumono determinati eventi come "implausibili" se rapportati alla realtà di un evento.
Esempio proprio questo della chiave da generare. Puoi sempre generare una chiave che è stata già usata ma è un ipotesi talmente remota che ... Non può essere una reale preoccupazione.idrm con l'attacco al 51%. Quel video che vi ho postato spiega perché fondamentalmente questo è un "non rischio". Non si tratta di vincere 1 blocco ma poi e più blocchi di fila in continua "battaglia" contro tutti. Immagina fallisse... Un disastro economico per l'operatore malevolo che con una probabilità praticamente irrisoria andrebbe a perdere tutto!
Questi sono argomenti assolutamente interessanti . Nel momento in cui ci si rende conto che tutte queste possibilità sono state vagliate prima di lanciare il protocollo (vedi tempistica di produzione di blocchi) ti rendi conto che questo è qualcosa di "poetico" non un semplice protocollo per inviare informazioni e dati.
Ok perfetto allora siamo d'accordo e stiamo dicendo la stessa cosa, se si parla di teoria o pratica abbiamo situazioni "de facto" diverse. Visto che citi le chiavi vorrei però sottolineare che la questione "indovinare una chiava privata di un indirizzo con dei bitcoin" vs "realizzare un 51% attacck minando per giorni una catena alternativa con più lavoro" benchè nella pratica entrambi impraticabili hanno "ordini di grandezza di impraticabilità diversi". Indovinare una chiave privata con un bruteforce anche con tutta la potenza di calcolo esistente al mondo è impossibile in tempi umani. Un giorno di 51% attack non è "umanamente impossibile" per un'entità statale delle dimensioni degli Stati Uniti ad esempio. Rinuncia al potenziale ritorno di 3,125 bitcoin ogni 20 minuti (se hai il 51% ogni 20 min circa in media vinci la gara a chi mina per primo un blocco) cioè circa 9 e qualcosa bitcoin all'ora che sono 225 bitcoin al giorno. Sono 22 milioni di dollari al giorno di mancati ricavi, più lo sforzo titanico di costruire delle centrali nucleari per alimentare il datacenter oltre alla produzione degli asic. Titanico (e stupido) ma non umanamente (per ora) impossibile.
|
|
|
|