Kako skušajo protokoli P2P rešiti centralizacijo rudarjenja Bitcoin PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Kako skušajo protokoli P2P rešiti centralizacijo rudarjenja bitcoinov

Bazeni za rudarjenje bitcoinov se zanašajo na centralizacijo, vendar so P2Pool in drugi protokoli poskušali zmanjšati potrebo po zaupanju v tretje osebe.

V prejšnji članek, sem pisal o naravi decentralizacije v primerjavi s centralizacijo pri rudarjenju bitcoinov in o tem, kako to konceptualizirati v pretežno kvalitativnem smislu. Članek je razčlenil celoten rudarski sklad, od usklajevanja bazena vse do proizvodnje energije, da bi dal občutek razmerja med različnimi plastmi rudarskega sklada in potenciala za čim večjo decentralizacijo, pri čemer je poudaril, da nižje kot ste če gredo v smeri proizvodnje energije, težje in kapitalsko intenzivnejše postane uvedba pomembne ravni decentralizacije na ta sloj.

V tem članku se nameravam poglobiti v temo rudarskih bazenov in koordinacije rudarjev, da bi olajšali rudarske operacije v neodvisni lasti, ki sodelujejo v prizadevanjih za rudarjenje blokov, ki se dodajo v verigo blokov.

Ustvarjanje rudarskih bazenov

Rudarjenje je napredovalo daleč od časov, ko ste lahko preprosto kliknili gumb in zanesljivo sami kopali bloke na prenosnem procesorju. Takrat je bil to dejansko amaterski hobističen podvig, ki ni zahteval resničnih kapitalskih naložb ali strokovnega znanja, danes pa je to več milijard dolarjev profesionalen trg z velikimi kapitalskimi naložbami, ki so potrebne v velikem obsegu. To je povsem drugačna igra z žogo.

Ena od naravnih posledic te spremembe v naravi rudarske industrije je bilo že zelo zgodaj oblikovanje rudarskih bazenov. Ko je rudarjenje dejansko puščalo prenosni računalnik v kotu, odstopanje in nepredvidljivost tega, kdaj boste našli blok, v resnici nista bila tako velika – sčasoma bi to storili in stroški energije za vzdrževanje prenosnega računalnika niso bili v resnici ekonomični. pomembnosti.

Ko so se stvari premaknile na GPU-je in ASIC-je, so bili vnaprej določeni materialni stroški naložbe in veliko večji strošek električne energije, da bi ohranili njihovo delovanje. Ta nepredvidljivost, ko boste našli blok, je postala veliko večja težava za rudarje, ki poskušajo povrniti svoje kapitalske naložbe in poslovati dobičkonosno. Tu se pojavijo rudarski bazeni.

Rudarjem omogočajo, da sodelujejo pri iskanju veljavne glave bloka, ki skupaj deluje na istem bloku, in pošiljajo nagrado coinbase rudarskemu bazenu, ki jo nato sorazmerno porazdeli med vse sodelujoče rudarje glede na to, koliko dela so opravili pri iskanju blok. To je dokazano z obračanjem "delnic" v rudarski bazen; blokov, ki ne dosegajo cilja težavnosti omrežja, vendar so dovolj visoki, da dokažejo, da rudar ne laže in da dejansko izvaja strojno opremo in poskuša najti veljaven blok.

Centralizacija rudarskega bazena

Centralizirani rudarski bazeni imajo velike posledice za posamezne rudarje. So točka centralizacije v procesu izbire (ali, kar je še pomembneje, izključitve) transakcij za vključitev v blok. To daje vsakemu operaterju rudarskega bazena popoln nadzor nad transakcijami, ki se jih odloči za obdelavo v verigi blokov, brez možnosti, da bi dejanski lastniki rudarske strojne opreme izrazili svoje mnenje o tem, razen če zapustijo bazen, če se ne strinjajo z merili, ki jih operater se odloči nastaviti.

Prav tako hranijo bitcoine posameznih rudarjev, dokler se ti rudarji ne odločijo, da jih umaknejo iz bazena, pri čemer operater bazena ostane skrbnik in osrednja točka, ki bi lahko ogoljufala rudarje, ki uporabljajo bazen, ali pa bi bila pod pritiskom vlade, da zaseže sredstva posameznih rudarjev ali uporabi KYC zahteve do njih.

Kakšne rešitve torej obstajajo za reševanje tega problema?

P2Pool: Prvotni decentralizirani rudarski bazen

P2Pool je izvirni protokol decentraliziranega rudarskega bazena. Gre za protokol enakovrednih, pri katerem se rudarji med seboj usklajujejo, da si razdelijo nagrade za rudarjenje, medtem ko sodelujejo pri iskanju veljavnega bloka, ki ustreza ciljni težavnosti. To usklajevanje je doseženo z uporabo tega, kar se v zasnovi protokola imenuje »sharechain«.

Rudarji v P2Pool prevzemajo bloke, ki ne dosegajo ciljne težavnosti omrežja, in učinkovito rudarijo lastno verigo blokov, sestavljeno iz vseh kopij posameznega bloka, na katerem deluje skupina. Ko dosežejo manjši cilj težavnosti, kjer bi blok spremenili v bazen, da bi dokazali, da rudarijo v centraliziranem modelu, ta blok oddajo ostalim rudarjem. P2Pool-ova »težava pri deljenju« je bila ciljno usmerjena tako, da bi rudarji našli delež približno vsakih trideset sekund.

Prepričan sem, da se bralci sprašujejo, kako poteka izplačilo posameznim rudarjem. Transakcija coinbase je strukturirana tako, da se izhod ustvari za vsakega posameznega rudarja v P2Poolu, pri čemer se sredstva razdelijo neposredno iz transakcije coinbase. Rudarji v skupini P2Pool preverijo, ali so vsa izplačila sebi in vsem, ki sodelujejo v skupini, pravilna in ali je vsak rudar, ki je prispeval delež v verigo delnic, pravilno plačan za svoje delo v vsaki novi dodani delnici. Če neki sodelujoči rudar ne strukturira pravilno izplačil za vse v svojem zadnjem deležu, potem ga vsi ostali rudarji v P2Poolu prenehajo vključevati v svoja lastna izplačila in tega rudarja dejansko "izločijo" iz nabora, ker se ne vede pošteno.

Ta zasnova je povzročila nekaj težav s skaliranjem, zaradi česar ni več v uporabi. Ko se udeležba v P2Poolu povečuje, se povečuje tudi skupni cilj težavnosti za delnice v verigi delnic, ki ciljajo približno enkrat na vsakih trideset sekund. To pomeni, da je za manjše rudarje težje doseči težavo v verigi delnic v katerem koli dvaintridesetem obdobju. To pomeni, da se pri manjših rudarjih varianca ali nepredvidljivost njihovega dohodka poveča, ko se poveča skupna stopnja zgoščevanja v P2Poolu. To vodi tudi do večjega števila zastarelih blokov, saj več rudarjev najde konkurenčne delnice za delniško verigo približno istočasno, ko se več rudarjev pridruži P2Poolu, kar vodi do "zapravljenega dela" z vidika posameznih rudarjev, ki dobijo samo nadomestilo, če je njihov delež vključen v delniško verigo.

Drugo glavno vprašanje razširljivosti je v izplačilih, ki gredo neposredno posameznim rudarjem iz same transakcije coinbase. Glede na to, da je vsak rudar izplačan sorazmerno z deleži, ki jih je rudaril in so vključeni v verigo delnic, vsak rudar v P2Poolu zahteva nov rezultat, dodan v transakciji coinbase.

To ima dve posledici. Prvič: rudarjem so dodeljeni majhni UTXO-ji z ​​nizko vrednostjo v vsakem bloku, ki ga najde P2Pool, kar vključuje stroške zgoščevanja teh izhodov pozneje in/ali nosi stroške veliko večjih transakcij, ko gredo porabiti svoje kovance zaradi številne posamezne UTXO-je, s katerimi se končajo, namesto enega samega, ko se po določenem obdobju umaknejo iz običajnega združenja. Drugič: vsak nov izhod coinbase zavzema blokovni prostor, ki bi ga lahko porabile transakcije drugih ljudi, in P2Poolu prinaša več prihodkov od nadomestil. To je dvojna huda izguba za rudarje, ki sodelujejo v protokolu.

Ti dve težavi sta prispevali k temu, da je protokol počasi zamrl in sčasoma padel v stanje neuporabe. Vse kaže, da sem si prizadeval izslediti točne in nedavne statistike (številni stari raziskovalci blokov, ki sledijo deležu rudarskih bazenov, so se z leti zaprli), se zdi, da je bil zadnji blok, ki ga je rudaril P2Pool, na Februar 12, 2019.

P2Pool z izplačili plačilnega kanala

Leta 2017, mesec dni po zaklenitvi aktivacije SegWit, je Chris Belcher naredil snubitev izboljšati razširljivost P2Poola z uporabo enosmernih plačilnih kanalov in skupine vozlišč, ki obravnavajo izplačila rudarjem.

Glavni namen predloga je obravnavati vprašanje večjih transakcij coinbase, zaradi katerih rudarji izgubijo denar na dva različna načina. Na visoki ravni je ideja preprosto plačati celotno transakcijo coinbase v središče s plačilnimi kanali, odprtimi za posamezne rudarje, in zagotoviti, da je možnost zahtevanja sredstev iz transakcije coinbase atomsko povezana z rudarji, ki prejmejo nadomestilo za njihove deleže v plačilnih kanalih.

Da bi dosegli cilj atomarnosti med transakcijo coinbase in plačilnimi kanali za izplačila, je treba prilagoditi izhodni skript transakcije coinbase. V Belcherjevem predlogu je strukturiran kot večvežni skript s tremi pogoji porabe:

  • Dva-od-dve multisig. Ključno: pesto (Hc). Ključ dva: rudar, ki je našel blok (Mc).
  • En sam ključ in hashlock. Ključ: pesto (H). Hashlock: naključna vrednost, ki jo ustvari središče (X).
  • En sam ključ in časovna ključavnica. Ključ: rudar, ki je našel blok (M). Časovni zaklep: relativni časovni zaklep CSV za šest mesecev.

Kateri koli od teh pogojev porabe je mogoče uporabiti za odklepanje izhoda transakcije coinbase. Zdaj pa poglejmo skript plačilnega kanala za rudarje, da bomo lahko videli, kako ti dve stvari medsebojno vplivata:

  • Dva-od-dve multisig. Ključno: pesto (Hc1). Drugi ključ: rudar (Mc1).
  • Multisig dva od dveh in hashlock. Ključno: pesto (Hu1). Drugi ključ: rudar (Mu1). Hashlock: naključna vrednost, ki jo ustvari središče, ki se uporablja v bazi kovancev (X).

Zdaj pa poglejmo, kako ti dve stvari medsebojno delujeta.

Ko rudarji proizvajajo delnice, ki jih dodajo v sharechain, vozlišče spremlja napredek. Za vsako delnico vozlišče posodobi stanje kanala z rudarji, ki predajo delež, da jim plačajo sorazmerno količini dela, ki ga opravljajo. Vendar jim dajo samo podpis za drugo pot skripta, ki zahteva porabo predpodobe hashlock – to zagotavlja, da privzeto, ne da bi jim središče dalo podpis za prvo pot, ne morejo zahtevati teh sredstev, razen če središče porabi coinbase izhod sam po sebi z uporabo poti skripta s ključavnico, ki od njih zahteva, da objavijo predsliko.

Zdaj bo sčasoma eden od rudarjev v P2Poolu našel veljaven blok in ga objavil v omrežju. Na tej točki lahko središče posodobi vse plačilne kanale z rudarji in zagotovi podpis na prvo skriptno pot v kanalu, kar vsakemu rudarju omogoča, da zapre svoj kanal in pobere nagrade, ki si jih je prislužil, kadar koli želi, ne da bi potreboval hashlock. predpodoba.

Na tej točki rudar, ki je našel blok, podpiše prvo pot skripta v bazi coinbase, kar omogoča vozlišču, da zahteva sredstva iz baze coinbase. Ta rudar dobi rahel bonus od nagrad za rudarjenje, da ga spodbudi k sodelovanju. Vendar ne pozabite: če rudar zavrne sodelovanje, lahko središče preprosto porabi samo sebe z uporabo hashlock poti in razkrije predpodobo, kar vsem rudarjem omogoča, da zberejo pravičen delež nagrade.

Slaba stran tega je, da prisili vse kanale, da se zaprejo v verigi, zato jih je treba znova odpreti za nadaljevanje rudarjenja. Zadnja možnost obstaja v primeru, da se operater vozlišča odloči ustaviti obdelavo izplačil ali izgine. Po šestih mesecih lahko rudar, ki je našel blok, v celoti zahteva sredstva zase, če se vozlišče ni odzvalo na sodelovanje ali je porabilo kovance s potjo hashlock.

To pušča dve posebni težavi v smislu modela groženj z Belcherjevimi predlaganimi izboljšavami. Odločanje o tem, katere transakcije vključiti v blok, pušča prostor za odstopanja glede tega, koliko skupne nagrade za blok temelji na tem, kaj se posamezni rudarji odločijo vključiti v predloge blokov, ki jih rudarijo.

Pri uvedbi plačilnih kanalov to ustvari prostor za napake, tj. dejanska nagrada za rudarski blok ni enaka tistemu, k čemur se rudarsko središče zaveže v plačilnih kanalih za rudarje. V primeru, da so dejanske ocene provizije nižje od tiste, ki je bila nagrada za blok, lahko vozlišče preprosto posodobi plačilne kanale, ki uporabljajo pot kooperativne porabe, z nižjim zneskom, in dokler ne zahtevajo izhoda coinbase s potjo hashlock, rudarji nimajo druge izbire, kot da sprejmejo manjše izplačilo, ki se ujema z dejansko nagrado za rudarjenje.

V primeru, da je bila nagrada za rudarjenje nekoliko višja od ocene, je še vedno v interesu vozlišča, da posodobi kanale za rudarje, da bodo to odražali, saj lahko rudarji, ki jih središče obravnava nepošteno, preprosto kadar koli zapustijo. Edini skrajni primer, ko bi bilo smiselno, da središče odstopi in obdrži dodatno nagrado, bi bil, če bi nekdo plačal neobičajno visoko provizijo za rudarje, vendar je poleg te situacije v interesu vozlišča in rudarjev, da se prilagodijo kakršnemu koli neskladju med oceno nagrade in dejansko nagrado bloka.

Druga težava je dejstvo, da je vozlišče osrednja točka, ki jo je mogoče DDoS spremeniti in prisiliti, da prepreči delovanje P2Poola. Belcherjev predlog vključuje uporabo več vozlišč in pošiljanje vsake transakcije coinbase iz različnih blokov v različna vozlišča. Vendar to od rudarjev zahteva, da imajo odprte kanale iz vseh vozlišč, ki jih uporabljajo, kar po Belcherjevi oceni vozlišča, ki potrebuje 50-krat večjo nagrado za blok (približno 650 BTC), da rudarjem zagotovi likvidnost, postane neverjetno kapitalsko neučinkovito.

Braidpool: še ena ponovitev

Vnesite Braidpool (opozorilo: povezava je neposreden prenos PDF-ja z GitHuba). Braidpool je predlog Boba McElratha in Kulpreeta Singha, ki temelji na Belcherjevem predlogu z uporabo plačilnih kanalov. Uvedeni sta dve večji spremembi, ki izboljšujeta nerešena vprašanja, ki jih je pustil Belcherjev predlog.

Prva je sprememba v tem, kako vozlišča in rudarji komunicirajo med seboj. Predlagajo, da rudarji vsakemu od delnic, ki jih oddajajo v združenje, pripišejo naslov Tor v3. Na ta način lahko vozlišče deluje, ne da bi izpostavilo katero koli omrežno končno točko, ki je dovzetna za napade DoS.

Operater vozlišča se lahko nato poveže z rudarji, da z njimi odpre in posodobi kanale, s čimer zmanjša potrebo rudarjem po uporabi več vozlišč, da bi se izognili eni sami točki napada. To omogoča Braidpoolu, da deluje z enim vozliščem, zaradi česar je celoten sistem bolj robusten in kapitalsko učinkovit.

Kako skušajo protokoli P2P rešiti centralizacijo rudarjenja Bitcoin PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
Vir: bela knjiga Braidpool

Druga sprememba je uporaba usmerjenega acikličnega grafa (DAG) namesto sharechaina. Težava z verigo delnic je bila v tem, da se je pri ciljnem času deleža trideset sekund zahtevnost, ki je bila potrebna za delnice, povečala, ko se je bazen povečal, kar je otežilo manjše rudarje. Uporaba DAG, kot je Ethereum, kjer ne gre za igro z ničelno vsoto, ko ena delnica vstopi v sharechain, druge pa osirotele, omogoča rudarjem, da dinamično nastavijo težavo za delnice, ki jih je mogoče prilagoditi glede na stopnjo zgoščevanja, ki jo imajo, in kako pogosto lahko najdejo deleže z njim.

Struktura DAG vključuje vse, ki so v njej sodelovali med dejansko najdenimi bloki Bitcoin, pri čemer so nagrade sorazmerno razdeljene med vse na podlagi dela, ki so ga zagotovili DAG-u. To rešuje težavo skaliranja variance za posamezne rudarje, ko se skupine povečujejo.

Poleg teh dveh sprememb je preostala struktura podobna Belcherjevemu predlogu, skripti coinbase in kanala so enaki.

Končna thoughts

Nekateri bralci se morda sprašujejo, zakaj se Betterhash v tem članku ni dotaknil. Medtem ko decentralizira izbiro transakcij za vključitev v blok, ne decentralizira v celoti vseh funkcij združenja – kar je najpomembneje, skrbniške narave združenj, ki upravljajo s sredstvi. To pušča rudarje odprte za prisilo z zavrnitvijo izplačila sredstev, če rudar izbere transakcije, ki jih združenje ne odobri. Zato ga ne bi štel za decentraliziran rudarski bazen, čeprav le malo izboljša razmere v sovražnem, a ne povsem nasprotnem okolju.

Ta članek je bil osredotočen na P2Pool in predlagane iteracije za izboljšanje njegovih omejitev skaliranja. Da ne bi napisal cele knjige, se nisem dotaknil drugih obstoječih ali potencialnih zasnov. Takoj, ko mi bo uspelo priti do tega, nameravam napisati nadaljnji del, ki bo obravnaval druge mehanizme za decentralizacijo rudarskih bazenov.

To je gostujoča objava Shinobija. Izražena mnenja so povsem njihova in ne odražajo nujno mnenj BTC Inc oz Bitcoin Magazine.

Časovni žig:

Več od Bitcoin Magazine