Zephyrnet-logo

Hoe P2P-protocollen proberen de centralisatie van Bitcoin-mijnbouw op te lossen

Datum:

In een vorige artikel, schreef ik over de aard van decentralisatie versus centralisatie in Bitcoin-mining en hoe je dat in voornamelijk kwalitatieve zin kunt conceptualiseren. Het artikel brak de hele mijnbouwstapel uit, van poolcoördinatie tot energieproductie om een ​​idee te geven van de relatie tussen verschillende lagen van de mijnbouwstapel en het potentieel om decentralisatie te maximaliseren, waarbij het punt wordt gemaakt dat hoe verder in de stapel u gaan in de richting van energieproductie, hoe moeilijker en kapitaalintensiever het wordt om een ​​zinvol niveau van decentralisatie naar die laag te brengen.

In dit artikel ben ik van plan dieper in te gaan op het onderwerp mijnbouwpools en mijnwerkerscoördinatie om onafhankelijke mijnbouwactiviteiten te vergemakkelijken die samenwerken in een poging om blokken te minen die aan de blockchain worden toegevoegd.

Het creëren van mijnzwembaden

Mijnbouw heeft een lange weg afgelegd sinds de dagen dat je eenvoudig op een knop kon klikken en op betrouwbare wijze blokken kon minen op een laptop-CPU. Destijds was het in feite een amateuristische hobby waarvoor geen echte kapitaalinvestering of expertise nodig was, maar tegenwoordig is het een professionele markt van miljarden dollars met enorme kapitaalinvesteringen die op grote schaal vereist zijn. Het is een heel ander balspel.

Een van de natuurlijke gevolgen van deze verschuiving in de aard van de mijnbouw was de oprichting van mijnbouwpools al heel vroeg. Toen mining in feite een laptop in de hoek liet draaien, was de variantie en onvoorspelbaarheid van wanneer je een blok zou vinden niet echt zo'n groot probleem - uiteindelijk zou je dat wel doen en waren de stroomkosten om een ​​​​laptop draaiend te houden niet echt economisch belang.

Toen de zaken eenmaal verschoven naar GPU's en ASIC's, waren er vooraf materiële investeringskosten en veel hogere elektriciteitskosten om ze te laten werken. Die onvoorspelbaarheid wanneer je een blok zou vinden, werd een veel groter probleem voor mijnwerkers die probeerden hun kapitaalinvesteringen terug te verdienen en winstgevend te opereren. Dit is waar mijnpools in beeld komen.

Ze stellen miners in staat om samen te werken bij het vinden van een geldige blokheader die samen aan hetzelfde blok werkt, waarbij de muntbasisbeloning naar de mijnpool wordt gestuurd, die deze vervolgens evenredig verdeelt over alle deelnemende mijnwerkers in verhouding tot hoeveel werk ze hebben gedaan om te helpen vinden het blok. Dit wordt bewezen door "aandelen" in te leveren bij de mijnpool; blokken die niet voldoen aan de netwerk moeilijkheidsgraad maar hoog genoeg zijn om te bewijzen dat een mijnwerker niet liegt en daadwerkelijk hardware draait en probeert een geldig blok te vinden.

Centralisatie van mijnbouwpool

Gecentraliseerde mijnbouwpools hebben grote gevolgen voor individuele mijnwerkers. Ze zijn een centraal punt in het proces van het selecteren (of, nog belangrijker, het uitsluiten) van transacties voor opname in een blok. Dit geeft elke exploitant van een mijnbouwpool volledige controle over de transacties die ze op de blockchain willen verwerken, zonder dat de werkelijke eigenaren van de mijnbouwhardware daar iets over kunnen zeggen, behalve door de pool te verlaten als ze het niet eens zijn met de criteria die de operator kiest om in te stellen.

Ze bewaren ook de bitcoin van individuele mijnwerkers totdat die mijnwerkers ervoor kiezen om ze uit de pool terug te trekken, waardoor de poolbeheerder optreedt als bewaarder en centraal punt dat mijnwerkers die de pool gebruiken kan oplichten, of door overheden onder druk kan worden gezet om individuele mijnwerkersfondsen in beslag te nemen of KYC toe te passen eisen aan hen.

Dus, welke oplossingen zijn er om dit probleem aan te pakken?

P2Pool: de originele gedecentraliseerde mijnbouwpool

P2Pool is het originele gedecentraliseerde mining pool-protocol. Het is een peer-to-peer-protocol waarin miners onderling coördineren om de mijnbeloningen op te splitsen terwijl ze samenwerken om een ​​geldig blok te vinden dat voldoet aan de moeilijkheidsgraad. Deze coördinatie wordt bereikt met behulp van wat het protocolontwerp een "sharechain" noemt.

Mijnwerkers in de P2Pool nemen blokken die niet voldoen aan de moeilijkheidsgraad van het netwerk, en ontginnen effectief hun eigen blockchain die bestaat uit alle kopieën van het enkele blok waaraan de pool werkt. Wanneer ze het kleinere moeilijkheidsdoel bereiken, waarbij het blok in een pool zou worden veranderd om te bewijzen dat ze in een gecentraliseerd model aan het minen zijn, zenden ze dat blok uit naar de rest van de mijnwerkers. De 'share moeilijkheid' van P2Pool was zo gericht dat miners ongeveer eens in de dertig seconden een aandeel zouden vinden.

Ik weet zeker dat lezers zich afvragen hoe de uitbetaling aan individuele miners werkt. De coinbase-transactie is zo gestructureerd dat er een output wordt gecreëerd voor elke individuele miner in de P2Pool, waarbij geld rechtstreeks wordt opgesplitst van de coinbase-transactie. Mijnwerkers in de P2Pool verifiëren dat alle uitbetalingen aan zichzelf en iedereen die aan de pool deelneemt correct zijn, en dat elke mijnwerker die een aandeel heeft bijgedragen aan de aandelenketen correct wordt uitbetaald voor hun werk in elk nieuw toegevoegd aandeel. Als een van de deelnemende miners de uitbetalingen aan iedereen in hun laatste aandeel niet correct structureert, stoppen alle andere miners in de P2Pool met het opnemen van hen in hun eigen uitbetalingen en "verdrijven" ze die mijnwerker effectief uit de pool omdat hij zich niet eerlijk heeft gedragen.

Dit ontwerp leidde tot enkele schaalproblemen en is daarom niet meer in gebruik. Naarmate de deelname aan een P2Pool groeit, neemt ook de totale moeilijkheidsgraad toe voor aandelen in de aandelenketen, die ongeveer eens in de dertig seconden wordt bereikt. Dit betekent dat het voor kleinere mijnwerkers moeilijker wordt om de moeilijkheidsgraad van de aandelenketen binnen een periode van dertig seconden te bereiken. Dit betekent dat voor kleinere miners de variantie, of onvoorspelbaarheid, in hun inkomen toeneemt naarmate de totale hash-snelheid in een P2Pool toeneemt. Dit leidt ook tot een groter aantal oude blokkades, aangezien meer mijnwerkers concurrerende aandelen voor de aandelenketen vinden op ongeveer hetzelfde moment dat meer mijnwerkers zich bij de P2Pool aansluiten, wat leidt tot "verspild werk" vanuit het oogpunt van de individuele mijnwerkers die alleen gecompenseerd als hun aandeel in de aandelenketen is opgenomen.

Het andere belangrijke probleem met de schaalbaarheid is dat de uitbetalingen rechtstreeks naar individuele miners gaan vanuit de coinbase-transactie zelf. Aangezien elke miner wordt uitbetaald in verhouding tot de aandelen die ze hebben gedolven en die zijn opgenomen in de sharechain, vereist elke mijnwerker in de P2Pool een nieuwe output die wordt toegevoegd aan de coinbase-transactie.

Dit heeft twee consequenties. Ten eerste: mijnwerkers krijgen kleine UTXO's met een lage waarde in elk blok dat de P2Pool vindt, wat gepaard gaat met de kosten om die output later te condenseren en/of de kosten van veel grotere transacties te dragen wanneer ze hun munten gaan uitgeven vanwege de tal van individuele UTXO's waarmee ze eindigen, in plaats van een enkele wanneer ze zich terugtrekken na een periode uit een conventionele pool. Ten tweede: elke nieuwe coinbase-output neemt blokruimte in beslag die kan worden gebruikt door de transacties van andere mensen en levert de P2Pool meer inkomsten op uit vergoedingen. Het is een dubbel verlies voor mijnwerkers die deelnemen aan het protocol.

Deze twee problemen droegen ertoe bij dat het protocol langzaam stierf en uiteindelijk in onbruik raakte. Door alle aanwijzingen van mijn beste poging om nauwkeurige en recente statistieken op te sporen (veel oude blokverkenners die het aandeel van mijnbouwpools volgen, zijn in de loop der jaren gestopt), lijkt het erop dat het laatste blok dat door P2Pool werd gedolven, aan was 12 februari 2019.

P2Pool met uitbetalingen via betalingskanalen

In 2017, een maand nadat SegWit-activering was vergrendeld, maakte Chris Belcher een voorstel om de schaalbaarheid van P2Pool te verbeteren met het gebruik van eenrichtingsbetalingskanalen en een groep hubs die uitbetalingen aan de mijnwerkers afhandelen.

Het kerndoel van het voorstel is om het probleem aan te pakken van de grotere muntbasistransacties die mijnwerkersgeld op twee verschillende manieren verliezen. Op een hoog niveau is het idee eenvoudigweg om de hele coinbase-transactie uit te betalen aan een hub met betalingskanalen die open staan ​​voor de individuele miners, en te garanderen dat de mogelijkheid om het geld van de coinbase-transactie te claimen atomair gekoppeld is aan de miners die worden gecompenseerd voor hun aandelen via de betaalkanalen.

Om het doel van atomiciteit tussen de coinbase-transactie en betalingskanalen voor uitbetalingen te bereiken, moet het uitvoerscript voor de coinbase-transactie worden aangepast. In het voorstel van Belcher is het gestructureerd als een multi-branch script met drie bestedingsvoorwaarden:

  • Een twee-van-twee multisig. Sleutel één: de naaf (Hc). Sleutel twee: mijnwerker die het blok heeft gevonden (Mc).
  • Een enkele sleutel en een hashlock. Sleutel: de naaf (H). Hashlock: een willekeurige waarde gegenereerd door de hub (X).
  • Een enkele sleutel en een tijdslot. Sleutel: de mijnwerker die het blok heeft gevonden (M). Tijdslot: een CSV relatief tijdslot van zes maanden.

Elk van deze bestedingsvoorwaarden kan worden gebruikt om de transactie-output van de muntbasis te ontgrendelen. Laten we nu eens kijken naar het betalingskanaalscript voor de miners, zodat we kunnen zien hoe de twee dingen op elkaar inwerken:

  • Een twee-van-twee multisig. Sleutel één: de naaf (Hc1). Sleutel twee: de mijnwerker (Mc1).
  • Een twee-van-twee multisig en een hashlock. Sleutel één: de hub (Hu1). Sleutel twee: de mijnwerker (Mu1). Hashlock: de willekeurige waarde die wordt gegenereerd door de hub die wordt gebruikt in de coinbase (X).

Laten we nu eens kijken hoe deze twee dingen met elkaar omgaan.

Terwijl miners aandelen produceren om toe te voegen aan de sharechain, bewaakt de hub de voortgang. Voor elk aandeel werkt de hub de status van het kanaal bij met mijnwerkers die een aandeel inleveren om ze evenredig te betalen aan de hoeveelheid werk die ze doen. Ze geven ze echter alleen een handtekening voor het tweede scriptpad waarvoor de hashlock-voorafbeelding moet worden uitgegeven - dit garandeert dat ze standaard, zonder dat de hub hen een handtekening voor het eerste pad geeft, die fondsen niet kunnen claimen tenzij de hub de muntbasis uitgeeft uitvoer zelf met behulp van het scriptpad met de hashlock, waarvoor ze de preimage moeten publiceren.

Nu zal uiteindelijk een van de miners in de P2Pool een geldig blok vinden en dit op het netwerk publiceren. Op dit punt kan de hub alle betalingskanalen bijwerken met de mijnwerkers en de handtekening leveren aan het eerste scriptpad in het kanaal, zodat elke mijnwerker zijn kanaal kan sluiten en de verdiende beloningen kan innen wanneer ze maar willen zonder de hashlock voorafbeelding.

Op dit punt ondertekent de miner die het blok heeft gevonden het eerste scriptpad in de coinbase, waardoor de hub het geld van de coinbase kan claimen. Die mijnwerker krijgt een kleine bonus van de mijnbeloningen om hen te stimuleren om samen te tekenen. Maar onthoud: als de miner weigert mee te werken, kan de hub gewoon zelf geld uitgeven door het hashlock-pad te gebruiken en de voorafbeelding te onthullen, zodat alle mijnwerkers hun deel van de beloning kunnen innen.

Dit heeft alleen het nadeel dat alle kanalen gedwongen worden om de keten te sluiten, en heropend moeten worden om door te gaan met mijnen. De laatste optie bestaat in het geval dat de hub-operator ervoor kiest om de verwerking van uitbetalingen stop te zetten, of verdwijnt. Na zes maanden kan de miner die het blok heeft gevonden het geld volledig voor zichzelf claimen als de hub niet heeft gereageerd om mee te werken of de munten heeft uitgegeven met het hashlock-pad.

Dit laat twee specifieke problemen over met betrekking tot het dreigingsmodel met de door Belcher voorgestelde verbeteringen. Beslissen welke transacties in een blok moeten worden opgenomen, laat ruimte voor variatie in hoeveel van de totale blokbeloning is gebaseerd op wat individuele miners ervoor kiezen op te nemen in de bloksjablonen die ze minen.

Bij het introduceren van betalingskanalen creëert dit een foutenmarge, dat wil zeggen dat de werkelijke beloning voor geminede blokken niet gelijk is aan wat een mining-hub in de betalingskanalen aan miners verplicht. In het geval dat de werkelijke kostenramingen kleiner zijn dan wat de blokbeloning was, kan de hub eenvoudig de betalingskanalen bijwerken met behulp van het coöperatieve uitgavenpad met het lagere bedrag, en zolang ze de coinbase-output niet claimen met het hashlock-pad, de mijnwerkers hebben geen andere keuze dan de lagere uitbetaling te accepteren die overeenkomt met wat de mijnbeloning eigenlijk was.

In het geval dat de mijnbeloning iets hoger was dan de schatting, is het nog steeds in het belang van de hub om de kanalen voor de miners bij te werken om dit weer te geven, aangezien miners die de hub oneerlijk behandelt, gewoon op elk moment kunnen vertrekken. Het enige randgeval waar het logisch zou kunnen zijn dat de hub defect raakt en de extra beloning behoudt, zou zijn als iemand een abnormaal hoge mijnwerkersvergoeding zou betalen, maar afgezien van die situatie is het in het belang van de hub en de mijnwerkers om zich aan te passen aan eventuele discrepantie tussen de beloningsschatting en de daadwerkelijke blokbeloning.

Het tweede probleem is het feit dat de hub een centraal punt is dat DDoS'd kan worden en kan worden gedwongen om te voorkomen dat de P2Pool functioneert. Het voorstel van Belcher omvat het gebruik van meerdere hubs en het verzenden van elke coinbase-transactie van verschillende blokken naar verschillende hubs. Dit vereist echter dat mijnwerkers kanalen open hebben
d van alle hubs die ze gebruiken, wat volgens Belcher's schatting van een hub die 50 keer de blokbeloning (ongeveer 650 BTC) nodig heeft om mijnwerkers van liquiditeit te voorzien, ongelooflijk kapitaalinefficiënt wordt.

Braidpool: nog een iteratie

Enter Vlechtpoel (waarschuwing: link is een directe PDF-download van GitHub). Braidpool is een voorstel van Bob McElrath en Kulpreet Singh die voortbouwt op het voorstel van Belcher via betalingskanalen. Er zijn twee belangrijke wijzigingen aangebracht die een verbetering betekenen van de openstaande kwesties die nog in het voorstel van Belcher waren.

De eerste is een wijziging in de manier waarop de hubs en miners met elkaar communiceren. Ze stellen voor dat miners een Tor v3-adres koppelen aan elk van de aandelen die ze naar de pool uitzenden. Op deze manier kan de hub werken zonder enig netwerkeindpunt bloot te stellen dat vatbaar is voor DoS-aanvallen.

De hub-operator kan vervolgens verbinding maken met miners om kanalen met hen te openen en bij te werken, waardoor miners niet langer meerdere hubs hoeven te gebruiken om een ​​enkel aanvalspunt te vermijden. Hierdoor kan een Braidpool werken met een enkele hub, waardoor het hele systeem robuuster en kapitaalefficiënter wordt.

Bitcoin-miningpools zijn afhankelijk van centralisatie, maar P2Pool en andere protocollen hebben geprobeerd de behoefte aan vertrouwen in derden te verminderen.

Bron: Witboek van Braidpool

De tweede verandering is het gebruik van een gerichte acyclische grafiek (DAG) in plaats van een aandelenketen. Het probleem met de sharechain was dat, met het dertig seconden durende sharetime-doel, de moeilijkheidsgraad voor aandelen toenam naarmate de pool groter werd, waardoor het moeilijker werd voor kleinere miners. Door een DAG zoals Ethereum te gebruiken, waar het geen nulsomspel is van een enkel aandeel dat in de aandelenketen terechtkomt en anderen wees worden, kunnen mijnwerkers dynamisch een moeilijkheidsgraad instellen voor aandelen die kunnen worden aangepast op basis van de hash-snelheid die ze hebben en hoe vaak kunnen ze er aandelen mee vinden.

De DAG-structuur omvat iedereen die eraan heeft deelgenomen tussen daadwerkelijk gevonden Bitcoin-blokken, waarbij de beloningen evenredig worden verdeeld over iedereen op basis van het werk dat ze aan de DAG hebben geleverd. Dit lost het schaalprobleem van variantie voor individuele miners op naarmate de pool groter wordt.

Afgezien van deze twee veranderingen, is de rest van de structuur net als het voorstel van Belcher, de coinbase en kanaalscripts zijn hetzelfde.

Conclusie

Sommige lezers vragen zich misschien af ​​waarom Betterhash niet in dit artikel is besproken. Hoewel de selectie van transacties voor opname in een blok wordt gedecentraliseerd, worden niet alle functies van de pool volledig gedecentraliseerd - vooral het bewarende karakter van pools die fondsen verwerken. Dit laat miners bloot aan dwang door weigering om geld uit te betalen als de miner transacties selecteert die de pool niet goedkeurt. Daarom zou ik het niet als een gedecentraliseerde mijnbouwpool beschouwen, hoewel het de situatie in een vijandige maar niet helemaal vijandige omgeving marginaal verbetert.

Dit artikel is gecentreerd rond P2Pool en heeft iteraties voorgesteld om de schaalbeperkingen te verbeteren. Om niet een heel boek te schrijven, ben ik niet ingegaan op andere bestaande of potentiële ontwerpen. Zodra ik het kan bereiken, ben ik van plan een vervolgstuk te schrijven dat ingaat op andere mechanismen om mijnpools te decentraliseren.

Dit is een gastpost van Shinobi. De geuite meningen zijn geheel van henzelf en komen niet noodzakelijk overeen met die van BTC Inc of Bitcoin Magazine.

spot_img

Laatste intelligentie

spot_img