name: Teoreettinen johdatus Lightning-verkkoon goal: Tutustu Lightning-verkkoon teknisestä näkökulmasta objectives:


Matka Bitcoinin toiseen kerrokseen

Sukella Lightning-verkon ytimeen, joka on olennainen järjestelmä Bitcoin-siirtojen tulevaisuudelle. LNP201 on teoreettinen kurssi Lightningin teknisestä toiminnasta. Se paljastaa tämän toisen kerroksen verkon perustukset ja mekanismit, jotka on suunniteltu tekemään Bitcoin-maksuista nopeita, taloudellisia ja skaalautuvia.

Sen maksukanavien verkoston ansiosta Lightning mahdollistaa nopeat ja turvalliset siirrot tallentamatta jokaista vaihtoa Bitcoin-lohkoketjuun. Luvuissa opit, miten kanavien avaaminen, hallinta ja sulkeminen toimivat, miten maksut reititetään turvallisesti välityssolmujen kautta vähentäen luottamuksen tarvetta, ja miten likviditeettiä hallitaan. Löydät, mitä sitoumustapahtumat, HTLC:t, peruutusavaimet, rangaistusmekanismit, sipulireititys ja laskut ovat.

Olitpa Bitcoin-aloittelija tai kokeneempi käyttäjä, tämä kurssi tarjoaa arvokasta tietoa Lightning-verkon ymmärtämiseksi ja käyttämiseksi. Vaikka käsittelemmekin joitakin Bitcoinin toiminnan perusteita ensimmäisissä osissa, on olennaista hallita Satoshi Nakamoton keksinnön perusteet ennen sukeltamista LNP201:een.

Nauti löydöstäsi!

Johdanto

Kurssin yleiskatsaus

Tervetuloa LNP201-kurssille!

Tämän koulutuksen tavoitteena on tarjota sinulle syvällinen tekninen ymmärrys Lightning Networkista, joka on yläkerroksen verkko, joka on suunniteltu suorittamaan Bitcoin-tapahtumia nopeasti ja usein alhaisemmalla kustannuksella. Tulet vähitellen tutustumaan tämän järjestelmän keskeisiin käsitteisiin, alkaen maksukanavien avaamisesta reititystekniikoihin ja likviditeetin hallintaan.

Osa 1: Perusteet
Aloitamme yleisellä johdannolla Lightning Networkiin, luomalla perustan Bitcoinille, sen osoitteille, UTXO:ille ja tapahtumien toiminnalle. Tämä peruskatsaus on välttämätön ymmärtääksemme, kuinka Lightning Network toimii turvallisesti luottaen peruslohkoketjun mekanismeihin.

Osa 2: Kanavien avaaminen ja sulkeminen
Tässä osassa tarkastelemme kanavien avaamisprosessia, joka on Lightning Networkin perusta. Opit, kuinka sitoutumistapahtumat luodaan, mitkä ovat peruutusavainten roolit turvallisuudessa, ja kuinka kanavat voidaan sulkea joko yhteistyössä tai yksipuolisesti. Jokainen vaihe selitetään tarkasti ja teknisesti, jotta ymmärrät kaikki sen yksityiskohdat.

Osa 3: Likviditeettiverkosto
Lightning Network ei rajoitu vain yksittäisiin kanaviin; se on todellinen maksujärjestelmäverkosto. Näytämme, kuinka tapahtumat voidaan ohjata välittäjien kautta HTLC:iden avulla. Tässä osassa käsitellään myös sisään- ja ulostulevan likviditeetin haasteita.

Osa 4: Lightning Network -työkalut
Tässä osassa esitellään käytännön työkaluja, kuten Invoices, LNURL ja Keysend. Opit myös hallitsemaan kanaviesi likviditeettiä, joka on tärkeä osa maksujen sujuvuuden varmistamiseksi ja Lightning Network -tapahtumien tehokkuuden maksimoimiseksi.

Osa 5: Etene pidemmälle
Lopuksi päätämme koulutuksen käsiteltyjen käsitteiden kertauksella ja avaamme tien kehittyneempiin aiheisiin niille, jotka haluavat syventää tietojaan Lightning Networkista.

Oletko valmis oppimaan Lightning Networkin tekniset mekanismit? Aloitetaan!

Perusteet

Lightning-verkon ymmärtäminen

df6230ae-ff35-56ea-8651-8e65580730a8 :::video id=ba99951f-81d2-418f-b5e7-4b8c9f8b8cc8:::

Lightning-verkko on maksukanavien verkosto, joka on rakennettu Bitcoin-protokollan päälle ja jonka tavoitteena on mahdollistaa nopeat ja edulliset siirrot. Se mahdollistaa maksukanavien luomisen osallistujien välille, joiden sisällä siirrot voidaan tehdä lähes välittömästi ja minimaalisin kustannuksin tallentamatta jokaista siirtoa erikseen lohkoketjuun. Näin ollen Lightning-verkko pyrkii parantamaan Bitcoinin skaalautuvuutta ja tekemään siitä käyttökelpoisen pienarvoisiin maksuihin.

Ennen "verkon" aspektin tutkimista on tärkeää ymmärtää Lightningissa maksukanavan käsite, sen toiminta ja erityispiirteet. Tämä on tämän ensimmäisen luvun aihe.

Maksukanavan käsite

Maksukanava mahdollistaa kahden osapuolen, tässä Alicen ja Bobin, varojen vaihdon Lightning-verkon kautta. Kullakin protagonistilla on solmu, joka on symbolisoitu ympyrällä, ja heidän välillään oleva kanava on esitetty viivasegmenttinä.

LNP201

Esimerkissämme Alicella on 100 000 satoshia hänen puolellaan kanavaa, ja Bobilla on 30 000, yhteensä 130 000 satoshia, mikä muodostaa kanavan kapasiteetin.

Mutta mikä on satoshi?

Satoshi (tai "sat") on yksikkö Bitcoinissa. Euroon verrattuna sentin tavoin satoshi on yksinkertaisesti Bitcoinin murto-osa. Yksi satoshi on yhtä kuin 0.00000001 Bitcoin, eli yksi sadasosamiljoonasosa Bitcoinista. Bitcoinin arvon noustessa satoshin käyttö muuttuu yhä käytännöllisemmäksi.

Varojen jakautuminen kanavassa

Palataan maksukanavaan. Keskeinen käsite tässä on "kanavan puoli". Kullakin osallistujalla on varoja omalla puolellaan kanavassa: Alicella 100 000 satoshia ja Bobilla 30 000. Kuten olemme nähneet, näiden varojen summa edustaa kanavan kokonaiskapasiteettia, luku, joka asetetaan kun se avataan.

LNP201

Otetaan esimerkki Lightning-siirrosta. Jos Alice haluaa lähettää 40 000 satoshia Bobille, tämä on mahdollista, koska hänellä on tarpeeksi varoja (100 000 satoshia). Tämän siirron jälkeen Alicella on 60 000 satoshia omalla puolellaan ja Bobilla 70 000.

LNP201

Kanavan kapasiteetti, 130 000 satoshissa, pysyy vakiona. Mikä muuttuu, on varojen jakautuminen. Tämä järjestelmä ei salli lähettää enemmän varoja kuin mitä omistaa. Esimerkiksi, jos Bob haluaisi lähettää takaisin 80 000 satoshia Alicelle, hän ei voisi, koska hänellä on vain 70 000.

Toinen tapa kuvitella varojen jakautumista on ajatella liukusäädintä, joka osoittaa, missä varat ovat kanavassa. Aluksi, kun Alicella on 100 000 satoshia ja Bobilla 30 000, liukusäädin on loogisesti Alicen puolella. 40 000 satoshin siirron jälkeen liukusäädin siirtyy hieman Bobin puolelle, jolla nyt on 70 000 satoshia.

LNP201

Tämä esitystapa voi olla hyödyllinen kuviteltaessa varojen tasapainoa kanavassa.

Maksukanavan perussäännöt

Ensimmäinen muistettava seikka on, että kanavan kapasiteetti on kiinteä. Se on hieman kuin putken halkaisija: se määrittää maksimimäärän varoja, jotka voidaan lähettää kanavan kautta kerralla. Otetaan esimerkki: jos Alicella on 130 000 satoshia omalla puolellaan, hän voi lähettää enintään 130 000 satoshia Bobille yhdessä siirrossa. Bob voi kuitenkin sen jälkeen lähettää nämä varat takaisin Alicelle, joko osittain tai kokonaan.

Tärkeää on ymmärtää, että kanavan kiinteä kapasiteetti rajoittaa yksittäisen siirron maksimimäärää, mutta ei mahdollisten siirtojen kokonaismäärää, eikä kanavan sisällä vaihdettujen varojen kokonaismäärää.

Mitä sinun tulisi ottaa mukaasi tästä luvusta?

Tämä on tämän ensimmäisen luvun loppu, jossa olemme luoneet perustan Lightning-verkolle. Tulevissa luvuissa näemme, miten avata kanava ja syvennymme tässä käsiteltyihin konsepteihin.

Bitcoin, osoitteet, UTXO ja siirrot

0cfb7e6b-96f0-508b-9210-90bc1e28649d :::video id=75323eef-ea03-45ac-9a6e-46d73ca255de:::

Tämä luku on hieman erityinen, sillä se ei suoraan keskity Lightning-verkkoon, vaan Bitcoiniin. Todellakin, Lightning-verkko on kerros Bitcoinin päällä. On siis olennaista ymmärtää tietyt Bitcoinin peruskäsitteet, jotta voimme kunnolla käsittää Lightningin toiminnan seuraavissa luvuissa. Tässä luvussa käymme läpi Bitcoinin vastaanotto-osoitteiden, UTXO:iden sekä Bitcoin-siirtojen toiminnan perusteet.

Bitcoin-osoitteet, yksityiset avaimet ja julkiset avaimet

Bitcoin-osoite on merkkijono, joka johdetaan julkisesta avaimesta, joka puolestaan lasketaan yksityisestä avaimesta. Kuten varmasti tiedät, sitä käytetään bitcoinien lukitsemiseen, mikä vastaa niiden vastaanottamista lompakkoosi.

Yksityinen avain on salainen elementti, jota ei koskaan tulisi jakaa, kun taas julkinen avain ja osoite voidaan jakaa ilman turvallisuusriskiä (niiden paljastaminen edustaa vain riskiä yksityisyydellesi). Tässä on yleinen esitystapa, jota noudatamme koko tämän koulutuksen ajan:

Bitcoin-siirrot: Varojen lähettäminen ja skriptit

Bitcoinissa siirto tarkoittaa varojen lähettämistä yhdestä osoitteesta toiseen. Otetaan esimerkki, jossa Alice lähettää 0.002 Bitcoinia Bobille. Alice käyttää osoitteeseensa liitettyä yksityistä avainta allekirjoittaakseen siirron, todistaen näin, että hän todella pystyy käyttämään näitä varoja. Mutta mitä tarkalleen ottaen tapahtuu tämän siirron takana? Bitcoin-osoitteessa olevat varat on lukittu skriptillä, eräänlaisella miniohjelmalla, joka asettaa tiettyjä ehtoja varojen käyttämiseksi.

Yleisin skripti vaatii allekirjoituksen osoitteeseen liitetyllä yksityisellä avaimella. Kun Alice allekirjoittaa siirron yksityisellä avaimellaan, hän avaa skriptin, joka estää varojen siirtämisen, ja ne voidaan sitten siirtää. Varojen siirtoon liittyy uuden skriptin lisääminen näihin varoihin, joka määrää, että niiden käyttämiseen tällä kertaa tarvitaan Bobin yksityisen avaimen allekirjoitus.

LNP201

UTXO:t: Käyttämättömät siirtojen tulosteet

Bitcoinissa vaihdamme itse asiassa suoraan bitcoineja, vaan UTXO:ita (Unspent Transaction Outputs), tarkoittaen "käyttämättömiä siirtojen tulosteita".

UTXO on bitcoinin pala, joka voi olla minkä tahansa arvoinen, esimerkiksi 2,000 bitcoina, 8 bitcoinia tai jopa 8,000 satsia. Jokainen UTXO on lukittu skriptillä, ja sen käyttämiseen täytyy täyttää skriptin ehdot, usein allekirjoitus annetun vastaanotto-osoitteen yksityisellä avaimella.

UTXO:ita ei voi jakaa. Joka kerta, kun niitä käytetään edustamansa bitcoin-määrän kuluttamiseen, se on tehtävä kokonaisuudessaan. Se on hieman kuin setelin kanssa: jos sinulla on 10 euron seteli ja sinun täytyy maksaa leipurille 5 euroa, et voi vain leikata seteliä puoliksi. Sinun täytyy antaa hänelle 10 euron seteli, ja hän antaa sinulle 5 euroa vaihtorahaa. Tämä on täsmälleen sama periaate UTXO:iden kanssa Bitcoinissa! Esimerkiksi, kun Alice avaa skriptin yksityisellä avaimellaan, hän avaa koko UTXO:n. Jos hän haluaa lähettää vain osan UTXO:n edustamista varoista Bobille, hän voi "pilkkoa" sen useampaan pienempään osaan. Hän lähettää sitten 0.0015 BTC Bobille ja lähettää loput, 0.0005 BTC, vaihto-osoitteeseen.

Tässä on esimerkki siirrosta, jossa on 2 tulostetta:

LNP201

Moniallekirjoitusosoitteet

Yksinkertaisten osoitteiden, jotka on luotu yhdestä julkisesta avaimesta, lisäksi on mahdollista luoda moniallekirjoitusosoitteita useista julkisista avaimista. Erityisen kiinnostava tapaus Lightning-verkolle on 2/2 moniallekirjoitusosoite, joka on luotu kahdesta julkisesta avaimesta:

LNP201

Jotta varat, jotka on lukittu tällä 2/2 moniallekirjoitusosoitteella, voidaan käyttää, on tarpeen allekirjoittaa kahdella yksityisellä avaimella, jotka liittyvät julkisiin avaimiin.

LNP201

Tämä osoitetyyppi on nimenomaan Bitcoin-lohkoketjun esitys Lightning-verkon maksukanavista.

Mitä sinun tulisi oppia tästä luvusta?

Tämä luku Bitcoinista on antanut meille mahdollisuuden kerrata joitakin olennaisia käsitteitä tulevaa varten. Seuraavassa luvussa tutustumme erityisesti siihen, miten kanavien avaaminen Lightning-verkossa toimii.

Kanavien Avaaminen ja Sulkeminen

Kanavan Avaaminen

96243eb0-f6b5-5b68-af1f-fffa0cc16bfe :::video id=6098fee1-735e-4d8d-9f57-0faf5fef6d76:::

Tässä luvussa tarkastelemme tarkemmin, miten maksukanava avataan Lightning-verkossa ja ymmärrämme yhteyden tämän toimenpiteen ja taustalla olevan Bitcoin-järjestelmän välillä.

Lightning-kanavat

Kuten ensimmäisessä luvussa näimme, Lightning-verkon maksukanavaa voidaan verrata "putkeen", jossa varoja vaihdetaan kahden osallistujan (Alicen ja Bobin esimerkeissämme) välillä. Tämän kanavan kapasiteetti vastaa kummankin puolen saatavilla olevien varojen summaa. Esimerkissämme Alicella on 100 000 satoshia ja Bobilla 30 000 satoshia, mikä antaa kokonaiskapasiteetiksi 130 000 satoshia.

LNP201

Tiedonvaihdon Tasot

On tärkeää selvästi erottaa Lightning-verkon eri tiedonvaihtotasot:

LNP201 On huomionarvoista, että Lightning-solmu voi kommunikoida P2P-protokollan kautta avaamatta kanavaa, mutta varojen vaihtamiseksi kanava on välttämätön.

Vaiheet Lightning-kanavan avaamiseksi

LNP201 LNP201 LNP201 LNP201 LNP201 LNP201

Milloin kanava on avoin?

Kanava katsotaan avatuksi, kun talletustransaktio on sisällytetty Bitcoin-lohkoon ja se on saavuttanut tietyn syvyyden vahvistuksissa (seuraavien lohkojen määrä).

Mitä sinun tulisi muistaa tästä luvusta?

Seuraavassa luvussa tutustumme Lightning-transaktion tekniseen toimintaan kanavalla.

Sitoutumistransaktio

7d3fd135-129d-5c5a-b306-d5f2f1e63340 :::video id=c17454f3-14c5-47a0-8c9c-42ee12932bd3:::

Tässä luvussa tutustumme Lightning-verkon kanavalla tapahtuvan transaktion tekniseen toimintaan, eli kun varoja siirretään kanavan toiselta puolelta toiselle.

Muistutus kanavan elinkaaresta

Kuten aiemmin nähtiin, Lightning-kanava alkaa avaamalla Bitcoin-siirrolla. Kanava voidaan sulkea milloin tahansa, myös Bitcoin-siirrolla. Näiden kahden hetken välillä kanavassa voidaan suorittaa lähes rajaton määrä siirtoja ilman, että tarvitsee käyttää Bitcoinin lohkoketjua. Katsotaan, mitä tapahtuu kanavassa suoritetun siirron aikana.

LNP201

Kanavan alkutila

Kanavan avaamisen hetkellä Alice talletti 130 000 satoshia kanavan multisignatuuri-osoitteeseen. Näin ollen alkutilassa kaikki varat ovat Alicen puolella. Ennen kanavan avaamista Alice sai myös Bobin allekirjoittamaan nostotapahtuman, joka mahdollistaisi hänelle varojen takaisin saamisen, jos hän haluaisi sulkea kanavan.

LNP201

Julkaisemattomat Siirrot: Sitoumustapahtumat

Kun Alice tekee kanavassa siirron lähettääkseen varoja Bobille, luodaan uusi Bitcoin-siirto, joka heijastaa tämän muutoksen varojen jakautumisessa. Tätä siirtoa, jota kutsutaan sitoumustapahtumaksi, ei julkaista lohkoketjussa, mutta se edustaa kanavan uutta tilaa Lightning-siirron jälkeen.

Otetaan esimerkki, jossa Alice lähettää 30 000 satoshia Bobille:

Siirtoprosessi: Lasku

Kun Bob haluaa vastaanottaa varoja, hän lähettää Alicelle laskun 30 000 satoshista. Alice jatkaa tämän laskun maksamista aloittamalla siirron kanavassa. Kuten olemme nähneet, tämä prosessi perustuu uuden sitoumustapahtuman luomiseen ja allekirjoittamiseen.

Jokainen sitoumustapahtuma edustaa kanavan varojen uutta jakautumista siirron jälkeen. Tässä esimerkissä siirron jälkeen Bobilla on 30 000 satoshia ja Alicella 100 000 satoshia. Jos jompikumpi kahdesta osallistujasta päättäisi julkaista tämän sitoumustapahtuman lohkoketjussa, se johtaisi kanavan sulkemiseen ja varojen jakautumiseen tämän viimeisen jakautumisen mukaisesti.

LNP201

Uusi tila toisen siirron jälkeen

Otetaan toinen esimerkki: ensimmäisen siirron jälkeen, jossa Alice lähetti 30 000 satoshia Bobille, Bob päättää lähettää 10 000 satoshia takaisin Alicelle. Tämä luo kanavan uuden tilan. Uusi sitoumustapahtuma edustaa tätä päivitettyä jakautumista:

LNP201

Jälleen, tätä siirtoa ei julkaista lohkoketjussa, mutta se voidaan julkaista milloin tahansa, jos kanava suljetaan.

Yhteenvetona, kun varoja siirretään Lightning-kanavassa:

Tässä järjestelmässä on kuitenkin potentiaalinen puute, johon puutumme seuraavassa luvussa. Näemme, miten kumpikin osapuoli voi suojautua toisen osapuolen huijausyritykseltä.

Revocation Key

f2f61e5b-badb-5947-9a81-7aa530b44e59 :::video id=1d850f23-eff1-4725-b284-ce12456a2c26::: Tässä luvussa syvennymme siihen, miten tapahtumat toimivat Lightning-verkossa keskustelemalla mekanismeista, jotka suojaavat huijauksilta, varmistaen, että kumpikin osapuoli noudattaa kanavan sääntöjä.

Muistutus: Sitoumustapahtumat

Kuten aiemmin näimme, Lightning-tapahtumat perustuvat julkaisemattomiin sitoumustapahtumiin. Nämä tapahtumat heijastavat kanavan varojen nykyistä jakautumista. Kun uusi Lightning-tapahtuma tehdään, luodaan ja allekirjoitetaan uusi sitoumustapahtuma molempien osapuolten toimesta heijastamaan kanavan uutta tilaa.

Otetaan yksinkertainen esimerkki:

LNP201

Milloin tahansa molemmat osapuolet voivat julkaista viimeisimmän sitoumustapahtuman allekirjoitettuna sulkeakseen kanavan ja palauttaakseen varansa.

Puute: Huijaaminen julkaisemalla vanha tapahtuma

Potentiaalinen ongelma ilmenee, jos jompikumpi osapuoli päättää huijata julkaisemalla vanhan sitoumustapahtuman. Esimerkiksi Alice voisi julkaista vanhemman sitoumustapahtuman, jossa hänellä oli 100 000 satoshia, vaikka todellisuudessa hänellä on nyt vain 60 000. Tämä mahdollistaisi hänelle 40 000 satoshin varastamisen Bobilta.

LNP201

Vielä pahempaa, Alice voisi julkaista kaikkein ensimmäisen nostotapahtuman, sen ennen kuin kanava avattiin, jossa hänellä oli 130 000 satoshia, ja siten varastaa koko kanavan varat.

LNP201

Ratkaisu: Revocation Key ja Timelock

Estääkseen tällaisen huijauksen Alicen toimesta, Lightning-verkossa sitoumustapahtumiin lisätään turvamekanismeja:

Käydään yhdessä läpi tämän mekanismin toiminta.

Tapahtuman Päivitysprosessi

Kun Alice ja Bob päivittävät kanavan tilan uudella Lightning-tapahtumalla, he vaihtavat etukäteen omat salaisuutensa edelliseen sitoumustapahtumaan (se, joka tulee vanhentuneeksi ja voisi mahdollistaa toisen huijaamisen). Tämä tarkoittaa, että kanavan uudessa tilassa:

Otetaan esimerkki ymmärtääksemme tämän prosessin hyvin:

LNP201 LNP201 LNP201

Vaikka tässä tapauksessa Bobilla ei ole taloudellista etua yrittää huijata, jos hän kuitenkin tekee niin, Alice hyötyy myös symmetrisestä suojasta, joka tarjoaa hänelle samat takeet.

Mitä sinun tulisi ottaa mukaasi tästä luvusta?

Lightning-verkon sitoumustapahtumat sisältävät turvamekanismeja, jotka vähentävät sekä huijaamisen riskiä että siihen kannustimia. Ennen uuden sitoumustapahtuman allekirjoittamista Alice ja Bob vaihtavat keskenään omat salaisuutensa edellisistä sitoumustapahtumista. Jos Alice yrittää julkaista vanhan sitoumustapahtuman, Bob voi käyttää peruutusavainta palauttaakseen kaikki varat ennen kuin Alice voi (koska hän on estetty aikaviiveen vuoksi), mikä rankaisee häntä huijaamisen yrityksestä.

Tämä turvajärjestelmä varmistaa, että osallistujat noudattavat Lightning-verkon sääntöjä, eivätkä he voi hyötyä vanhojen sitoumustapahtumien julkaisemisesta. Tässä koulutuksen vaiheessa tiedät nyt, miten Lightning-kanavat avataan ja miten transaktiot näissä kanavissa toimivat. Seuraavassa luvussa tulemme tutustumaan eri tapoihin sulkea kanava ja palauttaa bitcoinsi päälohkoketjuun.

Kanavan sulkeminen

29a72223-2249-5400-96f0-3756b1629bc2 :::video id=4d8ad4e6-32ff-46d3-bd17-343929aa863b:::

Tässä luvussa keskustelemme kanavan sulkemisesta Lightning-verkossa, joka tehdään Bitcoin-transaktiolla, aivan kuten kanavan avaaminen. Nähtyämme, miten transaktiot kanavassa toimivat, on nyt aika nähdä, miten sulkea kanava ja palauttaa varat Bitcoin-lohkoketjuun.

Muistutus kanavan elinkaaresta

Kanavan elinkaari alkaa sen avaamisesta, Bitcoin-transaktion kautta, sitten Lightning-transaktioita tehdään sen sisällä, ja lopulta, kun osapuolet haluavat palauttaa varansa, kanava suljetaan toisen Bitcoin-transaktion kautta. Välilliset transaktiot Lightningissa esitetään julkaisemattomina sitoumustransaktioina.

LNP201

Kolme kanavan sulkemistapaa

On kolme pääasiallista tapaa sulkea tämä kanava, joita voidaan kutsua hyväksi, pahaksi ja rumaksi (inspiroituneena Andreas Antonopoulosin teoksesta Mastering the Lightning Network):

Otetaan esimerkki:

LNP201

Hyvä: yhteistyöllinen sulkeminen

Yhteistyöllisessä sulkemisessa Alice ja Bob sopivat kanavan sulkemisesta. Näin se tapahtuu:

LNP201

Yhteistyöllinen sulkeminen on suosittu sulkemistapa, koska se on nopea (ei aikalukkoa) ja transaktiomaksut mukautuvat nykyisten Bitcoin-markkinaolosuhteiden mukaan. Tämä välttää liian pienten maksujen maksamisen, mikä voisi riskeerata transaktion jumiutumisen mempooleihin, tai tarpeettoman yli maksamisen, mikä johtaa tarpeettomiin taloudellisiin tappioihin osallistujille.

Huono: pakotettu sulkeminen

Kun Alicen solmu lähettää Bobille viestin pyytäen yhteistyöllistä sulkemista, ja jos hän ei vastaa (esimerkiksi internet-katkoksen tai teknisen ongelman vuoksi), Alice voi edetä pakotettuun sulkemiseen julkaisemalla viimeisen allekirjoitetun sitoumustapahtuman. Tässä tapauksessa Alice yksinkertaisesti julkaisee viimeisen sitoumustapahtuman, joka heijastaa kanavan tilaa viimeisen Lightning-transaktion tapahtumahetkellä oikealla varojen jaolla.

LNP201

Tässä transaktiossa on aikalukko Alicen varoille, mikä tekee sulkemisesta hitaamman.

LNP201

Lisäksi sitoumustapahtuman maksut voivat olla sopimattomia sulkemishetkellä, koska ne asetettiin, kun transaktio luotiin, joskus useita kuukausia aiemmin. Yleensä Lightning-asiakkaat yliarvioivat maksuja välttääkseen tulevaisuuden ongelmia, mutta tämä voi johtaa liiallisiin maksuihin tai päinvastoin liian alhaisiin.

Yhteenvetona, pakotettu sulkeminen on viimeinen vaihtoehto, kun vertaisosapuoli ei enää vastaa. Se on hitaampi ja vähemmän taloudellinen kuin yhteistyöllinen sulkeminen. Siksi sitä tulisi välttää mahdollisuuksien mukaan.

Huijaus: pettäminen

Lopuksi, sulkeminen pettämisen kautta tapahtuu, kun jompikumpi osapuoli yrittää julkaista vanhan sitoumustapahtuman, usein sellaisen, jossa heillä oli enemmän varoja kuin heillä pitäisi olla. Esimerkiksi Alice saattaisi julkaista vanhan transaktion, jossa hän omisti 120 000 satoshia, vaikka hänellä on todellisuudessa nyt vain 100 000.

LNP201

Bob, estääkseen tämän petoksen, valvoo Bitcoin-lohkoketjua ja sen mempoolia varmistaakseen, ettei Alice julkaise vanhaa transaktiota. Jos Bob havaitsee petosyrityksen, hän voi käyttää kumoamisavainta palauttaakseen Alicen varat ja rangaistakseen häntä ottamalla koko kanavan varat. Koska Alicen lähtö on estetty aikalukolla, Bobilla on aikaa käyttää sitä ilman aikalukkoa omalla puolellaan palauttaakseen koko summan osoitteeseen, joka hän omistaa.

LNP201

Ilmeisesti petos voi potentiaalisesti onnistua, jos Bob ei toimi aikalukon Alicen lähdössä asettamassa ajassa. Tässä tapauksessa Alicen lähtö avautuu, mahdollistaen hänelle sen kuluttamisen luodakseen uuden lähdön osoitteeseen, jonka hän hallitsee.

Mitä sinun tulisi ottaa tästä luvusta mukaasi?

Kanavan sulkemiseen on kolme tapaa:

Likviditeettiverkosto

Lightning-verkko

45a7252c-fa4f-554b-b8bb-47449532918e :::video id=38419c23-5592-4573-b0a7-84824a5bfb77:::

Tässä luvussa tutkimme, miten maksut Lightning-verkossa voivat saavuttaa vastaanottajan, vaikka he eivät olisikaan suoraan yhdistettyjä maksukanavalla. Lightning on todellakin maksukanavien verkosto, joka mahdollistaa varojen lähettämisen kaukaiselle solmulle muiden osallistujien kanavien kautta. Tulemme löytämään, miten maksut reititetään verkoston läpi, miten likviditeetti liikkuu kanavien välillä, ja miten transaktiomaksut lasketaan.

Maksukanavien verkosto

Lightning-verkossa transaktio vastaa varojen siirtoa kahden solmun välillä. Kuten aiemmissa luvuissa on nähty, Lightning-transaktioiden suorittamiseksi on tarpeen avata kanava jonkun kanssa. Tämä kanava mahdollistaa lähes rajattoman määrän off-chain-transaktioita ennen sen sulkemista on-chain-saldon takaisin saamiseksi. Tällä menetelmällä on kuitenkin haittana, että toisen henkilön kanssa tarvitaan suora kanava varojen vastaanottamiseksi tai lähettämiseksi, mikä tarkoittaa avaamistransaktiota ja sulkemistransaktiota jokaiselle kanavalle. Jos aion tehdä suuren määrän maksuja tämän henkilön kanssa, kanavan avaaminen ja sulkeminen muuttuu kustannustehokkaaksi. Päinvastoin, jos tarvitsen suorittaa vain muutaman Lightning-transaktion, suoran kanavan avaaminen ei ole edullista, koska se maksaisi minulle 2 on-chain-transaktiota rajalliselle määrälle off-chain-transaktioita. Tämä tilanne saattaisi ilmetä esimerkiksi silloin, kun haluaa maksaa Lightningilla kauppiaalle ilman aikomusta palata.

Tämän ongelman ratkaisemiseksi Lightning-verkko mahdollistaa maksun reitittämisen useiden kanavien ja välisolmujen kautta, mahdollistaen siten transaktion ilman suoraa kanavaa toisen henkilön kanssa.

Kuvitellaan esimerkiksi, että:

LNP201

Jos Alice haluaa lähettää varoja Bobille avaamatta suoraa kanavaa hänen kanssaan, hänen on mentävä Suzien kautta, ja jokaisen kanavan on säädettävä likviditeettiä kummallakin puolella. Lähetetyt satoshit pysyvät omassa kanavassaan; ne eivät todellisuudessa "yli" kanavia, mutta siirto tehdään säätämällä sisäistä likviditeettiä kussakin kanavassa.

Oletetaan, että Alice haluaa lähettää 50 000 satoshia Bobille:

LNP201 Näin ollen maksu ohjataan Bobille liikuttamalla likviditeettiä kussakin kanavassa. Toimenpiteen lopussa Alicella on 50 000 satsia. Hän on todellakin siirtänyt 50 000 satsia, koska alun perin hänellä oli 100 000. Bob puolestaan päätyy 50 000 satsin lisäyksellä. Suzielle (välisolmulle) tämä toimenpide on neutraali: alun perin hänellä oli 30 000 satsia kanavassaan Alicen kanssa ja 250 000 satsia kanavassaan Bobin kanssa, yhteensä 280 000 satsia. Toimenpiteen jälkeen hänellä on 80 000 satsia kanavassaan Alicen kanssa ja 200 000 satsia kanavassaan Bobin kanssa, mikä on sama summa kuin alussa. Tämä siirto on siis rajoitettu käytettävissä olevan likviditeetin mukaan siirron suunnassa.

Reitin ja Likviditeetin Rajojen Laskeminen

Otetaan teoreettinen esimerkki toisesta verkosta, jossa on:

LNP201

Suurin summa, jonka Alice voi lähettää Bobille tässä konfiguraatiossa, on 90 000 satoshia, koska hän on rajoitettu pienimmän likviditeetin mukaan kanavassa Suzielta Carolille. Vastakkaiseen suuntaan (Bobilta Alicelle) maksu ei ole mahdollinen, koska Suzien puolella kanavassa Alicen kanssa ei ole satosheja. Siksi ei ole reittiä käytettävissä siirrolle tässä suunnassa. Alice lähettää 40 000 satoshia Bobille kanavien kautta:

LNP201

Lähetetyt satoshit pysyvät kussakin kanavassa, joten Carolin Bobille lähettämät satoshit eivät ole samoja kuin Alicen Suzielle lähettämät. Siirto tehdään vain säätämällä likviditeettiä kussakin kanavassa. Lisäksi kanavien kokonaiskapasiteetti pysyy muuttumattomana.

LNP201

Kuten edellisessä esimerkissä, transaktion jälkeen lähtösolmu (Alice) on 40 000 satoshia vähemmän. Välisolmut (Suzie ja Carol) säilyttävät saman kokonaismäärän, mikä tekee toimenpiteestä neutraalin heille. Lopulta kohdesolmu (Bob) saa lisää 40 000 satoshia.

Välisolmujen rooli on siis erittäin tärkeä Lightning Networkin toiminnassa. Ne helpottavat siirtoja tarjoamalla useita polkuja maksuille. Kannustaakseen näitä solmuja tarjoamaan likviditeettiään ja osallistumaan maksujen reititykseen, reitityspalkkiot maksetaan heille.

Reitityspalkkiot

Välisolmut soveltavat palkkioita salliakseen maksujen kulkemisen kanaviensa kautta. Nämä palkkiot asettaa jokainen solmu kullekin kanavalleen. Palkkiot koostuvat kahdesta osasta:

Esimerkiksi kanavalla Alicen ja Suzien välillä meillä voisi olla:

LNP201

Ymmärtääksemme paremmin, miten maksut toimivat, tutkitaan samaa Lightning Networkia kuin aiemmin, mutta nyt seuraavilla reititysmaksuilla:

Samasta 40,000 satoshin maksusta Bobille, Alicen on lähetettävä hieman enemmän, koska jokainen välisolmu vähentää omat maksunsa:

Tämän maksun kokonaismaksut tällä reitillä ovat siis 9.04 satoshia. Näin ollen Alicen on lähetettävä 40,009.04 satoshia, jotta Bob saa tarkalleen 40,000 satoshia.

LNP201

Nesteytys päivittyy siis:

LNP201

Sipulireititys

Maksun reitittämiseksi lähettäjältä vastaanottajalle Lightning Network käyttää menetelmää, jota kutsutaan "sipulireititykseksi". Toisin kuin klassisen datan reitityksessä, jossa jokainen reititin päättää datan suunnan perustuen niiden määränpäähän, sipulireititys toimii eri tavalla:

Tässä luvussa tutkimme maksujen reititystä Lightning-verkossa. Mutta herää kysymys: mikä estää välisolmuja hyväksymästä tulevaa maksua ilman, että se välittää sen seuraavaan määränpäähän, tavoitteenaan kaapata transaktio? Tämä on juuri HTLC:iden rooli, joita tutkimme seuraavassa luvussa.

HTLC – Hashed Time Locked Contract

4369b85a-1365-55d8-99e1-509088210116 :::video id=6f204b92-55a5-4939-9440-7c5b96a297bf:::

Tässä luvussa tutustumme siihen, miten Lightning mahdollistaa maksujen siirtymisen välisolmujen kautta ilman, että niitä tarvitsee luottaa, kiitos HTLC (Hashed Time-Locked Contracts) -älykkäiden sopimusten. Nämä älykkäät sopimukset varmistavat, että jokainen välisolmu saa varat kanavastaan vain, jos se välittää maksun lopulliselle vastaanottajalle, muuten maksua ei vahvisteta.

Maksujen reitityksessä esiin nouseva ongelma on siis tarvittava luottamus välisolmuihin ja välisolmujen keskinäinen luottamus. Havainnollistaaksemme tätä, palatkaamme yksinkertaistettuun Lightning-verkon esimerkkiimme, jossa on 3 solmua ja 2 kanavaa:

Alice haluaa lähettää 40 000 satsia Bobille, mutta hänellä ei ole suoraa kanavaa hänen kanssaan eikä hän halua avata sellaista. Hän etsii reittiä ja päättää mennä Suzien solmun kautta.

LNP201

Jos Alice naiivisti lähettää 40 000 satoshia Suzielle toivoen, että Suzie siirtäisi tämän summan Bobille, Suzie voisi pitää varat itsellään eikä siirtää mitään Bobille.

LNP201 Välttääkseen tämän tilanteen Lightning-verkossa käytämme HTLC:itä (Hashed Time-Locked Contracts), jotka tekevät maksun välisolmulle ehdolliseksi, mikä tarkoittaa, että Suzien on täytettävä tietyt ehdot päästäkseen käsiksi Alicen varoihin ja siirtääkseen ne Bobille.

Miten HTLC:t Toimivat

HTLC on erityinen sopimus, joka perustuu kahteen periaatteeseen:

Tässä on, miten tämä prosessi toimii esimerkissämme Alicen, Suzien ja Bobin kanssa:

LNP201 Salaisuuden luominen: Bob luo satunnaisen salaisuuden, jota merkitään s (esikuva), ja laskee sen hajautusarvon, jota merkitään r, käyttäen hajautusfunktiota, jota merkitään h. Meillä on:

r = h(s)

Hajautusfunktion käyttö tekee mahdottomaksi löytää s pelkästään h(s) avulla, mutta jos s annetaan, on helppo varmistaa, että se vastaa h(s).

LNP201

Maksupyynnön lähettäminen: Bob lähettää laskun Alicelle pyytäen maksua. Tämä lasku sisältää erityisesti hajautusarvon r.

LNP201

Ehdollisen maksun lähettäminen: Alice lähettää HTLC:n, joka on 40 000 satoshia, Suzielle. Ehto Suzien saada nämä varat on, että hän toimittaa Alicelle salaisuuden s', joka täyttää seuraavan yhtälön:

h(s') = r
LNP201

HTLC:n siirtäminen lopulliselle vastaanottajalle: Suzien, saadakseen 40 000 satoshia Alicelta, täytyy siirtää vastaava HTLC, joka on 40 000 satoshia, Bobille, jolla on sama ehto, nimittäin että hänen täytyy toimittaa Suzielle salaisuus s', joka täyttää yhtälön:

h(s') = r
LNP201

Vahvistus salaisuudella s: Bob toimittaa s:n Suzielle saadakseen luvatut 40 000 satoshia HTLC:ssä. Tällä salaisuudella Suzie voi sitten avata Alicen HTLC:n ja saada 40 000 satoshia Alicelta. Maksu on sitten oikein ohjattu Bobille.

LNP201 Tämä prosessi estää Suzieta pitämästä Alicen varoja suorittamatta siirtoa Bobille, koska hänen täytyy lähettää maksu Bobille saadakseen salaisuuden s ja siten avata Alicen HTLC. Toiminta pysyy samana, vaikka reitti sisältäisi useita välityssolmuja: kyse on vain Suzien toimien toistamisesta kullekin välityssolmulle. Jokainen solmu on suojattu HTLC:iden ehdoilla, koska viimeisen HTLC:n avaaminen vastaanottajan toimesta automaattisesti laukaisee kaikkien muiden HTLC:iden avaamisen kaskadina.

HTLC:ien vanhentuminen ja hallinta ongelmatilanteissa

Jos maksuprosessin aikana jokin välityssolmuista tai vastaanottajasolmu lopettaa vastaamisen, erityisesti internet- tai sähkökatkoksen yhteydessä, maksua ei voida suorittaa loppuun, koska tarvittavaa salaisuutta HTLC:ien avaamiseen ei välitetä. Ottaen esimerkkimme Alicen, Suzien ja Bobin kanssa, tämä ongelma ilmenee esimerkiksi, jos Bob ei välitä salaisuutta s Suzielle. Tässä tapauksessa kaikki reitin yläpuolella olevat HTLC:t ovat jumissa, ja myös niiden turvaamat varat.

LNP201

Välttääkseen tämän, Lightningin HTLC:illä on vanhentumisaika, joka mahdollistaa HTLC:n poistamisen, jos sitä ei ole suoritettu loppuun tietyn ajan kuluttua. Vanhentumisen järjestys on tietty, koska se alkaa ensin HTLC:stä, joka on lähimpänä vastaanottajaa, ja siirtyy sitten asteittain takaisin tapahtuman lähettäjälle. Esimerkissämme, jos Bob ei koskaan anna salaisuutta s Suzielle, tämä aiheuttaisi ensin Suzien HTLC:n Bobille vanhentumaan.

LNP201

Sitten HTLC Alicelta Suzielle.

LNP201

Jos erääntymisjärjestys olisi käännetty, Alice voisi palauttaa maksunsa ennen kuin Suzie ehtisi suojautua mahdolliselta huijaukselta. Todellakin, jos Bob palaa vaatimaan HTLC:tään samalla kun Alice on jo poistanut omansa, Suzie olisi epäedullisessa asemassa. Tämä HTLC:iden kaskadoituva erääntymisjärjestys varmistaa siis, että yksikään välittäjäsolmu ei kärsi epäreiluista tappioista.

HTLC:iden esitys sitoumustapahtumissa

Sitoumustapahtumat esittävät HTLC:t tavalla, joka mahdollistaa niiden asettamien ehtojen siirtämisen Bitcoinille pakotetun kanavan sulkemisen yhteydessä HTLC:n elinaikana. Muistutuksena, sitoumustapahtumat edustavat kanavan nykyistä tilaa kahden käyttäjän välillä ja mahdollistavat yksipuolisen pakotetun sulkemisen ongelmatilanteissa. Jokaisen kanavan uuden tilan myötä luodaan 2 sitoumustapahtumaa: yksi kummallekin osapuolelle. Palatkaamme esimerkkiimme Alicen, Suzien ja Bobin kanssa, mutta tarkastellaan tarkemmin, mitä tapahtuu kanavatasolla Alicen ja Suzien välillä, kun HTLC luodaan. LNP201

Ennen 40 000 satoshin maksun aloittamista Alicen ja Bobin välillä, Alicella on 100 000 satoshia kanavassaan Suzien kanssa, kun taas Suziella on 30 000. Heidän sitoumustapahtumansa ovat seuraavat:

LNP201

Alice on juuri saanut Bobin laskun, joka sisältää merkittävästi r:n, salaisuuden hashin. Hän voi siis rakentaa 40 000 satoshin HTLC:n Suzien kanssa. Tämä HTLC esitetään viimeisimmissä sitoumustapahtumissa lähtökohtana nimeltä "HTLC Out" Alicen puolella, koska varat ovat lähteviä, ja "HTLC In" Suzien puolella, koska varat ovat saapuvia.

LNP201

Nämä HTLC:hen liittyvät lähdöt jakavat täsmälleen samat ehdot, nimittäin:

Nämä ehdot pätevät vain, jos kanava suljetaan (eli sitoumustapahtuma julkaistaan ketjussa) samalla kun HTLC on edelleen aktiivinen Lightningissa, mikä tarkoittaa, että maksu Alicen ja Bobin välillä ei ole vielä valmistunut, ja HTLC:t eivät ole vielä vanhentuneet. Kiitos näiden ehtojen, Suzie voi palauttaa 40 000 satoshia HTLC:stä, joka hänelle kuuluu tarjoamalla s. Muussa tapauksessa Alice saa varat takaisin ajastimen vanhentumisen jälkeen, koska jos Suzie ei tiedä s:ää, se tarkoittaa, että hän ei ole siirtänyt 40 000 satoshia Bobille, ja siksi Alicen varat eivät ole hänelle velkaa.

Lisäksi, jos kanava suljetaan samalla kun useita HTLC:itä on odottamassa, luodaan yhtä monta lisälähtöä kuin käynnissä olevia HTLC:itä on. Jos kanavaa ei suljeta, niin Lightning-maksun vanhentumisen tai onnistumisen jälkeen luodaan uudet sitoumustapahtumat heijastamaan kanavan uutta, nyt vakaata tilaa, eli ilman odottavia HTLC:itä. HTLC:iin liittyvät lähdöt voidaan siis poistaa sitoumustapahtumista. LNP201

Lopulta, jos yhteistyössä tapahtuvan kanavan sulkemisen aikana HTLC on aktiivinen, Alice ja Suzie lopettavat uusien maksujen hyväksymisen ja odottavat meneillään olevien HTLC:iden ratkaisua tai vanhentumista. Tämä mahdollistaa heidän julkaista kevyemmän sulkemistransaktion, ilman HTLC:iin liittyviä ulostuloja, vähentäen näin maksuja ja välttäen mahdollisen aikalukon odottamisen. Mitä sinun tulisi oppia tästä luvusta?

HTLC:t mahdollistavat Lightning-maksujen reitittämisen useiden solmujen kautta ilman, että niitä tarvitsee luottaa. Tässä ovat keskeiset muistettavat asiat:

Seuraavassa luvussa tutustumme siihen, miten solmu, joka lähettää Lightning-transaktion, löytää ja valitsee reitit maksunsa toimittamiseksi vastaanottavalle solmulle.

Löytämäsi Tie

7e2ae959-c2a1-512e-b5d6-8fd962e819da :::video id=e5baa834-111d-46f5-a28b-3538bed2bbb0:::

Edellisissä luvuissa näimme, miten käyttää muiden solmujen kanavia maksujen reitittämiseen ja tavoittamaan solmun ilman, että on suoraan yhdistetty siihen kanavan kautta. Keskustelimme myös siitä, miten varmistetaan siirron turvallisuus luottamatta välittäjiin. Tässä luvussa keskitymme parhaan mahdollisen reitin löytämiseen kohdesolmuun.

Reititysongelma Lightning-verkossa

Kuten olemme nähneet, Lightning-verkossa maksua lähettävän solmun on laskettava koko reitti vastaanottajalle, koska käytämme sipulireititysjärjestelmää. Välisolmut eivät tiedä lähtöpistettä tai lopullista määränpäätä. Ne tietävät vain, mistä maksu tulee ja mihin solmuun ne siirtävät sen seuraavaksi. Tämä tarkoittaa, että lähettävän solmun on ylläpidettävä dynaamista paikallista topologiaa verkosta, olemassa olevista Lightning-solmuista ja niiden välisistä kanavista, ottaen huomioon avaukset, sulkemiset ja tilapäivitykset.

LNP201 Vaikka meillä on tämä Lightning-verkon topologia, reitityksen kannalta olennaista tietoa jää lähettävälle solmulle saavuttamattomiin, mikä on kanavien tarkka likviditeetin jakautuminen missä tahansa hetkessä. Itse asiassa, jokainen kanava näyttää vain kokonaiskapasiteettinsa, mutta rahojen sisäinen jakautuminen on vain kahden osallistuvan solmun tiedossa. Tämä aiheuttaa haasteita tehokkaalle reititykselle, sillä maksun onnistuminen riippuu erityisesti siitä, onko sen summa pienempi kuin valitun reitin pienin likviditeetti. Kuitenkaan likviditeetit eivät ole kaikki lähettävän solmun nähtävillä. LNP201

Verkkokartan Päivitys

Pitääkseen verkkokarttansa ajan tasalla, solmut vaihtavat säännöllisesti viestejä algoritmin kautta, jota kutsutaan "juoruiluksi". Tämä on hajautettu algoritmi, jota käytetään tiedon leviämiseen epidemian tavoin kaikkiin verkon solmuihin, mikä mahdollistaa kanavien globaalin tilan vaihdon ja synkronoinnin muutamassa viestintäsyklissä. Jokainen solmu välittää tietoa yhdelle tai useammalle satunnaisesti tai ei satunnaisesti valitulle naapurille, jotka puolestaan välittävät tiedon muille naapureille ja niin edelleen, kunnes globaalisti synkronoitu tila saavutetaan.

Kaksi pääviestiä, joita Lightning-solmut vaihtavat, ovat seuraavat:

Maksun Reititys

Otetaan esimerkki pienestä Lightning Networkista, jossa on 7 solmua: Alice, Bob, 1, 2, 3, 4 ja 5. Kuvitellaan, että Alice haluaa lähettää maksun Bobille, mutta sen on kuljettava välisolmujen kautta.

LNP201

Tässä on varojen todellinen jakautuminen näissä kanavissa:

LNP201

Jotta Alice voisi tehdä 100 000 satsin maksun Bobille, reititysvaihtoehdot ovat rajoitettuja kunkin kanavan käytettävissä olevan likviditeetin mukaan. Alicen kannalta optimaalinen reitti, tunnetun likviditeetin jakautumisen perusteella, voisi olla järjestys Alice → 1 → 2 → 4 → 5 → Bob:

LNP201

Koska Alice ei kuitenkaan tiedä tarkkaa varojen jakautumista kussakin kanavassa, hänen on arvioitava optimaalinen reitti todennäköisyyden perusteella ottaen huomioon seuraavat kriteerit:

Maksun suoritus

Alice päättää testata ensimmäistä reittiään (Alice → 1 → 2 → 5 → Bob). Hän siis lähettää 100 000 satoshin HTLC:n solmulle 1. Tämä solmu tarkistaa, että sillä on riittävästi likviditeettiä solmun 2 kanssa, ja jatkaa siirtoa. Solmu 2 sitten vastaanottaa HTLC:n solmulta 1, mutta huomaa, ettei sillä ole tarpeeksi likviditeettiä kanavassaan solmun 5 kanssa siirtääkseen 100 000 satoshin maksun. Se lähettää virheviestin takaisin solmulle 1, joka välittää sen Alicelle. Tämä reitti epäonnistui.

LNP201

Alice yrittää sitten reitittää maksunsa käyttäen toista reittiään (Alice → 1 → 2 → 4 → 5 → Bob). Hän lähettää 100 000 satoshin HTLC:n solmulle 1, joka välittää sen solmulle 2, sitten solmulle 4, solmulle 5 ja lopulta Bobille. Tällä kertaa likviditeetti on riittävä, ja reitti toimii. Jokainen solmu avaa HTLC:nsä kaskadina käyttäen Bobin antamaa esikuvaa (salaisuus s), mikä mahdollistaa Alicen maksun Bobille onnistuneesti.

LNP201

Reitin etsintä tapahtuu seuraavasti: lähetysolmu aloittaa tunnistamalla parhaat mahdolliset reitit, sitten yrittää maksuja peräkkäin, kunnes toimiva reitti löytyy.

On huomionarvoista, että Bob voi antaa Alicelle tietoja laskussa helpottaakseen reititystä. Esimerkiksi hän voi ilmoittaa lähellä olevista kanavista, joilla on riittävästi likviditeettiä tai paljastaa yksityisten kanavien olemassaolon. Nämä vihjeet auttavat Alicea välttämään reittejä, joilla on vähän onnistumisen mahdollisuuksia, ja ensin yrittämään Bobin suosittelemia polkuja.

Mitä sinun tulisi ottaa tästä luvusta mukaasi?

Seuraavassa luvussa tutkimme erityisesti laskujen toimintaa, lisäksi joitakin muita Lightning-verkon käyttämiä työkaluja.

Lightning-verkon työkalut

Lasku, LNURL ja Keysend

e34c7ecd-2327-52e3-b61e-c837d9e5e8b0 :::video id=309c3412-506e-4189-ad46-5e5088c55008::: Tässä luvussa tarkastelemme tarkemmin Lightning laskujen toimintaa, eli maksupyyntöjä, jotka vastaanottava solmu lähettää lähettävälle solmulle. Tavoitteena on ymmärtää, miten maksuja suoritetaan ja vastaanotetaan Lightning-verkossa. Keskustelemme myös kahdesta klassisten laskujen vaihtoehdosta: LNURL ja Keysend. LNP201

Lightning-laskujen rakenne

Kuten HTLC-luvussa selitettiin, jokainen maksu alkaa laskun luomisella vastaanottajan toimesta. Tämä lasku välitetään sitten maksajalle (QR-koodin tai kopioimalla ja liittämällä) maksun aloittamiseksi. Lasku koostuu kahdesta pääosasta:

Tyypillisen laskun rakenne alkaa tunnisteella ln "Lightning" varten, jonka jälkeen tulee bc Bitcoinille, sitten laskun summa. Erotin 1 erottaa ihmislukukelpoisen osan tietosisällöstä (payload).

Otetaan esimerkiksi seuraava lasku:

lnbc100u1p0x7x7dpp5l7r9y50wrzz0lwnsqgxdks50lxtwkl0mhd9lslr4rcgdtt2n6lssp5l3pkhdx0cmc9gfsqvw5xjhph84my2frzjqxqyz5vq9qsp5k4mkzv5jd8u5n89d2yc50x7ptkl0zprx0dfjh3km7g0x98g70hsqq7sqqqgqqyqqqqlgqqvnv2k5ehwnylq3rhpd9g2y0sq9ujyxsqqypjqqyqqqqqqqqqqqsqqqqq9qsq3vql5f6e45xztgj7y6xw6ghrcz3vmh8msrz8myvhsarxg42ce9yyn53lgnryx0m6qqld8fql

Voimme jo jakaa sen kahteen osaan. Ensin on ihmislukukelpoinen osa:

lnbc100u

Sitten tietosisältöä varten tarkoitettu osa:


p0x7x7dpp5l7r9y50wrzz0lwnsqgxdks50lxtwkl0mhd9lslr4rcgdtt2n6lssp5l3pkhdx0cmc9gfsqvw5xjhph84my2frzjqxqyz5vq9qsp5k4mkzv5jd8u5n89d2yc50x7ptkl0zprx0dfjh3km7g0x98g70hsqq7sqqqgqqyqqqqlgqqvnv2k5ehwnylq3rhpd9g2y0sq9ujyxsqqypjqqyqqqqqqqqqqqsqqqqq9qsq3vql5f6e45xztgj7y6xw6ghrcz3vmh8msrz8myvhsarxg42ce9yyn53lgnryx0m6qqld8fql

Kaksi osaa on erotettu toisistaan 1:llä. Tämä erotin valittiin erikoismerkin sijaan, jotta koko laskun kopioiminen kaksoisklikkaamalla olisi helppoa. Ensimmäisessä osassa voimme nähdä, että:

Maksun määrä ilmaistaan bitcoinin alayksiköissä. Tässä käytetyt yksiköt:

Laskun Sisältö

Laskun sisältö käsittää useita maksun käsittelyyn tarvittavia tietoja:

Laskut koodataan sitten bech32-muotoon, samaan tapaan kuin Bitcoin SegWit -osoitteet (muoto alkaa bc1).

LNURL Kotiutus

Perinteisessä transaktiossa, kuten kaupassa tehtävässä ostoksessa, lasku luodaan maksettavaksi tulevalle kokonaissummalle. Kun lasku esitetään (QR-koodin tai merkkijonon muodossa), asiakas voi skannata sen ja viimeistellä transaktion. Maksu noudattaa sitten perinteistä prosessia, jota tutkimme edellisessä osiossa. Tämä prosessi voi kuitenkin joskus olla hyvin hankala käyttäjäkokemuksen kannalta, koska se vaatii vastaanottajalta tiedon lähettämistä lähettäjälle laskun kautta.

Tietyissä tilanteissa, kuten bitcoineja nostettaessa online-palvelusta, perinteinen prosessi on liian hankala. Tällaisissa tapauksissa LNURL-nostoratkaisu yksinkertaistaa tätä prosessia näyttämällä QR-koodin, jonka vastaanottajan lompakko skannaa automaattisesti luodakseen laskun. Palvelu maksaa sitten laskun, ja käyttäjä näkee vain välittömän noston.

LNP201

LNURL on viestintäprotokolla, joka määrittelee joukon toiminnallisuuksia, jotka on suunniteltu yksinkertaistamaan vuorovaikutusta Lightning-nodien ja asiakkaiden sekä kolmansien osapuolten sovellusten välillä. LNURL-nosto, kuten juuri näimme, on siis vain yksi esimerkki muiden toiminnallisuuksien joukossa. Tämä protokolla perustuu HTTP:hen ja mahdollistaa linkkien luomisen erilaisiin toimintoihin, kuten maksupyynnön, nostopyynnön tai muiden toiminnallisuuksien, jotka parantavat käyttäjäkokemusta. Jokainen LNURL on bech32-koodattu URL, jossa on lnurl-etuliite, joka skannattaessa laukaisee sarjan automaattisia toimintoja Lightning-lompakossa. Esimerkiksi LNURL-withdraw (LUD-03) -ominaisuus mahdollistaa varojen nostamisen palvelusta skannaamalla QR-koodin, ilman että laskua tarvitsee luoda manuaalisesti. Samoin LNURL-auth (LUD-04) mahdollistaa online-palveluihin kirjautumisen käyttämällä yksityistä avainta Lightning-lompakossa salasanan sijaan.

Lightning-maksun lähettäminen ilman laskua: Keysend

Toinen mielenkiintoinen tapaus on varojen siirto ilman etukäteen saatuja laskuja, tunnetaan nimellä "Keysend". Tämä protokolla mahdollistaa varojen lähettämisen lisäämällä esikuvan salattuun maksutietoon, joka on vain vastaanottajan saatavilla. Tämä esikuva mahdollistaa vastaanottajan HTLC:n avaamisen, jolloin hän voi hakea varat ilman, että laskua on etukäteen luotu.

Yksinkertaistaen, tässä protokollassa lähettäjä luo salaisuuden, jota käytetään HTLC:ssä, eikä vastaanottaja. Käytännössä tämä mahdollistaa lähettäjän suorittaa maksun ilman, että on tarvinnut olla yhteydessä vastaanottajaan etukäteen.

LNP201

Mitä sinun tulisi ottaa mukaasi tästä luvusta?

Seuraavassa luvussa näemme, kuinka solmuoperaattori voi hallita likviditeettiä kanavissaan, jotta ei koskaan jää jumiin ja voi aina lähettää ja vastaanottaa maksuja Lightning-verkossa.

Likviditeettisi Hallinta

cc76d0c4-d958-57f5-84bf-177e21393f48 :::video id=96096aef-e4ce-4c44-a022-57e27082232a:::

Tässä luvussa tutkimme strategioita tehokkaaseen likviditeetin hallintaan Lightning-verkossa. Likviditeetin hallinta vaihtelee käyttäjätyypin ja kontekstin mukaan. Käymme läpi pääperiaatteet ja olemassa olevat tekniikat ymmärtääksemme paremmin, kuinka optimoida tämä hallinta.

Likviditeettitarpeet

Lightning-verkossa on kolme pääkäyttäjäprofiilia, joilla kullakin on erityiset likviditeettitarpeet:

Nämä profiilit eivät tietenkään ole kiinteitä; käyttäjä voi vaihtaa maksajan ja saajan roolien välillä riippuen transaktioista. Esimerkiksi Bob voisi vastaanottaa palkkansa Lightning-verkossa työnantajaltaan, mikä asettaisi hänet "myyjän" asemaan tarviten saapuvaa likviditeettiä. Myöhemmin, jos hän haluaa käyttää palkkaansa ruoan ostamiseen, hänestä tulee "maksaja" ja hänen on silloin oltava lähtevää likviditeettiä.

Ymmärtääksemme paremmin, otetaan esimerkki yksinkertaisesta verkosta, joka koostuu kolmesta solmusta: ostaja (Alice), reititin (Suzie) ja myyjä (Bob).

LNP201

Kuvittele, että ostaja haluaa lähettää 30 000 satoshia myyjälle ja että maksu kulkee reitittimen solmun kautta. Jokaisella osapuolella on silloin oltava vähimmäismäärä likviditeettiä maksun suuntaan:

LNP201

Likviditeetinhallintastrategiat

Maksajien on varmistettava riittävä likviditeetti kanaviensa puolella taatakseen lähtevän likviditeetin. Tämä osoittautuu suhteellisen yksinkertaiseksi, sillä uusien Lightning-kanavien avaaminen riittää tähän likviditeettiin. Itse asiassa alussa multisig-sopimuksessa lukitut varat ovat kokonaan maksajan puolella Lightning-kanavassa. Maksukyky on siis taattu niin kauan kuin kanavia avataan tarpeeksi varoilla. Kun lähtevä likviditeetti on käytetty, riittää uusien kanavien avaaminen. Toisaalta myyjälle tehtävä on monimutkaisempi. Jotta he voivat vastaanottaa maksuja, heidän on oltava likviditeettiä kanaviensa vastakkaisella puolella. Siksi pelkkä kanavan avaaminen ei riitä: heidän on myös suoritettava maksu tässä kanavassa siirtääkseen likviditeetin toiselle puolelle ennen kuin he voivat itse vastaanottaa maksuja. Tietyille Lightning-käyttäjäprofiileille, kuten kauppiaille, on selvä epäsuhta sen välillä, mitä heidän solmunsa lähettää ja mitä se vastaanottaa, koska liiketoiminnan tavoitteena on pääasiassa kerätä enemmän kuin se kuluttaa, jotta se voi tuottaa voittoa. Onneksi näille käyttäjille, joilla on erityisiä saapuvan likviditeetin tarpeita, on olemassa useita ratkaisuja:

LNP201 LNP201

Lopuksi reitittimille, joiden tavoitteena on maksimoida käsiteltyjen maksujen määrä ja kerätyt palkkiot, niiden on:

Loop Out -palvelu

Loop Out -palvelu, jonka Lightning Labs tarjoaa, mahdollistaa likviditeetin siirtämisen kanavan vastakkaiselle puolelle samalla kun varat lunastetaan takaisin Bitcoin-lohkoketjuun. Esimerkiksi Alice lähettää 1 miljoona satoshia Lightningin kautta loop-solmulle, joka palauttaa nämä varat hänelle on-chain bitcoineina. Tämä tasapainottaa hänen kanavansa 1 miljoonalla satoshilla kummallakin puolella, optimoiden hänen kykynsä vastaanottaa maksuja.

LNP201

Näin ollen tämä palvelu mahdollistaa tulevan likviditeetin samalla kun lunastetaan omat bitcoinit on-chain, mikä auttaa rajoittamaan käteisen immobilisointia, jota tarvitaan maksujen vastaanottamiseen Lightningin kautta.

Mitä sinun tulisi ottaa tästä luvusta mukaasi?

Seuraavassa luvussa ehdotan tärkeimpien käsitteiden kertausta tästä koulutuksesta.

Mene pidemmälle

Koulutuksen yhteenveto

a65a571c-561b-5e1c-87bf-494644653c22 :::video id=5f4f4344-ef27-4765-8f09-8262e6833bde:::

Tässä viimeisessä luvussa, joka merkitsee LNP201-koulutuksen päätöstä, ehdotan, että kertaamme yhdessä käsittelemämme tärkeät konseptit. Tämän koulutuksen tavoitteena oli tarjota sinulle kattava ja tekninen ymmärrys Lightning-verkosta. Havaitsimme, miten Lightning-verkko nojaa Bitcoinin lohkoketjuun suorittaakseen off-chain-transaktioita, säilyttäen samalla Bitcoinin perusominaisuudet, erityisesti tarpeettomuuden luottaa muihin solmuihin.

Maksukanavat

Alkuluvuissa tutkimme, miten kaksi osapuolta voi suorittaa transaktioita Bitcoinin lohkoketjun ulkopuolella avaamalla maksukanavan. Tässä ovat käsitellyt vaiheet:

LNP201 2. Transaktiot Kanavassa: Tässä kanavassa on sitten mahdollista suorittaa lukuisia transaktioita julkaisematta niitä lohkoketjussa. Jokainen Lightning-transaktio luo kanavan uuden tilan, joka heijastuu sitoutumistransaktiossa. LNP201

LNP201

Kanavien Verkosto

Tutkittuamme erillisiä kanavia, laajensimme analyysiamme kanavien verkostoon:

LNP201 LNP201 LNP201

Likviditeetin Hallinta

Olemme nähneet, että likviditeetin hallinta on haaste Lightning-verkossa maksujen sujuvan kulun varmistamiseksi. Maksujen lähettäminen on suhteellisen yksinkertaista: se vaatii vain kanavan avaamisen. Kuitenkin maksujen vastaanottaminen edellyttää likviditeetin olemassaoloa omien kanavien vastakkaisella puolella. Tässä joitakin käsiteltyjä strategioita:

LNP201 LNP201

Lopullinen osio

Arviot & Arvosanat

38814c99-eb7b-5772-af49-4386ee2ce9b0 true

Loppukoe

7ed33400-aef7-5f3e-bfb1-7867e445d708 true

Yhteenveto

afc0d72b-4fbc-5893-90b2-e27fb519ad02 true