Poate că Rețeaua Lightning este cea mai anticipată noutate tehnologică pentru Bitcoin. Se presupune că acest sistem de plată, o idee care a fost camping este un an în urmă, permite aproape liber să efectueze un număr foarte mare de tranzacții este blokcheyna Bitcoin, și nu trebuie să sacrifice siguranța.
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 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 de biți (cel puțin imediat). În schimb, ele sunt stocate pe nodurile de utilizator locale, dar pot fi trimise în rețea în orice moment.
Negrul denumește 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 biți către Bob și numai după aceea Bob să-și poată semna tranzacția trimițând un bitlock lui Carol.
Elementul 2: mecanism de protecție a deșeurilor duble
Î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ă
Elementul 4: Blocări temporare
Cel de-al patrulea element al rețelei Lightning Network este închiderea temporară. Acestea vă permit să blocați bitcoinii din ieșire, astfel încât să poată fi cheltuiți (activați 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 bloc, trebuie să se genereze un anumit număr de blocuri înainte ca acești bitmone să poată fi cheltuite.
În rețeaua Lightning, blocarea CSV (indicată în figură pentru ore) este adesea folosită ca o întârziere.
Elementul 5: hashes și secrets
Primitivele criptografice aparțin blocurilor fundamentale ale Bitcoin, însă ele sunt folosite diferit în Rețeaua de Lightning.
Pe scurt, "valoare" sau "secret" 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 ușor hash-ul său, dar inversul este imposibil: hașcarea este o operație unidirecțională.
Acest truc poate fi folosit în Bitcoin în sine - din nou, pentru a bloca bitcoins. 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 de culoare, iar hash-ul corespunzător este o încuietoare de aceeași culoare.
Prima sarcină: canale de plată bidirecționale
Ideea canalelor de plată a fost discutată înainte de Rețeaua de 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".
Pentru a crea un canal de plată bidirecțional, părțile trebuie mai întâi de acord asupra tranzacției de deschidere. Această tranzacție determină suma depozitelor pe care trebuie să le plătească fiecare parte.
Să presupunem că Alice vrea să trimită Bob un Bitcoin. Alice si Bob sunt de gând să plătească reciproc de multe ori, astfel încât acestea decid să deschidă un canal de plăți bidirecționale (poate un Bitcoin - este prea mult pentru canalul de plată, pentru că este mai potrivit pentru microplati, dar nu imposibil).
În plus, Alice și Bob creează un secret (un șir de numere) și își fac hash-ul.
Alice semnează angajamentul de tranzacție, dar nu-l traduce în rețea! În schimb, ea îl trimite lui Bob.
Bob își semnează angajamentul de tranzacție și o trimite către Alice.
După schimbul de obligații și cu șuvoasele de secrete, Alice și Bob semnează și trimit rețelei bit-net o tranzacție de deschidere care este înregistrată în dulap. După aceasta, canalul poate fi considerat deschis.
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ă.
Puțin mai târziu, Bob vrea să se întoarcă pe Alice 1 bitokoyn. Ei trebuie să actualizeze starea canalului și pentru asta fac două lucruri.
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 obligațiile de tranzacție primite. Oricine face acest lucru va fi capabil să obțină propriile 5 bitokonov prin 1000 de blocuri, iar partea a doua - imediat.
Dar ce împiedică Bob să transmită o rețea veche de tranzacții? Se pare că, în acest caz, el ar trebui să obțină 6 bitkoy ...
Desigur, pentru a face acest lucru îl împiedică de primul său secret, pe care tocmai ia dat-o pe Alice. Bob nu mai poate folosi tranzacția veche, deoarece Alice cunoaște primul său secret. Dacă Bob a semnat și a trimis vechea obligație la rețea, el va trimite imediat 4 biți la Alice, iar el însuși ar putea obține cele 6 bitcoane în numai 1000 de blocuri. Între timp, însăși Alice ar fi putut obține aceste 6 biți, 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 în rețea, Bob poate să-i ia pe toate canalele de pe acest canal.
Aceasta înseamnă că Alice și Bob sunt interesați economic să urmeze regulile și să traducă numai tranzacții cu starea actuală a canalului către rețea.
Acum, acest sistem de canal de plată bidirecțional trebuie extins astfel încât să se poată efectua plăți în rețea.
Să presupunem acum că Alice vrea să trimită 1 Bitcoin Carol. Pentru a face acest lucru, Alice si Carol ar putea crea un canal de plată între ele, dar se pare că există un canal între Bob si Carol, astfel încât Alice poate plăti de Carol Bob: poate trimite 1 Bitcoin la Bob, Bob și Carol cu plată.
Cu toate acestea, Alice are incredere Bob si Carol - ea se teme că, dacă acesta a fost un Bitcoin Bob nu va plăti Carol sau să plătească, dar Carol a spus că nu a primit nici un ban, iar Alice nu știe care dintre ele este de a 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 lui Carol 1 bitokoyn. Acest lucru este posibil datorită unui simplu protocol criptografic.
Când Alice dorește să trimită o copilașcă lui Carol, ea îi cere lui Carol să creeze o valoare (un șir de numere aleatorii) și să îi spună haosul. 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 cocoș, dacă îi va da valoarea care corespunde chestiunii pe care a primit-o de la Carol. Bob acceptă oferta lui Carol și o trimite pe 1 bitokoyn, iar pentru asta câștigă valoarea. După aceea, Bob informează Alice. Alice știe că Bob a cumpărat această valoare de la Carol pentru 1 bitcoin și îl compensează pentru cheltuielile sale.
În acest scenariu simplificat, mediatorul în persoana lui Bob trebuie să aibă încredere în Alice și Carol. El trebuie să fie sigur că într-adevăr Carol i spune valoarea dorită în schimbul 1 Bitcoin, și trebuie să fie, de asemenea, sigur că Alice într-adevăr să-l trimită 1 Bitcoin imediat ce el ia spus valoarea dorită.
Cinstea acestui bitkoynov de schimb asupra valorilor ar trebui să fie garantată în întreaga rețea. Mai exact, dacă Bob trimite un catelus lui Carol, el trebuie să aibă o garanție că va primi un catelus de la Alice. Pentru aceasta, se folosesc contracte cu hashing și blocare temporară (HTLC).
Contracte cu hashing și blocare temporară
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 îi trimite un blocaj blocat. Acest lucru garantează corectitudinea tranzacției: Bob poate solicita bitmixul lui Alice, specificând doar valoarea necesară în tranzacție, care devine cunoscută lui Alice (și întregului net-bit). Ș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 are nevoie de Bobok 1 bitokoyin, el va primi în schimb valoarea dorită - el va fi înregistrat în blocadă. Ei bine, dacă această tranzacție este finalizată, Bob este garantat că va primi 1 bitikon 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 biografia înapoi, altfel va rămâne cu valoare, dar fără bani. Astfel, HTLC între Bob și Carol ar trebui să expire mai devreme. HTLC decât între Alice și Bob (de exemplu, 10 zile și 2 săptămâni, respectiv, pentru același motiv, necesitatea de a utiliza blocarea HTLC CheckLockTimeVerify (CLTV), în schimb 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 blocului.
Acum, Alice, Bob și Carol trebuie să adauge HTLC la canal, astfel încât Bob, care a cumpărat de la Carol valoarea pentru 1 bitokon, cu siguranță ar putea compensa cheltuielile sale, fiindcă a primit bijuterii de la Alice.
Toate acestea deja știm, dar acum schimbarea. De data aceasta, tranzacție obligație Alice și Bob include o nouă piață de desfacere cu un singur Bitcoin (cu alte cuvinte, bilanțurile sunt distribuite în ceea ce privește 4-5-1 4 Bitcoin pentru Alice, Bob, și 5 până la 1 pentru o nouă versiune).
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ă suma de bani î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 închide Alice, va primi 1 bitkoyn imediat).
Motivul pentru care Bob trebuie să aștepte 1000 de blocuri este același ca înainte: îl 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) secretul 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 (nu are nevoie nici măcar să specifice o valoare).
În cele din urmă, în orice HTLC, ambele tranzacții includ comisionul obișnuit CLTV (care în cazul nostru returnează bani lui Alice). Dacă Bob nu oferă valoarea dorită pentru o anumită perioadă (de exemplu, pentru că nu a primit-o de la Carol), bitcoinul va fi returnat lui Alice.
Ce avem în prezent?
Alice și Bob au un angajament de tranzacționare. Dacă Alice își trimite angajamentul în bloc, va trimite imediat Bitco-urilor de 5 ori. De asemenea, poate aștepta 1000 blocuri și poate prelua 4 biți. În plus, Bob are 2 săptămâni pentru a furniza valoarea și pentru 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 poate trimite în orice moment blokcheyn ei obligație și trimite imediat 4 Bitcoin Alice, și el poate aștepta 1000 de blocuri și ridica 5 Bitcoins (în afară, așa cum sa menționat mai sus, chiar, poate dura 1 Bitcoin din HTLC-ieșire, oferind necesare valoare).
Ș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ă toate caniculele de pe canal.
Deci, acum este garantat că Bob va fi capabil să primească biți în schimbul valorii (dacă, desigur, o are). Pentru a face acest lucru, trebuie doar să semneze și să trimită rețelei un angajament de tranzacție, pe care la primit 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 biciul său - chiar dacă știe cumva sensul.
Astfel, Alice și Bob pot conveni asupra unui balanț 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. Asadar, vor face, daca sunt interesati sa mentina canalul, pentru ca este mai usor decat fixarea statutului canalului in sala de blocaj.
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ă într-o blocadă.
Dacă Alice și Bob vor să închidă canalul în mod pașnic de comun acord, pot crea doar o tranzacție care să înlocuiască totul. 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 biți și 6 lui Bob și îi cere lui Bob să semneze această tranzacție. Bob nu are nici un motiv să-l refuze pe Alice, deci aproape sigur o va întâlni. După ce tranzacția este semnată și trimisă, canalul va fi închis.
Astfel, numai tranzacțiile de deschidere și de închidere vor fi difuzate în rețeaua de rețele de biți, chiar dacă Alice și Bob au făcut milioane de plăți între ele! În măsura în care descarcă blocajele, imaginați-vă.
Aaron van Wirdum