Salamaverkko on todennäköisesti odotetuin teknologinen innovaatio, joka voidaan ottaa käyttöön Bitcoinin päälle. Joseph Poonin ja Tadge Dryjan ensimmäisen kerran noin vuosi sitten ehdottama maksutaso lupaa tukea käytännössä rajattoman määrän ketjujen ulkopuolisia tapahtumia käyttäjien keskuudessa lähes ilman kustannuksia – samalla hyödyntämällä Bitcoinin tarjoamaa turvallisuutta.

Ainakin kolme yritystä – Poon ja Dryja SalamaBlockstream ja Blockchain – työskentelevät parhaillaan tekniikan toteutusten parissa. Mutta harvat tämän pienen teknologisen etulinjan ulkopuolella ymmärtävät täysin, kuinka “mikromaksujen tulevaisuus” on asetettu parantamaan Bitcoinin ominaisuuksia.

Tässä kolmiosaisessa sarjassa Bitcoin Magazine esittelee Lightning Networkin peruselementit ja näyttää, kuinka ne sopivat yhteen tämän tulevan protokollakerroksen toteuttamiseksi.

Sarjan tämä ensimmäinen osa muodostaa tarvittavat rakennuspalikat ja osoittaa, kuinka ne voidaan yhdistää “älykkäiksi sopimuksiksi”, joita voidaan soveltaa Lightning Networkin ensimmäisen vaatimuksen toteuttamiseen: kaksisuuntainen maksukanava.

(Huomaa: Jokainen, jolla on vankka käsitys Bitcoinista, voi ohittaa rakennuspalikat.)

Rakennusosa # 1: Vahvistamattomat liiketoimet

Ytimessä Bitcoin-protokolla koostuu tapahtumista, jotka ovat tyypillisesti sidoksissa aiempiin tapahtumiin ja mahdollisesti tuleviin tapahtumiin. Jokainen tapahtuma sisältää syötteitä, jotka viittaavat osoitteisiin, joista bitcoinit lähetetään, ja lähtöjä, jotka viittaavat osoitteisiin, joihin bitcoinit lähetetään. Lisäksi syötteiden on sisällettävä vaatimukset bitcoinien lähettämiselle, kuten allekirjoitukset, jotka todistavat syöttöosoitteiden “omistajuuden”. Sillä välin tuotokset määrittävät uudet vaatimukset, jotka on sisällytettävä seuraavan tapahtuman syötteisiin.

Yhtenä tärkeimmistä ominaisuuksistaan ​​salamaverkko on rakennettu enemmän tai vähemmän säännöllisistä Bitcoin-tapahtumista. Näitä tapahtumia ei yleensä lähetetä tosiasiallisesti Bitcoin-verkon kautta. Sen sijaan ne tallennetaan paikallisesti käyttäjien solmuihin – mutta ne voidaan lähettää verkon kautta milloin tahansa.

Vahvistamaton tapahtuma

Rakennuspalikka # 2: Kaksinkertaisen kulutuksen suojaus

Salamaverkoston toinen rakennuspalikka ei todennäköisesti vaadi paljon selittämistä, koska se on kiistatta itse Bitcoinin olemassaolon perustelu: kaksinkertainen kulutussuoja. Jos kaksi tapahtumaa (tai: panosta) luottaa samaan lähtöön, vain yksi voi vahvistaa.

Tärkeää pitää tässä mielessä se, että jopa vahvistamattomat tapahtumat voivat olla ristiriitaisia, mikä tarkoittaa, että vain yksi voi koskaan vahvistaa.

Tuplakulut

Rakennuspalikka # 3: Multisig

Salamaverkon kolmas rakennusosa on myös suoraviivainen: moniallekirjoitusosoitteet (multisig). (Tai yleisemmin: P2SH-osoitteet.)

Multisig-osoitteet ovat Bitcoin-osoitteita, jotka – kuten nimestä voi päätellä – vaativat useita yksityisiä avaimia bitcoinien lukituksen avaamiseen ja käyttämiseen. Multisig-osoitteet voidaan asettaa kaikenlaisissa olosuhteissa. Esimerkiksi vaatia kaksi kolmesta mahdollisesta näppäimestä tai viisitoista viidestätoista, tai melkein mikä tahansa muu yhdistelmä.

Salamaverkko käyttää usein kahta kahdesta (2/2) multisig-kokoonpanoa. Bitkoiinien lukituksen avaaminen 2/2-multisig-osoitteista vaatii kaksi allekirjoitusta, kahdesta erillisestä avaimesta.

Multisig

Rakennuspalikka # 4: Aikalukot

Neljäs rakennuspalikka on aikalukko. Aikalukot voivat “lukita bitcoinit ylös” lähdökseen, jotta ne olisivat kulutettavissa (sisällytettäviksi seuraavaan syötteeseen) vain jossain vaiheessa tulevaisuudessa.

Aikalukituksia on kahta erilaista tyyppiä: absoluuttinen tyyppi, nimeltään CheckLockTimeVerify (CLTV), ja suhteellinen tyyppi CheckSequenceVerify (CSV). CLTV lukitsee bitcoinit aina (enemmän tai vähemmän) konkreettiseen aikaan tulevaisuudessa: todellinen aika ja päivämäärä tai tietty lohkon korkeus. CSV käyttää sen sijaan suhteellista aikaa. Kun CVS-lähtö on tallennettu lohkoketjuun, kuluu tietty määrä lohkoja tästä pisteestä, ennen kuin bitcoineja voidaan käyttää uudelleen.

Aikaraja

Rakennusosa # 5: Hash-arvot ja salaisuudet

Viides ja viimeinen rakennuspalikka – salaus – on itse Bitcoinin peruselementti. Mutta salamaverkossa sitä käytetään uudella tavalla.

Lyhyesti sanottuna “arvo” tai “salaisuus” on pitkä ja ainutlaatuinen numerosarja, jota on käytännössä mahdotonta arvata, jopa tietokoneelle, jolla on ääretön yritys. Erikoislaskennalla tämä arvo (tai salaisuus) voidaan “hajauttaa” eri numerosarjaan, “hajautus”. Ja tässä on temppu: kuka tahansa, joka tietää arvon, voi helposti toistaa hashin. Mutta tämä ei toimi toisinpäin; se on yksisuuntainen katu.

Tätä temppua voidaan hyödyntää itse Bitcoinissa, jälleen “bitcoinien lukitsemiseksi”. (Itse asiassa, miten Bitcoin todella toimii.) Esimerkiksi hajautus voidaan sisällyttää lähtöön ja vaatia myöhempää syötettä sisällyttämään vastaava arvo, jotta sitä voidaan käyttää.

Salaisuus

Ensimmäinen haaste: kaksisuuntaiset maksukanavat

Jo ennen salamaverkon esittelyä maksukanavien käsite oli ollut olemassa jonkin aikaa. Tyypilliset maksukanavat ovat hyödyllisiä tiettyihin tarkoituksiin, mutta myös rajoitettuja: ne ovat yksisuuntaisia. Alice voi maksaa Bobille useita ketjun ulkopuolisia tapahtumia, mutta Bob ei voi maksaa Alicelle lainkaan saman kanavan kautta.

Salaman verkon keskeisenä piirteenä Poon ja Dryja ehdottivat luotettavia kaksisuuntaisia ​​maksukanavia.

Kanavan avaaminen

Kaksisuuntaisen maksukanavan perustamiseksi molempien osapuolten on ensin sovittava avaavasta tapahtumasta. Tämä avaustapahtuma määrittää, kuinka monta bitcoinia kukin talletetaan kanavalle.

Oletetaan, että Alice haluaa lähettää yhden bitcoinin Bobille. Koska Alice ja Bob odottavat kauppaa useammin, he päättävät avata kaksisuuntaisen maksukanavan ja käyttää tätä bitcoinin lähettämiseen. (Koko bitcoinin lähettäminen on luultavasti paljon maksukanavalle, koska niistä voi olla hyötyä pienemmissä maksuissa – mutta se on täysin mahdollista.)

Kanavan avaamiseksi Alice ja Bob lähettävät kumpikin viisi bitcoinia 2/2-multisig-osoitteeseen. Tämä on “avaustapahtuma”. Bitcoineja voidaan käyttää tästä osoitteesta vain, jos sekä Alice että Bob allekirjoittavat seuraavan tapahtuman.

Lisäksi Alice ja Bob luovat molemmat salaisuuden (numerosarjan) ja vaihtavat hajautusmerkin.

Alice luo nyt heti seuraavan tapahtuman avaustapahtumasta. Tämä on “sitoumustapahtuma”. Sitoumustapahtuman myötä Alice lähettää itselleen neljä bitcoinia ja kuusi bittiä toiseen multisig-osoitteeseen. Tämä toinen multisig-osoite on vähän funky. Bob voi avata sen yksin, mutta vasta, kun 1000 ylimääräistä lohkoa on kaivettu sen jälkeen, kun se on sisällytetty lohkoketjuun; se sisältää CSV-lukon. Tai Alice voi avata sen yksin, mutta vain, jos hän sisältää myös salaisuuden, josta Bob on juuri antanut hänelle hashin. (Alicella ei tietenkään ole aavistustakaan, mikä tämä salaisuus on – hän tietää vain hashin – joten hän ei voi mitenkään hyödyntää tätä vaihtoehtoa juuri nyt.)

Alice allekirjoittaa tämän sitoumuskauppansa. Mutta hän ei lähetä sitä! Sen sijaan hän antaa sen Bobille.

Sillä välin Bob tekee saman, mutta peilaa. Hän luo myös sitoutumistapahtuman, josta hän lähettää itselleen kuusi bitcoinia ja neljä funky uudelle multisig-osoitteelle. Alice voi avata tämän osoitteen, jos hän odottaa vielä 1000 lohkoa, tai Bob voi avata sen Alicella salaisuutensa avulla.

Bob allekirjoittaa tämän puoliskon ja antaa sen Alicelle.

Kaiken tämän “puoliksi kelvollisten” sitoutumistapahtumien ja salaisuuksien hajautuksen jälkeen molemmat allekirjoittavat ja lähettävät avaustapahtuman varmistaakseen, että se on tallennettu estoketjuun. Kanava on nyt virallisesti auki.

Tässä vaiheessa sekä Alice että Bob voisivat allekirjoittaa ja lähettää toisilta saamansa puolitiedot sitoumustapahtuman. Jos Alice tekee, Bob saa heti kuusi bitcoinia. Jos Bob tekee, Alice saa heti neljä bitcoinia. Mutta kuka allekirjoittaa ja lähettää tapahtuman, on odotettava 1000 lohkoa avaamaan seuraava multisig-osoite ja vaatimaan jäljellä olevat bitcoinit.

Maksukanava A

Tämä on kuitenkin maksukanavan avain temppu: kumpikaan ei allekirjoita ja lähetä puolta tapahtumastaan.

Kanavan päivittäminen

Hieman myöhemmin Bob haluaa lähettää Alicelle yhden bitcoinin takaisin. He haluavat päivittää kanavan tilan ja tehdä tasapainosta taas viisi-viisi. Tämän saavuttamiseksi Alice ja Bob tekevät kaksi asiaa.

Ensinnäkin molemmat toistavat prosessin edellä kuvatulla tavalla (paitsi että avaustapahtuma on jo tallennettu lohkoketjuun; kyseinen osa ohitetaan). Tällä kertaa sekä Alice että Bob määrittelevät itselleen viisi bitcoinia ja molemmat viisi bitcoinia funky-multisig-osoitteille. Näiden multisig-osoitteiden ehdot ovat samanlaiset, paitsi että ne edellyttävät uusia salaisuuksia: sekä Alice että Bob toimittavat toisilleen uusia hajautuksia. Molemmat allekirjoittavat uuden puoliksi voimassa olevan sitoumustapahtuman ja antavat sen toisilleen.

Toiseksi Alice ja Bob luovuttavat toisilleen ensimmäiset salaisuutensa ensimmäisessä kokoonpanossa käytettynä.

Tässä vaiheessa taas sekä Alice että Bob voisivat allekirjoittaa ja lähettää uuden juuri puoliksi kelvollisen sitoumustapahtuman. Heidän vastapuolensa saisi heti viisi bitcoinia, kun taas lähetystoiminnan harjoittajan olisi odotettava 1000 korttelia. Sellaisena kanava päivitetään.

Mutta mikä estää Bobia lähettämästä vanhempaa sitoutumistapahtumaa sen sijaan? Tämä sitoumustapahtuma johti polulle, joka maksoi hänelle kuusi bitcoinia viiden sijasta ….

Bobia pysäyttää tietysti hänen ensimmäinen salaisuutensa, jonka hän on nyt antanut Alicelle.

Bob ei voi enää turvallisesti allekirjoittaa ja lähettää vanhempaa sitoutumistapahtumaa, koska Alice tietää nyt Bobin ensimmäisen salaisuuden. Jos Bob allekirjoittaisi ja lähettäisi kyseisen sitoumustapahtuman, hän lähetti välittömästi neljä bitcoinia Alicelle … ja hänen täytyi odottaa 1000 lohkoa saadakseen omat kuusi bitcoiniaan. Se on ongelma, koska nyt, kun Alice tietää hänen salaisuutensa, hän voisi käyttää tätä aikaa lyödä Bobia lyöntiin ja vaatia myös muut kuusi bitcoinia!

Ja koska Bobilla on myös Alicen salaisuus, tämä pätee päinvastoin. Jos Alice yrittää allekirjoittaa ja lähettää vanhan sitoutumistapahtuman, Bob voi varastaa kaikki kanavan bitcoinit.

Tämä tarkoittaa tietysti sitä, että sekä Alice että Bob kannustetaan voimakkaasti pelaamaan oikeudenmukaisesti ja allekirjoittavat ja lähettävät vain kanavan viimeisintä tilaa.

Maksukanava B

Seuraavaksi tämän kaksisuuntaisen maksukanavan kokoonpanoa on laajennettava maksujen sallimiseksi verkon kautta. Tätä käsitellään tämän sarjan toisessa artikkelissa.

Kiitos Rusty Russell ja Joseph Poon palautteesta.