Spacechains: Kako deluje ta novi predlog stranske verige bitcoinov

Izvorno vozlišče: 1544330

Spacechains je predlagana stranska veriga bitcoinov, ki ponuja enosmerni mehanizem klinov z uporabo zasnove rudnika slepega spajanja.

Zamisel o stranskih verigah kot mehanizmu skaliranja in razširitve funkcij za Bitcoin je zelo star koncept. Nekakšna osnovna ideja "prednika" stranskih verig, združi rudarjene verige, sega celo v obdobje, preden je Satoshi izginil.

Ta predlog je bil preprosto ideja o dveh popolnoma ločenih in nepovezanih verigah, ki ju rudari ista skupina rudarjev, brez možnosti premikanja kar koli med verigami. The prvotni predlog stranske verige so leta 2014 izdelali številni ljudje, ki so Blockstream ustanovili dobesedno teden dni po objavi časopisa. Osnovna ideja je bila omogočiti premikanje kovancev naprej in nazaj med glavno verigo blokov Bitcoin in drugimi stranskimi verigami, s preprostimi dokazi o preverjanju plačil (SPV), ki se uporabljajo za dokazovanje veljavnosti stvari, ko pošiljate kovance iz ene verige v drugo. To se ni nikoli uresničilo zaradi zapletenosti pri izvajanju okrog reorganizacij verige, možnosti kraje in tveganj centralizacije rudarjenja (o vsem tem lahko preberete v četrtem razdelku Bitcoin beli papir).

Mehanizmi klinov za stranske verige so lahko dveh vrst, enosmernih in dvosmernih. Pomeni bi morali biti očitni – pri dvosmerni vezavi se lahko kovanci premikajo naprej in nazaj med matično verigo in stransko verigo, pri enosmerni vezavi pa se lahko premikajo samo od matične verige do stranske verige in se nikoli ne premaknejo nazaj. Trenutno je edina oblika dvosmernih klinov stranske verige, ki se izvajajo na Bitcoinu, prek zveznega soglasja, kar pomeni, da vezavo zagotavlja zaupanja vreden nabor »skrbnikov«, ki ohranjajo nadzor nad sredstvi, vezanimi na stransko verigo v denarnici z več podpisi, dokler niso umaknjena.

Ljudje pa so še naprej delali na drugih oblikah stranskih klinov, ki niso združeni. Tukaj bom šel skozi predlog Spacechain Rubena Somsena kot en primer. To je enosmerni mehanizem klinov, ki uporablja zasnovo rudnika slepega spajanja, podobno kot Paul Stztorc's. To pomeni, da lahko gredo kovanci le v stransko verigo in je nikoli ne zapustijo ter da rudarjem ni treba zagnati nove programske opreme, da bi dobili nadomestilo za rudarjenje stranske verige (vendar, kot bom šel kasneje, lahko s tem pridobijo več).

Predlog Spacechain

Rudarjenje z združitvijo zahteva, da rudarji zaženejo vozlišča tako verige Bitcoin kot katere koli druge verige, ki jo rudarijo, da sestavijo bloke za obe verigi in se jim zavežejo v glavi bloka Bitcoin, ki ga rudarijo. Rudarjenje s slepim združevanjem izkorišča dejstvo, da v resnici rudarji bitcoinov potrebujejo samo glavo bloka druge verige, ki se ji zavežejo v svojem bloku bitcoinov, nekdo drug se lahko dejansko potrudi s sestavljanjem bloka za drugo verigo.

Somsenov predlagani mehanizem za to lahko uporabi ANYPREVOUT (APO), da se omogoči odprta konkurenca za vsakogar, ki lahko tekmuje za izdelavo naslednjega bloka stranske verige, hkrati pa se zagotovi, da se lahko na blok glavne verige Bitcoin dodeli le en blok. Druga prednost Rubenovega predloga je, da ne potrebuje posebne mehke vilice, da bi omogočila možnost uvajanja vesoljskih verig. Eltoo/ANYPREVOUT je predlagan za ugodnosti za omrežje Lightning, ki omogoča prilagodljive verige stanj in tovarne kanalov. Vesoljske verige so preprosto še ena možnost od mnogih stvari, ki bi jim omogočanje ANYPREVOUT utrlo pot.

Splošna zamisel njegovega predloga rudarjenja s slepim združevanjem je, da lahko z uporabo APO vnaprej določite dolg nabor transakcij, ki vanje vzamejo isti začetni UTXO in se zavežete, da ga boste vedno znova ustvarili. Predstavljajte si torej en sam satoshi UTXO, pri čemer vsaka vnaprej ustvarjena transakcija zagotavlja, da se ta isti UTXO znova ustvari kot izhod, ko je potrjen. Ta posebni UTXO je identifikator, ki vsem, ki gledajo glavno verigo blokov Bitcoinov, omogoča, da vedo: "Tukaj najdem zavezo stranski verigi blokov X." To pa pušča odprto eno težavo: provizije za rudarje. Če je treba ta UTXO znova ustvariti z enakim zneskom, ni sredstev za plačilo pristojbin.

To je mogoče rešiti z uporabo SIGHASH_SINGLE (podpis iz vnosa podpiše le ta posamezen vhod in ustrezen izhod) in SIGHASH_VSAK LAHKO PLAČA (Ljudje lahko svobodno dodajajo dodatne vhode in izhode, ne da bi razveljavili podpis, dokler je vhod/izhod z uporabo SIGHASH_SINGLE ostal takšen, kot je, da ne razveljavi tega podpisa). Nato lahko vsakdo doda vnos in spremeni izhod, da plača provizijo rudarju za transakcijo.

To je tudi mehanizem, ki se uporablja za zavezovanje k glavi bloka bloka stranske verige. Na enak način, kot se Taproot zaveže k drevesu različnih pogojev porabe s prilagoditvijo običajnega javnega ključa z Merkleovim korenom drevesa, lahko vsak prilagodi običajni javni ključ z zgoščeno vrednostjo glave bloka stranske verige. Vozlišča stranske verige lahko nato razkrijejo in posredujejo to glavo bloka s kazalcem na transakcijo v glavni verigi, da dokažejo, da je bila dejansko rudarjena. Od tam bi vozlišča stranske verige izvedla vse običajne validacije, da bi zagotovila, da blok stranske verige sledi ustreznim soglasnim pravilom, in posredovala dejanske bloke po omrežju stranske verige tako kot v glavni verigi.

Če je bila ena od transakcij, uporabljenih za potrditev blokom stranske verige v glavni verigi, uporabljena za potrditev neveljavnemu bloku ali celo popolnemu smetenju podatkov, potem ko vozlišča stranske verige vidijo transakcijo potrditev, uporabljeno v verigi, se lahko zgodi dvoje: ena, neveljaven blok se bo razširil po omrežju stranske verige in ko ne bo prestal preverjanj veljavnosti, bo osirotel; ali dva, podatki niso nikoli razkriti, v tem primeru bo naslednji blok stranske verige nadgradil in se zavezal k zadnjemu dejansko razkritemu bloku, nerazkrita zaveza pa bo prezrta. Ta druga možnost sledi isti vrsti logike najdaljše verige kot glavna veriga, tako da tudi če je bilo nekaj razkrito pozneje, bo še vedno osirotelo zaradi prihodnjih blokov, ki niso gradili na tem.

Še vedno pa ostaja problem dvojne porabe. Kdorkoli z zasebnim ključem, uporabljenim za generiranje markerja UTXO, bi lahko potencialno podvojil katero koli od vnaprej določenih transakcij, uporabljenih za zavezovanje k blokom stranske verige, in razveljavil celoten niz od te točke naprej.

To se reši tako, da se podpis dejansko vstavi v skript za zaklepanje samega UTXO. To zaklene podpis na vhodu in izhodu, kar zagotavlja ponovno ustvarjanje markerja UTXO v naslednji transakciji, ki ga uporablja. Ker bo ta podpis samodejno posredovan in preverjen, ko bo UTXO porabljen, ga ni mogoče preprosto zamenjati z drugim in ga porabiti na drugo destinacijo.

To pušča še zadnji nerešen problem. Teoretično bi bilo mogoče predložiti več transakcij vse zaporedoma v en sam blok Bitcoin, tako da rudarji potrdijo veliko število blokov stranske verige v enem bloku glavne verige. To bi lahko zlorabili za napad z zavrnitvijo storitve na stransko omrežje.

Da bi rešili to težavo, je mogoče v skript označevalca UTXO vstaviti relativno časovno zaklepanje CHECKSEQUENCEVERIFY (CSV), da se zagotovi, da je znotraj enega danega bloka glavne verige mogoče potrditi samo eno transakcijo z uporabo označevalca UTXO.

Vse skupaj zgleda takole: 

vir

Omeniti velja tudi, da je mogoče dve različici te zasnove implementirati s CHECKTEMPLATEVERIFY (CTV) ali brez kakršnih koli sprememb. Ti dve različici zasnove preprosto nimata optimalnih kompromisov.

Različica CTV bi uporabila to funkcionalnost za zavezo k verigi transakcij z uporabo CTV namesto APO z vdorom, vključno s podpisom znotraj skripta za zaklepanje UTXO. CTV se zaveže vsem izhodom transakcije, pri čemer porabi CTV UTXO, vendar se ne zaveže nobenemu vnosu razen samega sebe.

To pomeni, da lahko transakciji CTV dodate vhode, ne pa tudi izhodov. Torej lahko prinesete svojo pristojbino, tako kot v zasnovi APO, vendar ne morete dodati zaveze v glavo bloka stranske verige.

Torej, tukaj moramo ustvariti transakcijo popolnoma zunaj verige transakcij CTV za zavezo stranske verige, da ustvarimo UTXO, ki je ravno dovolj za plačilo pristojbine za transakcijo CTV (ker ne morete ustvariti novega izhoda spremembe v ta transakcija, 100 % vnosa, ki ga dodate, gre za provizije), znotraj transakcije, ki pripravlja provizijo, pa se UTXO zavežemo k glavi bloka stranske verige. Torej, prvi korak: transakcija, ki ustvari izhod s plačilom provizije, in zaveza k glavi bloka stranske verige. Drugi korak: vzamemo izhod provizije in ga dodamo kot vhod v transakcijo CTV, ki ob potrditvi "rudari" naš specifični blok stranske verige. Ta varianta izgleda takole:

vir

Naslednja različica preprosto uporablja vnaprej podpisane transakcije. Lahko bi ga uvedli že danes, vendar zaradi omejitev tega, kar lahko naredi skript, zahteva, da vse pristojbine za transakcije plača vnaprej tisti, ki ustvari spacechain.

Veriga transakcij se začne z enim UTXO in v verigi ustvari dva izhoda. Prvi izhod je marker UTXO, ki signalizira, da je veriga transakcij povezana z določeno vesoljsko verigo, drugi pa je UTXO majhne vrednosti, ki ga lahko javno porabi vsak, ki mu omogoči pritrditev drugega vhoda/izhoda. Pri tej drugi transakciji se lahko vsakdo odkrito zaveže, da bo prvi porabil ta drugi izhod iz transakcijske verige vesoljske verige in ga uporabil za zavezo svoji glavi bloka stranske verige.

V različici CTV je bilo treba blok stranske verige določiti v sekundarni transakciji, ker CTV ne dovoljuje dodajanja novih izhodov v transakciji, ki porabi vhod, ki ga je zaklenil CTV. Ta različica zahteva uporabo sekundarne transakcije, ker če dodate nove vhode ali izhode v vnaprej podpisano verigo, bi spremenili TXID transakcije in razveljavili vse vnaprej podpisane transakcije, ki sledijo. Ta varianta izgleda takole: 

vir

Ena slaba stran te zadnje različice je, da če tisti, ki je vnaprej podpisal vse transakcije za uporabo za blokovne zaveze stranske verige, ne izbriše zasebnih ključev, uporabljenih za to, lahko učinkovito zaustavi verigo tako, da podvoji trenutni marker UTXO na katerem koli čas.

In tukaj ga imate. To je najnovejši predlog za zasnovo stranske verige za Bitcoin in ga je mogoče implementirati na tri različne načine, z očitnim opozorilom, da ima pot implementacije, ki jo je mogoče narediti zdaj, težavo z zahtevo, da nekdo izbriše zasebni ključ.

Ta članek je preprosto prvi v seriji, ki se nanaša na glavne predloge za oblikovanje stranske verige, ki so bili objavljeni za Bitcoin od prvotne zasnove iz leta 2014. Bodite pozorni na ostalo.

To je gostujoča objava avtorja Shinobija. Izražena mnenja so v celoti njihova lastna in ne odražajo nujno mnenj BTC Inc ali Bitcoin Magazine.

Časovni žig:

Več od Bitcoin Magazine