Desentralisering, n. Sikkerhetsforutsetningen om at en nittenåring i Hangzhou og noen som kanskje er i Storbritannia og kanskje ikke ennå ikke har bestemt seg for å samarbeide med hverandre.

Det har vært en stor mengde opprør den siste uken om problemet med sentralisering av gruvedrift i Bitcoin-nettverket. Vi så et enkelt gruvebasseng, GHash.io, som samler over 45 hashkrefter i mange timer, og til og med vokser til og med til å bli 51 av hele nettverket. Hele forsiden av Bitcoin reddit var i flammer i intens diskusjon og et sjeldent sammenstøt med selvtilfredshet og frykt, gruvearbeidere mobiliserte raskt for å ta hashpower av GHash, og overraskende smarte strategier ble brukt i et forsøk på å bringe tilbake balansen mellom de forskjellige bassengene , til og med en gruvearbeider med “mellom 50 TH / s og 2 PH / s” gruvedrift på GHash men nekter å videresende gyldige blokkeringer, i hovedsak sabotere alle gruver på bassenget til en grad av opptil 4. Nå har situasjonen noe avtatt, med GHash ned til 35 nettverk hashpower og nummer to, Discus Fish, opp til 16, og det er sannsynlig at situasjonen vil forbli slik i minst en kort stund før ting varmes opp igjen. Er problemet løst? Selvfølgelig ikke. Kan problemet løses? Det vil være hovedtemaet for dette innlegget.

Bitcoin Mining

La oss først forstå problemet. Hensikten med Bitcoin-gruvedrift er å lage et desentralisert tidsstempelsystem, ved å bruke det som egentlig er en flertallsmekanisme for å bestemme i hvilken rekkefølge visse transaksjoner kom som en måte å løse problemet med dobbeltbruk. Problemet med dobbeltbruk er enkelt å forklare: Hvis jeg sender en transaksjon som sender mine 100 BTC til deg, og deretter en dag senere sender jeg en transaksjon som sender de samme 100 BTC til meg selv, kan begge disse transaksjonene åpenbart ikke behandles samtidig. Derfor må en av de to “vinne”, og den intuitivt korrekte transaksjonen som skulle få den æren er den som kom først. Det er imidlertid ingen måte å se på en transaksjon og kryptografisk bestemme når den ble opprettet. Dette er hvor Bitcoin-gruvedrift trer inn.

Bitcoin-gruvedrift fungerer ved at noder kalt “gruvearbeidere” samler nylige transaksjoner og produserer pakker kalt “blokker”. For at en blokk skal være gyldig, må alle transaksjonene den inneholder, være gyldige, den må “peke på” (dvs. inneholde hash av) ​​en tidligere blokk som er gyldig, og den må tilfredsstille “beviset for arbeidsforhold” ( nemlig SHA2562 (block_header) <= 2190, dvs. dobbel hasj til blokkoverskriften må starte med et stort antall nuller). Fordi SHA256 er en pseudorandom-funksjon, er den eneste måten å lage slike blokker på å forsøke å produsere dem gjentatte ganger til en tilfeldigvis tilfredsstiller tilstanden. 2190-målet er en fleksibel parameter; den justeres automatisk slik at hele nettverket i gjennomsnitt trenger å jobbe i ti minutter før en node blir heldig og lykkes; når det skjer, blir den nylig produserte blokken den “siste” blokken, og alle begynner å prøve å bryte en blokk som peker på den blokken som den forrige blokken. Denne prosessen, som gjentas en gang hvert tiende minutt, utgjør den primære driften av Bitcoin-nettverket, og skaper en stadig lengre kjede av blokker (“blockchain”) som inneholder, i rekkefølge, alle transaksjonene som noen gang har funnet sted.

Hvis en node ser to eller flere konkurrerende kjeder, anser den den som er lengst, dvs. den som har mest bevis på arbeidet bak seg, for å være gyldig. Over tid, hvis to eller flere kjeder spiller samtidig, kan man se hvordan kjeden med mer beregningskraft som den til slutt garanteres vil vinne; Derfor kan systemet beskrives som “en CPU-syklus, en stemme”. Men det er en sårbarhet: Hvis ett parti, eller en samarbeidende gruppe partier, har over 50 av all nettverksmakt, så har den enheten alene majoritetskontroll over stemmeprosessen og kan utregne enhver annen kjede. Dette gir denne enheten noen privilegier:

  1. Enheten kan bare anerkjenne blokker produsert av seg selv som gyldige, og forhindrer noen andre i å utvinne fordi sin egen kjede alltid vil være den lengste. Over tid dobler dette gruvearbeidernes BTC-inntekter på alle andres bekostning. Merk at en svak versjon av dette angrepet, “egoistisk gruvedrift”, begynner å bli effektiv på rundt 25 nettverksstrøm.
  2. Enheten kan nekte å inkludere visse transaksjoner (dvs. sensur)
  3. Enheten kan “gå tilbake i tid” og starte gruvedrift fra N-blokker siden. Når denne gaffelen uunngåelig overgår originalen, fjerner dette effekten av eventuelle transaksjoner som skjedde i den opprinnelige kjeden etter gaffelpunktet. Dette kan brukes til å tjene ulovlig fortjeneste ved (1) å sende BTC til en børs, (2) vente på 6 blokker for at innskuddet skal bekreftes, (3) kjøpe og ta ut LTC, (4) reversere innskuddstransaksjonen og i stedet sende disse myntene tilbake til angriperen.

Dette er det fryktede “51 angrepet”. Spesielt gir til og med 99 hashkrefter ikke angriperen privilegiet å tildele seg et vilkårlig antall nye mynter eller stjele andres mynter (unntatt ved å reversere transaksjoner). Et annet viktig poeng er at 51 av nettverket ikke er nødvendig for å sette i gang slike angrep; hvis alt du vil er å svindle en kjøpmann som godtar transaksjoner etter å ha ventet N-bekreftelser (vanligvis,

N = 3

eller

N = 6

Hvis gruvebassenget ditt har en del P av nettverket, kan du sannsynligvis lykkes:

(P / (1-P)) ^ N

på 35 hashpower og 3 bekreftelser, betyr dette at GHash for tiden kan stjele altcoins fra en altcoin exchange med 15,6 suksess sannsynlighet – en gang i hvert sjette forsøk.

Bassenger

Her er vi kommer til bassenger. Bitcoin-gruvedrift er en givende, men dessverre veldig høy variansaktivitet. Hvis, i gjeldende 100 PH / s nettverk, du kjører en ASIC med 1 TH / s, så hver blokk du har en sjanse til 1 av 100000 for å motta blokkbelønningen på 25 BTC, men de andre 99999 ganger av 100000 får du akkurat ingenting. Gitt at nettverkshashkraften for øyeblikket dobles hver tredje måned (for enkelhets skyld, si 12500 blokker), gir det deg en sannsynlighet på 15,9 at ASIC noensinne vil generere en belønning, og en 84,1 sjanse for at ASICs totale levetidsinntekt vil være nøyaktig ingenting.

Et gruvebasseng fungerer som en slags omvendt forsikringsagent: gruvebassenget ber deg om å bryte inn til sin egen adresse i stedet for din, og hvis du genererer en blokk som har et bevis på at arbeidet er nesten godt nok, men ikke helt, kalles det en “del” , så gir bassenget deg en mindre betaling. For eksempel, hvis gruveproblemet for hovedkjeden krever at hasjen er mindre enn 2190, kan kravet om en andel være 2190. Derfor vil du i dette tilfellet generere en andel omtrent hvert hundre blokker, og motta 0,024 BTC fra bassenget, og en gang i tusen av dem vil gruvebassenget motta en belønning på 25 BTC. Forskjellen mellom forventet 0,00024 BTC og 0,00025 BTC per blokk er gruvedriftens fortjeneste.

Imidlertid tjener gruvebassenger også et annet formål. Akkurat nå er de fleste gruvedrift-ASIC-er kraftige i hashing, men overraskende svake på alt annet; det eneste de ofte har for generell beregning er en liten Raspberry Pi, altfor svak til å laste ned og validere hele blockchain. Gruvearbeidere kan fikse dette, på bekostning av noe som en ekstra $ 100 per enhet for en mer anstendig CPU, men det gjør de ikke – av den åpenbare grunnen til at $ 0 er mindre enn $ 100. I stedet ber de gruvebassenger om å generere gruvedata for dem. De aktuelle “gruvedataene” refererer til blokkoverskriften, noen hundre byte med data som inneholder hashen fra den forrige blokken, roten til et Merkle-tre som inneholder transaksjoner, tidsstemplet og noen andre tilleggsdata. Gruvearbeidere tar disse dataene og fortsetter å øke en verdi som kalles en “nonce” til blokkoverskriften tilfredsstiller arbeidsbeviset. Vanligvis ville gruvearbeidere ta disse dataene fra blokken som de uavhengig bestemmer for å være den siste blokken; her blir imidlertid det faktiske utvalget av hva den siste blokken forvist til bassengene.

Dermed, hva har vi? Vel, akkurat nå, egentlig dette:

Gruveøkosystemet har størknet til et relativt lite antall bassenger, og hver og en har en betydelig del av nettverket – og selvfølgelig, i forrige uke, nådde en av disse bassengene, GHash, 51. Gitt at hver gang et gruvedrift, enten det er Deepbit i 2011 eller GHash i 2013, nådde 51 det har skjedd en plutselig massiv reduksjon i antall brukere, det er fullt mulig at GHash faktisk kom hvor som helst opptil 60 nettverkshashkrefter, og bare skjuler noe av det. Det er mange bevis i den virkelige verden av store selskaper som skaper angivelig konkurrerende merkevarer for å gi utseendet til valg og markedsdynamikk, så en slik hypotese skal overhodet ikke diskonteres. Selv om vi antar at GHash faktisk er ærlig om nivået av hashpower det har, er det dette diagrammet bokstavelig talt sier at den eneste grunnen til at det ikke er 51 angrep mot Bitcoin akkurat nå, er at Discus Fish, et gruvedrift som drives av en nitten år gammel i Hangzhou, Kina og GHash, et gruvebasseng som antas å være i Storbritannia, men kan godt være hvor som helst, har ennå ikke bestemt seg for å kollidere med hverandre og overta blockchain. Alternativt, hvis en er tilbøyelig til å stole på denne spesielle nittenåringen i Hangzhou (tross alt virket han ganske fin da jeg møtte ham), kan Eligius eller BTCGuild kollidere med GHash i stedet.

Så hva om GHash, for eksempel, får over 51 igjen og begynner å sette i gang 51 angrep (eller kanskje til og med starte angrep mot altcoin-børser ved 40)? Hva skjer da?

Først av alt, la oss få et dårlig argument ut av veien. Noen hevder at det ikke betyr noe om GHash kommer over 51, fordi det ikke er noe incitament for dem å utføre angrep mot nettverket, ettersom et slikt angrep ville ødelegge verdien av deres egne valutaenheter og gruvedrift. Dessverre er dette argumentet ganske enkelt absurd. For å se hvorfor, bør du vurdere en hypotetisk valuta der gruvealgoritmen bare er en signaturverifiser for min egen offentlige nøkkel. Bare jeg kan signere blokker, og jeg har alle insentiver til å opprettholde tillit til systemet. Hvorfor ville ikke Bitcoin-samfunnet vedta mitt klart overlegne, ikke-sløsende, bevis på arbeid? Det er mange svar: Jeg kan være irrasjonell, jeg kan bli tvunget av en regjering, jeg kan begynne sakte å innprente en kultur der tilbakeføringer av transaksjoner for visse “gode formål” (f.eks. Å blokkere utbetalinger av barnepornografi) er akseptable og deretter sakte utvide det til dekke alle mine moralske fordommer, eller jeg kan til og med ha en massiv kortslutning mot Bitcoin med 10x innflytelse. De to midterste argumentene er ikke sprø hypotetiske; de er virkelige dokumenterte handlinger av implementeringen av meg-mynt som allerede eksisterer: PayPal. Dette er grunnen til at desentralisering betyr noe; vi brenner ikke millioner av dollar strøm per år bare for å flytte til en valuta hvis fortsatte stabilitet henger på ganske enkelt et litt annet slags politisk spill.

I tillegg er det viktig å merke seg at selv GHash i seg selv har hatt en historie med å være involvert i å bruke transaksjonsangrep mot spillsider; spesifikt kan man huske episoden som involverte BetCoin Dice. Selvfølgelig benekter GHash at det tok noen bevisste handlinger, og er sannsynligvis riktig; heller, angrepene ser ut til å være feilen til en useriøs ansatt. Dette er imidlertid ikke et argument til fordel for GHash; Tvert imot, det er et stykke empirisk bevis fra den virkelige verden som viser et vanlig argument til fordel for desentralisering: makt ødelegger, og like viktig er at makt tiltrekker seg de som allerede er korrupte. Teoretisk har GHash økt sikkerhet siden den gang; i praksis, uansett hva de gjør, eksisterer fortsatt dette sentrale punktet for sårbarhet for Bitcoin-nettverket.

Imidlertid er det et annet, bedre argument for hvorfor gruvebassenger ikke er et problem: nemlig det faktum at de ikke er individuelle gruvearbeidere, men snarere bassenger som gruvearbeidere kan gå inn og ut når som helst. På grunn av dette kan man med rimelighet si det Ars Technicas påstand at Bitcoins sikkerhet har blitt «knust av en anonym gruvearbeider med 51 nettverkskraft» er helt unøyaktig; Det er ingen gruvearbeider som kontrollerer noe i nærheten av 51. Det er virkelig en enkelt enhet, kalt CEX.io, som kontrollerer 25 av GHash, noe som er skummelt i seg selv, men likevel langt fra scenariet som overskriften insinuerer er tilfelle. Hvis enkeltpersoner gruvearbeidere ikke vil delta i å undergrave Bitcoin-protokollen og uunngåelig slå verdien av myntene sine ned med noe som 70, kan de rett og slett forlate bassenget, og en slik ting har nå skjedd tre ganger i Bitcoins historie. Spørsmålet er imidlertid, ettersom Bitcoin-økonomien fortsetter å profesjonalisere, vil dette fortsette å være tilfelle? Eller, gitt noe mer “grådige” individer, vil gruvearbeiderne fortsette å bryte ved det eneste bassenget som lar dem fortsette å tjene inntekter, og sparer individuelt sin egen fortjeneste på bekostning av å ta hele Bitcoin-gruveøkosystemet kollektivt ned en klippe.?

Løsninger

Selv nå er det faktisk en strategi som gruvearbeidere kan, og har tatt, for å undergrave GHash.io: gruvedrift på bassenget, men bevisst tilbakeholde blokker de finner som faktisk er gyldige. En slik strategi kan ikke påvises, men med en gruvedrift på 1 PH / s på denne måten reduserer den i hovedsak fortjenesten til alle GHash-gruvearbeidere med omtrent 2,5. Denne typen bassengsabotasje opphever fullstendig fordelen med å bruke GHash uten gebyr over andre bassenger. Denne evnen til å straffe dårlige skuespillere er interessant, selv om implikasjonene er uklare; hva om GHash begynner å ansette gruvearbeidere til å gjøre det samme mot alle andre bassenger? I stedet for å stole på våken sabotasjetaktikk med et uundersøkt økonomisk sluttspill, bør vi ideelt sett prøve å lete etter andre løsninger..

Først og fremst er det det alltid tilstedeværende P2P-gruvedrevet, P2Pool. P2Pool har eksistert i årevis, og fungerer ved å ha sin egen interne blockchain med en 10 sekunders blokkeringstid, slik at gruvearbeidere kan sende inn aksjer som blokker i kjeden og kreve gruvearbeidere å prøve å produsere blokker som sendes til alle de siste par dusin delene produsenter samtidig. Hvis P2Pool hadde 90 nettverkshasekrefter, ville ikke resultatet være sentralisering og velvillig diktatur; heller, den begrensende saken ville rett og slett være en kopi av den vanlige gamle Bitcoin blockchain. Imidlertid har P2Pool et problem: det krever at gruvearbeidere skal validere noder fullt ut. Som beskrevet ovenfor, gitt muligheten for gruvedrift uten å være en fullstendig validerende node, er dette uakseptabelt.

En løsning på dette problemet er å ha en gruvealgoritme som tvinger noder til å lagre hele blockchain lokalt. En enkel algoritme for dette i Bitcoins tilfelle er:

def mine (block_header, N, nonce): o = [] for i i rekkevidde (20): o.append (sha256 (block_header + nonce + i)) n = [] for i i range (20): B = ( o [i] / 2 ** 128)% N n.append (tx (B, o [i])) return sha256 (block_header + str (n))

Der tx (B, k) er en funksjon som returnerer kth-transaksjonen i blokk B, omvik rundt modulo antall transaksjoner i den blokken om nødvendig, og N er det gjeldende blokknummeret. Merk at dette er en enkel algoritme og er svært suboptimal; noen åpenbare optimaliseringer inkluderer å gjøre det seriell (dvs. o [i + 1] avhenger av n [i]), å bygge et Merkle-tre ut av o [i] -verdiene slik at de kan verifiseres individuelt, og opprettholde to Merkle-trær i hver blokk, den ene lagrer transaksjoner og den andre lagrer alle nåværende saldoer, så algoritmen trenger bare å spørre den nåværende blokken.

Denne tilnærmingen løser faktisk to problemer samtidig. For det første fjerner det insentivet til å bruke et sentralisert basseng i stedet for P2Pool. For det andre er det en pågående krise i Bitcoin om hvordan det er for få fulle noder; grunnen til at dette er tilfelle er at det er dyrt å opprettholde en full node med sin 20 GB blockchain, og ingen vil gjøre det. Med denne ordningen vil hver enkelt ASIC-gruvedrift bli tvunget til å lagre hele blockchain, en tilstand der alle funksjonene til en full node blir trivielle..

En annen strategi er et annet kryptografisk triks: gjør gruvedrift ikke outsourcable. Spesielt er ideen å lage en gruvedriftsalgoritme slik at når en gruvearbeider oppretter en gyldig blokk, de alltid nødvendigvis har en alternativ måte å publisere blokken som sikrer gruvebelønningen for seg selv. Strategien er å bruke en kryptografisk konstruksjon kalt null-kunnskapssikker, som kryptografisk beviser at de opprettet en gyldig blokk, men holder blokkdata hemmelig, og deretter samtidig oppretter en blokk uten bevis på arbeid som sender belønningen til gruvearbeideren. Dette vil gjøre det trivielt å svindle et gruvebasseng, noe som gjør gruvebassenger ikke levedyktige.

Et slikt oppsett vil kreve en betydelig endring av Bitcoins gruvealgoritme, og bruker kryptografiske primitiver langt mer avanserte enn de i resten av Bitcoin; uten tvil, kompleksitet er i seg selv en alvorlig ulempe, og en som kanskje er verdt det for å løse alvorlige problemer som skalerbarhet, men ikke for å implementere et smart triks for å motvirke gruvebassenger. I tillegg vil det muligens gjøre problemet verre, ikke bedre å gjøre umulige gruvedrift. Årsaken til at gruvebassenger eksisterer, er å håndtere variansproblemet; gruvearbeidere er ikke villige til å kjøpe en investering som bare har 15 sjanser til å tjene noe avkastning. Hvis muligheten for å slå sammen er umulig, vil gruveøkonomien rett og slett sentralisere seg i et mindre sett med større aktører – et oppsett som, i motsetning til nå, ikke enkeltdeltakere bare kan bytte fra. Den forrige ordningen tillater derimot fortsatt pooling så lenge den lokale noden har full blockchain, og derved oppmuntrer til en slags pooling (nemlig p2pool) som ikke er systemisk skadelig.

En annen tilnærming er mindre radikal: ikke endre gruvealgoritmen i det hele tatt, men endre pooling-algoritmer. Akkurat nå bruker de fleste gruvebassenger en utbetalingsordning kalt “pay-per-last-N-shares” (PPLNS) – betaler gruvearbeidere per aksje et beløp basert på inntektene som er mottatt fra de siste par tusen aksjene. Denne algoritmen deler i hovedsak bassengets egen avvik blant brukerne, noe som resulterer i ingen risiko for bassenget og en liten varians for brukerne (f.eks. Ved å bruke et basseng med 1 hashkraft, er forventet standardavvik for månedlig avkastning ~ 15, langt bedre enn solo gruvedrift lotteri, men fortsatt ikke ubetydelig). Større bassenger har mindre avvik, fordi de utvinner flere blokker (etter grunnleggende statistikk har et basseng med 4 ganger mer gruvedrift 2x mindre standardavvik i prosent). Det er en annen ordning, kalt PPS (pay-per-share), hvor en gruvedrift rett og slett betaler et statisk beløp per aksje til gruvearbeidere; denne ordningen fjerner all avvik fra gruvearbeidere, men på bekostning av å innføre risiko i bassenget; det er derfor ingen gruvebasseng gjør det.

Meni Rosenfelds Multi-PPS prøver å gi en løsning. I stedet for å gruve inn i ett basseng, kan gruvearbeidere forsøke å produsere blokker som betaler til mange bassenger samtidig (f.eks. 5 BTC til ett basseng, 7 BTC til et annet, 11,5 BTC til et tredje og 1,5 BTC til et fjerde), og bassengene vil betale gruvearbeideren for aksjer proporsjonalt (f.eks. i stedet for at en pool betaler 0,024 BTC per aksje, vil den første poolen betale 0,0048, den andre 0,00672, den tredje 0,010104 og den fjerde 0,00144). Dette gjør at svært små bassenger bare aksepterer gruvearbeidere som gir dem veldig små belønninger, slik at de kan ta et risikonivå proporsjonalt med deres økonomiske evner. For eksempel, hvis basseng A er 10 ganger større enn basseng B, kan basseng A akseptere blokker med utganger opp til 10 BTC, og basseng B kan bare akseptere 1 BTC. Hvis man gjør beregningene, kan man se at forventet avkastning for basseng B er nøyaktig ti ganger hva basseng A får under alle omstendigheter, så basseng B har ingen spesiell superlinear fordel. I et enkelt PPS-scenario, derimot, ville mindre B ha 3,16 ganger høyere risiko sammenlignet med formuen.

Problemet er, i hvilken grad er problemet egentlig på grunn av avvik, og i hvilken grad er det noe annet, som bekvemmelighet? Visst, et 1 gruvebasseng vil se 15 månedlige standardavvik i avkastningen. Imidlertid ser alle gruvebassenger omtrent 40 månedlige standardavvik i avkastningen bare på grunn av den ustabile BTC-prisen. Forskjellen mellom 15 standardavvik og 2 standardavvik virker stor og en tvingende grunn til å bruke det største bassenget; forskjellen mellom 42 og 55 ikke så mye. Så hvilke andre faktorer kan påvirke sentraliseringen av gruvedammen? En annen faktor er det faktum at bassenger nødvendigvis “hører” om sine egne blokker umiddelbart og alle andres blokker etter en eller annen nettverksforsinkelse, så større bassenger vil sjekke oftere på utdaterte blokker; dette problemet er kritisk for blokkjeder med en tid på ti sekunder, men i Bitcoin er effekten mindre enn 1 og dermed ubetydelig. En tredje faktor er bekvemmelighet; dette kan best løses ved å finansiere en brukervennlig åpen kildekode, lage din egen gruvedrift-løsning, i en lignende ånd som programvaren som brukes av mange små VPS-leverandører; hvis det anses som viktig, kan det hende at vi delvis finansierer en nettverksagnostisk versjon av en slik innsats. Den siste faktoren som fremdeles gjenstår, er imidlertid at GHash ikke har noe gebyr; snarere opprettholder bassenget seg selv gjennom forbindelsen til ASIC sky-gruveselskapet CEX.io, som kontrollerer 25 av hash-kraften. Dermed, hvis vi virkelig ønsker å komme ned til bunnen av sentraliseringsproblemet, kan det hende vi må se på ASICs selv.

ASIC-er

Opprinnelig var Bitcoin-gruvedrift ment som en veldig egalitær jakt. Millioner av brukere over hele verden ville alle gruve Bitcoin på stasjonære datamaskiner, og resultatet ville samtidig være en distribusjonsmodell som er svært egalitær og som sprer bredt den første BTC-forsyningen og en konsensusmodell som inkluderer tusenvis av interessenter, som nesten utelukker enhver kollusjon. Opprinnelig fungerte ordningen, og sørget for at de første få millionene bitcoins ble bredt spredt blant mange tusen brukere, inkludert til og med de normalt kontantfattige videregående elevene. I 2010 kom imidlertid fremveksten av gruvedriftprogramvare for GPU (“grafikkbehandlingsenhet”), og utnyttet GPUens massive parallellisering for å oppnå 10-100x hastigheter og gjøre CPU-gruvedrift fullstendig ulønnsom innen måneder. I 2013 tok spesialiseringen en ytterligere sving med fremveksten av ASIC. ASIC-er, eller applikasjonsspesifikke integrerte kretser, er spesialiserte gruvebrikker produsert med et enkelt formål: å skru ut så mange SHA256-beregninger som mulig for å utvinne Bitcoin-blokker. Som et resultat av denne spesialiseringen får ASICs ytterligere 10-100x hastighet over GPUer, noe som gjør GPU-gruvedrift ulønnsom også. Nå er den eneste måten å bryte på enten å starte et ASIC-selskap eller kjøpe et ASIC fra et eksisterende.

Måten ASIC-selskapene jobber på er enkel. For det første starter selskapet opp, gjør noe minimalt med oppsettarbeid og finner ut planen, og begynner å forhåndsbestille. Disse forhåndsbestillingene brukes deretter til å finansiere utviklingen av ASIC, og når ASIC-ene er klare, blir enhetene sendt til brukerne, og selskapet begynner å produsere og selge mer i et jevnt tempo. ASIC-produksjon gjøres i en rørledning; det er en type fabrikk som produserer chips for ASIC, og deretter en annen, mindre sofistikert operasjon, der chips, sammen med standarddeler som kretskort og vifter, settes sammen i komplette bokser som skal sendes til innkjøpere.

Så hvor forlater dette oss? Det er åpenbart at ASIC-produksjonen er ganske sentralisert; Det er noe som 10-30 selskaper som produserer disse enhetene, og hver av dem har et betydelig nivå av hashpower. Imidlertid skjønte jeg ikke hvor sentralisert ASIC-produksjon er før jeg besøkte denne beskjedne lille bygningen i Shenzhen, Kina:

I tredje etasje på fabrikken ser vi:

Det vi har på det første bildet er omtrent 150 gruvearbeidere på 780 GH / s hver, som utgjør totalt 120 TH / s gruvearbeidere – mer enn 0,1 av den totale nettverkshash-kraften – alt på ett sted. Det andre bildet viser bokser som inneholder ytterligere 150 TH / s. Til sammen produserer fabrikken litt mer enn summen av disse to mengdene – ca 300 TH / s – hver eneste dag. Se på dette diagrammet:

Totalt får Bitcoin-nettverket ca 800 TH / s hver dag. Dermed til og med å legge til noen sikkerhetsfaktorer og forutsette at fabrikken stenges noen dager i uken, er det vi har en enkelt fabrikk som produserer over en fjerdedel av all ny hashkraft som blir lagt til Bitcoin-nettverket. Nå er bygningen litt stor, så gjett hva som er i første etasje? Det stemmer, et fabrikasjonsanlegg som produserer Scrypt ASIC som tilsvarer en fjerdedel av all ny hashkraft lagt til Litecoin-nettverket. Dette projiserer et bilde av et skremmende sluttspill for Bitcoin: Bitcoin-nettverket bruker millioner av dollar strøm hvert år bare for å erstatte den amerikanske dollarens gruvedriftsalgoritme av “8 hvite gutter” med noen titalls gutter i Shenzhen.

Før vi blir for alarmerende over fremtiden for gruvedrift, er det viktig å grave ned og forstå (1) hva som er galt med ASIC, (2) hva som er greit med CPUer, og (3) hva fremtiden for ASIC-gruvedrift skal ser ut som. Spørsmålet er mer komplekst enn det virker. Først og fremst kan man spørre seg, hvorfor er det ille at ASIC bare produseres av noen få selskaper, og en fjerdedel av dem går gjennom en fabrikk? CPUer er også sterkt sentraliserte; integrerte kretser blir produsert av bare et lite antall selskaper, og nesten alle datamaskiner vi bruker har i det minste noen komponenter fra AMD eller Intel. Svaret er, selv om AMD og Intel produserer CPUene, kontrollerer de ikke hva som kjøres på dem. De er universalapparater, og det er ingen måte for produsentene å oversette kontrollen over produksjonsprosessen til noen form for kontroll over bruken. DRM-lastede “pålitelige databehandlingsmoduler” eksisterer, men det er veldig vanskelig å forestille seg at en slik ting blir brukt til å tvinge en datamaskin til å delta i et dobbeltbruk-angrep..

For ASIC gruvearbeidere er det fortsatt ikke så ille akkurat nå. Selv om ASIC-er produseres i bare et lite antall fabrikker, blir de fortsatt kontrollert av tusenvis av mennesker over hele verden i forskjellige datasentre og hjem, og individuelle gruvearbeidere, som vanligvis har mindre enn noen få teraskader, har muligheten til å lede hasjkraften dit de trenger. Snart kan det imidlertid endres. Hva om produsentene om en måned er klar over at det ikke gir økonomisk mening for dem å selge ASIC-ene sine når de kan installere, bare holde alle enhetene sine på et sentrallager og tjene full inntekt? Fraktkostnadene vil falle til nesten null, forsinkelser vil gå ned (en ukes forsinkelse tilsvarer ~ 5,6 inntektstap ved dagens hashpower vekstrater) og det vil ikke være behov for å produsere stabile eller pene foringsrør. I dette scenariet ville det ikke bare være 25 av alle ASIC-er som produseres av en fabrikk i Shenzhen; det vil være 25 av all hashkraft som går tom for en fabrikk i Shenzhen.

Da jeg besøkte hovedkvarteret til et selskap i Hangzhou som blant annet er involvert i Litecoin-gruvedrift, spurte jeg grunnleggerne det samme spørsmålet: hvorfor holder du ikke bare gruvearbeidere internt? De ga tre svar. For det første bryr de seg om desentralisering. Dette er enkelt å forstå, og er veldig heldig at så mange gruvearbeidere føler seg slik foreløpig, men til slutt vil gruvedrift utføres av firmaer som bryr seg litt mer om monetær fortjeneste og mindre om ideologi. For det andre trenger de forhåndsbestillinger for å finansiere selskapet. Rimelig, men løst ved å utstede “gruvekontrakter” (i hovedsak krypto-eiendeler som utbetaler utbytte lik et spesifikt antall GH / s gruvedrift). For det tredje er det ikke nok strøm og plass i lagrene. Det siste argumentet, så snodig som det ser ut, kan være det eneste som holder vann på lang sikt; det er også den oppgitte grunnen til at ASICminer stoppet gruvedrift rent internt og begynte å selge USB-gruvearbeidere til forbrukere, noe som tyder på at det kanskje ligger en sterk og universell begrunnelse bak en slik beslutning.

Forutsatt at finansieringsstrategiene for å selge forhåndsordrer og selge gruvekontrakter er økonomisk likeverdige (som de er), er ligningen for å bestemme om intern gruvedrift eller salg er mer fornuftig som følger:

På venstre side har vi kostnadene ved egen gruvedrift: strøm, lagring og vedlikehold. På høyre side har vi kostnadene for strøm, lagring og vedlikehold eksternt (dvs. i kjøperens hender), frakt og straffen fra å måtte begynne å kjøre ASIC senere, samt en negativ faktor for å redegjøre for det faktum at noen mine i det minste delvis for moro skyld og ut fra et ideologisk ønske om å støtte nettverket. La oss analysere disse tallene akkurat nå. Vi bruker Butterfly Labs Monarch som eksempel, og hold hver ASIC i gang i ett år for enkelhets skyld.

  • Intern strøm, lagring, vedlikehold – ifølge BFLs kasse-side koster intern strøm, lagring og vedlikehold $ 1512 per år, som vi vil merke ned til $ 1000 forutsatt at BFL tar noe overskudd
  • Ekstern strøm – i Ontario er prisene omtrent $ 0,1 per KwH. En Butterfly Labs Monarch vil kjøre 600 GH / s ved 350 W.; normaliserer dette til per TH, betyr dette en strømkostnad på $ 1,40 per dag eller $ 511 for hele året
  • Ekstern lagring – hjemme kan man vurdere lagring gratis, eller man kan legge til et gebyr på $ 1 per dag; derfor vil vi si et sted fra $ 0 til $ 365
  • Eksternt vedlikehold – vanskelig å tallfeste denne verdien; for teknisk dyktige personer som liker utfordringen, er det null, og for andre kan det være vanskelig; derfor kan vi si $ 0 til $ 730
  • Frakt kostnad – ifølge BFL, $ 38.
  • Inntekter – for øyeblikket gir 1 TH / s deg 0,036 BTC eller $ 21,6 per dag. Siden hashpower i vår analyse dobles hver 90. dag, så effektiviteten til ASIC halveres hver 90. dag, får vi 122 dager i livet eller $ 2562 inntekter
  • Leveringstid – ifølge mine kinesiske kilder, en uke
  • Hashpower doblingstid – tre måneder. Derfor er hele uttrykket for forsinkelsesstraffen 2562 * (1 – 0,5 ^ 0,0769) = 133,02
  • Hobbyist / ideologipremie – for tiden gjør en stor del av Bitcoin gruvearbeidere det av ideologiske hensyn, så vi kan si alt fra $ 0 til $ 1000

Dermed legger vi alt sammen, til venstre har vi $ 1000, og til høyre har vi $ 511 + $ 38 + $ 133 = $ 682, opp til pluss $ 1095 og minus opp til $ 1000. Dermed er det helt tvetydig hvilken som er bedre; feil i analysen min og de nebuløse variablene for hvor mye folk verdsetter sin tid og estetikk, synes å oppveie noen klare konklusjoner. Men hva vil skje i fremtiden? Fundamentalt kan man forvente at strøm, lagring og vedlikehold vil være mye billigere sentralt enn hos hver enkelt forbruker bare på grunn av stordriftsfordeler og gevinster fra spesialisering; I tillegg er de fleste i den “virkelige verden” ikke altruister, hobbyister eller beundrere av vakre ASIC-kledninger. Fraktkostnadene er over null, og forsinkelsesstraffen er over null. Så det virker som om økonomien favoriserer sentralisert gruvedrift…

… bortsett fra en potensiell faktor: varme. Akkurat nå er ASIC fortsatt i en rask utviklingsfase, så de aller fleste kostnadene er maskinvare; BFL-gruvearbeideren som brukes i eksemplet ovenfor koster $ 2200, men strømmen koster $ 511. I fremtiden vil imidlertid utviklingen være mye tregere; til syvende og sist kan vi forvente en konvergens til Moores lov, med hashpower dobling hvert annet år, og til og med Moores lov ser ut til å avta. I en slik verden kan strømkostnadene komme tilbake som det primære choke-punktet. Men hvor mye koster strøm? I et sentralisert lager, ganske mye, og firkantet kubelov garanterer at enda mer energi enn hjemme i et sentralisert miljø må brukes på kjøling fordi alle gruvearbeiderne er på ett sted, og de fleste av dem er for dypt inne i fabrikken til å bli utsatt for kjølig frisk luft. I et hjem, men hvis utetemperaturen er mindre enn omtrent 20 ° C, er kostnaden for strøm null; all elektrisitet brukt av gruvearbeideren blir til slutt til ”avfallsvarme” som deretter varmer opp huset og erstatter strøm som en sentralvarmer bruker. Dette er det eneste argumentet for hvorfor ASIC-desentralisering kan fungere: i stedet for at desentralisering skjer fordi alle har en viss mengde ubrukt, og dermed gratis, beregningsenheter på sin bærbare datamaskin, skjer desentralisering fordi mange mennesker har en viss mengde etterspørsel etter oppvarming i hjemmene sine.

Vil dette skje? Mange Bitcoin-talsmenn virker overbevist om at svaret er ja. Imidlertid er jeg ikke sikker; det er et helt empirisk spørsmål om strømkostnadene er mindre enn vedlikehold pluss lagring pluss frakt pluss forsinkelsesstraff, og om ti år kan ligningen godt falle på den ene eller den andre siden. Jeg personlig er ikke villig til å bare lene meg tilbake og håpe på det beste. Dette er grunnen til at jeg personlig synes det er skuffende at så mange av Bitcoin-utviklerne (men heldigvis ikke nesten alle) er fornøyd med å vurdere beviset på arbeidsproblemet “løst” eller hevder at forsøk på å løse gruvespesialisering er en handling av “Unødvendig ombygging”. Det kan vise seg å være, eller ikke, men det faktum at vi har denne diskusjonen i utgangspunktet antyder sterkt at Bitcoins nåværende tilnærming er veldig langt fra perfekt.

ASIC-motstand

Løsningen på ASIC-problemet som oftest er spioneringen, er utviklingen av ASIC-resistente gruvealgoritmer. Så langt har det vært to tanker om å utvikle slike algoritmer. Den første er minneshardhet – reduserer kraften til ASIC-er for å oppnå enorme gevinster gjennom parallellisering ved å bruke en funksjon som tar veldig mye minne. Samfunnets første forsøk var Scrypt, som viste seg å ikke være motstandsdyktig nok; i januar forsøkte jeg å forbedre Scrypt minneshardhet med Dagger, en algoritme som er minnehard å beregne (i en grad av 128 MB), men som er enkel å verifisere; denne algoritmen er imidlertid sårbar for angrep med delt minne der en rekke parallelle prosesser har tilgang til samme 128 MB minne. Den nåværende toppmoderne minneharde PoW er Gjøk, en algoritme som ser etter lengde-42 sykluser i grafer. Det tar mye minne å finne slike sykluser effektivt, men en syklus er veldig rask å verifisere, og krever 42 hashes og mindre enn 70 byte minne.

Den andre tilnærmingen er noe annerledes: Lag en mekanisme for å generere nye hashfunksjoner, og gjør funksjonsrommet som det genererer så stort at den typen datamaskin som er best egnet til å behandle dem, per definisjon er fullstendig generalisert, dvs. en CPU. Denne tilnærmingen kommer nær å være “beviselig ASIC-motstandsdyktig” og dermed mer fremtidssikker, snarere enn å fokusere på spesifikke aspekter som minne, men også den er ufullkommen; det vil alltid være i det minste noen deler av en CPU som vil vise seg å være fremmede i en slik algoritme og kan fjernes for effektivitet. Imidlertid er søken ikke etter perfekt ASIC-motstand; snarere er utfordringen å oppnå det vi kan kalle “økonomisk ASIC-motstand” – å bygge en ASIC bør ikke være verdt det.

Dette er faktisk overraskende sannsynlig å være oppnåelig. For å se hvorfor, vær oppmerksom på at gruvedrift per dollar brukt er for de fleste mennesker sublinear. De første N-enhetene med gruvedrift er veldig billige å produsere, siden brukere bare kan bruke den eksisterende ubrukt beregningstiden på stasjonære maskiner og bare betale for strøm (E). Utover N-enheter må man imidlertid betale for både maskinvare og strøm (H + E). Hvis ASIC-er er gjennomførbare, så lenge deres hastighet over varemaskinvare er mindre enn (H + E) / E, vil det til og med i et ASIC-holdig økosystem være lønnsomt for folk å bruke sin gruvedrift på stasjonære maskiner. Dette er målet vi ønsker å strebe etter; om vi kan nå det eller ikke er helt ukjent, men siden kryptovaluta som helhet er et massivt eksperiment, skader det uansett ikke å prøve.