Poate că Rețeaua Lightning este cea mai așteptată noutate tehnologică pentru bitcoin. Se presupune că acest sistem de plăți, ideea căruia a fost prezentat cu un an în urmă, va face posibilă efectuarea unui număr foarte mare de tranzacții aproape gratuit în afara blockchainu-lui bitcoin și pentru aceasta nu va fi nevoie de sacrificat securitatea.

Cel puțin trei companii — autorii ideii de LN fondată de Joseph Poon și Tadge Dryja Lightning, precum și Blockstream și Blockchain.info — lucrează în prezent la implementarea acestei tehnologii. Cu toate acestea, pe lângă cei implicați în această dezvoltare, puțini oameni înțeleg cum funcționează toată magia asta. Oferim cititorilor noștri să umple acest gol în cunoștințele lor.

Pentru a înțelege în mod corespunzător conceptul, trebuie să examinați în mod consecvent toate blocurile pe care le include. În primul rând, să ne dăm seama care elemente sunt implicate în crearea unui canal de plată bidirecțional — prima componentă importantă a Rețelei Lightning.

 

Elementul 1: Tranzacții neconfirmate

În esența sa, protocolul bitcoin constă în tranzacții care fac referință la tranzacțiile anterioare și probabil, la tranzacții viitoare. Fiecare tranzacție conține intrări cu adresele expeditorilor și ieșiri cu adresele destinatarilor lor. În plus, intrările ar trebui să includă cerințe pe care creatorul unei tranzacții trebuie să le îndeplinească pentru tranzacția să fie încheiată cu succes — cu alte cuvinte, el trebuie să dovedească faptul că are dreptul de a dispune de bitcoinii stocați la adresele respective. Pentru ieșirile tranzacției curente (și pentru intrările următoarei tranzacții) sunt specificate noi cerințe.

În prima aproximare, putem spune că rețeaua Lightning se bazează pe tranzacțiile obișnuite de tip bitcoin, numai aceste tranzacții nu sunt transferate în rețeaua bitcoin (cel puțin imediat). În schimb, ele sunt stocate pe nodurile de utilizator locale, dar pot fi trimise în rețea în orice moment.

Cu culoarea neagră este marcată o tranzacție confirmată. O tranzacție albastră poate fi trimisă rețelei de către Alice, dar numai dacă tranzacția anterioară este confirmată. O tranzacție roșie poate fi trimisă rețelei de către Bob — cu aceeași condiție: dacă tranzacția anterioară este confirmată. În acest exemplu, Alice poate oricând să semneze și să difuzeze tranzacția neconfirmată în rețea prin trimiterea a 2 bitcoin către Bob și numai după aceea Bob poate semna tranzacția trimițând un bitcoin lui Carol.

 

Elementul 2: mecanism de protecție împotriva cheltuielilor duble

Cel de-al doilea element al Rețelei Lightning nu necesită explicații detaliate, deoarece acesta este sensul existenței însăși a bitcoin-ului: protecția împotriva pierderilor duble. Dacă două tranzacții (sau mai degrabă două intrări) se referă la aceeași ieșire, numai una dintre ele poate fi confirmată de mineri. Este important să înțelegeți că tranzacțiile chiar neconfirmate pot intra în conflict chiar înainte ca unul dintre ele să fie confirmată.

În acest exemplu, Alice trebuie să selecteze tranzacția pe care dorește să o semneze și să o trimită la rețea. Nu poate obține confirmare pentru ambele tranzacții.

 

Elementul 3: semnătura multiplă

Cel de-al treilea element al rețelei Lightning Network este de asemenea simplă: acestea sunt adrese cu mai multe semnături. Așa numitele adrese-bitcoin, pentru deblocarea cărora sunt necesare mai multe chei private. Condițiile de deblocare pot fi foarte diferite, de exemplu 2 chei din 3, 15 din 15 etc. În Rețeaua Lightning se utilizează adesea semnături multiple în conformitate cu schema «2 din 2», adică pentru a cheltui bitcoinii stocați la o astfel de adresă, sunt necesare două semnături generate folosind două chei private.

Alice și Bob au creat o adresă cu o semnătură multiplă, cheia căreia este atât la Alice, cât și la Bob. Dacă unul dintre aceștia încearcă să cheltuie acești bitcoini, nu-i va reuși. Rețineți că după ce ați adăugat o semnătură unei tranzacții, nu puteți modifica conținutul ei. O semnătură criptografică este ceva între o tranzacție și parafă (iar de fapt este un șir lung, unic de numere).

 

Elementul 4: blocare temporară

Cel de-al patrulea element al rețelei Lightning Network este blocarea temporară. Aceasta vă permit să blocați bitcoinii din ieșire, astfel încât să poată fi cheltuiți (incluși în următoarea intrare) numai după o anumită perioadă de timp.

Blocările temporare sunt de două tipuri: absolute, sau CheckLockTimeVerify (CLTV) și relative sau CheckSequenceVerify (CSV). Blocarea CLTV se blochează până la un anumit moment (mai mult sau mai puțin) specific în viitor: până la momentul real sau un anumit bloc. În CSV, se folosește timpul relativ. De îndată ce ieșirea CSV este înregistrată în blockchain, trebuie să se genereze un anumit număr de blocuri înainte ca acești bitcoini să poată fi cheltuiți.

În rețeaua Lightning, blocarea CSV (indicată în figură pentru ore) este adesea folosită ca întârziere.

 

Elementul 5: hash-uri și secrete

Primitivele criptografice aparțin blocurilor fundamentale ale lui Bitcoin însuși, dar ele sunt folosite diferit în Rețeaua Lightning.

Pe scurt, «valoarea» sau «secretul» este un șir lung de numere unice, ceea ce este aproape imposibil de ghicit chiar și pe computerele foarte puternice. Acest secret poate fi «hashed» — convertiți la un alt șir de numere, sau «hash».Trucul este că oricine cunoaște semnificația poate obține cu ușurință hash-ul, dar inversul este imposibil: hashed este o operație unidirecțională.

Acest truc poate fi folosit în însăși Bitcoin – din nou, pentru a bloca bitcoinii. De exemplu, puteți include un hash în ieșirea unei tranzacții, cu cerința că oricine dorește să-l cheltuiască trebuie să specifice valoarea hash corespunzătoare din intrare.

În acest articol, secretul este reprezentat ca o cheie colorată, , iar hash-ul corespunzător este o lăcată de aceeași culoare.

 

Prima sarcină: canale de plată bidirecționale

Ideea canalelor de plată a fost discutată înainte de Rețeaua Lightning. Desigur, canalele convenționale de plată sunt utile, dar limitate: sunt unidirecționale. O caracteristică cheie a Rețelei Lightning este canalele de plată bidirecționale «fără încredere».

Deschiderea unui canal

Pentru a crea un canal de plată bidirecțional, părțile trebuie mai întâi să convină asupra tranzacției de deschidere. Această tranzacție determină suma depozitelor pe care trebuie să le plătească fiecare parte.

Să spunem că Alice dorește să trimită lui Bob un bitcoin. Alice și Bob au de gând să plătească reciproc deseori, deci decid să deschidă un canal de plată bidirecțional (poate că un bitcoin este prea mult pentru un canalul de plată, deoarece este mai potrivit pentru microplăți, dar nu este imposibil).

Pentru a deschide canalul, Alice și Bob trimit la adresa cu semnături multiple «2 din 2» cîte 5 bitcoin. Aceasta este «tranzacția de deschidere». Bitcoinii de pe această adresă pot fi cheltuiți numai dacă tranzacția este semnată atât de Alice, cât și de Bob.

În plus, Alice și Bob creează un secret (un șir de numere) și obțin codul hash.

Apoi, Alice creează imediat o nouă tranzacție din tranzacția de deschidere. Aceasta este așa-numita «tranzacție de angajament» (commitment transaction). Cu ajutorul ei, Alice trimite 4 bitcoini sie, iar restul 6 rămăși — la cea de-a doua adresă cu semnătura multiplă. Această adresă este puțin neobișnuită. Bob îl poate debloca singur, dar numai după 1000 de blocuri, deoarece aceasta este o adresă cu un blocaj CSV. Sau poate debloca Alice, dar numai cu specificarea unui hash secret care i la Bob ei (desigur, Alice nu are nici o idee despre ce este secretul — știe doar codul hash — astfel încât acesta să nu poată încă profita de această oportunitate).

Alice semnează tranzacție de angajament, dar nu o transmite rețelei! În schimb, ea o trimite lui Bob.

Între timp, Bob face același lucru, dar cu parametrii invers: creează o tranzacție de angajament trimite 6 bitcoini sie, și 4 la o nouă adresă cu semnătura multiplă. Alice poate să deblocheze această adresă prin 1000 de blocuri, iar Bob — cu ajutorul secretului lui Alice.

Bob își semnează tranzacția de angajament și o trimite către Alice.

După schimbul de obligații și hash-urilor secrete, Alice și Bob semnează și trimit rețelei bitcoin o tranzacție de deschidere care este înregistrată în blockchain. După aceasta, canalul poate fi considerat deschis.

Acum, atât Alice, cât și Bob pot să semneze și să trimită rețelei bitcoin obligațiunile, pe care le-au primit unul de la celălalt. Dacă Alice face acest lucru, Bob va primi imediat 6 bitcoini. Dacă Bob o face, Alice va primi 4 bitcoini. În orice caz, cel care semnează și trimite tranzacția corespunzătoare rețelei bitcoin va trebui să aștepte până la 1000 de blocuri pentru a debloca adresa cu semnătură multiplă și pentru a obține acces la ceilalți bitcoini.

Cu toate acestea, în realitate, nici una dintre părți nu semnează sau nu transmite tranzacția către rețea, iar acest lucru este cel mai important în canalul de plată.

 

Actualizarea canalului

Puțin mai târziu, Bob vrea să-i întoarcă lui Alice 1 bitcoin. Au nevoie să actualizeze starea canalului și pentru asta fac două lucruri.

Mai întâi, ei repetă procesul de mai sus (cu excepția tranzacției de deschidere — este deja scrisă în bloc). De data aceasta, Alice și Bob scriu pentru ei înșiși 5 bitcoini, iar restul 5 rămași o transmit la adresa multisig (semnătură multiplă). Cerințele pentru aceste adrese sunt similare, dar trebuie să folosească noi secrete. Asta înseamnă că Alice și Bob comunică reciproc noi hash-uri. Ei își semnează tranzacțiile de angajament și le trimit reciproc.

Apoi, Alice și Bob împărtășesc secretele lor din primul scenariu.

După aceasta, Alice și Bob pot să semneze și să trimită rețelei tranzacțiile de angajament primite. Oricine face acest lucru va fi capabil să obțină acei 5 bitcoini prin 1000 de blocuri, iar cealaltă parte — imediat.

Dar ce îl împiedică pe Bob să transmită rețelei vechea tranzacție? Se pare că, în acest caz, el ar trebui să obțină 6 bitcoini …

Desigur, pentru a face acest lucru îl împiedică primul secret, pe care tocmai i l-a transmis lui Alice. Bob nu mai poate folosi tranzacția veche, deoarece Alice cunoaște primul secret. Dacă Bob ar fi semnat și a trimis vechea obligație rețelei, el ar fi transmis imediat 4 bitcoini lui Alice, iar el însuși ar putea obține 6 bitcoini numai după 1000 de blocuri. Între timp, însăși Alice ar fi putut obține acești 6 bitcoini, pentru că știe secretul lui Bob! Ei bine, din moment ce Bob știe secretul lui Alice, funcționează în direcția opusă: dacă Alice încearcă să-și trimită angajamentul vechi la rețea, Bob poate să ia toți bitcoinii de pe acest canal.

Aceasta înseamnă că Alice și Bob sunt interesați din punct de vedere economic să urmeze regulile și să transmită rețelei numai tranzacțiile cu starea actuală a canalului.

Acum, acest sistem de canal de plată bidirecțional trebuie extins astfel încât să se poată efectua plăți în rețea.

 

Rețeaua

Să zicem că acum Alice dorește să trimită un bitcoin lui Carol. Pentru a face acest lucru, Alice și Carol ar putea să creeze un canal de plată între ei, dar se pare că canalul este între Bob și Carol, astfel încât Alice îl poate plăti prin intermediul lui Bob: poate trimite un bitcoin lui Bob și Bob îl va transmite lui Carol.

Cu toate acestea, Alice nu are încredere în Bob și Carol — îi este frică de faptul că dacă va transmite un bitcoin lui Bob, nu îl va plăti niciodată pe Carol, sau dacă îl va plăti Carol nu va recunoaște că a primit plata și Alice nu va ști care din ei spune adevărul.

Astfel, Alice este gata să plătească lui Bob 1 bitcoin numai dacă este sigură că el, la rândul lui, îl va plăti pe Carol cu 1 bitcoin. Acest lucru este posibil datorită unui simplu protocol criptografic.

Când Alice dorește să trimită un bitcoin lui Carol, ea îi cere lui Carol să creeze o valoare (un șir de numere aleatorii) și să îi spună hashul lui. De asemenea, îi cere lui Carol să-l informeze pe Bob că poate obține această valoare pentru 1 bitcoin. Apoi, Alice îi spune lui Bob că îi va trimite un bitcoin, dacă îi va da valoarea care corespunde hash-ului pe care a primit-o de la Carol. Bob acceptă oferta lui Carol și îi transmite 1 bitcoin, iar pentru asta câștigă valoarea. După aceea, Bob informează valoarea lui Alice. Alice știe că Bob a cumpărat această valoare de la Carol pentru 1 bitcoin și îl compensează pentru cheltuielile sale.

Ei bine, aproape e totul.

În acest scenariu simplificat, mediatorul în persoana lui Bob trebuie să aibă încredere în Alice și Carol. Ar trebui să fie sigur că Carol îi va da cu adevărat valoarea potrivită în schimbul a 1 bitcoin și el trebuie să fie sigur că Alice îi va trimite de fapt 1 bitcoin, de îndată ce îi va spune valoarea potrivită.

Sinceritatea acestui schimb de bitcoin asupra valorilor ar trebui să fie garantată în întreaga rețea. Mai exact, dacă Bob trimite un bitcoin lui Carol, el trebuie să aibă o garanție că va primi un bitcoin de la Alice. Pentru aceasta, se folosesc contracte cu hashing și blocare temporară (HTLC).

 

Contractele cu hashing și blocarea temporară

Așadar, Alice dorește să facă un schimb de un bitcoin pentru valoarea lui Bob cu HTLC (Bob și Carol doresc același lucru, dar să uităm momentan de aceasta). Pentru a face acest lucru, Alice trimite bitcoin la o nouă adresă cu o multi-semnătura, în care bitcoinul este blocat. Puteți să-l deblocați în două moduri: Bob poate face acest lucru prin specificarea semnării și a valorii sale, iar Alice — specificând doar semnătura ei. Cu toate acestea, în cel de-al doilea caz există o blocare CLTV: Alice poate semna și trimite o tranzacție în rețea numai după o perioadă de expirare, de exemplu, două săptămâni.

Aceasta înseamnă că Bob va avea două săptămâni pentru a crea o tranzacție cu o semnătură și o valoare care va trebui să o transmită pentru a debloca acel bitcoin. Acest lucru garantează corectitudinea tranzacției: Bob poate solicita bitcoinul Alicei, specificând doar valoarea necesară în tranzacție, care devine cunoscută lui Alice (și întregii rețeli bitcoin). Și dacă Bob nu oferă valoarea corectă la timp, Alice o va lua înapoi. E simplu.

Dar, de fapt, contractele HTLC sunt necesare la nivel de rețea.

După cum am menționat deja, HTLC este creată nu numai de Alice și Bob, ci și de Bob și Carol. Dacă Carol va cere 1 bitcoin de la Bob, el va primi în schimb valoarea potrivită – care va fi înscrisă în blockchain. Ei bine, dacă această tranzacție este finalizată, Bob este garantat că va primi 1 bitcoin de la Alice: pentru asta este suficient să adăugăm valoarea promulgată de Carol în HTLC, încheiată cu Alice. Două canale sunt conectate.

Este important de observat că Bob ar trebui să obțină o valoare de la Carol înainte ca Alice să aibă șansa de a-și revendica bitcoinul înapoi, altfel va rămâne cu valoare, dar fără bani. Astfel, HTLC între Bob și Carol ar trebui să expire mai devreme decât HTLC între Alice și Bob (de exemplu, după 10 zile și, respectiv, 2 săptămâni, din același motiv în HTLC este necesar să utilizați blocarea CheckLockTimeVerify (CLTV), nu CheckSequenceVerify (CSV)).

Pentru ca rețeaua Lightning să fie utilă, rămâne să rezolvăm doar o singură sarcină: toate acestea trebuie făcute în afara blockchainului.

 

Lightning Network

Acum, Alice, Bob și Carol trebuie să adauge HTLC pe canal, astfel încât Bob, care a cumpărat o valoare de la Carol pentru 1 bitcoin, ar putea să-i compenseze cheltuielile, primind bitcoinul de la Alice.

Ca și înainte, Alice și Bob creează mai întâi cîte o tranzacție de angajament. Aceste tranzacții includ o ieșire normală și o ieșire care indică o adresă cu o semnătură multiplă, o blocare CSV și o blocare hash specială. Apoi, Alice și Bob își schimbă vechile secrete, făcând ca vechiul canal să fie neactiv. După schimb, ei pot teoretic, în orice moment, să-și semneze angajamentul și să-l trimită în blockchain.

Toate acestea deja ne sunt cunoscute și acum care e diferența. De data aceasta, obligațiile de tranzacție ale lui Alice și Bob includ o nouă ieșire cu un bitcoin (cu alte cuvinte, balanțele sunt distribuite în raport cu 4-5-1: 4 bitcoini pentru Alice, 5 pentru Bob și 1 pentru o nouă ieșire).

Această nouă ieșire corespunde contractului HTLC și îl puteți debloca în trei moduri.

În primul rând, această ieșire (în angajamentul atât al lui Alice cât și al lui Bob) deblochează bitcoinii, în cazul în care tranzacția ulterioară include semnătura și valoarea lui Bob. Astfel, indiferent de cine va semna și trimite în rețea un angajament de tranzacție, — Alice sau Bob — pentru a debloca această ieșire poate doar Bob, indicând valoarea dorită. Cu toate acestea, există o mică diferență între cele două obligații: dacă Bob decide să închidă canalul, va fi folosit un blocaj CSV și va trebui să aștepte 1000 de blocuri. Dacă canalul îl închide Alice, el va primi 1 bitcoin imediat).

Motivul pentru care Bob trebuie să aștepte 1000 de blocuri este același ca înainte: îi permite lui Alice să ia 1 bitcoin dacă Bob încearcă să semneze și să trimită starea vechiului canal la rețea. Aceasta ne duce la al doilea mod de a debloca noua ieșire: Alice poate «fura» banii dacă scoate în evidență (cel mai nou) secret a lui Bob. Dar dacă încearcă să trișeze și să trimită starea depășită a canalului în rețea, Bob poate primi un bitcoin folosind secretul lui Alice (el nici nu trebuie să precizeze valoarea).

În cele din urmă, în orice HTLC, ambele tranzacții includ blocarea obișnuită CLTV (care în cazul nostru returnează bani lui Alice). Dacă Bob nu oferă valoarea corespunzătoare pentru o anumită perioadă (de exemplu, pentru că nu a primit-o de la Carol), bitcoinul va fi returnat lui Alice.

Ce avem pînă în prezent?

Alice și Bob au o tranzacție de angajament. Dacă Alice își trimite angajamentul în blockchain, va trimite imediat 5 bitcoini lui Bob. De asemenea, poate aștepta 1000 blocuri și poate prelua 4 bitcoini. În plus, Bob are 2 săptămâni pentru a furniza valoarea și a lua 1 bitcoin din ieșirea HTLC (dacă nu furnizează valoarea în 2 săptămâni, Alice va putea să returneze acest bitcoin pentru ea însăși).

Bob își poate trimite angajamentul în blockchain în orice moment și trimite imediat 4 bitcoini lui Alice la fel poate să aștepte 1000 de blocuri și să ridice 5 bitcoini (în afară de aceasta, așa cum sa spus mai sus, el poate lua 1 bitcoin din ieșirea HTLC, indicînd valoarea corespunzătoare).

Și, desigur, dacă Alice sau Bob încearcă să trișeze și să trimită starea depășită a canalului în rețea, partea cinstită va fi capabilă să primească toți bitcoinii din canal.

Fixarea stării

Deci, acum este garantat că Bob va fi capabil să primească bitcoinii în schimbul valorii (dacă, desigur, o are). Pentru a face acest lucru, trebuie doar să semneze și să trimită rețelei o tranzacție de angajament, pe care a primit-o de la Alice, pentru a include valoarea în tranzacția ulterioară și, de asemenea, să o trimită la rețea.

Alice știe asta și nu poate să-i fure lui Bob bitcoinul său — chiar dacă a făcut rost de valoarea lui. Astfel, Alice și Bob pot conveni asupra unui balanțe de plăți în afara canalului. Bob poate pur și simplu să treacă valoarea la Alice, iar Alice va actualiza starea canalului fără contractul HTLC și timeout-ul. Așadar, vor face, daca sunt interesați sa mențină canalul, pentru ca este mai ușor decât fixarea statutului canalului in blockchain.

Închiderea canalului

Acum trebuie să înțelegeți puterea reală a rețelei Lightning:

Aproape tot ceea ce am discutat în acest articol nu va intra niciodată în blockchain.

Dacă Alice și Bob vor să închidă în mod pașnic canalul prin acord reciproc, pot crea pur și simplu o tranzacție care să înlocuiască tot ce sa întâmplat după tranzacția de deschidere. Cu alte cuvinte, dacă în exemplul nostru Alice dorește să închidă canalul, poate crea o tranzacție care îi plătește 4 bitcoini ei și 6 lui Bob și îi cere lui Bob să semneze această tranzacție. Bob nu are nici un motiv să-i refuze lui Alice  deci aproape sigur o să-i vină în întimpinare. După ce tranzacția este semnată și trimisă, canalul va fi închis.

Astfel, doar tranzacțiile de deschidere și de închidere vor fi difuzate în rețeaua-bitcoin, chiar dacă Alice și Bob au făcut milioane de plăți unii cu alții între ei! Imaginațivă, în ce măsură aceasta descarcă blockchain-ul.

 

Sursa

Предыдущая статьяHashgraph – Blockchain 2.0 sau o încercare nereușită?
Следующая статья«Правила игры» для цифровой экономики: что обсуждали на форуме #DECENTER CRYPTOEVENT
Отказаться от желаний. Это концепция происходит от одного из трёх путей мудрости: юмор, парадокс, изменение. Она дублирует понятие парадокса. Именно тогда, когда мы больше не желаем чего-то, это может произойти. Искусство отказа от желаний невозможно перехвалить. Не существует ничего, без чего нельзя обойтись. Никогда человек не становился счастливей, если вдруг получал работу, деньги, любовь, которых желал. Настоящее большое счастье связано с неожиданным событием, которое намного превосходит ожидание человека. Мы ведем себя как вечные Деды морозы. Те, кто просит игрушечную железную дорогу, получают ее. А те, кто не просят ничего, могут получить гораздо больше. Перестаньте просить, и только тогда вас можно будет удолетворить.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here