Spacechains: Kuinka tämä uusi Bitcoin-sivuketjuehdotus toimii

Lähdesolmu: 1544330

Spacechains on ehdotettu Bitcoin-sivuketju, joka tarjoaa yksisuuntaisen kiinnitysmekanismin, joka hyödyntää sokkoyhdistysmiinojen suunnittelua.

Ajatus sivuketjuista Bitcoinin skaalaus- ja ominaisuuslaajennusmekanismina on hyvin vanha käsite. Eräänlainen perusidea sivuketjuista, yhdistää louhitut ketjut, palaa jopa ennen Satoshin katoamista.

Tuo ehdotus oli yksinkertaisesti ajatus kahdesta täysin erillisestä ja toisiinsa liittymättömästä ketjusta, joita sama kaivostyöläisten ryhmä louhisi ilman kykyä siirtää mitään ketjujen välillä. The alkuperäinen sivuketjuehdotus sen tekivät vuonna 2014 monet ihmiset, jotka perustivat Blockstreamin kirjaimellisesti noin viikko lehden julkaisemisen jälkeen. Perusajatuksena oli saada kolikot liikkumaan edestakaisin pääasiallisen Bitcoin-lohkoketjun ja muiden sivuketjujen välillä, jolloin yksinkertaisia ​​maksuvarmennustodistuksia (SPV) käytettiin todistamaan, että asiat ovat päteviä, kun lähetät kolikoita ketjusta toiseen. Tämä ei koskaan toteutunut ketjujen uudelleenjärjestelyjen monimutkaisuudesta, varkausmahdollisuuksista ja kaivostoiminnan keskittämisen riskeistä (joista kaikista voit lukea julkaisun osiosta neljä Bitcoin valkoinen paperi).

Sivuketjujen kiinnitysmekanismeja voi olla kahta erilaista, yksisuuntaista ja kaksisuuntaista. Merkitysten tulee olla ilmeisiä – kaksisuuntaisessa tapissa kolikot voivat liikkua edestakaisin emoketjun ja sivuketjun välillä, ja yksisuuntaisessa tapissa ne voivat siirtyä vain pääketjusta sivuketjuun eivätkä koskaan liiku takaisin. Tällä hetkellä ainoa Bitcoinissa toteutettu kaksisuuntainen sivuketjukiinnitysmuoto on liittoutuneen konsensuksen kautta, mikä tarkoittaa, että liitoksen takaa luotettu joukko "säilyttäjiä", jotka pitävät hallinnassa sivuketjuun sidottuja varoja multisig-lompakossa, kunnes ne nostetaan.

Ihmiset ovat kuitenkin jatkaneet työskentelyä muiden sivuketjutappimallien parissa, joita ei ole yhdistetty. Tässä aion käydä läpi Ruben Somsenin Spacechain-ehdotuksen yhtenä esimerkkinä. Se on yksisuuntainen tappimekanismi, joka käyttää sokkoyhdistysmiinarakennetta, samanlainen kuin Paul Stztorc's. Tämä tarkoittaa, että kolikot voivat mennä vain sivuketjuun eivätkä koskaan poistu, ja että kaivostyöntekijöiden ei tarvitse suorittaa uutta ohjelmistoa saadakseen korvauksen sivuketjun louhinnasta (kuten tulen myöhemmin käsittelemään, he voivat hyötyä enemmän tekemällä niin).

Spacechain-ehdotus

Yhdistelmälouhinta edellyttää, että kaivostyöntekijät ajavat sekä Bitcoin-ketjun että minkä tahansa muun louhittavan ketjun solmuja, jotta he voivat koota molempien ketjujen lohkot ja sitoutua niihin kaivamansa Bitcoin-lohkootsikossa. Sokkoyhdistyslouhinta hyödyntää sitä tosiasiaa, että todellisuudessa Bitcoinin kaivostyöntekijöillä tarvitsee vain olla toisen ketjun lohkootsikko sitoutuakseen Bitcoin-lohkossaan, joten joku muu voi itse asiassa ottaa vaivan koota lohkon toista ketjua varten.

Somsenin ehdottamaa mekanismia tähän voidaan hyödyntää ANYPREVOUT (APO), jotta kuka tahansa voi kilpailla seuraavan sivuketjulohkon rakentamisesta, samalla kun taataan, että Bitcoinin pääketjulohkoa kohden voidaan sitoutua vain yksi lohko. Toinen Rubenin ehdotuksen etu on, että se ei vaadi erityistä pehmeää haarukkaa mahdollistamaan avaruusketjujen käyttöönotto. Eltoo/ANYPREVOUTia ehdotetaan eduksi Lightning Networkille, joka mahdollistaa joustavat tilaketjut sekä kanavatehtaita. Avaruusketjut ovat yksinkertaisesti toinen mahdollisuus monille asioille, joille ANYPREVOUTin mahdollistaminen tasoittaisi tietä.

Hänen sokean yhdistämisen louhintaehdotuksensa yleinen ajatus on, että käyttämällä APO:ta voit ennalta määrittää pitkän joukon tapahtumia, jotka käyttävät samaan alkuperäiseen UTXO:aan ja sitoutuvat luomaan sen aina uudelleen. Kuvittele siis yksi satoshi UTXO, jossa jokainen valmiiksi luotu tapahtuma takaa, että sama UTXO luodaan uudelleen ulostulona, ​​kun se vahvistetaan. Ajattele sitä eräänlaisena merkkinä, tämä erityinen UTXO on tunniste, jonka avulla jokainen Bitcoinin päälohkoketjua katsova tietää: "Tästä löydän sitoutumisen sivuketjun X:n lohkoihin." Tämä jättää kuitenkin avoimeksi yhden ongelman: kaivospalkkiot. Jos UTXO on luotava uudelleen samalla summalla, ei ole varoja maksujen maksamiseen.

Tämä voidaan hoitaa hyödyntämällä SIGHASH_SINGLE (syötteen allekirjoitus merkitsee vain yhden syötteen ja vastaavan lähdön) ja SIGHASH_ANYONEMAKSAA (ihmiset voivat vapaasti lisätä ylimääräisiä tuloja ja lähtöjä allekirjoitusta mitätöimättä, kunhan SIGHASH_SINGLE-syöttö/tulostus jätetään ennalleen, jotta allekirjoitusta ei mitätöidä). Sitten kuka tahansa voi lisätä syötteen ja muuttaa lähtöä maksaakseen kaivospalkkiot tapahtumasta.

Tämä on myös mekanismi, jota käytetään sitoutumaan sivuketjulohkon lohkootsikkoon. Samalla tavalla kuin Taproot sitoutuu erilaisten käyttöehtojen puuhun säätämällä normaalia julkista avainta puun Merkle-juurella, kuka tahansa voi muokata normaalia julkista avainta sivuketjulohkon lohkootsikon hashilla. Sidechain-solmut voivat sitten paljastaa ja välittää kyseisen lohkon otsikon osoittimella pääketjun tapahtumaan todistaakseen, että se todella louhittiin. Sieltä sivuketjusolmut suorittaisivat kaiken normaalin validoinnin varmistaakseen, että sivuketjulohko noudattaa oikeita konsensussääntöjä, ja välittävät todelliset lohkot sivuketjuverkon poikki aivan kuten pääketjussa.

Jos yhtä pääketjun sivuketjulohkoihin sitoutumiseen käytetyistä tapahtumista käytettiin sitoutumaan virheelliseen lohkoon tai jopa täysin roskatietoihin, silloin kun sivuketjun solmut näkevät ketjussa käytetyn sitoutumistapahtuman, voi tapahtua kaksi asiaa: Yksi, virheellinen lohko levitetään sivuketjuverkon yli, ja kun se ei läpäise vahvistustarkistuksia, se jää orvoksi; tai kaksi, dataa ei koskaan paljasteta, jolloin seuraava sivuketjulohko rakentuu viimeisen tosiasiallisesti paljastetun lohkon päälle ja sitoutuu siihen, ja paljastamaton sitoumus jätetään huomiotta. Tämä toinen mahdollisuus noudattaa samanlaista pisimmän ketjun logiikkaa kuin pääketju, joten vaikka jotain paljastuu myöhemmin, se jää silti orvoksi tulevien lohkojen takia, jotka eivät rakentuneet sille.

Mutta kaksinkertaisen kulutuksen ongelma on edelleen olemassa. Kuka tahansa, jolla on UTXO-merkin luomiseen käytetty yksityinen avain, voi mahdollisesti kaksinkertaistaa minkä tahansa ennalta määritetyn tapahtuman, jota käytetään sitoutumiseen sivuketjulohkoihin, ja mitätöidä koko joukon tästä pisteestä eteenpäin.

Tämä ratkaistaan ​​lisäämällä allekirjoitus itse UTXO:n lukitusskriptiin. Tämä lukitsee allekirjoituksen tuloon ja ulostuloon, mikä takaa UTXO-merkin uudelleen luomisen seuraavassa sitä käyttävässä tapahtumassa. Koska tämä allekirjoitus välitetään ja tarkistetaan automaattisesti, kun UTXO on käytetty, ei ole mahdollista yksinkertaisesti korvata sitä toisella ja käyttää sitä toiseen kohteeseen.

Tämä jättää viimeisen ratkaisemattoman ongelman. Teoriassa olisi mahdollista lähettää useita tapahtumia kaikki peräkkäin yhdeksi Bitcoin-lohkoksi, jotta kaivostyöntekijät vahvistavat suuren määrän sivuketjulohkoja kaikki yhdessä pääketjulohkossa. Tätä voidaan käyttää väärin palvelunestohyökkäykseen sivuketjuverkkoon.

Tämän ongelman ratkaisemiseksi CHECKSEQUENCEVERIFY (CSV) -suhteellinen aikalukko voidaan lisätä markkerin UTXO-skriptiin, jotta voidaan varmistaa, että vain yksi tapahtuma, jossa käytetään markkeria UTXO, voidaan vahvistaa yksittäisen tietyn pääketjulohkon sisällä.

Kaiken kaikkiaan se näyttää tältä: 

lähde

On myös syytä huomata, että tämän mallin kaksi muunnelmaa voidaan toteuttaa CHECKTEMPLATEVERIFY:llä (CTV) tai ilman muutoksia. Näillä kahdella malliversiolla on yksinkertaisesti epäoptimaalisia kompromisseja.

CTV-versio käyttäisi tätä toimintoa sitoutuakseen tapahtumaketjuun käyttämällä CTV:tä APO:n sijasta ja hakkerointia sisältäen UTXO-lukitusskriptin sisällä olevan allekirjoituksen. CTV sitoutuu kaikkiin CTV UTXO:n kuluttaneen tapahtuman ulostuloihin, mutta se ei sitoudu mihinkään syötteeseen itsensä lisäksi.

Tämä tarkoittaa, että voit lisätä CTV-tapahtumaan tuloja, mutta ei lähtöjä. Voit siis tuoda oman maksusi kuten APO-suunnittelussa, mutta et voi lisätä sitoumusta sivuketjun lohkootsikkoon.

Joten, mitä meidän täytyy tehdä tässä, on luoda tapahtuma kokonaan CTV-tapahtumaketjun ulkopuolelle sivuketjun sitoumusta varten luoda UTXO, joka riittää maksamaan CTV-tapahtuman maksun (koska et voi luoda uutta muutostulosta tuossa tapahtumassa 100 % lisäämästäsi syötteestä menee maksuihin), ja maksua valmistelevan tapahtuman sisällä sitoudumme UTXO:n sivuketjun lohkootsikkoon. Joten ensimmäinen askel: tapahtuma, joka luo maksullisen tuoton ja sitoutumisen sivuketjun lohkootsikkoon. Toinen vaihe: otamme maksun ulostulon ja lisäämme sen syötteeksi CTV-tapahtumaan, joka vahvistettuna "kaivaa" tietyn sivuketjulohkomme. Tämä variantti näyttää tältä:

lähde

Seuraava versio käyttää yksinkertaisesti ennalta allekirjoitettuja tapahtumia. Se voitaisiin ottaa käyttöön tänään, mutta skriptin rajoitusten vuoksi se edellyttää, että kaikki tapahtumamaksut on maksettava etukäteen sen kuka tahansa, joka luo avaruusketjun.

Tapahtumaketju alkaa yhdestä UTXO:sta ja ketjussa luo kaksi ulostuloa. Ensimmäinen ulostulo on markkeri UTXO, joka signaloi, että tapahtumaketju liittyy tiettyyn välilyöntiketjuun, toinen on pieniarvoinen UTXO, jota kuka tahansa voi käyttää avoimesti, kun siihen on mahdollista liittää toinen tulo/lähtö. Tässä toisessa tapahtumassa kuka tahansa voi avoimesti sitoutua olemaan ensimmäinen, joka käyttää toisen avaruusketjun tapahtumaketjun tuotoksen, ja käyttää sitä sitoutumiseen sivuketjun lohkootsikkoon.

CTV-versiossa sivuketjulohko oli sitouduttava toissijaisessa tapahtumassa, koska CTV ei salli uusien lähtöjen lisäämistä tapahtumaan, joka kuluttaa CTV:n lukitseman tulon. Tämä muunnelma edellyttää toissijaisen tapahtuman käyttöä, koska jos lisäät uusia tuloja tai lähtöjä esiallekirjoitettuun ketjuun, muutat tapahtuman TXID-tunnusta ja mitätöisit kaikki sen jälkeen tulevat esiallekirjoitetut tapahtumat. Tämä variantti näyttää tältä: 

lähde

Tämän viimeisen muunnelman yksi haittapuoli on, että jos se, joka on etukäteen allekirjoittanut kaikki tapahtumat käytettäväksi sivuketjun lohkositoumuksiin, ei poista tähän käytettyjä yksityisiä avaimia, hän voi tehokkaasti pysäyttää ketjun tuhlaamalla nykyisen UTXO-merkinnän milloin tahansa. aika.

Ja siinä se on. Tämä on viimeisin ehdotus Bitcoinin sivuketjun suunnittelusta, ja se voidaan toteuttaa kolmella eri tavalla sillä selvällä varoituksella, että toteutuspolulla, joka voidaan nyt tehdä, on kysymys siitä, että joku vaaditaan poistamaan yksityinen avain.

Tämä artikkeli on yksinkertaisesti ensimmäinen sarjassa, joka liittyy tärkeimpiin sivuketjujen suunnitteluehdotuksiin, jotka on julkaistu Bitcoinille alkuperäisen 2014 suunnittelun jälkeen. Pidä silmällä loput.

Tämä on Shinobin vieraspostaus. Esitetyt mielipiteet ovat täysin heidän omiaan eivätkä välttämättä vastaa BTC Inc:n tai Bitcoin Magazinen mielipiteitä.

Aikaleima:

Lisää aiheesta Bitcoin Magazine