Mreža strele je verjetno najbolj pričakovana tehnološka inovacija, ki se bo razvila na vrh Bitcoinov. Plačilna plast, ki sta jo pred približno letom dni predlagala Joseph Poon in Tadge Dryja, obljublja, da bo podpirala tako rekoč neomejeno število transakcij zunaj verige med uporabniki, skoraj brez stroškov – ob izkoriščanju varnosti, ki jo ponuja Bitcoin.
Vsaj tri podjetja – Poon in Dryja Strela, Blockstream in Blockchain – trenutno delajo na izvedbah tehnologije. Toda malo ljudi zunaj te majhne tehnološke fronte v celoti razume, kako naj bi “prihodnost mikroplačil” povečala zmožnosti Bitcoina.
V tej tridelni seriji Bitcoin Magazine predstavlja osnovne gradnike Lightning Network in prikazuje, kako se ujemajo za uresničitev te prihajajoče protokolarne plasti.
Ta prvi del serije vzpostavlja potrebne gradnike in prikazuje, kako jih je mogoče kombinirati za ustvarjanje “pametnih pogodb”, ki se lahko uporabijo za uresničitev prve zahteve mreže Lightning: dvosmerni plačilni kanal.
(Opomba: Kdor dobro pozna Bitcoin, lahko preskoči gradnike.)
Gradnik št. 1: Nepotrjene transakcije
V svoji osnovi protokol Bitcoin sestavljajo transakcije, ki so običajno povezane s prejšnjimi transakcijami in potencialno s prihodnjimi transakcijami. Vsaka transakcija vsebuje vhode, ki se nanašajo na naslove, s katerih so poslani bitcoin, in izhode, ki se nanašajo na naslove, na katere so poslani bitcoin. Poleg tega morajo vnosi vključevati zahteve za pošiljanje bitcoinov, kot so podpisi, ki dokazujejo “lastništvo” vhodnih naslovov. Izhodi medtem določajo nove zahteve, ki jih je treba vključiti v vhodne podatke naslednje transakcije.
Kot eno od svojih ključnih značilnosti je Lightning Network zgrajen iz bolj ali manj rednih Bitcoin transakcij. Samo, da se te transakcije praviloma dejansko ne predvajajo po Bitcoin omrežju. Namesto tega so shranjeni lokalno, na vozliščih uporabnikov – vendar jih je mogoče kadar koli oddajati prek omrežja.
Gradnik št. 2: Zaščita z dvojno porabo
Drugi gradnik za Lightning Network verjetno ne zahteva veliko razlag, saj je nedvomno razlog za bitcoin sam: zaščita pred dvojno porabo. Če sta dve transakciji (ali: vhoda) odvisni od istega izhoda, lahko potrdi samo ena.
Pri tem je treba vedeti, da so lahko tudi nepotrjene transakcije v sporu, kar pomeni, da jih lahko potrdi le ena.
Gradnik št. 3: Multisig
Tretji gradnik mreže Lightning je prav tako enostaven: naslovi z več podpisi (multisig). (Ali bolj splošno: P2SH-naslovi.)
Multisig naslovi so Bitcoin naslovi, ki – kot že ime pove – zahtevajo več zasebnih ključev za “odklepanje” in porabo bitcoinov. Naslove Multisig lahko nastavite v vseh vrstah pogojev. Na primer, če potrebujete dva od treh možnih ključev ali petnajst od petnajstih ali skoraj katero koli drugo kombinacijo.
Lightning Network pogosto uporablja dve od dveh (2-od-2) multisig nastavitev. Za odklepanje bitcoinov z naslovov 2-of-2 multisig sta potrebna dva podpisa iz dveh namenskih ključev.
Gradnik št. 4: Časovne zapore
Četrti gradnik je časovna zapora. Časovne ključavnice lahko “zaklenejo bitkoine” v izhodu, tako da jih lahko porabite (vključite jih v nadaljnji vhod) le v prihodnosti..
Obstajata dve različni vrsti zaklepanja: absolutni tip, imenovan CheckLockTimeVerify (CLTV), in relativni tip, CheckSequenceVerify (CSV). CLTV zaklene bitcoine do (bolj ali manj) konkretnega časa v prihodnosti: dejanski čas in datum ali določena višina bloka. CSV namesto tega uporablja relativni čas. Ko je CVS-izhod zabeležen na verigi blokov, traja določeno količino blokov od te točke naprej, preden lahko bitcoine spet porabite.
Gradnik št. 5: Hash vrednosti in skrivnosti
Peti in zadnji gradnik – kriptografija – je najbolj temeljni gradnik samega bitcoina. Toda v strelovodni mreži se uporablja na nov način.
Skratka, »vrednost« ali »skrivnost« je dolg in edinstven niz številk, ki ga je praktično nemogoče uganiti, tudi za računalnik z neskončnimi poskusi. S posebnim izračunom lahko to vrednost (ali skrivnost) “razpršimo” v drug niz števil, v “razpršitev”. In tu je trik: kdor pozna vrednost, lahko zlahka reproducira razpršitev. A to ne deluje obratno; to je enosmerna ulica.
Ta trik lahko uporabimo tudi v samem bitcoinu, znova za »zaklepanje bitcoinov«. (Dejansko je res, kako Bitcoin deluje.) Na primer, v izhod je mogoče vključiti razpršitev, ki zahteva, da poznejši vhod vključuje ustrezno vrednost, da bo porabljen.
Prvi izziv: dvosmerni plačilni kanali
Še preden je bila predstavljena mreža Lightning, koncept plačilnih kanalov obstaja že nekaj časa. Tipični plačilni kanali so uporabni za določene namene, a tudi omejeni: so enosmerni. Alice lahko Bob plača več transakcij zunaj verige, vendar Bob ne more plačati Alice po istem kanalu.
Poon in Dryja sta kot ključno značilnost Lightning Network predlagala nezaupljive dvosmerne plačilne kanale.
Odpiranje kanala
Za vzpostavitev dvosmernega plačilnega kanala se morata obe udeleženi strani najprej dogovoriti o otvoritveni transakciji. Ta otvoritvena transakcija določa, koliko bitcoinov vsak vloži v kanal.
Recimo, da želi Alice Bobu poslati en bitcoin. Ker Alice in Bob pričakujeta pogostejše transakcije, se odločita odpreti dvosmerni plačilni kanal in s tem pošljeta bitcoin. (Pošiljanje celotnega bitcoina je verjetno veliko za plačilni kanal, saj je to morda bolj koristno za mikroplačila – vendar je povsem mogoče.)
Če želite odpreti kanal, Alice in Bob pošljeta po pet bitcoinov na 2-od-2 multisig naslov. To je “otvoritvena transakcija.” Bitcoin je mogoče porabiti s tega naslova samo, če Alice in Bob podpišeta nadaljnjo transakcijo.
Poleg tega Alice in Bob ustvarita skrivnost (niz številk) in si izmenjata razpršitev.
Alice zdaj takoj ustvari naslednjo transakcijo iz začetne transakcije. To je “transakcija s prevzemom obveznosti”. S transakcijo s prevzemom obveznosti Alice pošlje sebi štiri bitcoine in šest bitcoinov na drugi multisig naslov. Ta drugi naslov multisig je nekoliko zabaven. Bob ga lahko odklene sam, vendar šele po tem, ko je miniranih 1000 dodatnih blokov, potem ko je vključen v verigo blokov; vključuje ključavnico CSV. Ali pa jo lahko Alice odpre sama, vendar le, če vključi tudi skrivnost, za katero ji je Bob pravkar dal zbega. (Alice seveda nima pojma, v čem je ta skrivnost – ona pozna le hash – zato te možnosti zdaj nikakor ne more izkoristiti.)
Alice podpiše svoj konec te zaveze. Ampak ona tega ne predvaja! Namesto tega ga da Bobu.
Bob medtem počne enako, vendar zrcalno. Ustvari tudi transakcijo s prevzemom obveznosti, iz katere pošlje sebi šest bitcoinov, štiri pa na zabaven nov multisig-naslov. Alice lahko odklene ta naslov, če počaka dodatnih 1000 blokov, ali pa ga lahko Bob odklene z Alice s svojo skrivnostjo.
Bob podpiše to polovico in jo da Alice.
Po vsej tej izmenjavi “napol veljavnih” transakcij zavez in razpršenih skrivnosti oba podpišeta in predvajata začetno transakcijo, da se prepričata, da je zabeležena v verigi blokov. Kanal je zdaj uradno odprt.
V tem trenutku sta lahko Alice in Bob podpisala in predvajala polovično veljavno transakcijo s prevzemom, ki sta jo dobila od druge. Če Alice to stori, Bob takoj dobi šest bitcoinov. Če Bob to stori, Alice takoj dobi štiri bitcoine. Toda kdorkoli podpiše in oddaja transakcijo, bo moral počakati 1000 blokov, da odklene naslednji multisig-naslov in zahteva preostale bitcoine.
In to je ključni trik plačilnega kanala: niti polovica transakcije sploh ne podpiše in ne odda.
Posodabljanje kanala
Malo kasneje Bob želi Alice poslati en bitcoin nazaj. Želijo posodobiti stanje kanala, da bo stanje spet pet-pet. Da bi to dosegla, Alice in Bob naredita dve stvari.
Najprej oba ponovita postopek, kot je opisano zgoraj (le da je začetna transakcija že zabeležena v verigi blokov; ta del je preskočen). Tokrat si Alice in Bob pripisujeta pet bitcoinov, oba pa pet bitcoinov pripisujeta funky multisig naslovom. Pogoji za te multisig-naslove so podobni, le da zahtevajo nove skrivnosti: Alice in Bob si medsebojno zagotavljata nove zgoščenke. Oba podpišeta novo polovico veljavne transakcije in si jo oddata.
Drugič, Alice in Bob drug drugemu predata svoje prve skrivnosti, kot so bile uporabljene pri prvi postavitvi.
Na tej točki sta lahko tudi Alice in Bob podpisala in predvajala novo “napol veljavno” transakcijo obveznosti, ki sta jo pravkar dobila. Njihova nasprotna stranka bi takoj dobila pet bitcoinov, izdajatelj televizijskih programov pa bi moral počakati 1000 blokov. Kot tak je kanal posodobljen.
Toda kaj preprečuje Bobu, da namesto tega predvaja starejšo transakcijo s prevzemom? Ta transakcija s prevzemom je pripeljala do poti, ki mu je namesto petih plačala šest bitcoinov ….
Kaj Boba seveda ustavi, je njegova prva skrivnost, ki jo je zdaj izdal Alice.
Bob starejše transakcije zaveze ne more več varno podpisati in predvajati, ker Alice zdaj pozna prvo Bobovo skrivnost. Če bi Bob podpisal in predal to transakcijsko obveznost, bi Alice takoj poslal štiri bitcoine … in moral bi počakati 1000 blokov, da bi zahteval svojih šest bitcoinov. To je težava, kajti zdaj, ko Alice pozna svojo skrivnost, bi lahko ta čas izkoristila, da je Boba premagala in zahtevala tudi ostalih šest bitcoinov!
In ker ima Bob tudi Aliceino skrivnost, to velja prav tako obratno. Če Alice poskuša podpisati in predvajati staro transakcijo z obveznostmi, lahko Bob ukrade vse bitcoine v kanalu.
To seveda pomeni, da sta Alice in Bob močno spodbujena, da igrata pošteno in podpišeta in oddajata najnovejše stanje na kanalu..
Nato se mora ta dvosmerna nastavitev plačilnega kanala razširiti, da omogoči plačila prek omrežja. To je zajeto v drugem članku te serije.
Hvala Rusty Russell in Joseph Poon za dodane povratne informacije.