Bitcoin Magazine
Põhiküsimus: Cluster Mempool – probleemid on lihtsamad kildude kaupa
Cluster Mempool1 on mempooli töötlemise ja transaktsioonide sorteerimise uus lähenemisviis, mille idee ja rakendus pärinevad Suhas Daftuari ja Pieter Wuille’lt. Selle disaini eesmärk on lihtsustada üldist arhitektuuri, paremini kooskõlastada transaktsioonide sorteerimise loogika kaevandajate stiimulitega ning tõsta teise kihi protokollide turvalisust. See integreeriti Bitcoin Core’i PR #336292 raames 25. novembril 2025.
Mempool on suur hulk ootel transaktsioone, mida teie sõlm peab mitmel põhjusel jälgima: tasude hinnangute arvutamiseks, transaktsioonide asendamise valideerimiseks ja blokkide loomiseks, kui olete kaevandaja.
Sellel ühel sõlme funktsioonil on mitmeid erinevaid eesmärke, mida tuleb teenindada. Bitcoin Core kuni versioonini 30.0 korraldas mempooli kahte erinevat viisi, et toetada neid funktsioone, võttes igast transaktsioonist vaatluse alla nii selle enda kui ka tema lapsed (laps-transaktsioonide feerate) – nimelt transaktsiooni ja selle vanemate (eeskuju-feerate) kombinatsiooniga edasi- ja tagasivaates.
Nende andmete abil otsustatakse, millised transaktsioonid tuleb mempoolist välja tõrjuda, kui see on täis, ja millised tuleb uue bloki malli loomisel esimesena lisada.
Kui kaevandaja otsustab, kas lisada mingi transaktsioon oma blokki, vaatab tema sõlm seda transaktsiooni ja kõiki vanemaid, kes peavad enne kinnitamist olema, et transaktsioon saaks blokis kehtida, ning hindab kõigi nende kokku arvestatud keskmist feerate’t ühe baiði kohta, võttes arvesse individuaalseid makseid. Kui see transaktsioonigrupp mahub bloki suuruse piiridesse ja ületab teisi tasude poolest, lisatakse see järgmisse blokki. Seda tehakse igale transaktsioonile.
Kui teie sõlm otsustab, millised transaktsioonid tuleb mempoolist välja tõrjuda, kui see on täis, vaadatakse iga transaktsiooni ja selle lapsi ning tõrjutakse transaktsioon koos kõigi oma lastega, kui mempool on juba täis transaktsioone (ja nende järglasi), mis maksavad kõrgemat feerate’t.
Vaatame ülaltoodud transaktsioonide graafikut; feerate’d on näidatud sulgudes (eeskuju-feerate, laps-feerate). Kaevandaja, kes vaatab transaktsiooni E, lisaks sellele tõenäoliselt järgmisse blokki väikest transaktsiooni, mis maksab väga kõrget tasu ja millel on vaid üks väike eeskuju. Kui aga teie sõlme mempool hakkab täituma, vaadatakse transaktsiooni A, millel on kaks suurt last, kes maksavad madalat suhtelist tasu, ja tõenäoliselt tõrjutakse see või ei võeta seda vastu ja hoitakse, kui see oli just saabunud.
Need kaks reitingut ehk järjestust on omavahel täielikult vastuolus. Mempool peaks usaldusväärselt edastama, milliseid transaktsioone kaevandajad kaevandavad, ja kasutajad peaksid olema kindlad, et nende kohalik mempool ennustab usaldusväärselt, milliseid transaktsioone kaevandajad kaevandavad.
Mempooli praegune toimimine ei ole täielikult kooskõlas kaevandamise stiimulite tegelikkusega, mis loob pimedaid alasid ja võib teise kihi turvalisuses probleeme tekitada, sest tekib ebakindlus, kas transaktsioon jõuab üldse kaevandajani, samuti tekitab survet kaevandajatele mitteavalike levikanalite kasutamiseks, mis võib esimest probleemi veelgi süvendada.
Eriti probleemne on see, kui tuleb asendada kinnitamata transaktsioone – kas lihtsalt stiimuliks kaevandajatele, et nad asendust kiiremini lisaksid, või teise kihi protokolli osana, mida rakendatakse plokikettal.
Asendamine praeguse käitumise järgi muutub ettearvamatuks olenevalt sellest, millisesse transaktsioonide võrgustikku teie satuvad. Lihtsas tasude tõstmise situatsioonis võib see juhtuda, et asendamine ei õnnestu ja transaktsioon ei asendata, isegi kui asendamise kaevandamine oleks kaevandajale kasulikum.
Teise kihi protokollide kontekstis võimaldab praegune loogika osalejatel vajalikud eeskuju-transaktsioonid mempoolist välja tõrjuda või muuta võimatuks, et teine osaleja saaks vajaliku lapse-transaktsiooni mempooli esitada, sest pahatahtlik osaleja on loonud laps-transaktsioone või vajalikud eeskuju-transaktsioonid on tõrjutud.
Kõik need probleemid tulenevad ebakonsistentsetest sisestamise ja väljalaskmise reitingutest ning nendest tekkivatest stiimulite mittesobivustest. Ühe globaalse reitinguga saaks need probleemid lahendada, kuid kogu mempooli uuesti järjestada iga uue transaktsiooni jaoks pole praktiline.
Transaktsioonid, mis sõltuvad üksteisest, moodustavad graafiku ehk suunatud „teede“ ahela. Kui üks transaktsioon kulutab varasemalt teise poolt loodud väljundeid, on see seotud selle varasema transaktsiooniga. Kui ta kulutab lisaks ka teise varasema transaktsiooni poolt loodud väljundeid, ühendab ta mõlemad ajaloolised transaktsioonid omavahel.
Kinnitamata seisundis peavad sellised transaktsioonide ahelad kindlasti varasemad transaktsioonid kõigepealt kinnitama, et hiljemad saaksid kehtida. Lõppude lõpuks ei saa kulutada väljundeid, mida pole veel loodud.
Sellest on oluline arusaam mempoolist: see on konkreetselt suunatud järjestuses.
See on kõik lihtsalt graafik.
Cluster mempoolis on klaster rühm kinnitamata transaktsioone, mis on omavahel otseselt seotud – kulutavad üksteise poolt loodud väljundeid või vastupidi. See muutub uue mempooli arhitektuuri põhialuseks. Kogu mempooli analüüs ja järjestamine on praktiliselt võimatu ülesanne, kuid klasterite analüüs ja järjestamine on palju käsitsemisväärsem.
Iga klaster jagatakse kildudeks, väikesteks transaktsioonirühmadeks klasterist, mis seejärel sorteeritakse baiði kohta kõrgeimast feerate’st madalamasse, arvestades suunatud sõltuvusi. Näiteks öeldakse, et kõrgeimast madalamasse feerate’st on klaster (A) kildud: [A,D], [B,E], [C,F], [G, J] ja viimane [I, H].
Selle abil saab kõik need kildud ja klasterid eelnevalt sorteerida ning kogu mempooli efektiivsemalt järjestada.
Kaevandajad saavad nüüd lihtsalt igast klasterist haarata kõrgeima feerate’ga kildud ja panna need oma malli, ja kui seal on veel ruumi, võivad nad liikuda järgmistele kõrgeimate feerate’ga kildudele, jätkates, kuni blokk on enam-vähem täis ja tuleb lihtsalt otsustada viimased paar transaktsiooni, mida sinna mahub. See on umbes optimaalne bloki malli loomise meetod, eeldades, et kättesaadavad on kõik transaktsioonid.
Kui sõlmede mempoolid on täis, võivad nad lihtsalt igast klasterist haarata madalaima feerate’ga kildud ja hakata neid mempoolist välja tõrjuma, kuni see ei ületa konfigureeritud piiri. Kui sellest ei piisa, liigutakse järgmistele madalaima feerate’ga kildudele ja nii edasi, kuni mempooli piirid on taas ületamata. Sellisel viisil eemaldatakse imelikud äärmuslikud juhud, mis ei ole kooskõlas kaevandamise stiimulitega.
Asendamise loogika lihtsustub drastiliselt. Võrrelge klasterit (A) klasteriga (B), kus transaktsioon K on asendanud G, I, J ja H. Vajalik on vaid üks kriteerium: uuel kildul [K] peab olema kõrgem kildu feerate kui [G, J] ja [I, H], [K] peab maksma kokku rohkem tasusid kui [G, J, I, H], ja K ei tohi ületada ülemist piiri, kui mitu transaktsiooni ta asendab.
Klasteriparadigma juures on kõik need erinevad kasutused omavahel hästi kooskõlas.
Selle uus arhitektuur võimaldab meil lihtsustada transaktsioonirühmade piiranguid, eemaldades senised piirangud sellele, kui palju kinnitamata eeskuju võib mempoolis olla, ja asendades need globaalse klasterpiiranguga: 64 transaktsiooni ja 101 kvB ühe klasteri kohta.
See piirang on vajalik, et hoida klasterite ja nende kilde eelnevalt sorteerimise arvutuskulu piisavalt madalal, et sõlmed saaksid seda pidevalt praktikas teha.
Selle on klaster mempooli tõeline võtmesõna. Hoides kilde ja klastreid suhteliselt väikestena, muudetakse samaaegselt optimaalse bloki malli loomine odavaks, lihtsustatakse transaktsioonide asendamise loogikat (tasude tõstmist) ja parandatakse seega teise kihi turvalisust, samuti parandatakse väljalaskmise loogikat – kõik korraga.
Enam ei ole vaja kulukat ja aeglast arvutust malli loomiseks või ettearvamatut käitumist tasude tõstmisel. Parandades stiimulite mittesobivust, kuidas mempool erinevates olukordades transaktsioonide korraldamist haldas, toimib mempool kõigi jaoks paremini.
Cluster mempool on projekt, mille arendamine on kestnud aastaid ja mis avaldab olulist mõju sellele, et kasumlikud bloki mallid oleksid kättesaadavad kõigile kaevandajatele, et teise kihi protokollidel oleksid tugevad ja ettearvamatud mempooli käitumised, millele tugineda, ning et Bitcoin saaks jätkata töötamist detsentraliseeritud rahasüsteemina.
Kes soovivad sügavamalt uurida, kuidas cluster mempool rakendatakse ja milline on selle tööpõhimõte tagantpoolt, siin on kaks Delving Bitcoin’i teemat, mida saate lugeda:
Kõrgetasemeline implementatsioonikoondis (koos disaini põhjendustega): https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393
Kuidas töötavad cluster mempooli feerate’i diagrammid: https://delvingbitcoin.org/t/mempool-incentive-compatibility/553
Hankige oma eksemplar The Core Issue’st juba täna!
Ärge laske endast mööda minna võimalust omandada The Core Issue – selles on artiklid, mille on kirjutanud mitmed Core Developer’id, selgitades projekte, millega nad ise töötavad!
Selle teksti autor on Shinobi ja see ilmus esmakordselt Bitcoin Magazine’i värskes trükiversioonis The Core Issue. Jagame seda siin kui varajast pilku kogu numbris avastatud ideedele.
[1] https://github.com/bitcoin/bitcoin/issues/27677
[2] https://github.com/bitcoin/bitcoin/pull/33629
Selle postituse The Core Issue: Cluster Mempool, probleemid on lihtsamad kildude kaupa ilmus esmakordselt Bitcoin Magazine’is ja selle on kirjutanud Shinobi.


