Leggere una blockchain con gli explorer pubblici · Lezione 4 di 8
Commissioni e mempool
6 min di lettura
La sala d'attesa: il mempool
Quando un wallet invia una transazione, questa non finisce direttamente in un blocco. Viene inoltrata da un nodo all'altro attraverso la rete e ogni nodo che la accetta la conserva in un'area di attesa chiamata mempool (pool di memoria). I produttori di blocchi selezionano le transazioni dal proprio mempool quando creano il blocco successivo.
Due fatti sul mempool spiegano molte delle cose che si vedono sugli explorer:
- Non esiste un unico mempool globale. Ogni nodo ha il proprio. Di solito sono molto simili, ma una transazione può essere visibile su un explorer e non comparire su un altro, soprattutto nei primi secondi o quando la rete è congestionata.
- Il mempool ha spazio limitato. Quando si riempie, i nodi eliminano le transazioni con le commissioni più basse per unità di spazio. Su Bitcoin, i nodi che eseguono il software predefinito eliminano anche le transazioni rimaste non confermate per circa due settimane. Una transazione eliminata non è stata confermata e le monete non si sono spostate, ma rimane valida: chiunque può trasmetterla di nuovo e può ancora essere confermata in seguito, a meno che il mittente non spenda gli stessi input in una nuova transazione. Un mittente che si limita a pagare di nuovo senza farlo potrebbe finire per pagare due volte.
Gli explorer come mempool.space visualizzano il mempool come una coda di blocchi in arrivo, così è facile vedere a che punto si trova una transazione.
Come funzionano le commissioni su Bitcoin
Su Bitcoin, la commissione non dipende da quanto invii. Dipende da quanto spazio occupa la tua transazione in un blocco, perché lo spazio nei blocchi è la risorsa limitata.
- Lo spazio si misura in byte virtuali (vB). Una transazione con molti input occupa più spazio di una con un solo input, indipendentemente dagli importi.
- Le commissioni si confrontano in base al tasso di commissione, espresso in satoshi per byte virtuale (sat/vB).
Un semplice esempio: una transazione di 140 vB che paga 2.800 satoshi ha un tasso di commissione pari a 2.800 ÷ 140 = 20 sat/vB. Una transazione di 300 vB che paga gli stessi 2.800 satoshi ha un tasso di appena circa 9,3 sat/vB e di solito dovrà aspettare più a lungo, anche se la commissione in satoshi è identica.
Dall'aggiornamento SegWit del 2017, i dati delle firme vengono conteggiati con uno sconto. Per questo i tipi di indirizzo più recenti (bc1q… e bc1p…) di solito generano transazioni meno costose di quelle che iniziano con 1.
I miner vogliono ottenere il massimo dallo spazio limitato, quindi in genere riempiono i blocchi prima con le transazioni che hanno i tassi di commissione più alti. Ecco perché gli explorer mostrano le stime delle commissioni in sat/vB, spesso con le priorità «alta», «media» e «bassa», oppure indicano il tasso necessario per entrare nel blocco successivo.
Quando una transazione Bitcoin è bloccata
Se una transazione paga un tasso di commissione troppo basso rispetto alla domanda attuale, può rimanere non confermata per ore o giorni. Esistono due soluzioni standard, entrambe riconoscibili sugli explorer.
Replace-by-fee (RBF). Il mittente trasmette una nuova versione della transazione, che spende gli stessi input e paga una commissione più alta. I nodi sostituiscono la vecchia versione con quella nuova. Gli explorer contrassegnano l'originale come sostituita e rimandano alla transazione sostitutiva. Poiché i dati della transazione sono cambiati, quella sostitutiva ha un TXID diverso. Questo sorprende molte persone: un TXID che ti era stato comunicato può scomparire, mentre un pagamento equivalente viene confermato con un nuovo TXID.
Child pays for parent (CPFP). Il destinatario (o il mittente, usando l'output di resto) spende un output della transazione bloccata in una nuova transazione «figlia» con una commissione elevata. I miner possono riscuotere la commissione della transazione figlia solo includendo anche la transazione genitrice, quindi includono entrambe. Spesso gli explorer mostrano il tasso di commissione effettivo combinato.
Come funzionano le commissioni su Ethereum
Ethereum misura il lavoro in gas. Ogni operazione in una transazione ha un costo in gas stabilito dal protocollo: un semplice trasferimento di ETH a un account esistente costa 21.000 gas, mentre uno swap di token spesso ne costa da cinque a dieci volte tanto. La commissione è:
Commissione = gas utilizzato × prezzo del gas
I prezzi del gas sono espressi in gwei, dove 1 gwei equivale a un miliardesimo di ETH (0,000000001 ETH).
Dall'aggiornamento London dell'agosto 2021 (EIP-1559), il prezzo del gas è composto da due parti:
- Commissione di base: stabilita dalla rete per ogni blocco ed è uguale per tutte le transazioni al suo interno. Aumenta quando i blocchi sono pieni per più della metà e diminuisce quando sono pieni per meno della metà, al massimo del 12,5% da un blocco al successivo. La commissione di base viene bruciata: è distrutta invece di essere pagata a qualcuno.
- Commissione di priorità (la mancia): un importo aggiuntivo per unità di gas che va al destinatario delle commissioni del validatore, come incentivo a includere la transazione.
Il mittente imposta anche una commissione massima per unità di gas, cioè l'importo massimo che è disposto a pagare. Se la commissione di base più la mancia sono inferiori al massimo, la differenza non viene mai addebitata.
In una pagina di una transazione Ethereum in genere si vedono:
| Campo | Significato |
|---|---|
| Limite di gas | La quantità massima di gas che il mittente ha autorizzato per la transazione |
| Gas utilizzato | Quanto gas è stato effettivamente utilizzato, spesso indicato come percentuale del limite |
| Commissione di base, commissione massima, commissione di priorità | Le componenti del prezzo del gas, in gwei |
| Commissione della transazione | Gas utilizzato × prezzo effettivo del gas, in ETH |
| Commissioni bruciate | La parte corrispondente alla commissione di base che è stata distrutta |
Una regola importante: una transazione che fallisce paga comunque il gas che ha consumato. Il valore che tentava di inviare non viene trasferito, ma la commissione è persa. Gli explorer mostrano queste transazioni con lo stato «Non riuscita» o «Annullata» e una commissione superiore a zero.
Confronto tra le commissioni di Bitcoin ed Ethereum
| Bitcoin | Ethereum | |
|---|---|---|
| Per cosa si paga | Spazio nel blocco (byte virtuali) | Calcolo (gas) |
| Unità di confronto | sat/vB | gwei per unità di gas |
| Chi riceve la commissione | Il miner | Commissione di base bruciata; mancia al destinatario delle commissioni del validatore |
| Dipende dall'importo inviato? | No | No |
| Soluzione per una transazione bloccata | RBF o CPFP | Inviare di nuovo con lo stesso nonce e una commissione più alta |
La soluzione per Ethereum si basa sul nonce, un contatore per ogni account, descritto nella lezione «Leggere una transazione Ethereum».
Interpretare con criterio le stime delle commissioni
Le stime delle commissioni sugli explorer sono previsioni basate sul mempool corrente. Possono cambiare nel giro di pochi minuti quando arriva un'ondata di attività. Se il momento dell'invio è importante, controlla la stima attuale subito prima di inviare, non un'ora prima, e ricorda che di solito i wallet impostano le commissioni per tuo conto usando dati simili.
Punti chiave per l'esame: cos'è il mempool e perché ogni nodo ha il proprio; perché le commissioni di Bitcoin dipendono dalle dimensioni della transazione (sat/vB) e non dall'importo; come i miner stabiliscono le priorità in base al tasso di commissione; RBF (nuovo TXID) e CPFP; la formula delle commissioni di Ethereum (gas utilizzato × prezzo del gas); la differenza tra commissione di base (bruciata) e commissione di priorità; e il fatto che anche le transazioni non riuscite pagano il gas.
Domande di esercitazione
Verifica la tua comprensione. Queste domande non contano per l’esame.
Accedi per salvare i tuoi progressi e riprendere da dove hai lasciato. È gratuito. Accedi