Drivechains stellen exploitanten van sidechain-knooppunten in staat om miners te betalen voor de mijne - en meer! PlatoBlockchain-gegevensintelligentie. Verticaal zoeken. Ai.

Drivechains stellen exploitanten van sidechain-knooppunten in staat om miners te betalen voor de mijne - en meer!

Dit is een opinieredactioneel commentaar van Shinobi, een autodidactische opvoeder in de Bitcoin-ruimte en technisch georiënteerde Bitcoin-podcasthost.

Deze keer ga ik het afbreken en bespreken hoe aandrijfkettingen werken; ze werden oorspronkelijk voorgesteld in 2015. Van alle voorstellen die tot nu toe zijn besproken, zijn aandrijfkettingen de oudste en het meest uitgewerkt in termen van specifieke implementatiedetails en ontwerp, gedocumenteerd in GIP's 300 en 301. Paul Sztorc, de maker van het concept, had een paar hoofdontwerpdoelen in gedachten, en hoewel dit helemaal niet alomvattend is, zijn hier een paar:

  • Isoleer elke zijketen, zodat een storing of probleem alleen de gebruikers treft.
  • Laat zijketens worden rondgedraaid zonder dat voor elke zij een nieuwe vork nodig is.
  • Schakel de overdracht van bitcoin in en uit een zijketen met een tweerichtingspeg.
  • Sta gratis experimenten toe in het ontwerp waarvan hij hoopt dat het de behoefte aan altcoins overbodig maakt.

Er zijn twee primaire aspecten van het hele ontwerp, daarom zijn er twee afzonderlijke GIP's. De eerste is het penmechanisme (BIP300), waardoor de tweerichtingspen kan functioneren. Sztorc ontwierp iets dat een hash rate-escrow wordt genoemd, waarmee miners als een amorfe groep de munten in alle zijketens collectief kunnen bewaren. De tweede is een "blind" samengevoegd mijnbouwschema, waarbij het doel is om bitcoin-mijnwerkers de blokproducenten op consensusniveau te laten zijn zonder dat de zijketen daarvoor hoeft te worden gevalideerd. Beide stukken samen vormen een tweerichtings-peg-mechanisme en een manier voor bitcoin-mijnwerkers om deel te nemen aan het delven van de zijketens, terwijl ze proberen het centralisatierisico dat het met zich meebrengt te verminderen.

BIP300 specificeert de logica voor het voorstel van een nieuwe zijketen, de activering van een nieuwe zijketen, het voorstel van een gebundelde set opnames, de goedkeuring van een dergelijke set opnames, de validatielogica voor daadwerkelijke opnametransacties en de validatie voor stortingstransacties.

Het activeren van een nieuwe zijketen onder het voorstel van de aandrijfketen lijkt sterk op het proces van een zachte vork die wordt geactiveerd via minersignalering. Het grote verschil is natuurlijk dat het niet echt een zachte vork is - een enkele vork om de consensusregels van de drivechain te activeren, stelt miners in staat om op elk moment een signaal te geven om een ​​nieuwe zijketen te activeren binnen drivechain-consensusregels. Om het activeren van een nieuwe zijketen voor te stellen, moet een mijnwerker OP_RETURN-gegevens in hun coinbase-uitvoer plaatsen die een unieke identificatie voor die zijketen bevat, een openbare sleutel om te gebruiken bij stortingsoperaties, versiegegevens, door mensen leesbare beschrijvingen en hashes van de softwareclient en GitHub-geschiedenis ervan (er is hier geen consensushandhaving, alleen gegevens waar mensen naar kunnen verwijzen).

Wanneer een miner voorstelt om een ​​nieuwe zijketen te activeren en alle benodigde gegevens in hun muntbasis op te nemen, wordt het een soort "minersignalering" -periode met betrekking tot het al dan niet creëren van deze nieuwe zijketen vanuit het oogpunt van de consensus van de hoofdketen. Een miner kan een speciaal formaat gebruiken om een ​​voorstel op te nemen in hun coinbase-output, en andere miners kunnen een andere output creëren volgens een tweede format om te signaleren voor activering. Een nieuw voorstel voor een zijketen vereist dat 90% van de blokken in een moeilijkheidsperiode een signaal geeft voor activering om een ​​nieuwe aanmaak van een zijketen te bevestigen. Dit creëert het peg-mechanisme om de zijketen mogelijk te maken, maar de interactie tussen zijketen en hoofdketen is genuanceerder dan dat.

Op dit punt kan iedereen munten in de zijketen pinnen. Om in de zijketen te pinnen, maakt een gebruiker eenvoudig een transactie met twee invoer met hun eigen invoer en de UTXO die overeenkomt met de zijketenbalans met een enkele uitvoer die alles aan de zijketen toewijst. Dit garandeert dat de zijketen slechts één UTXO heeft die alle fondsen bevat die erin zijn vergrendeld. Opnames worden afgehandeld door mijnwerkersstemmen. De mainchain heeft geen idee wie wat bezit op de sidechain, en de mainchain zal elke opname die door miners is goedgekeurd binnen het stemmechanisme als geldig beschouwen. Hierdoor is er een lange vertraging in het opnameproces. Er zijn twee fasen in het proces van terugtrekking uit een zijketen: een terugtrekkingsvoorstel (bundel) en vervolgens de terugtrekkingsstemfase. Mijnwerkers moeten een OP_RETURN-uitvoer in hun muntbasistransactie creëren met een hash van de voorgestelde opnametransactie om een ​​opname voor te stellen. Deze hash, echter, vergelijkbaar met sighash, markeert slechts een deel van een transactie in plaats van het hele ding. Het verbindt zich niet tot de invoer UTXO die fondsen vertegenwoordigt die zijn opgesloten in een drivechain of de uitvoer die alles retourneert dat niet wordt teruggetrokken naar een speciale zijketen UTXO. Dit komt omdat eventuele stortingen in de drivechain een nieuwe UTXO zouden creëren en dus de toezegging aan de opnametransactie ongeldig zouden maken toen mensen deze gingen valideren.

Vanaf hier begint de mijnwerkersstemperiode over het opnamevoorstel. Nadat een bundel is voorgesteld, kunnen miners stemmen of ze deze wel of niet goedkeuren. Elk blok dat wordt gedolven, stelt die mijnwerker in staat om een ​​goedkeuringsteller te verhogen, omhoog of omlaag met één of twee om zich te onthouden van iets te doen. Er zijn daarnaast enkele specifieke beperkingen, omdat het mogelijk is om meer dan één bundel voor een enkele zijketen te hebben - als een mijnwerker ervoor kiest om "ja" te stemmen (de teller met één verhogen) voor een opnamebundel voor een zijketen, zal hij Dan moet je stem "nee" (verlaag de teller met één) voor elke andere bundel die aan die specifieke zijketen is gekoppeld.

Dit is om te garanderen dat er geen "dubbele opnames" zijn, waarbij iemand een output in meerdere bundels heeft die hem meer bitcoin op de mainchain zou uitbetalen dan hij verschuldigd is.

Aan de andere kant mogen miners ook nee stemmen voor elke voorgestelde bundel. Dit zou moeten fungeren als een soort alarm voor iedereen dat een mijnwerker die deze opnames valideert (ervoor zorgend dat het legitieme munten zijn op de zijketen die wordt opgenomen) heeft opgemerkt dat er iets ongeldigs gebeurt. Onthoud dat een belangrijk punt van dit ontwerp is dat miners niets op de zijketen hoeven te valideren, dus tenzij ze er toch voor kiezen, kunnen veel miners bundels upvoten die ze niet verifiëren. Deze alarmfunctie is ontworpen om hen te waarschuwen dat ze de bundels moeten verifiëren om er zeker van te zijn dat er geen frauduleuze opnames plaatsvinden.

Zodra een bundel de vereiste drempel heeft bereikt (13,150 blokken, of ongeveer 90 dagen), wordt de transactie die de opname daadwerkelijk verwerkt, geldig en kan deze worden bevestigd. Maar wat doen mensen als mijnwerkers een frauduleuze opname goedkeuren die geld van de zijketen steelt? Het voorstel van Sztorc is om een ​​door de gebruiker geactiveerde soft fork (UASF) uit te voeren om de ongeldige peg-out-transactie ongeldig te maken. Dit vormt een enorm risico in termen van consensus voor de hoofdketen. De UASF in 2017 was een risicovolle zet die maar ternauwernood slaagde en Bitcoin was veel kleiner dan het nu is. Hoe groter Bitcoin groeit, hoe moeilijker dergelijke acties zullen zijn om te coördineren.

Als je je herinnert van de artikel over ruimteketens, dat ontwerp was gebaseerd op blind merged mining (BMM). Het BMM-ontwerp van Ruben Somsen is eigenlijk de tweede variant daarvan, de eerste is het ontwerp van Sztorc zoals vastgelegd in BIP301. De BMM-specificatie in aandrijfkettingen bestaat uit twee berichten: een verzoekbericht en een acceptatiebericht. Beide worden respectievelijk gecoördineerd door een speciaal transactietype op de hoofdketen en speciale uitvoer in een muntbasistransactie van een miner.

De aanvraagtransactie wordt geconstrueerd door degene die zijketenblokken maakt. Het hele punt van BMM is dat deze persoon iemand kan zijn die niet aan het minen is, dus de verzoektransactie is er om hen in staat te stellen mijnwerkers te betalen om hun voorgestelde zijketenblok te bevestigen. Het voorstel voor een zijketenblok construeert een transactie die de hash van het zijketenblok omvat, de ID die aan de zijketen is toegewezen toen deze werd gemaakt en de laatste vier bytes van de vorige hoofdketenblokkop. Er zijn drie aanvullende consensusregels van toepassing op dit soort transacties. Ten eerste is een aanvraagtransactie ongeldig, tenzij er ook een overeenkomende accept-uitvoer is in de muntbasistransactie van dat blok. Dit is om te garanderen dat miners geen vergoeding van het verzoek kunnen innen zonder ook het zijketenblok te accepteren en te minen. Ten tweede mag voor elke zijketen slechts één verzoektransactie in een hoofdketenblok worden opgenomen. Dit is om ervoor te zorgen dat slechts één blok van een zijketen daadwerkelijk kan worden gedolven per hoofdketenblok. Ten slotte moeten de laatste vier bytes van het vorige mainchain-blok overeenkomen. Dit zorgt ervoor dat een verzoek alleen geldig is om in het volgende blok te worden gemined, en dergelijke transacties kunnen later niet worden gemined en geld stelen van een sidechain-blokaanbieder nadat het blok van iemand anders is gemined.

De accept-uitvoer is heel eenvoudig: berichtkopgegevens en de hash van het zijketenblok. Als een miner zelf een drivechain-knooppunt uitvoert, kunnen ze eenvoudig verzoektransacties negeren en altijd hun eigen accept-output in hun coinbase opnemen om hun eigen sidechain-blokken te minen. Samen stellen deze twee aspecten mijnwerkers in staat om zelf een zijketenknooppunt te bedienen, of een andere niet-mijnwerker om het te doen en de mijnwerker te betalen om hun blokken te minen. Het idee is dat, als miners zelf de zijketens niet runnen en de extra validatiekosten opeten, iemand anders het voor hen kan doen. Als er concurrentie is tussen niet-mijnwerkers die proberen vergoedingen te verdienen aan de zijketen, zullen ze waarschijnlijk de vergoeding blijven verhogen die ze bereid zijn te betalen aan mijnwerkers in hun aanvraagtransactie totdat dit het grootste deel van de vergoedingen vertegenwoordigt die ze verdienen, met de niet- miner houdt slechts een klein percentage van de winst en betaalt de rest aan miners.

Dat is het mechanisme achter de werking van aandrijfkettingen. Vervolgens gefedereerde zijketens en daarna een overzicht van alle min- en nadelen die elk ontwerp kan hebben.

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.

Tijdstempel:

Meer van Bitcoin Magazine