Ja lasiet šo rakstu, tad vēlaties uzzināt vairāk par Zibens tīklu (Lightning Network) vai esiet dzirdējuši/saskārušies ar Bitcoin mērogošanas (scaling) problēmām. T.i. Bitcoin šobrīd spēj veikt vien ~7 transakcijas sekundē un pieaugot lietotaju skaitam blokķēdē nav iespējams iekļaut visas transakcijas, kuras veic lietotāji.
Ir vairāki veidi kā atrisināt Bitcoin mērogošanas problēmas, taču katrai no tām ir kaut kādi ierobežojumi vai negatīvi blakusefekti, tādēļ starp vairākiem ļaunumiem jāizvēlas mazākais un kā merogošanas čempionu vairums izstradātāji un lietotāji ir izvēlējušies tieši Zibens tīklu. Zibens tīkls jau daudzus gadus bija vien koncepts/teorētisks produkts, taču 2017. gada decembrī Zibens tīkla izstrādātāji spēra nozīmīgāko soli tā vēsturē – Bitcoin tīklā tika palaista Zibens tīkla alfa versija, tādējādi simbolizējot, ka tuvakajos mēnešos/gados produkts tiks noslīpēts un kļūs pieejamāks plašākai sabiedrībai.
Sākotnēji biju domājis veidot 1 garu rakstu, kurā izskaidrotu gan to kā darbojas Lightning Network, gan šī tīkla problēmas, kritiku un ierobežojumus, taču vien raksturojums izvērtās tik garš, ka nolēmu to publicēt vairākās (2 vai 3) daļās. Šajā rakstā varēs lasīt to, ko solīju jau sen – manis apkopoto un izklāsīto informāciju par to kas ir Zibens tīkls un kā tas darbojas.
Zibens tīkls ir decentralizēts tīkls, kas ļauj veikt tulītējus pārskaitījumus starp vairākiem tīkla dalībniekiem, kuri savstarpēji ir noslēguši viedos līgumus, jeb kontraktus (smart contracts) par divvirzienu maksājuma kanāliem (bidirectional payment channel).
Divvirzienu maksājuma kanāls
Viedais līgums par divvirzienu maksājuma kanālu ir daudzparakstu (multisig) vienošanās, kuru savstarpēji noslēdz divi Bitcoin tīkla dalībnieki par abpusēju noteikta apjoma līdzekļu netērēšanu/iesaldēšanu, nepieļaujot to izmantošanu citam transakcijām uz blokķēdes, turklāt iesaistītās puses var nenoteiktu laiku vienoties par to kā tiks sadalīti iesaldētie līdzekļi. Tādējādi tiek izveidots divvirzienu maksājuma kanāls, kurā tie var savstarpēji sūtīt turp/atpakaļ summu, kas nepārsniedz iesaldēto līdzekļu apjomu un ir katrai pusei individuāli pieejami.
Savā būtībā katrs kanāla maksājums ir blokķēdes transakcijas ieraksts par to cik katram dalībniekam pienākas, kas glabājas vien pie iesaistītajām pusēm, BET tas netiek izziņots blokķēdei. Tad kad dalībniekiem vairs nav nepieciešams veikt savstarpējas transakcijas tie pārtrauc kontrakta darbību (slēdz kanālu) signalizējot tīklam pēdējo kopīgi parakstīto transakciju.
Zibens tīkls
Apvienojot vairākus šādus divvirzienu kanālus, kur katrā kanālā vismaz viena puse ir noslēgusi viedo līgumu arī ar kādu citu lietotāju veidojas tīkls – Zibens tīkls, kurā iespējams sūtīt maksājumus izmantojot citus dalībniekus, kā starpniekus. Piemēram, Jānis atver kanālu ar Līgu un Līga atver kanālu ar Pēteri, rezultātā Jānis var sūtīt savus līdzekļus Pēterim izmantojot Līgu kā starpnieci, turklāt Līga var pieprasīt nelielu komisiju par maksājuma apstradi/starpniecību.
Izklausās lieliski un savā būtībā diezgan vienkārši, turklāt dalībnieku skaits var būt neierobežots šādā tīklā, kamēr vien maksājums nonāk galamērķī, taču sistēmas darbība ir ievērojami sarežģītāka, jo ir jānodrošina veids kā maksājums atrod īsāko/izdevīgāko ceļu pie saņēmēja un kurā starpnieki (kas var būt daudz vairāk kā 1 persona) nepiesavinās līdzekļus vai līdzekļu saņēmējs neizliktos, ka līdzekļus nav saņēmis.
Padziļināti par to kā nodrošināt to, ka maksājums nonāk galamērķi varbūt pastāstīšu citu reizi, jo citādāk šis raksts būs vismaz 2 reizes garāks un daudz sarežģītāks. Īsumā gan to varētu raksturot kā visu darījumā iesaistīto personu savstarpēju apmaiņu ar speciāli ģenerētām publiskajām un privātajām atslēgām, kas ļauj verificēt to, ka darījums ir noticis un darījumā iesaistīt laika slēdzenes (time locks), kas nodrošina maksājuma automātisku izpildīšanos noteiktā laika periodā.
Divvirzienu maksājuma kanālus ir iespējams izmainīt izveidojot jaunu transakciju blokķēdē, kas ietver vēlamās izmaiņas, ja abas iesaistītās puses piekrīt šīm izmaiņām. Izmaiņas ietver līdzekļu papildināšana vai izņemšana no maksājuma konta, vai daļu līdzekļu automātisku atbrīvošanu pēc <N> blokiem par labu kādam dalībniekam. Tādējādi dalībniekiem nav nepieciešams katru reizi aizvērt/slēgt un izveidot jaunu kanālu kad kādai no pusēm aptrūkstas līdzekļi ar ko savstarpēji norēķināties un nepieciešams tos papildināt šajā maksājumu kanālā. Jārēķinās, gan ka veicot izmaiņas būs jāmaksā pilna nodeva blokķēdes transakcijai.
Tā kā varam teikt, ka būtībā katra transakcija Zibens tīklā ir neizziņotas blokķēdes transakcijas “padošana tālāk” ar dažiem papildus soļiem, tad to faktiskie ierobežojumi ir vien interneta joslas platums (bandwidth) un varbūt arī procesora jauda vecākos datoros. Ņemot vērā to, ka neizziņotas transakcijas (tx) izmērs ir ļoti mazs, tad abi šie ierobežojumi nebūs apgrūtinājums pat pie tūkstošiem tx/s. Attiecīgi Zibens tīklā transakcijas notiek bez aiztures un iespējams veikt tūkstošiem vai pat miljoniem tx/s, atšķirībā no izziņotām blokķēdes transakcījām, kas ir ļoti neefektīvas, jo tām ir jāspēj izplatīties pa visu tīklu, tās jāuzglabā mūžīgi un tām ir jābūt ar pietiekami lielu nodevu lai garantētu, ka tā tiek iekļauta blokķēdē.
Šobrīd Zibens tīkla izmērs jau ir sasniedzis ~260 klientus un ~750 kanālus. Tīklu iespējams apskatīt šeit.
Informācijas avoti
Tā kā rakstu veidoju “brīvajā stilā”, tad striktas atsauces nebūs, taču raksts balstīts uz zināšanam, kuras aizguvu no šiem materiāliem:
- https://lightning.network/lightning-network-paper.pdf
- https://www.youtube.com/watch?v=8zVzw912wPo (Scaling Bitcoin to Billions of Transactions Per Day)
- https://bitcoinmagazine.com/ (3 rakstu sērija)
Nākamo rakstu par Zibens tīkla problēmām, ierobežojumiem un kritiku apsolos ievietot šajā blogā kaut kad jaunnedēļ, tādēļ iegriezies atkārtoti vai pieseko man Twitter, kur ziņošu kad nākamais raksts būs pieejams.