Solutii propuse pentru cheltuieli duble

17 iulie 2014 bitcoin

Articol scris de David Mitran

Este surprinzator sa descoperim ca Satoshi nu a introdus o tranzactie intr-un timp anume in software-ul Bitcoin. Nu se stie de ce nici creatorul original al Bitcoin si nici, mai tarziu, dezvoltatorii Bitcoin nu au dat aceast ordin. Acest lucru poate fi vazut ca o expresie a unei ideologii nepotrivite. A fost data o parere conform careia regula celui mai lung lant poate intr-adevar sa rezolve aceste probleme intr-un mod mai adecvat. Insa, din nefericire, nu a fost asa.

In prezent, un calendar aproximativ al tranzactiilor este cunoscut in reteaua Bitcoin si acesta vine de la numarul de blocuri in care o anumita tranzatie este inclusa: are o precizie de aproximativ 10 minute. Tranzactiile fara o anumita taxa ar putea sa fie mult mai vechi decat blocurile amintite. Oricum, toate blocurile sunt inregistrate in retea si este foarte usor pentru software-ul Bitcoin sa obtina un calendar mai precis al tranzactiilor cu o precizie de 1 secunda, poate mai bine. Un numar mare de site-uri web, precum blockchain.info deja fac asta: ei publica marcaje de timp pentru toate tranzactiile Bitcoin care corespund celui mai apropiat moment in care aceste tranzactii au fost efectuate.

O observatie preliminara este ca in sistemul Bitcoin actual, fiecare cantitate de Bitcoini precum cele create sau atribuite unui anumit public tinta, prin cateva tranzactii anterioare, poate fi folosit doar o singura data. Trebuie sa existe cel mult o singura semnatura digitala care transfera cantitatea data unui alt set de chei publice. Doua semnaturi diferite indica cheltuieli duble.

131118221627-china-bitcoin-story-top

Solutia este destul de simpla:

  1. In cazul unei cheltuieli duble, daca al doilea eveniment este mai vechi cu sa spunem 20 de secunde dupa prima tranzactie, atunci prima tranzactie va fi simplu considerate valida, iar cea de-a doua invalida. Aceasta se bazeaza pe cel mai devreme eveniment, ca marcaj de timp, ceea ce demonstreaza ca o tranzactie a avut loc mai devreme.

Acest lucru pare rezonabil stiind ca timpul de mijloc pana cand un nod primeste un bloc este de 6.5 secunde. Implementarea unui astfel de mechanism nu este evident si va fi discutat separat in cele ce urmeaza. Oricum, pare ca ar putea fi lasat pietei libere: mai multe mecanisme ar putea functiona in mod simultan. De exemplu, une poate folosi imediat marcaje de timp publicate de blochchain.info si in mod simultan poate folosi marcaje de timp din alte surse. Pentru solutii care previn serverele Bitcoin sa manipuleze aceste marcaje in timp, avem nevoie sa propunem mecanisme optionale, precum securizarea bitstamps sau utilizarea mecanismelor de conses distribuite suplimentar. Dar, aceste intrebari le vom dezvolta intr-un alt articol.

  1. In cazul unor cheltuieli duble, daca ambele tranzactii vin in mai putin de 20 de secunde una fata de celalalta, minerii nu ar trebui sa includa niciuna din aceste tranzactii in blocul pe care ei il au. Cu toate acestea, unii mineri pot accepta o tranzactie, deoarece ei au primit doar una din aceste tranzactii sau pentru ca ei incearca sa escrocheze. Atunci, blocul lor poate sa fie invalid deoarece ei nu au fost indeajuns de grijuli cand au colectat toate tranzactiile care au avut loc. Pentru minerii cinstiti, acest lucru va fi putin probabil. Insa, acest lucru are sens si ii determina pe minerii responsabili sa asigure asta: aceasta are loc deoarece minerii sunt mai putini decat nodurile obisnuite de retea si bazinele miniere care se presupune ca ii ajuta sa faca lucrul corect.

Cu alte cuvinte, un bloc minat poate fi considerat invalid daca include doar o tranzactie in timp ce alte doua existau, sa spunem cu 20 de secunde mai devreme de a fi produse si daca aceste tranzactii erau apropiate in ceea ce priveste durata lor in timp. Daca una avea loc mult prea devreme, nu putea fi inclusa. Inca o data, aceasta decizie de a include sau nu o tranzactie data poate fi descentralizata.

Toate acestea necesita o forma de marcaj in timp si securitate impotriva manipularii acestor marcaje in timp poate fi implementata fie in software-ul current, fie prin conses sau marcaje in timp sigure. O alternativa a marcajelor in timp poate fi un simplu mechanism de consens, prin care numeroase noduri de retea pot certifica ca au vazut doar o tranzactie mai devreme decat o tranzactie mai tarziu. Acest lucru poate fi usor efectuat: putem refolosi actiuni care sunt deja calculate de mineri in cantitati vaste sau sa selectam doar o anumita actiune cu un numar suficient de zerouri. Putem sa spunem ca daca tranzactiile maruntite intr-o anumita ordine intr-un copac Merkle, inseamna ca acest miner a vazut anumite tranzactii mai devreme sau un alt mechanism asemanator, asumand ca majoritatea minerilor sunt cinstiti.

Discutie: Aceasta nu este inca o solutie completa. Acest lucru necesita mai multa munca pentru a specifica si analiza daca face job-ul bine sau daca nu conduce spre noi atacuri.

Remarca: Aceasta solutie nu este o nevoie urgenta de monede crypto mai mari care sa se alature unei pozitii dominane si care are nevoie de multa putere hash. Ei ar putea supravietui ani intregi fara asta. Este totusi necesar tuturor criptomonedelor care sunt supuse riscului de auto-distrugere daca nu este aplicat, asa cum am aratat in acest articol.

Accesorii: Probabil trebuie sa solicitam mai mult decat un calendar pentru toate tranzactiile Bitcoin. Am putea de asemenea sa solicitam calendare pentru toate semnaturile in parte. O semnatura digitala ofera securitatii garantia care raspunde acestor doua intrebari: cine (semneaza) si ce (este semnat). O semnatura digitala care include un calendar raspunde de asemenea si la intrebarea cand (a fost autorizata tranzactia).

Limitari: Un factor major care este de asteptat sa afecteze dezvoltarea si adoptarea unor solutii problemei noastre este marimea lantului de blocuri in Bitcoin care este stocat la nodul fiecarei retele mari si care are aproximativ 14 gigabytes.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *