Razkritje: avtor tega članka je ustanovitelj in glavni znanstvenik Projekt Ethereum
Prejšnji teden sta prišla Adam Back in Austin Hill obvestilo na Let’s Talk Bitcoin, v katerem so napovedali svoj najnovejši projekt: “sidechains”. Ideja, ki so jo opisali, bi omogočila obstoj alternativnih verig blokov, morda z različnimi pravili, ki omogočajo različne vrste dodatnih funkcij ali vrst transakcij, vendar z enoto valute, katere vrednost je vezana na vrednost bitcoinov. Namen je omogočiti eksperimentiranje z različnimi razširitvami protokola Bitcoin z uporabo ločenih omrežij, da bi se izognili tveganju za sam Bitcoin, hkrati pa še vedno uporabljali isto osnovno valutno enoto. Takoj ko je bila ideja razglašena, je za koncept prišlo do velikega zanimanja javnosti in je obudilo novo upanje, da lahko protokol Bitcoin postane veliko močnejši kot danes..
Pod pokrovom
Zamisel o stranskih verigah ni nova; koncept obstaja vsaj decembra lani, predhodnik ideje pa že nekaj let pred tem. Predhodnik, protokol, znan kot enosmerno vezanje, je bil mehanizem, ki bi se teoretično uporabljal za upravljanje prehoda z “Bitcoin 1.0” na “Bitcoin 2.0” in je deloval na naslednji način. Recimo, da je bilo v Bitcoin 1.0 z rudarstvom že izdanih 13 milijonov valutnih enot, 8 milijonov pa jih je še ostalo. Distribucijski model za BTC2.0 bi z rudarstvom izdal 8 milijonov enot po popolnoma enakem časovnem razporedu kot BTC1.0 po tej točki, ostalih 13 milijonov pa bi razdelili prek mehanizma, znanega kot “dokaz o opeklinah”.
V bistvu bi vzel eno enoto BTC1.0, jo poslal na neporabljen naslov (npr. 1111111111111111111114oLvT2) in predložil kriptografsko dokazilo, da se je ta transakcija zgodila, podpisan z istim zasebnim ključem, ki je poslal transakcijo, kot transakcijo v Bitcoin 2.0. V skladu s protokolom Bitcoin 2.0 bi to upravičilo uporabnika, da prejme eno enoto 2.0. To se imenuje “enosmerni klin”, ker je lahko vrednost enega BTC2.0 največ enaka enemu BTC1.0; v nasprotnem primeru bi ljudje razliko arbitrirali s pretvorbo bitcoinov po razmerju 1: 1. Vendar, razen prodaje BTC2.0 za BTC1.0 na trgu, se ni mogoče vrniti nazaj, zato bi lahko, če poskus ne uspe, vrednost BTC2.0 padla na nič..
Bitcoin bočne verige uporabljajo izboljšano različico tega sistema, imenovano “dvosmerno vezanje”, ki deluje na naslednji način. Da bi prejeli eno enoto BTC2.0, bi morali vzeti eno enoto BTC1.0 in jo poslati v “skript”, ki ga bomo poklicali X in za zdaj pustili neopisanega. Skript v Bitcoinu je naslov, ki namesto, da bi bil v lasti zasebnega ključa, v bistvu deluje kot zaklepanje, ki bitcoin odklene le, če dobi transakcijo, ki izpolnjuje določene pogoje. Na primer, lahko imamo skript, ki odklene sredstva prvi osebi, ki predloži petdesetmestno glavno število, ki je v celoti sestavljeno iz števk 3 in 5. Izvedba transakcije in objava kriptografskega dokaza, da je bila takšna transakcija opravljena, v veriga blokov Bitcoin 2.0 daje uporabniku pravico do ene enote BTC2.0.
Zdaj je opredelitev X preprosta: X odklene sredstva (ne pozabite, to je ena enota BTC1.0), če dobi veljaven kriptografski dokaz, da je pošiljatelj uničil eno enoto BTC2.0. Tako obstaja mehanizem za pretvorbo BTC 1.0 v BTC2.0 in prav ta mehanizem ustvari še en mehanizem, ki je po vrednosti omejen na skupno število ustvarjenih BTC2.0, ki ga lahko uporabimo za pretvorbo BTC2.0 nazaj v BTC1.0 . Zato dvosmerni klin.
Mehanizem, ki ga uporabljajo ti “kriptografski dokazi”, temelji na kriptografski konstrukciji, ki se uporablja v Bitcoinu, imenovani drevo Merkle. V bloku Bitcoin je namesto, da bi bila vsaka transakcija blokirana neposredno, v glavo bloka dejansko vključen samo en 32-bajtni zgoščeni znak. Ta 32-bajtna zgoščena vrednost se sama izračuna iz dveh drugih 32-bajtnih zgoščevalnih funkcij, od katerih vsaka prihaja iz dveh drugih 32-bajtnih zgoščevalnih funkcij in tako naprej, dokler končno vrednosti na dnu niso same transakcije. Prav smisel tega mehanizma je omogočiti kompaktne dokaze, da je določena transakcija v določenem bloku; vse, kar potrebujete, je ena veja zgoščenih podatkov, ki se dvigne od te transakcije do korenskega vozlišča, ali skupno 10 zgoščevalnih sporočil za 1000 transakcij ali 20 zgoščevalnih sporočil za milijon transakcij. Tega je nemogoče ponarediti; če poskušate spremeniti celo eno samo transakcijo v drevesu, se spremembe širijo navzgor skozi razpršilce, dokler končno korensko vozlišče ne postane popolnoma drugačno.
Vendar to ne reši problema v celoti; vse kar vam pove je, da nek blok nekje vsebuje dano transakcijo. Ne pove vam, da je transakcija v glavni verigi; v resnici bi lahko iste bitcoine, uporabljene v transakciji, že poslali drugemu viru, zaradi česar bi bila transakcija neveljavna. To lahko rešimo na dva načina. Eden od pristopov in daleč preprostejši je, da mehanizem za dokazovanje v Bitcoinu 2.0 ne zahteva le drevesne veje Merkle, temveč tudi blokchain, ki se vrača šest blokov, podobno kot trgovec, ki z rudarsko močjo zahteva šest potrditev. kot pooblastilo za veljavnost. Za večjo varnost je potrebno veliko večje število blokov, kot je šestdeset. Ta pristop je preprost in zdi se, da izpolnjuje vse zahtevane parametre.
Izzivi
Zgoraj opisani mehanizem pa je zelo nepopoln. Ko navadni trgovec zahteva šest potrditev, je za izvedbo napada z dvojno porabo proti temu trgovcu treba ustvariti šest blokov hitreje kot preostalo omrežje skupaj v realnem času, kar je naloga, ki zahteva vsaj 30 skupnih zmogljivosti omrežja za delo s katerim koli nezanemarljiva stopnja uspešnosti. Z zgoraj opisanim dvosmernim mehanizmom vezave pa lahko zlonamerni rudar s celo 1 hashpower-om sčasoma ustvari šest blokov ali celo šestdeset blokov in nato s temi bloki na nepoten način zahteva vse BTC1.0, ki so bili vstavljeni v zaklepne omarice BTC2.0 (ali v drugo smer na goljufiv način zahtevajo neomejeno število BTC2.0). Eden od možnih popravkov, ki vam lahko pride na misel, je, da od iste osebe, ki je ustvarila zaklepnico, zahteva, da jo odpre in s tem omeji količino škode, ki jo je mogoče narediti na osebo, vendar to ne bo rešilo težave, ker lahko zlonamerni rudar zlahka stopi v dogovarjanje s kom drugače. Temeljni problem, da nikakor ne moremo najti mehanizma za potrjevanje verige blokov, ki se sčasoma ne posodablja, je zelo težko rešiti ali pa je verjetno ni mogoče rešiti, medtem ko ostajamo povsem v okviru Bitcoinove paradigme “static lockbox” scripting paradigma.
Drugi pristop, ki lahko reši to težavo brez pretiranih težav, je bolj zapleten in vsiljiv. V bistvu mora vključiti tisto, kar se imenuje “lahka stranka” za Bitcoin 1.0 v Bitcoin 2.0. Lahkega odjemalca je najlažje opisati kot dolgotrajno “pogodbo”, program na verigi blokov z veliko količino notranjega stanja, ki se zažene vsakič, ko mu pošljemo transakcijo, ki sprejme bloke in preveri glave blokov točno v enako kot Bitcoin odjemalec na vašem mobilnem telefonu. Ta pogodba bi nato vodila tekoči seznam vseh glav blokov v Bitcoin 1.0, in če želite prejeti en BTC2.0, morate predložiti kriptografsko dokazilo, da ste v pogodbo izvedli zahtevano transakcijo v BTC1.0, skupaj z varnostnim papirjem. polog 0,1 BTC2,0.
Pogodba bi preverila, ali je dokaz veljaven, končala v bloku, ki je v notranji mini blokovni verigi pogodbe, in nato počakala, da se je zgodila ena od dveh stvari. Prvič, ko se v pogodbo doda še šestdeset blokov Bitcoin 1.0, pošiljatelju sprosti eno enoto BTC2.0 plus varščino. Če kdo drug predloži kriptografsko dokazilo, da je transakcija iz kakršnega koli razloga neveljavna (npr. Porabi bitcoine, ki ne obstajajo) v tem času, potem prejme varščino.
To bi rešilo varnostni problem, vendar ima eno pomembno napako: tega ni mogoče storiti znotraj protokola Bitcoin, kakršen je. To je dokaj enostavno izvesti v protokolu, kot je Ethereum, ker je posebej zasnovan za pogodbe, vendar Bitcoinova skriptna funkcionalnost ne omogoča obstoja pogodb z notranjim stanjem, zato bi to početje znotraj Bitcoina zahtevalo zelo bistveno spremembo protokola Bitcoin 1.0. Končno pristop, ki sta ga uporabila Austin Hill in Adam Back, morda ni povsem podoben nobeni od teh strategij; vendar sama zapletenost problema kaže, da je pred nami še veliko izzivov.
Rudarstvo
Drugo pomembno vprašanje je: kako bodo te stranske verige zavarovane? Standardni mehanizem za zaščito verige blokov je rudarstvo, vendar rudarstvo zahteva mehanizem za nagrajevanje rudarjev v tej verigi. V stranski verigi mora biti vsaka enota valute stranske verige podprta s skrinjico za zaklepanje, ki vsebuje enoto BTC na verigi Bitcoin, zato ni preproste priložnosti za izdajo valutnih enot stranske verige od nikoder. Za to obstajata dve možnosti: zamuda (tj. Odstotek letnega davka na vse BTC v stranski verigi) in provizije za transakcije. Vendar oba zagotavljata dokaj nizek prihodek in zato sploh ni gotovo, da bo navadno staro samostojno rudarstvo rešilo problem.
Obstajata dva pristopa za rešitev tega vprašanja. Eden od pristopov je, da se stranska veriga zavaruje z dokazili o deležu, pri čemer se majhni prihodek od provizij za transakcije nadomesti sodelujočim deležnikom z obrestno mero. Vendar bi bil ta pristop zelo težko uvesti v stransko verigo, ker so izračuni, ki sodelujejo pri potrjevanju dokazov o deležu, verjetno preveč zapleteni, da bi jih lahko učinkovito izvajali neposredno na verigi blokov. Drugi pristop in tisti, ki sta ga promovirala Adam Back in Austin Hill, se imenuje “spajanje rudarjenja”; v bistvu rudarji v Bitcoin bloke vključujejo podatke tako iz bloka Bitcoin kot iz bloka Namecoin, kar rudarjem omogoča, da hkrati zagotavljajo varnost za obe verigi z enakimi računskimi napori.
Kot trdi razvijalec Bitcoinov Peter Todd, ima koncept merge-mininga eno zelo pomembno varnostno napako: razen če se večina rudarjev Bitcoinov strinja, da bodo neko verigo združili, ta veriga verjetno sploh ni varna. Da bi razumeli, zakaj, najprej preučimo primer bolj tradicionalnega altcoina, v našem primeru za poenostavitev izvajamo SHA256 (če altcoin uporablja algoritem po meri, lahko Litecoin rudarji namesto tega izvedejo napad). Če ima altcoin 5 hashpower Bitcoin-a, potem bi se moral za dvojno porabo verige z dvojno porabo začasno preusmeriti na rudarstvo na altcoin-u. To je potencialno mogoče, vendar je draga poteza: ko je napad na mestu, bi rudarji Bitcoin izgubili prihodek od rudarjenja na Bitcoin. V primeru združitve izkopane stranske verige pa sta rudarstvo na glavni strani stranske verige ali napad nanjo brezplačna, zato napadi na alternativno verigo ne bi imeli gospodarskega odvračilnega učinka. To ni zgolj ugibanje; v resnici je bilo dejanskih primerov rudarskih bazenov, ki napadajo združene verige.
Ta odvisnost od merge-mininga poleg varnosti izpostavlja tudi še eno zaskrbljujočo omejitev ideje o stranskih verigah: medtem ko je duh kriptovalut nedvomno duh brez dovoljenj za inovacije, ustvarjanje stranske verige zahteva dovoljenje in aktivno pomoč 50 vseh Bitcoinov. upravljavci rudarskih bazenov. Te omejitve skupaj kažejo, da protokol stranskih verig, čeprav je odličen za številne primere uporabe, zagotovo ne bo idealen za vse.
Obljuba
Če je mogoče rešiti tehnična vprašanja v zvezi s stranskimi verigami, kaj obljubljajo? Trenutno lahko razvoj kriptovalut v bistvu razvrstimo v štiri kvadrante. Prvi kvadrant sestavljajo projekti, ki uporabljajo valuto Bitcoin in Bitcoin blockchain – v bistvu sam Bitcoin. Drugi kvadrant so protokoli, ki uporabljajo Bitcoin blockchain, ne pa Bitcoin valute; Mastercoin, barvni kovanci in nasprotna stranka so odlični primeri tega. Tretji kvadrant uporablja tako neodvisno valuto kot neodvisno verigo blokov; ta vsebuje aplikacije, kot so (na primer zelo različne primere) Ripple, Litecoin in NXT. Zdaj je bil pri stranskih verigah napolnjen tudi zadnji kvadrant: uporaba neodvisnega omrežja, vendar uporaba Bitcoina kot osnovne valute.
Zanimivo bo videti, za katere aplikacije ta niša najbolje deluje. Za povsem nove ekosisteme verjetno ni pravi pristop; za povsem neodvisno omrežje, kot sta Ripple ali Ethereum, je malo smiselno, da svoj glavni notranji žeton finančno veže na Bitcoin in naj bosta izpostavljena gibanju cen drug drugega. V primeru takšnih večjih prizadevanj je pogosto tudi smiselno eksperimentirati z različnimi denarnimi politikami; Ethereum-ov eter ima linearni model izdaje, ki vsako leto sprosti določeno število valutnih enot, medtem ko je Ripple Ripple-u naenkrat sprostil vseh 100 milijard enot XRP, organizacija pa jih sčasoma sprosti razvijalcem, vlagateljem in ljudi, ki sodelujejo v projektih razdeljenega računalništva. Za vilice, ki naj bi služile kot pomembna sprememba protokola, kot je nadgradnja s SHA256 na SHA3 ali v primeru kvantnih računalnikov z ECDSA na podpise Lamport ali NTRU, je vsekakor povsem smiselno. Za vse na sredini bo odvisno od primera do primera.
V primeru Ethereuma je treba upoštevati posebno pozornost: Ethereum je splošna kriptografska platforma za soglasje in ne poseben “altcoin”. Tako lahko na platformi Ethereum obstajajo številne različne valute kot pogodbe; lahko imamo dolgočasne stare valute z omejeno ponudbo, valute z denarno politiko, ki jo upravlja decentralizirana avtonomna organizacija, valute, ki obstajajo za subvencioniranje znanstvenih raziskav ali zagotavljajo osnovni dohodek, in celo valute z vgrajenim dvosmernim mehanizmom za delujejo kot stranske verige. Tako Ethereuma ni mogoče natančno usmeriti niti v kvadrant stranskih verig niti v kvadrant Ripple / Litecoin / NXT; obstaja v obeh.
Dejansko je zelo verjetno, da bodo takoj, ko se bo začel blok Ethereum genesis, v treh mesecih obstajati stranske verige za Bitcoin, Litecoin in Dogecoin kot pogodbe. Če je mogoče stranske verige uspešno in varno izvajati, to pomeni, da lahko Ethereum celo postane prednostno sredstvo za shranjevanje BTC, LTC ali DOGE z uporabo močnih večnapisnih pogodb o shranjevanju, ki vključujejo funkcije, kot so omejitve umika. Med pogodbami za splošno namensko verigo, visokozmogljivimi namenskimi altcoin-i, kvaz centraliziranimi strežniki OpenTransaction, stranskimi verigami in Bitcoinom samim, postaja jasno nekaj: kriptovalute bodo lahko medsebojno sodelovale kot še nikoli prej.