Loading Posts...

Cum funcționează Lightning Network (partea I)

În ultima perioadă, am discutat destul de des în publicația noastră despre “Lightning Network”. Dar ce este de fapt această rețea? Ce sunt canalele de plată? Cum sunt construite? La ce folosesc? Iată câteva întrebări la care Gazeta Bitcoin își propune să răspundă, explicând în detaliu tot acest concept.

Când se referă la Lightning Network, cei mai mulți au doar cuvinte de laudă. Rețeaua Lightning poate rezolva orice problemă de scalare a Bitcoinului, tranzacțiile sunt confirmate imediat, iar securitatea este mult îmbunătățită.

Așa se spune, dar chiar așa se și întâmplă. Dar dacă cineva spune că poate explica în mod simplu noțiunea de Lightning Network, cu siguranță se înșeală. Conceptul de Lightning Network este unul complex și foarte stufos. Vom încerca totuși să explicăm cât mai pe înțelesul tuturor.

Cooperativa munca în zadar

Conform BTC Manager, pentru a înțelege Lightning Network trebuie în primul rând să înțelegem rețeaua Bitcoin. Când vorbim despre Bitcoin, vorbim de o rețea răspândită în toată lumea, în care fiecare membru își aduce cumva aportul. Fiecare nod primește, validează, stochează și transmite tranzacții. Acesta este modul de funcționare al rețelei, dar este unul ineficient.

Acum să ne imaginăm un grup de 250 de turiști care călătoresc de la București la Stockholm, fiecare cu autoturismul propriu. Sau un grup de cinci copii care trebuie să rezolve împreună cinci probleme la matematică, însă în loc de a schimba rezultatele între ei, fiecare lucrează la toate problemele. Sau, ca ultim exemplu, să ne gândim la șapte invitați care trebuie să meargă împreună în același loc în vizită și toți doresc să mănânce aceeași supă. Fiecare invitat ia de pe Internet rețeta supei, apoi o printează și se duc toți la același supermarket, unde fiecare cumpară individual toate ingredientele necesare. Și apoi toți merg la gazda care îi așteaptă și fiecare își primește supa.

Putem avea mii de exemple similare. Mesajul este clar: Bitcoin are probleme de scalare.

Lightning Network scalează eficient

Rețeaua Lightning ne scapă de aceste probleme. Practic se creează o rețea de canale de plată, în cadrul căreia fiecare canal transmite o tranzacție de la expeditor la destinatar. Cu alte cuvinte, dacă Cristian trimite fonduri către Alin, tranzacția nu trebuie să fie validată, transmisă și stocată de fiecare nod Bitcoin, ci doar de nodul de care aparțin Cristian și Alin. Prin această mișcare se rezolvă deodată mai multe probleme ale Bitcoinului:

  • Anonimitate: în reţeaua Bitcoin, oricine poate vedea ce face fiecare utilizator. Practic, Blockchain-ul reduce drastic anonimitatea tranzacţiilor. Dacă oricine poate vedea şi stoca orice tranzacţie, Blockchain-ul reprezintă un fel de registru public al afacerilor fiecăruia.
  • Scalare: o reţea vastă ca Bitcoin nu poate scala bine. Dacă se mai adaugă elemente, traficul se aglomerează şi mai mult, crescând şî încărcătura fiecărui nod. Din aceste motive, sunt şanse reduse ca Bitcoin să atingă un număr de tranzacţii apropiat de cel realizat de PayPal sau Visa şi totodată să rămână o reţea descentralizată. Reţeaua Lightning poate aduce o contribuţie importantă în acest sens.
  • Viteză: tranzacţiile cu Bitcoin se pot vedea aproape imediat, dar timpul în care sunt confirmate de către mineri variază de la câteva minute până la câteva ore. Lightning Network reduce acest interval la minim.

Toate aspectele de mai sus ar fi extraordinare, dacă s-ar adeveri. Dar sunt ele posibile? Şi dacă da, cum se pot aplica? Veţi regăsi toate răspunsurile mai jos.

Canale de plată

Ce este un canal de plată? Este o metodă prin care se efectuează tranzacţii în afara lanţului, între două părţi. Pentru a se realiza un canal de plată este necesar ca tranzacţia să fie semnată de ambele părţi (tranzacţie 2:2), printr-o adresă care permite mai multe semnături digitale (multisig). De exemplu, pentru o plată de 0.1 BTC tranzacţia 2:2 înseamnă ca ambele părţi implicate trebuie să semneze tranzacţia pentru ca plata să se efectueze.

După ce ambele părţi au tranzacţionat criptomonedele către adresa multisig, se creează o nouă tranzacţie. De exemplu, una prin care se plătesc 0.1 BTC către cele două părţi; şi aceasta este, de asemenea, semnată de către cele două entităţi. De aici încep să se complice lucrurile. Această tranzacţie nu este difuzată în reţeaua Bitcoin şi nu este confirmată de mineri, ci este doar partajată de cele două părţi implicate în canalul de plată. În loc să o transmită în reţea, cele două entităţi pot modifica tranzacţia de câte ori vor. Aceste modificări ale tranzacţiei, semnate de ambele părţi, pot fi efectuate prin plăţi în afara lanţului.

Puteţi să vă gândiţi la canalele de plată ca la nişte foi de hârtie care sunt completate, semnate şi depuse apoi într-un depozit bancar. Însă, în loc să fie înmânate reprezentanţilor băncii, ele pot fi în continuare modificate de către cele două părţi şi se pot nota în continuare tranzacţii pe ele.

De exemplu, să considerăm că un utilizator realizează un canal de plată cu o persoană parteneră şi amândoi sunt plătiţi cu 0.1 BTC. Dacă utilizatorul vrea să îi plătească partenerului 0.0001 BTC, el efectuează şi semnează o tranzacţie prin care el însuşi va primi 0.0999 BTC, iar partenerul va primi 0.0001. Atunci când unul dintre utilizatorii implicaţi va trimite tranzacţia în reţeaua Bitcoin, astfel încât aceasta să fie confirmată de mineri, canalul se închide. Dacă utilizatorul însă ar fi plătit zilnic 0.0001 BTC către partener şi canalul ar fi închis după un an, ar fi vorba de 365 de plăţi, dar doar o tranzacţie ar fi publicată în reţea (Blockchain), prin care s-ar plăti 0.0635 BTC către primul utilizator şi 0.0365 BTC către partenerul acestuia.

Aceste canale de plată pot fi utile când între două părţi au loc numeroase tranzacţii. Dar întrucât exemplele de mai sus ar reprezenta doar o aplicaţie de nişă, canalele de plată îşi pot pune în practică adevărata valoare doar dacă sunt toate interconectate într-o reţea de canale. Iar Lightning Network exact asta face: permite utilizatorului să efectueze plăţi prin mai multe canale – de la Cristian la Alin, la Magda, la Răzvan la Monica ş.a.m.d.

Aceasta este idea de bază. Dar înainte de a vorbi despre reţea, trebuie să înţelegem şi problemele canalelor de plată, dar şi soluţiile pentru aceste probleme. Întrebarea principală este aceeaşi ca în cazul Bitcoinului: cum se pot realiza aceste lucruri fără a fi necesară încrederea între părţi?

Care este problema?

În white paper-ul Lightning Network, care a fost scris de Joseph Poon şi Taddeus Dryvja, sunt identificate două probleme majore.

Problema ostaticilor

Imaginaţi-vă că un utilizator A deschide un canal de plată cu utilizatorul B. Ambii trimit 1 BTC către adresa multisig 2:2. Însă, înainte ca utilizatorul A să trimită bani prin canal, utilizatorul B, care este un răufăcător, spune că el nu va închide niciodată canalul, blocând pentru totdeauna fondurile utilizatorului A. Apoi, îl şantajează pe utilizatorul A, spunându-i că trebuie să plătească 0.5 BTC pentru a îi debloca banii. Practic, oricare din părţile implicate într-un canal de plată poate să îi reţină ca “ostatice” fondurile celeilalte.

Cum se poate preveni această situaţie? Poon şi Dryvja au găsit o soluţie inteligentă şi destul de simplă. În primă fază, ambii utilizatori construiesc şi partajează tranzacţia, mişcare prin care se deschide canalul de plată şi se trimit criptomonedele către adresa multisig. Dar niciuna dintre părţi nu o semnează, nici nu o transmite. În acest moment, ambele părţi ştiu ce se va întâmpla, dar niciuna nu are semnăturile necesare pentru ca tranzacţia să devină reală. Canalul de plată există doar la nivel de concept.

Însă, în acest moment există suficiente informaţii pentru a se efectua tranzacţia care închide canalul prin răscumpărarea Bitcoinilor din respectiva adresă. Deci ambii utilizatori efectuează tranzacţia, o semnează şi o partajează, dar nu o transmit. Este ca un plan de rezervă în caz că una dintre părţi vrea să o escrocheze pe cealaltă.

Doar după ce ambii utilizatori au tranzacţia prin care se închide canalul, ei vor semna şi tranzacţia prin care se deschide canalul şi o propagă în reţeaua Bitcoin. Astfel, niciuna dintre părţi nu poate să îi reţină criptomonedele celeilalte ca ostatice, întrucât oricare dintre părţi poate închide canalul când vrea.

Dar pe lângă această problemă, mai exista una.

Problema tranzacţiilor cu obligații vechi

Să luăm ca exemplu utilizatorul A, care îi plateşte zilnic diverse sume utilizatorului B, prin intermediul unui canal de plată. Iniţial, canalul a fost deschis cu o balanţa de 0.5:0.5 BTC, iar în ziua cu numărul 200 avem o balanţă de 0.3:0.7. O zi mai târziu, utilizatorul A doreşte să închidă canalul. Însă în loc să ia cea mai recentă tranzacţie, o ia pe prima. Ca rezultat, toate tranzacţiile din ultimele 200 de zile vor fi şterse, iar tranzacţia iniţială de închidere, prin care fiecare din utilizatori primeşte 0.5 BTC, este publicată în Blockchain. Este ca şi cum canalul de plată nu ar fi existat niciodată.

Poon şi Dryvja au reuşit să rezolve şi această problemă. Soluţia de data aceasta este însă destul de complicată. Înainte de toate, vom defini câteva elemente. Autorii numesc tranzacţia prin care se deschide canalul de plată drept “tranzacţie de bază”. Tranzacţia de închidere a canalului este denumită “ tranzacţie de obligare”. Pentru a se modifica balanţa canalului, utilizatorul trebuie să scrie şi să semneze o nouă tranzacţie de obligare.

Imediat după ce utilizatorul schimbă balanţa unui canal, există concomitant mai multe tranzacţii de obligare. Fiecare poate fi în mod legitim publicată în Blockchain. Cum se rezolvă această problemă? Cum poate utilizatorul să garanteze că tranzacţia cea mai recentă va fi cea validată în Blockchain?

Poon şi Dryvja au conceput un model de tranzacţionare prin care se poate aplica o pedeapsă entităţii care publică o tranzacţie de obligare veche. Pedeapsa constă în reţinerea fondurilor din canal. Modelul este alcătuit din două părţi distincte.

În primă fază trebuie identificată tranzacţia veche – lucru relativ uşor de realizat. Practic, trebuie realizate două tranzacţii distincte de obligare, dar identice din punct de vedere funcţional. Aceasta se efectuează prin mecanismele criptografice care sunt aplicate în Bitcoin. Fiecare dintre părţi trebuie să semneze input-urile (intrările) şi să le ofere celeilalte părţi, care va semna întreaga tranzacţie.

Pentru a exemplifica procedura, imaginaţi-vă că semnaţi o hârtie, o înmânaţi unui prieten, care semnează altă hârtie, apoi le depune pe ambele într-un plic şi semnează şi plicul. Şi viceversa. Fără a intra în amănunte tehnice, în principiu este vorba de două tranzacţii cu ID-uri diferite, dar care fac acelaşi lucru.

Înainte de a avansa, trebuie să găsim o cale de a anula tranzacţiile incorecte – cele care încalcă regulile. Este necesar un mecanism care să asigure că doar tranzacţia cea mai recentă va ajunge în Blockchain, iar toate celelalte sunt revocate. Aici intervine un script numit “OP_CHECKSEQUENCEVERIFY” (îl vom prescurta cu CSV). Acest script va folosi un câmp de secvenţă al tranzacţiilor pentru a bloca output-urile (ieşirile, fondurile rezultate din efectuarea tranzacţiei); tranzacţiile au nevoie de un anumit număr de confirmări din partea minerilor pentru a permite ca output-urile să poată fi cheltuite. De exemplu, dacă primiţi 1 BTC, îl puteţi cheltui doar după ce tranzacţia este confirmată în 100 de blocuri. Este ca şi cum tranzacţiile ar fi sigilate pentru un interval de timp.

Cu CSV este posibil să se realizeze o schemă de tranzacţii care să permită schimbari ulterioare ale tranzacţiilor. Pentru aceasta, fiecare parte efectuează o tranzacţie de obligare cu două rute. Mai întâi Bitcoinul este plătit fiecăreia dintre cele două părţi, aşa cum trebuie în mod normal. Output-ul este însă blocat şi necesită un anumit număr de confirmări pentru a putea fi cheltuit iarăşi. A doua rută este aceea prin care toate fondurile canalului sunt plătite celeilalte părţi. Această rută distinge cele două tranzacţii de obligare. Al doilea utilizator (a doua parte) poate activa această rută, care este aplicată imediat dar cu condiţia ca tranzacţia să fie deja transmisă.

Într-adevăr, este complicat. Însă în curând toate piesele acestui puzzle se vor strânge şi vor avea sens. Scenariul în discuţie este acela în care al doilea utilizator doreşte să închidă canalul de plată cu o tranzacţie veche de obligare. Doar că în loc de 0.6 BTC, cât ar trebui să primiţi conform balanţei canalului, al doilea utilizator doreşte să vă plătească doar 0.5 BTC.

După ce el a publicat tranzacţia în reţeaua Bitcoin şi după ce minerii au introdus-o într-un bloc, output-ul poate fi cheltuit – să spunem – după 1000 de blocuri. Imediat după ce el a transmis tranzacţia, se întâmplă ceva foarte interesant: aveţi posibilitatea de a activa a doua rută a tranzacţiei pe care cel de-al doilea utilizator a semnat-o pentru primul, astfel încât primul utilizator poate salva toate fondurile din tranzacţia de obligare pentru el însuşi.

Cu alte cuvinte, când trimiteţi bani cuiva printr-un canal de plată, nu îi trimiteţi doar input-urile semnate pentru o nouă tranzacţie, ci şi informaţia necesară pentru ca al doilea utilizator să poate modifica orice tranzacţie anterioară, astfel încât să poată primi întreaga balanţă a canalului. Aceasta înseamnă că atâta vreme cât ambii utilizatori stau cu ochii pe canalul de plată, ei pot detecta fiecare tentativă de escrocherie a celeilalte părţi, şi fiecare are opţiunea de a îl pedepsi pe celălalt prin reţinerea tuturor fondurilor. Singura condiţie este că ambii utilizatori trebuie să fie online tot timpul.

Acum, după ce au fost rezolvate cele două probleme de mai sus, se poate crea un canal de plată fără a fi nevoie de încredere reciprocă. În a doua parte, vom explica cum se realizează şi pânza de canale a Reţelei Lightning.

Citește și: Cum funcționează Lightning Network (partea a II-a)

Cum vi s-a părut acest articol? Gazeta Bitcoin vă invită să ne scrieţi un comentariu pe iBitcoin.ro!

3
HeartHeart
1
WowWow
0
HahaHaha
0
SadSad
0
AngryAngry
Voted Thanks!

Gazeta Bitcoin

Redacția de știri.

Leave a Reply

Loading Posts...