Glossario / Protocollo e aggiornamenti
Cluster mempool
- Che cos'è Cluster mempool?
- Cluster mempool è la riorganizzazione della sala d'attesa di Bitcoin Core che mantiene ordinato ogni gruppo di transazioni non confermate collegate tra loro, così il nodo sa sempre quali sceglierebbe davvero un miner.
Le transazioni non confermate che ne spendono altre formano un grafo di dipendenze e per anni il software ha potuto ragionarci solo tramite limiti grezzi su quanti antenati e discendenti fosse consentito a ogni singola voce. La versione 31.0 li ha sostituiti con una sola regola: nessun gruppo collegato più grande di 64 transazioni o di 101 kB di dimensione virtuale. Di conseguenza, sia l'aumento della commissione sia la sostituzione sono diventati più prevedibili.
Come funziona
Un cluster è una componente connessa della mempool. Prendi una transazione non confermata qualsiasi, segui in entrambe le direzioni ogni legame con transazioni padre e figlie, e tutto ciò che raggiungi appartiene allo stesso cluster.
Il vecchio design teneva traccia separatamente di antenati e discendenti e limitava ciascuno a 25, con in più un tetto di dimensione. Era economico da calcolare e sbagliato in un punto importante. Diceva a un nodo quanto era grande una famiglia senza dirgli in che ordine un miner razionale l'avrebbe presa, così la mempool non riusciva a rispondere alla propria domanda centrale: se dovessi costruire un blocco adesso, cosa ci finirebbe dentro?
Cluster mempool risponde a questo mantenendo ogni cluster linearizzato in ogni momento. Una linearizzazione è un ordinamento diviso in chunk, dove ogni chunk è un insieme di transazioni che verrebbero minate insieme e che condividono un'unica commissione per byte virtuale effettiva. Ordinare quei chunk produce un diagramma delle commissioni per l'intera mempool, e il diagramma è il metro con cui ora si misurano le decisioni.
I limiti sono 64 transazioni e 101 kB di dimensione virtuale per cluster, e hanno sostituito del tutto i conteggi di antenati e discendenti. Il CPFP carveout, un'eccezione che un tempo lasciava passare una transazione figlia in più oltre il limite dei discendenti, è stato eliminato insieme a loro, perché nulla può aggirare il conteggio del cluster.
Il vantaggio si vede nella sostituzione. Le vecchie regole del replace-by-fee erano un pugno di condizioni messe insieme, e si potevano aggirare attaccando spazzatura a basso costo a una transazione condivisa finché sostituirla diventava assurdamente costoso. Confrontare i diagrammi delle commissioni offre invece un unico test: una sostituzione è accettata quando non lascia il diagramma peggiore in nessun punto e migliore in qualcuno. Due nuove RPC espongono il meccanismo, getmempoolcluster per il contenuto e l'ordinamento di un cluster e getmempoolfeeratediagram per il diagramma stesso.
Dove lo vedi
Cluster mempool si manifesta come messaggio di errore quando incateni troppe spese non confermate, e come aumento di commissione che riesce dove ti aspettavi problemi.
Gli utenti dei wallet incontrano il limite in una situazione comune: spendere più e più volte il resto non confermato in un periodo di attività intensa. Sessantaquattro transazioni sono generose per una persona e strette per un servizio che raggruppa pagamenti in lotti, che è più o meno il destinatario per cui il numero è stato scritto. Quando un wallet rifiuta una spesa e menziona un cluster, la soluzione è aspettare una conferma invece di alzare la commissione.
Il beneficio più silenzioso è che il child-pays-for-parent ora fa ciò che promette. Aumenta la commissione di una transazione bloccata spendendone l'output a una commissione alta e il nodo vede subito se la coppia batte ciò che è già in coda, così ottieni una risposta netta in un solo passaggio invece di un'approssimazione.
Cluster mempool vs mempool
La mempool è l'insieme di transazioni che un nodo detiene; cluster mempool è il modo in cui un programma organizza internamente quell'insieme. Nessuna regola di consenso è cambiata, nessun fork è avvenuto, e un nodo che esegue ancora una versione precedente detiene le stesse transazioni con una contabilità peggiore. La distinzione conta perché a volte il cambiamento viene riportato come se bitcoin avesse guadagnato una nuova regola valida per l'intera rete sulle catene di transazioni. Non è così. Questa è policy, scelta nodo per nodo, e qualsiasi operatore può spostare i limiti sulla propria macchina con un argomento da riga di comando.