Bitcoin Magazine
De Kernkwestie: Cluster Mempool, Problemen Zijn Gemakkelijker in Brokken
Cluster Mempool1 is een complete herwerking van hoe de mempool transacties organiseert en sorteert, geconceptualiseerd en geïmplementeerd door Suhas Daftuar en Pieter Wuille. Het ontwerp heeft als doel de algehele architectuur te vereenvoudigen, de logica voor het sorteren van transacties beter af te stemmen op mijnwerkersincentives en de beveiliging voor tweede laag protocollen te verbeteren. Het werd op 25 november 2025 samengevoegd in Bitcoin Core in PR #336292.
De mempool is een gigantische verzameling openstaande transacties die uw node moet bijhouden om verschillende redenen: schatting van transactiekosten, validatie van transactievervanging en blokcreatie als u een mijnwerker bent.
Dit zijn veel verschillende doelen voor een enkele functie van uw node. Bitcoin Core tot versie 30.0 organiseert de mempool op twee verschillende manieren om deze functies te ondersteunen, beide vanuit het relatieve standpunt van een bepaalde transactie: gecombineerde transactiekosten vooruitkijkend naar de transactie en zijn kinderen (afstammelingentransactiekosten), en gecombineerde transactiekosten terugkijkend naar de transactie en zijn ouders (vooroudertransactiekosten).
Deze worden gebruikt om te beslissen welke transacties uit uw mempool te verwijderen wanneer deze vol is, en welke als eerste op te nemen bij het samenstellen van een nieuw bloksjabloon.
Wanneer een mijnwerker beslist of hij een transactie in zijn blok opneemt, kijkt zijn node naar die transactie en naar eventuele voorouders die eerst bevestigd moeten worden om geldig te zijn in een blok, en kijkt naar de gemiddelde transactiekosten per byte over hen allemaal samen, waarbij de individuele kosten die ze hebben betaald als geheel worden beschouwd. Als die groep transacties binnen de blokgroottelimiet past terwijl ze anderen in kosten overtreffen, wordt deze opgenomen in het volgende blok. Dit wordt gedaan voor elke transactie.
Wanneer uw node beslist welke transacties uit zijn mempool te verwijderen wanneer deze vol is, kijkt het naar elke transactie en eventuele kinderen die het heeft, en verwijdert de transactie en al zijn kinderen als de mempool al vol is met transacties (en hun afstammelingen) die hogere transactiekosten betalen.
Kijk naar de bovenstaande voorbeeldgrafiek van transacties, de transactiekosten worden als zodanig tussen haakjes weergegeven (vooroudertransactiekosten, afstammelingentransactiekosten). Een mijnwerker die naar transactie E kijkt, zou deze waarschijnlijk opnemen in het volgende blok, een kleine transactie die zeer hoge kosten betaalt met één kleine voorouder. Als de mempool van een node echter vol raakte, zou het naar transactie A kijken met twee enorme kinderen die relatief lage kosten betalen, en het waarschijnlijk verwijderen of niet accepteren en bewaren als het net was ontvangen.
Deze twee rangschikkingen, of ordeningen, staan volledig haaks op elkaar. De mempool zou betrouwbaar moeten verspreiden wat mijnwerkers zullen minen, en gebruikers zouden erop moeten kunnen vertrouwen dat hun lokale mempool nauwkeurig voorspelt wat mijnwerkers zullen minen.
Het op deze manier functioneren van de mempool is belangrijk voor:
Het huidige gedrag van de mempool sluit niet volledig aan bij de werkelijkheid van mijnwerkersincentives, wat blinde vlekken creëert die problematisch kunnen zijn voor de beveiliging van de tweede laag door onzekerheid te creëren over of een transactie een mijnwerker zal bereiken, evenals druk voor niet-openbare uitzendkanalen naar mijnwerkers, wat het eerste probleem mogelijk verergert.
Dit is vooral problematisch als het gaat om het vervangen van onbevestigde transacties, hetzij simpelweg om mijnwerkers te stimuleren een vervanging eerder op te nemen, of als onderdeel van een tweede laag protocol dat on-chain wordt afgedwongen.
Vervanging volgens het bestaande gedrag wordt onvoorspelbaar afhankelijk van de vorm en grootte van het web van transacties waarin de uwe verstrikt zit. In een eenvoudige situatie van kostenverhaging kan dit er niet in slagen een transactie te verspreiden en te vervangen, zelfs wanneer het minen van de vervanging beter zou zijn voor een mijnwerker.
In de context van tweede laag protocollen stelt de huidige logica deelnemers in staat om noodzakelijke vooroudertransacties uit de mempool te laten verwijderen, of om het voor een andere deelnemer niet mogelijk te maken om een noodzakelijke kindtransactie onder de huidige regels naar de mempool te verzenden vanwege kindtransacties die de kwaadwillige deelnemer heeft gemaakt, of de verwijdering van noodzakelijke vooroudertransacties.
Alle deze problemen zijn het resultaat van deze inconsistente inclusie- en verwijderingsrangschikkingen en de verkeerde stimuleringsafstemmingen die ze creëren. Een enkele mondiale rangschikking zou deze problemen oplossen, maar het wereldwijd opnieuw ordenen van de gehele mempool voor elke nieuwe transactie is onpraktisch.
Transacties die van elkaar afhankelijk zijn, vormen een grafiek, of een gerichte reeks "paden". Wanneer een transactie outputs uitgeeft die in het verleden door een andere zijn gemaakt, is het gekoppeld aan die eerdere transactie. Wanneer het bovendien outputs uitgeeft die door een tweede eerdere transactie zijn gemaakt, koppelt het beide historische transacties samen.
Wanneer onbevestigd, moeten dergelijke transactieketens de eerdere transacties eerst laten bevestigen om de latere geldig te laten zijn. Tenslotte kun je geen outputs uitgeven die nog niet zijn gemaakt.
Dit is een belangrijk concept voor het begrijpen van de mempool, het is expliciet directioneel geordend.
Het is allemaal gewoon een grafiek.
In cluster mempool is het concept van een cluster een groep onbevestigde transacties die direct met elkaar gerelateerd zijn, d.w.z. het uitgeven van outputs die door anderen in de cluster zijn gemaakt of omgekeerd. Dit wordt een fundamentele eenheid van de nieuwe mempoolarchitectuur. Het analyseren en ordenen van de gehele mempool is een onpraktische taak, maar het analyseren en ordenen van clusters is veel beter beheersbaar.
Elke cluster wordt opgedeeld in brokken, kleine sets transacties uit de cluster, die vervolgens worden gesorteerd in volgorde van hoogste transactiekosten per byte naar laagste, met inachtneming van de directionele afhankelijkheden. Dus laten we bijvoorbeeld zeggen dat van hoogste naar laagste transactiekosten de brokken in cluster (A) zijn: [A,D], [B,E], [C,F], [G, J], en als laatste [I, H].
Dit maakt het voorsorteren van al deze brokken en clusters mogelijk, en efficiënter sorteren van de hele mempool in het proces.
Mijnwerkers kunnen nu eenvoudig de hoogste transactiekostenbrokken uit elke cluster pakken en in hun sjabloon plaatsen, als er nog ruimte is kunnen ze naar de volgende hoogste transactiekostenbrokken gaan, doorgaan totdat het blok ongeveer vol is en alleen nog moet uitzoeken welke laatste paar transacties het kan passen. Dit is ongeveer de optimale bloksjabloonconstructiemethode, ervan uitgaande dat toegang tot alle beschikbare transacties bestaat.
Wanneer de mempools van nodes vol raken, kunnen ze eenvoudig de laagste transactiekostenbrokken uit elke cluster pakken en deze uit hun mempool beginnen te verwijderen totdat het niet meer boven de geconfigureerde limiet is. Als dat niet genoeg was, gaat het verder naar de volgende laagste transactiekostenbrokken, enzovoort, totdat het binnen zijn mempoollimiet is. Op deze manier gedaan verwijdert het vreemde randgevallen die niet in lijn zijn met mijnwerkersincentives.
Vervangingslogica is ook drastisch vereenvoudigd. Vergelijk cluster (A) met cluster (B) waar transactie K G, I, J en H heeft vervangen. Het enige criterium waaraan moet worden voldaan is dat het nieuwe brok [K] hogere broktransactiekosten moet hebben dan [G, J] en [I, H], [K] moet meer betalen aan totale kosten dan [G, J, I, H], en K kan niet boven een bovengrens gaan van hoeveel transacties het vervangt.
In een clusterparadigma zijn al deze verschillende toepassingen op elkaar afgestemd.
Deze nieuwe architectuur stelt ons in staat om transactiegroepslimieten te vereenvoudigen, waarbij eerdere beperkingen op hoeveel onbevestigde voorouders een transactie in de mempool kan hebben worden verwijderd en vervangen door een mondiale clusterlimiet van 64 transacties en 101 kvB per cluster.
Deze limiet is noodzakelijk om de rekenkosten van het voorsorteren van de clusters en hun brokken laag genoeg te houden om praktisch te zijn voor nodes om op constante basis uit te voeren.
Dit is het echte kerninzicht van cluster mempool. Door de brokken en clusters relatief klein te houden, maakt u tegelijkertijd de constructie van een optimaal bloksjabloon goedkoop, vereenvoudigt u de logica voor transactievervanging (kostenverhaging) en verbetert u daardoor de beveiliging van de tweede laag, en lost u verwijderingslogica op, allemaal tegelijk.
Geen dure en trage berekeningen meer voor sjabloonbouw, of onvoorspelbaar gedrag bij kostenverhaging. Door de verkeerde afstemming van incentives in hoe de mempool transactieorganisatie in verschillende situaties beheerde te verhelpen, functioneert de mempool beter voor iedereen.
Cluster mempool is een project dat jaren in de maak is geweest, en zal een materiële impact hebben op het waarborgen dat winstgevende bloksjablonen open zijn voor alle mijnwerkers, dat tweede laag protocollen gedegen en voorspelbaar mempoolgedrag hebben om op te bouwen, en dat Bitcoin kan blijven functioneren als een gedecentraliseerd monetair systeem.
Voor degenen die geïnteresseerd zijn in het dieper duiken in de details van hoe cluster mempool wordt geïmplementeerd en onder de motorkap werkt, zijn hier twee Delving Bitcoin threads die u kunt lezen:
Hoog Niveau Implementatie Overzicht (Met Ontwerprationale): https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393
Hoe Cluster Mempool Transactiekostendiagrammen Werken: https://delvingbitcoin.org/t/mempool-incentive-compatibility/553
Ontvang vandaag uw exemplaar van The Core Issue!
Mis uw kans niet om The Core Issue te bezitten — met artikelen geschreven door vele Core Developers die de projecten uitleggen waaraan ze zelf werken!
Dit stuk is de Brief van de Redacteur in de nieuwste gedrukte editie van Bitcoin Magazine, The Core Issue. We delen het hier als een vroege blik op de ideeën die in het volledige nummer worden onderzocht.
[1] https://github.com/bitcoin/bitcoin/issues/27677
[2] https://github.com/bitcoin/bitcoin/pull/33629
Dit bericht The Core Issue: Cluster Mempool, Problems Are Easier In Chunks verscheen eerst op Bitcoin Magazine en is geschreven door Shinobi.


