Decentralisering, n. Säkerhetsantagandet att en nittonåring i Hangzhou och någon som kanske är i Storbritannien och kanske inte ännu inte har bestämt sig för att samarbeta med varandra.

Den senaste veckan har det varit en stor upprördhet om frågan om gruvcentralisering i Bitcoin-nätverket. Vi såg en enda gruvpool, GHash.io, samla över 45 hashkrafter i många timmar, och vid en tidpunkt till och med växa till att bli 51 av hela nätverket. Hela förstasidan av Bitcoin reddit brann i intensiv diskussion och en sällsynt kollision av självbelåtenhet och rädsla, gruvarbetare mobiliserades snabbt för att ta bort sin hashkraft från GHash, och förvånansvärt smarta strategier användes i ett försök att få tillbaka balansen mellan de olika poolerna , till och med en gruvarbetare med “mellan 50 TH / s och 2 PH / s” gruvdrift vid GHash men vägrar att vidarebefordra giltiga block, väsentligen sabotera alla gruvor i poolen till en grad av upp till 4. Nu har situationen något avtagit, med GHash ner till 35 nätverkshashkraft och andraplatsen, Discus Fish, upp till 16, och det är troligt att situationen kommer att förbli så under minst en kort stund innan saker värms upp igen. Är problemet löst? Självklart inte. Kan problemet lösas? Det kommer att vara det främsta ämnet för detta inlägg.

Bitcoin Mining

Låt oss först och främst förstå problemet. Syftet med Bitcoin-gruvdrift är att skapa ett decentraliserat tidsstämplingssystem med hjälp av vad som i huvudsak är en majoritetsmekanism för att bestämma i vilken ordning vissa transaktioner kom som ett sätt att lösa problemet med dubbla utgifter. Problemet med dubbla utgifter är enkelt att förklara: om jag skickar en transaktion som skickar mina 100 BTC till dig och sedan en dag senare skickar jag en transaktion som skickar samma 100 BTC till mig själv, kan båda dessa transaktioner naturligtvis inte behandlas samtidigt. Därför måste en av de två “vinna”, och den intuitivt korrekta transaktionen som borde få den äran är den som kom först. Det finns dock inget sätt att titta på en transaktion och kryptografiskt avgöra när den skapades. Det är här Bitcoin-gruvdrift kommer in.

Bitcoin-gruvdrift fungerar genom att noder som kallas “gruvarbetare” samlar senaste transaktioner och producerar paket som kallas “block”. För att ett block ska vara giltigt måste alla transaktioner det innehåller vara giltiga, det måste “peka på” (dvs. innehålla hash av) ​​ett tidigare block som är giltigt och det måste uppfylla “beviset för arbetsvillkor” ( nämligen SHA2562 (block_header) <= 2190, dvs. dubbel-hash för blockhuvudet måste börja med ett stort antal nollor). Eftersom SHA256 är en pseudorandom-funktion är det enda sättet att göra sådana block att upprepade gånger försöka producera dem tills en råkar uppfylla villkoret. 2190-målet är en flexibel parameter; den justeras automatiskt så att hela nätverket i genomsnitt behöver arbeta i tio minuter innan en nod får tur och lyckas; när det väl händer blir det nyligen producerade blocket det ”senaste” blocket, och alla börjar försöka bryta ett block som pekar på det blocket som det tidigare blocket. Denna process, som upprepas var tionde minut, utgör den primära operationen för Bitcoin-nätverket, vilket skapar en ständigt förlängande kedja av block (“blockchain”) som, i ordning, innehåller alla transaktioner som någonsin har ägt rum.

Om en nod ser två eller flera konkurrerande kedjor, anser den att den är längst, dvs. den som har mest bevis på arbetet bakom sig, för att vara giltig. Med tiden, om två eller flera kedjor spelas samtidigt, kan man se hur kedjan med mer beräkningskraft som den slutligen garanterar att vinna; därför kan systemet beskrivas som “en CPU-cykel, en röst”. Men det finns en sårbarhet: om ett parti, eller en samarbetsgrupp med partier, har över 50 av all nätverksmakt, har den enheten ensam majoritetskontroll över omröstningsprocessen och kan beräkna alla andra kedjor. Detta ger denna enhet vissa privilegier:

  1. Enheten kan bara erkänna block som produceras av sig själva som giltiga, vilket hindrar någon annan från att bryta eftersom dess egen kedja alltid kommer att vara den längsta. Med tiden fördubblar detta gruvarbetarens intäkter från BTC på alla andras bekostnad. Observera att en svag version av denna attack, “självisk gruvdrift”, börjar bli effektiv vid cirka 25 nätverk.
  2. Enheten kan vägra att inkludera vissa transaktioner (dvs. censur)
  3. Enheten kan ”gå tillbaka i tiden” och börja bryta från N-block sedan. När denna gaffel oundvikligen överträffar originalet, tar detta bort effekten av alla transaktioner som har hänt i den ursprungliga kedjan efter gaffelpunkten. Detta kan användas för att tjäna en olaglig vinst genom att (1) skicka BTC till en börs, (2) vänta 6 block för att insättningen ska bekräftas, (3) köpa och ta ut LTC, (4) återställa insättningstransaktionen och istället skicka dessa mynt tillbaka till angriparen.

Detta är den fruktade ”51 attacken”. Anmärkningsvärt dock ger inte ens 99 hashkrafter angriparen privilegiet att tilldela sig ett godtyckligt antal nya mynt eller stjäla någon annans mynt (utom genom att reversera transaktioner). En annan viktig punkt är att 51 i nätverket inte behövs för att starta sådana attacker; om allt du vill är att bedra en handlare som accepterar transaktioner efter att ha väntat N-bekräftelser (vanligtvis,

N = 3

eller

N = 6

Om din gruvpool har en del P av nätverket kan du lyckas med sannolikhet:

(P / (1-P)) ^ N

vid 35 hashkrafter och 3 bekräftelser betyder det att GHash för närvarande kan stjäla altcoins från ett altcoin-utbyte med 15,6 framgångssannolikhet – en gång var sjätte försök.

Pooler

Här kommer vi till pooler. Bitcoinbrytning är en givande men tyvärr mycket högvariansaktivitet. Om, i nuvarande 100 PH / s-nätverk, du kör en ASIC med 1 TH / s, då har du varje block chans att 1 av 100000 får blockbelöning på 25 BTC, men de andra 99999 gånger av 100000 får du exakt ingenting. Med tanke på att nätverkshashkraften för närvarande fördubblas var tredje månad (för enkelhet, säg 12500 block), ger det en sannolikhet på 15,9 att din ASIC någonsin kommer att generera en belöning och en 84,1 chans att ASIC: s totala livstidsintäkter blir exakt ingenting.

En gruvpool fungerar som ett slags omvänd försäkringsagent: gruvpoolen ber dig att bryta in till sin egen adress istället för din, och om du genererar ett block vars bevis på arbete är nästan tillräckligt men inte riktigt, kallas en “andel” , då ger poolen dig en mindre betalning. Till exempel, om gruvsvårigheten för huvudkedjan kräver att hashen är mindre än 2190, kan kravet på en aktie vara 2190. Därför genererar du i det här fallet en andel ungefär vart hundra block och får 0,024 BTC från poolen, och en gång i tusen av dem kommer gruvpoolen att få en belöning på 25 BTC. Skillnaden mellan den förväntade 0,00024 BTC och 0,00025 BTC per block är gruvpoolens vinst.

Gruvpooler tjänar dock också ett annat syfte. Just nu är de flesta ASIC-gruvdrivna kraftfulla i hashing, men förvånansvärt svaga på allt annat; det enda de ofta har för allmän beräkning är en liten Raspberry Pi, alldeles för svag för att ladda ner och validera hela blockchain. Gruvarbetare kan åtgärda detta till en kostnad av ungefär 100 $ extra per enhet för en mer anständig CPU, men det gör de inte – av den uppenbara anledningen att $ 0 är mindre än $ 100. Istället ber de gruvpooler att generera gruvdata för dem. ”Gruvdata” i fråga hänvisar till blockhuvudet, några hundra byte data som innehåller hash från det föregående blocket, roten till ett Merkle-träd som innehåller transaktioner, tidsstämpeln och några andra tillhörande data. Gruvearbetare tar dessa data och fortsätter att öka ett värde som kallas en “nonce” tills blockhuvudet uppfyller arbetsprotokollet. Vanligtvis skulle gruvarbetare ta dessa uppgifter från blocket som de självständigt anser vara det senaste blocket; här förflyttas dock det faktiska urvalet av vad det senaste blocket är till poolerna.

Således, vad har vi? Tja, just nu, i huvudsak detta:

Gruvekosystemet har stelnat till ett relativt litet antal pooler, och var och en har en betydande del av nätverket – och naturligtvis förra veckan nådde en av dessa pooler, GHash, 51. Med tanke på att varje gång någon gruvpool, oavsett om Deepbit 2011 eller GHash 2013, nådde 51, det har skett en plötslig massiv minskning av antalet användare, det är helt möjligt att GHash faktiskt kom någonstans upp till 60 nätverkshashkrafter och helt enkelt gömmer en del av det. Det finns gott om bevis i den verkliga världen av stora företag som skapar förmodligen ömsesidigt konkurrerande varumärken för att ge utseendet på val och marknadsdynamik, så en sådan hypotes bör inte alls diskonteras. Även om vi antar att GHash faktiskt är ärlig om den hashkraft som den har, vad detta diagram bokstavligen säger är att den enda anledningen till att det inte sker 51 attacker mot Bitcoin just nu är att Discus Fish, en gruvpool som drivs av en nittonåringen i Hangzhou, Kina och GHash, en gruvpool som förmodligen drivs i Storbritannien men kan mycket väl vara någonstans, har ännu inte beslutat att samarbeta med varandra och ta över blockchain. Alternativt, om man är benägen att lita på den här nittonåringen i Hangzhou (trots allt verkade han ganska trevlig när jag träffade honom), kan Eligius eller BTCGuild samarbeta med GHash istället.

Så vad händer om GHash, till exempel, får över 51 igen och börjar 51 attacker (eller kanske till och med startar attacker mot altcoin-börser vid 40)? Vad händer då?

Låt oss först få ett dåligt argument ur vägen. Vissa hävdar att det inte spelar någon roll om GHash blir över 51, för det finns inget incitament för dem att utföra attacker mot nätverket eftersom även en sådan attack skulle förstöra värdet på deras egna valutaenheter och gruvutrustning. Tyvärr är detta argument helt enkelt absurt. För att se varför, överväga en hypotetisk valuta där gruvalgoritmen helt enkelt är en signaturverifierare för min egen offentliga nyckel. Bara jag kan underteckna block och jag har alla incitament att behålla förtroendet för systemet. Varför skulle Bitcoin-communityn inte anta mitt klart överlägsna, icke-slösaktiga, bevis på arbete? Det finns många svar: Jag kan vara irrationell, jag kan tvingas av en regering, jag kan sakta börja införa en kultur där transaktionsåterföring för vissa “goda ändamål” (t.ex. blockering av barnpornografi) är acceptabla och sedan långsamt utvidga det till täcka alla mina moraliska fördomar, eller så kan jag till och med ha en massiv kortslutning mot Bitcoin med 10x hävstång. Dessa två mellersta argument är inte galna hypotetiska; de är verkliga dokumenterade handlingar för implementeringen av me-mynt som redan finns: PayPal. Det är därför som decentralisering spelar roll; vi bränner inte miljontals dollar el per år bara för att flytta till en valuta vars fortsatta stabilitet är beroende av helt enkelt ett lite annat slags politiskt spel.

Dessutom är det viktigt att notera att även GHash själv har en historia av engagemang i att använda transaktionsåtergångsattacker mot spelwebbplatser; specifikt kan man komma ihåg avsnittet med BetCoin Dice. Naturligtvis förnekar GHash att den vidtagit några avsiktliga åtgärder och är förmodligen korrekt. snarare verkar attackerna vara en oseriös anställds fel. Detta är dock inte ett argument till förmån för GHash; tvärtom, det är en del av verkliga empiriska bevis som visar ett vanligt argument för decentralisering: makt korrumperar, och lika viktigt att makt lockar dem som redan är korrupta. Teoretiskt har GHash ökat säkerheten sedan dess; i praktiken, oavsett vad de gör, finns den här centrala punkten för sårbarhet för Bitcoin-nätverket fortfarande.

Det finns dock ett annat, bättre argument för varför gruvbassänger inte är ett problem: nämligen just det faktum att de inte är enskilda gruvarbetare, utan snarare pooler från vilka gruvarbetare kan komma in och lämna när som helst. På grund av detta kan man med rimlighet säga det Ars Technicas påstående att Bitcoins säkerhet har “krossats av en anonym gruvarbetare med 51 nätverkskraft” är helt felaktig; Det finns ingen gruvarbetare som kontrollerar någonting nära 51. Det finns verkligen en enda enhet, kallad CEX.io, som kontrollerar 25 av GHash, vilket är skrämmande i sig men ändå långt ifrån det scenario som rubriken insinuerar är fallet. Om enskilda gruvarbetare inte vill delta i att undergräva Bitcoin-protokollet och oundvikligen slå ner värdet på sina mynt med ungefär 70, kan de helt enkelt lämna poolen, och en sådan sak har nu hänt tre gånger i Bitcoins historia. Frågan är dock, eftersom Bitcoin-ekonomin fortsätter att professionalisera, kommer detta att fortsätta vara fallet? Eller, med tanke på något mer “giriga” individer, kommer gruvarbetarna att fortsätta att bryta vid den enda poolen som låter dem fortsätta att tjäna intäkter, vilket individuellt sparar sina egna vinster på bekostnad av att ta hela Bitcoin-gruvekosystemet kollektivt nerför en klippa?

Lösningar

Redan nu finns det faktiskt en strategi som gruvarbetare kan, och har tagit, för att undergräva GHash.io: gruvdrift vid poolen men med avsikt att hålla kvar block som de tycker är faktiskt giltiga. En sådan strategi är omöjlig att upptäcka, men med en gruvbrytning på 1 PH / s på detta sätt minskar den i princip vinsterna för alla GHash-gruvarbetare med cirka 2,5. Denna typ av poolsabotage förnekar helt nyttan med att använda GHash utan avgift över andra pooler. Denna förmåga att straffa dåliga skådespelare är intressant, även om dess konsekvenser är oklara; tänk om GHash börjar anställa gruvarbetare för att göra detsamma mot alla andra pooler? I stället för att förlita oss på vaksam sabotagetaktik med ett outgranskat ekonomiskt slutspel bör vi helst försöka leta efter andra lösningar.

Först och främst finns den ständigt närvarande gruvpoolen P2P, P2Pool. P2Pool har funnits i flera år och arbetar med att ha sin egen interna blockkedja med en 10 sekunders blocktid, så att gruvarbetare kan skicka in aktier som block i kedjan och kräva att gruvarbetare försöker producera block som skickar till alla de sista några dussin aktier producenter samtidigt. Om P2Pool hade 90 nätverkshashkrafter skulle resultatet inte bli centralisering och välvillig diktatur; snarare skulle det begränsande fallet helt enkelt vara en kopia av den vanliga gamla Bitcoin-blockkedjan. P2Pool har dock ett problem: det kräver att gruvarbetare måste validera noder helt. Som beskrivits ovan är det oacceptabelt med tanke på möjligheten att bryta utan att vara en fullständigt validerande nod.

En lösning på detta problem är att ha en gruvalgoritm som tvingar noder att lagra hela blockchain lokalt. En enkel algoritm för detta i Bitcoins fall är:

def mine (block_header, N, nonce): o = [] för i i intervall (20): o.append (sha256 (block_header + nonce + i)) n = [] för i inom intervall (20): B = ( o [i] / 2 ** 128)% N n.append (tx (B, o [i])) returnera sha256 (block_header + str (n))

Där tx (B, k) är en funktion som returnerar kth-transaktionen i block B, omsluter modulo antalet transaktioner i det blocket vid behov, och N är det aktuella blocknumret. Observera att detta är en enkel algoritm och är mycket suboptimal; några uppenbara optimeringar inkluderar att göra det seriellt (dvs. o [i + 1] beror på n [i]), bygga ett Merkle-träd ur o [i] -värdena så att de kan verifieras individuellt och bibehålla två Merkle-träd i varje block, en lagrar transaktioner och den andra lagrar alla aktuella saldon, så algoritmen behöver bara fråga det aktuella blocket.

Detta tillvägagångssätt löser faktiskt två problem samtidigt. För det första tar det bort incitamentet att använda en central pool istället för P2Pool. För det andra finns det en pågående kris i Bitcoin om hur det finns för få fulla noder; anledningen till att detta är fallet är att det är dyrt att upprätthålla en full nod med sin 20 GB blockchain och ingen vill göra det. Med detta schema skulle varje ASIC-gruvdrift tvingas lagra hela blockkedjan, ett tillstånd från vilket alla funktioner i en hel nod utförs trivialt..

En andra strategi är ett annat kryptografiskt knep: gör gruvdrift icke-outsourcable. Specifikt är tanken att skapa en gruvalgoritm så att när en gruvarbetare skapar ett giltigt block, har de alltid nödvändigtvis ett alternativt sätt att publicera blocket som säkrar gruvbelöningen för sig själva. Strategin är att använda en kryptografisk konstruktion som kallas nollkunskapssäker, vilket kryptografiskt bevisar att de skapade ett giltigt block men håller blockdata hemliga och sedan samtidigt skapar ett block utan bevis på arbete som skickar belöningen till gruvarbetaren. Detta skulle göra det trivialt att bedra en gruvpool, vilket gör gruvbassänger inte livskraftiga.

En sådan installation skulle kräva en väsentlig förändring av Bitcoins gruvalgoritm och använder kryptografiska primitiver som är mycket mer avancerade än de i resten av Bitcoin; utan tvekan, komplexitet är i sig en allvarlig nackdel, och en som kanske är värt det för att lösa allvarliga problem som skalbarhet men inte för att genomföra ett smart trick för att avskräcka gruvpooler. Dessutom gör det omöjligt att göra gruvbassänger omöjligt, inte bättre. Anledningen till att det finns gruvbassänger är att hantera variansproblemet; gruvarbetare är inte villiga att köpa en investering som bara har 15 chanser att få någon avkastning. Om möjligheten att slå samman är omöjligt kommer gruvekonomin helt enkelt att centraliseras till en mindre uppsättning större spelare – en inställning som, till skillnad från nu, enskilda deltagare inte bara kan gå bort från. Det tidigare schemat, å andra sidan, tillåter fortfarande pooling så länge som den lokala noden har full blockchain, och därigenom uppmuntrar en typ av pooling (nämligen p2pool) som inte är systemiskt skadlig.

Ett annat tillvägagångssätt är mindre radikalt: ändra inte gruvalgoritmen alls, utan ändra poolingsalgoritmerna. Just nu använder de flesta gruvpooler ett utbetalningssystem som kallas “pay-per-last-N-shares” (PPLNS) – betala gruvarbetare per aktie ett belopp baserat på intäkterna från de senaste tusen aktierna. Denna algoritm delar i huvudsak poolens egen varians bland sina användare, vilket resulterar i ingen risk för poolen och en liten mängd avvikelse för användarna (t.ex. att använda en pool med 1 hashkraft är den förväntade standardavvikelsen för månadsavkastningen ~ 15, långt bättre än solo mining lotteriet men fortfarande icke försumbar). Större pooler har mindre varians, eftersom de bryter ut fler block (enligt grundläggande statistik har en pool med 4x mer gruvkraft en 2x mindre standardavvikelse i procent). Det finns ett annat system, kallat PPS (pay-per-share), där en gruvpool helt enkelt betalar ett statiskt belopp per aktie till gruvarbetare; detta system tar bort all avvikelse från gruvarbetare, men på bekostnad av att införa risk för poolen. det är därför ingen gruvpool gör det.

Meni Rosenfelds Multi-PPS försöker ge en lösning. I stället för att bryta in i en pool kan gruvarbetare försöka producera block som betalar till många pooler samtidigt (t.ex. 5 BTC till en pool, 7 BTC till en annan, 11,5 BTC till en tredje och 1,5 BTC till en fjärde), och poolerna kommer att betala gruvarbetaren för aktier proportionellt (t.ex. istället för att en pool betalar 0,024 BTC per aktie, kommer den första poolen att betala 0,0048, den andra 0,00672, den tredje 0,010104 och den fjärde 0,00144). Detta gör det möjligt för mycket små pooler att endast acceptera gruvarbetare som ger dem mycket små belöningar, vilket gör att de kan ta en risknivå som är proportionell mot deras ekonomiska kapacitet. Till exempel, om pool A är 10 gånger större än pool B, kan pool A acceptera block med utgångar till dem upp till 10 BTC, och pool B kan endast acceptera 1 BTC. Om man gör beräkningarna kan man se att den förväntade avkastningen för pool B är exakt tio gånger den pool A får under alla omständigheter, så pool B har ingen speciell superlinjär fördel. I ett enda PPS-scenario, å andra sidan, skulle den mindre B möta 3,16 gånger högre risk jämfört med dess förmögenhet.

Problemet är, i vilken utsträckning är problemet egentligen på grund av varians, och i vilken utsträckning är det något annat, som bekvämlighet? Visst kommer en 1 gruvpool att se en standardavvikelse på 15 månader i avkastningen. Men alla gruvpooler ser ungefär 40 månaders standardavvikelse i sin avkastning helt enkelt på grund av det volatila BTC-priset. Skillnaden mellan 15 standardavvikelser och 2 standardavvikelser verkar stor och en tvingande anledning att använda den största poolen; skillnaden mellan 42 och 55 inte så mycket. Så vilka andra faktorer kan påverka centralbankens gruvbassäng? En annan faktor är det faktum att pooler nödvändigtvis “hör” om sina egna block direkt och alla andras block efter en viss nätverksfördröjning, så större pooler kommer att bryta på föråldrade block mindre ofta. detta problem är avgörande för blockkedjor med en tid på tio sekunder, men i Bitcoin är effekten mindre än 1 och därmed obetydlig. En tredje faktor är bekvämlighet; detta kan bäst lösas genom att finansiera en lättanvänd öppen källkod som gör din egen gruvpoolslösning, i samma anda som den programvara som används av många små VPS-leverantörer; om det bedöms viktigt kan vi slutligen delvis finansiera en nätverksagnostisk version av en sådan insats. Den sista faktorn som fortfarande kvarstår är dock att GHash inte har någon avgift; snarare upprätthåller poolen sig själv genom sin anslutning till ASIC molngruvsföretag CEX.io, som kontrollerar 25 av sin hashkraft. Således, om vi verkligen vill komma till botten med centraliseringsproblemet, kan vi behöva titta på ASICs själva.

ASIC

Ursprungligen var Bitcoin-gruvdrift tänkt att vara en mycket jämlik strävan. Miljontals användare runt om i världen skulle alla bryta Bitcoin på sina stationära datorer, och resultatet skulle samtidigt bli en distributionsmodell som är mycket jämlik och som sprider ut den ursprungliga BTC-leveransen och en konsensusmodell som inkluderar tusentals intressenter, som praktiskt taget utesluter varje möjlighet till maskopi. Inledningsvis fungerade systemet och säkerställde att de första miljonerna av bitcoins spriddes mycket bland tusentals användare, inklusive även de normalt kontantfattiga gymnasieeleverna. År 2010 kom emellertid tillkomsten av gruvprogramvara för GPU (“grafikbehandlingsenhet”), som utnyttjade GPU: s massiva parallellisering för att uppnå 10-100x hastigheter och göra CPU-gruvdrift helt olönsamt inom några månader. 2013 tog specialiseringen ytterligare en vändning med ASICs tillkomst. ASIC, eller applikationsspecifika integrerade kretsar, är specialiserade gruvchips som produceras med ett enda syfte: att vrida ut så många SHA256-beräkningar som möjligt för att bryta Bitcoin-block. Som ett resultat av denna specialisering får ASIC ytterligare 10-100 gånger snabbare än grafikprocessorer, vilket gör GPU-gruvdrift olönsam också. Nu är det enda sättet att bryta antingen att starta ett ASIC-företag eller köpa ett ASIC från ett befintligt.

ASIC-företagens sätt att arbeta är enkelt. Först startar företaget upp, gör en liten mängd installationsarbete och räknar ut sin plan och börjar ta förbeställningar. Dessa förbeställningar används sedan för att finansiera utvecklingen av ASIC, och när ASIC-enheterna är klara skickas enheterna till användarna och företaget börjar tillverka och sälja mer i regelbunden takt. ASIC-tillverkning sker i rörledning; det finns en typ av fabrik som producerar chips för ASIC, och sedan en annan, mindre sofistikerad drift, där chipsen tillsammans med standarddelar som kretskort och fläktar sätts ihop i kompletta lådor för att skickas till köpare.

Så var lämnar detta oss? Det är uppenbart att ASIC-produktionen är ganska centraliserad; det finns ungefär 10-30 företag som tillverkar dessa enheter, och var och en av dem har en betydande hashkraft. Jag insåg dock inte hur centraliserad ASIC-produktion är förrän jag besökte den här anspråkslösa lilla byggnaden i Shenzhen, Kina:

På tredje våningen i fabriken ser vi:

Vad vi har på den första bilden är cirka 150 gruvarbetare på 780 GH / s vardera, vilket utgör totalt 120 TH / s gruvarbetare – mer än 0,1 av den totala nätverkshashkraften – allt på ett ställe. Den andra bilden visar lådor som innehåller ytterligare 150 TH / s. Sammantaget producerar fabriken något mer än summan av dessa två belopp – cirka 300 TH / s – varje dag. Titta nu på det här diagrammet:

Totalt vinner Bitcoin-nätverket cirka 800 TH / s varje dag. Till och med att lägga till några säkerhetsfaktorer och förutsätta att fabriken stängs av några dagar i veckan, vad vi har är en enda fabrik som producerar över en fjärdedel av all ny hashkraft som läggs till i Bitcoin-nätverket. Nu är byggnaden lite stor, så gissa vad som finns på första våningen? Det stämmer, en tillverkningsanläggning som producerar Scrypt ASIC som motsvarar en fjärdedel av all ny hashkraft som läggs till i Litecoin-nätverket. Detta projicerar en bild av ett skrämmande slutspel för Bitcoin: Bitcoin-nätverket spenderar miljontals dollar el varje år bara för att ersätta den amerikanska dollarns gruvalgoritm av “8 vita killar” med några dussin killar i Shenzhen.

Innan vi blir för alarmerade om gruvdriftens framtid är det viktigt att gräva ner och förstå (1) vad som är fel med ASIC, (2) vad som är okej med processorer och (3) vad framtiden för ASIC-gruvdrift kommer att gå till ser ut som. Frågan är mer komplex än den verkar. Först och främst kan man fråga sig, varför är det dåligt att ASIC bara produceras av ett fåtal företag och en fjärdedel av dem passerar genom en fabrik? CPU: er är också mycket centraliserade; integrerade kretsar produceras av endast ett litet antal företag och nästan alla datorer som vi använder har åtminstone några komponenter från AMD eller Intel. Svaret är att även om AMD och Intel producerar processorerna styr de inte vad som körs på dem. De är allmänna enheter, och det finns inget sätt för tillverkarna att översätta sin kontroll över tillverkningsprocessen till någon form av kontroll över dess användning. DRM-laddade “betrodda datormoduler” existerar, men det är mycket svårt att föreställa sig att en sådan sak används för att tvinga en dator att delta i en dubbel-spendera attack.

Med ASIC-gruvarbetare är det fortfarande inte så illa. Även om ASIC produceras i endast ett litet antal fabriker, kontrolleras de fortfarande av tusentals människor över hela världen i olika datacenter och hem, och enskilda gruvarbetare som vanligtvis har mindre än några terashash har förmågan att rikta sin hashkraft vart de än behöver. Snart kan det dock förändras. Om en månad, vad händer om tillverkarna inser att det inte är ekonomiskt vettigt för dem att sälja sina ASIC-enheter när de kan installera helt enkelt att hålla alla sina enheter i ett centrallager och tjäna hela intäkterna? Fraktkostnaderna skulle sjunka till nästan noll, förseningarna skulle sjunka (en veckas leveransfördröjning motsvarar ~ 5,6 intäktsförlust vid nuvarande tillväxttakt för hashkrafter) och det skulle inte vara nödvändigt att producera stabila eller vackra höljen. I det scenariot skulle det inte bara vara 25 av alla ASIC som produceras av en fabrik i Shenzhen; det skulle vara 25 av alla hashkrafter som har slut på en fabrik i Shenzhen.

När jag besökte huvudkontoret för ett företag i Hangzhou som bland annat är involverat i Litecoin-gruvdrift, frågade jag grundarna samma fråga: varför håller du inte bara gruvarbetare internt? De gav tre svar. Först bryr de sig om decentralisering. Detta är enkelt att förstå och är mycket lyckligt lottat att så många gruvarbetare känner så här för tillfället, men i slutändan kommer gruvdrift att utföras av företag som bryr sig lite mer om monetär vinst och mindre om ideologi. För det andra behöver de förbeställningar för att finansiera företaget. Rimligt, men lösbart genom att utfärda “gruvkontrakt” (i huvudsak kryptotillgångar som betalar ut utdelningar som motsvarar ett visst antal GH / s gruvkraft). För det tredje finns det inte tillräckligt med el och utrymme i lagren. Det sista argumentet, så speciellt som det verkar, kan vara det enda som håller vatten på lång sikt; det är också den anförda anledningen till att ASICminer slutade bryta rent internt och började sälja USB-gruvarbetare till konsumenter, vilket tyder på att det kanske finns en stark och universell grund bakom ett sådant beslut.

Förutsatt att finansieringsstrategierna för att sälja förbeställningar och sälja gruvkontrakt är ekonomiskt likvärdiga (som de är), är ekvationen för att bestämma om intern gruvdrift eller försäljning är mer meningsfullt följande:

På vänster sida har vi kostnaderna för egen gruvdrift: el, lagring och underhåll. På höger sida har vi kostnaden för el, lagring och underhåll externt (dvs. i köparens händer), frakt och straffet från att behöva börja köra ASIC senare, samt en negativ faktor för att redogöra för det faktum att vissa människor bryter åtminstone delvis för skojs skull och av en ideologisk önskan att stödja nätverket. Låt oss analysera dessa siffror just nu. Vi använder Butterfly Labs Monarch som ett exempel, och håll varje ASIC igång i ett år för enkelhetens skull.

  • Intern el, lagring, underhåll – enligt BFL: s kassasida kostar intern el, lagring och underhåll $ 1512 per år, vilket vi kommer att markera ner till $ 1000 förutsatt att BFL tar lite vinst
  • Extern el – i Ontario är priserna ungefär 0,1 USD per KwH. En Butterfly Labs Monarch kommer att springa 600 GH / s vid 350 W; att normalisera detta till per TH betyder detta en elkostnad på $ 1,40 per dag eller $ 511 för hela året
  • Extern lagring – hemma kan man överväga gratis lagring, eller man kan lägga till en bekvämlighetsavgift på $ 1 per dag; därför säger vi någonstans från $ 0 till $ 365
  • Externt underhåll – svårt att kvantifiera detta värde; för tekniskt skickliga personer som tycker om utmaningen är det noll, och för andra kan det vara svårt; därför kan vi säga $ 0 till $ 730
  • Fraktkostnad – enligt BFL, $ 38.
  • Inkomst – för närvarande ger 1 TH / s dig 0,036 BTC eller $ 21,6 per dag. Eftersom hashkraften i vår analys fördubblas var 90: e dag, så ASIC: s effektivitet halveras var 90: e dag, får vi 122 dagars livstid eller 2562 $ intäkter
  • Leveranstid – enligt mina kinesiska källor, en vecka
  • Hashpower fördubblingstid – tre månader. Följaktligen är hela uttrycket för fraktförseningens straffavgift 2562 * (1 – 0,5 ^ 0,0769) = 133,02
  • Hobbyist / ideologipremie – för närvarande gör en stor del av Bitcoin-gruvarbetare det av ideologiska överväganden, så vi kan säga var som helst från $ 0 till $ 1000

Således lägger vi till allt till vänster har vi $ 1000, och till höger har vi $ 511 + $ 38 + $ 133 = $ 682, upp till plus $ 1095 och minus upp till $ 1000. Således är det helt tvetydigt vilken som är bättre; fel i min analys och de otydliga variablerna för hur mycket människor värdesätter sin tid och estetik tycks överväga alla bestämda slutsatser. Men vad kommer att hända i framtiden? Grundläggande kan man förvänta sig att el, lagring och underhåll skulle vara mycket billigare centralt än hos varje konsument helt enkelt på grund av stordriftsfördelar och vinster från specialisering. Dessutom är de flesta människor i den “verkliga världen” inte altruister, hobbyister eller beundrare av vackra ASIC-täckningar. Fraktkostnaden är över noll och fraktfördröjningen över noll. Så alltså verkar det som om ekonomin gynnar centraliserad gruvdrift …

… förutom en potentiell faktor: värme. Just nu är ASIC fortfarande i en snabb utvecklingsfas, så den stora majoriteten av kostnaden är hårdvara; BFL-gruvarbetaren som används i exemplet ovan kostar $ 2200, men elen kostar $ 511. I framtiden kommer dock utvecklingen att gå mycket långsammare; i slutändan kan vi förvänta oss en konvergens till Moores lag, med hashkraft som fördubblas vartannat år, och till och med Moores lag verkar sakta ner. I en sådan värld kan elkostnaderna komma tillbaka som den primära choke-punkten. Men hur mycket kostar el? I ett centraliserat lager, en hel del, och fyrkantig kublag garanterar att ännu mer energi än hemma i en central miljö måste spenderas på kylning eftersom alla gruvarbetare finns på ett ställe och de flesta av dem är för djupt inne i fabriken för att utsättas för sval frisk luft. I ett hem, men om utetemperaturen är lägre än cirka 20’C, är kostnaden för el noll; all el som gruvarbetaren spenderar blir nödvändigtvis så småningom till ”spillvärme” som sedan värmer upp hemmet och ersätter el som skulle spenderas av en centralvärmare. Detta är det enda argumentet för varför ASIC-decentralisering kan fungera: snarare än att decentralisering sker eftersom alla har en viss mängd oanvänd, och därmed fri, beräkningsenheter på sin bärbara dator, sker decentralisering eftersom många människor har en viss mängd efterfrågan på uppvärmning i sina hem.

Kommer detta att hända? Många Bitcoin-förespråkare verkar övertygade om att svaret är ja. Jag är dock inte säker; det är en helt empirisk fråga om elkostnaden är lägre än underhåll plus lagring plus frakt plus fraktförsening, och om tio år kan ekvationen väl falla på den ena eller den andra sidan. Jag personligen är inte villig att helt enkelt luta mig tillbaka och hoppas på det bästa. Det är därför jag personligen tycker att det är en besvikelse att så många av de viktigaste Bitcoin-utvecklarna (men lyckligtvis inte nästan alla) är nöjda med att betrakta beviset på arbetsproblem som “löst” eller argumentera för att försöka lösa gruvspecialisering är en handling av “Onödig ombyggnad”. Det kan visa sig vara eller inte, men det faktum att vi har den här diskussionen i första hand antyder starkt att Bitcoins nuvarande strategi är mycket långt ifrån perfekt.

ASIC-motstånd

Lösningen på ASIC-problemet som oftast uppskattas är utvecklingen av ASIC-resistenta gruvalgoritmer. Hittills har det funnits två tankesätt i utvecklingen av sådana algoritmer. Den första är minneshårdhet – vilket minskar ASIC-styrkan för att uppnå massiva vinster genom parallellisering genom att använda en funktion som tar mycket mycket minne. Samhällets första försök var Scrypt, som visade sig inte vara tillräckligt resistent; i januari försökte jag förbättra Scrypt minneshårdhet med Dagger, en algoritm som är minneshård att beräkna (i en utsträckning av 128 MB) men lätt att verifiera; denna algoritm är dock sårbar för delade minnesattacker där ett antal parallella processer kan komma åt samma 128 MB minne. Det nuvarande toppmoderna minneshåriga PoW är Gök, en algoritm som letar efter längd-42 cykler i grafer. Det krävs en stor mängd minne för att effektivt hitta sådana cykler, men en cykel är mycket snabb att verifiera, vilket kräver 42 haschar och mindre än 70 byte minne.

Det andra tillvägagångssättet är något annorlunda: skapa en mekanism för att generera nya hashfunktioner och gör utrymmet av funktioner som det genererar så stort att den typ av dator som bäst lämpar sig för att bearbeta dem per definition är helt generaliserad, dvs. en processor. Detta tillvägagångssätt kommer nära att vara “bevisligen ASIC-resistent” och därmed mer framtidssäkert, snarare än att fokusera på specifika aspekter som minne, men det är också ofullkomligt; det kommer alltid att finnas åtminstone några delar av en CPU som kommer att visa sig vara främmande i en sådan algoritm och kan tas bort för effektivitet. Men strävan är inte efter perfekt ASIC-motstånd; snarare är utmaningen att uppnå det vi kan kalla ”ekonomiskt ASIC-motstånd” – att bygga en ASIC borde inte vara värt det.

Detta är faktiskt förvånansvärt sannolikt att uppnå. För att se varför, notera att gruvproduktionen per spenderad dollar för de flesta är sublinjär. De första N-enheterna med gruvkraft är mycket billiga att producera, eftersom användare helt enkelt kan använda den befintliga oanvända beräkningstiden på sina datorer och bara betala för el (E). Om man går längre än N-enheter måste man dock betala för både hårdvara och el (H + E). Om ASIC är möjliga, så länge deras hastighet över råvaruhårdvara är mindre än (H + E) / E, är det även i ett ASIC-innehållande ekosystem lönsamt för människor att spendera sin elbrytning på sina skrivbord. Detta är det mål som vi vill sträva efter; om vi når det eller inte är helt okänt, men eftersom kryptokurrency som helhet är ett massivt experiment, gör det i alla fall inte ont att försöka.