Dust limit
Le dust limit est le seuil minimal d'un output pour être relayé sur le réseau. Calculé en fonction du fee rate minimum et de la taille du script. Vise à éviter la pollution de l'UTXO set. Variable selon le type de script (P2PKH, P2WPKH, P2TR...).
Définition
Le dust limit est le montant minimum qu'un output Bitcoin doit contenir pour être considéré comme « standard » par les nœuds du réseau. En dessous de ce seuil, l'output est qualifié de poussière (dust) et la transaction qui le contient sera rejetée par la mempool de la plupart des nœuds, donc jamais minée en pratique. Ce n'est pas une règle de consensus (un mineur peut techniquement inclure un tel output), mais une règle de policy partagée par défaut.
La formule de calcul
Le dust limit est dérivé du paramètre dustrelayfee, valant 3 000 sats/kvB par défaut depuis Bitcoin Core 0.13. La logique est : « un output est de la poussière si son input ultérieur coûterait plus de 3 fois plus que cet output ne vaut, au taux dustrelayfee ». Concrètement :
dust_limit = 3 × (taille_output + taille_input_minimal) × dustrelayfee / 1000
Le facteur 3 est arbitraire mais marqué : il signifie qu'à dustrelayfee donné, on accepte qu'un output puisse être de moitié plus petit que son coût marginal d'inclusion futur.
Tableau des dust limits courants
| Type | Taille output | Taille input | Dust limit (sats) |
|---|---|---|---|
| P2PKH (legacy 1...) | 34 vB | 148 vB | ~546 |
| P2SH (3...) | 32 vB | 91 vB | ~540 |
| P2WPKH (bc1q...) | 31 vB | 67,75 vB | ~294 |
| P2WSH | 43 vB | 104,75 vB | ~330 |
| P2TR (bc1p...) | 43 vB | 57,5 vB | ~330 |
On voit que les types SegWit et Taproot ont des dust limits plus bas parce que leur input est moins coûteux en vbytes : la mise à jour des standards a donc rendu de plus en plus de petits montants viables.
Cas particulier : output OP_RETURN
Les outputs OP_RETURN sont autorisés à 0 sat (ils sont invalidés au niveau du protocole, donc ne polluent pas l'UTXO set). C'est ce qui permet à des protocoles comme Counterparty ou Stamps d'inclure des données sans payer une UTXO supplémentaire.
Pourquoi ce seuil existe
Sans dust limit, n'importe qui pourrait spammer le réseau avec des millions d'outputs à 1 sat, polluant l'UTXO set et coûtant à tous les nœuds en mémoire/disque. C'est une protection collective. Mais le seuil n'est pas une règle de consensus : un mineur ou un opérateur peut configurer dustrelayfee=0 pour relayer la poussière. La plupart ne le font pas, car la friction sociale est trop grande.
Implications pratiques
- Wallet UX : si vous tentez d'envoyer un montant proche du dust limit, votre wallet doit l'augmenter à ce seuil ou refuser la transaction.
- Lightning : les transactions de commitment et HTLC ont des outputs assez petits ; le dust limit influence directement la rentabilité de petits canaux.
- Inscriptions Ordinals : la pratique consiste à utiliser des outputs à 330 sats (dust limit P2TR) pour stocker des inscriptions.
À retenir
Le dust limit est un compromis collectif entre rentabilité économique et préservation des ressources du réseau. Il est ajustable via dustrelayfee, mais ce paramètre est rarement modifié. Voir aussi dust pour les implications de confidentialité.
Termes lies
- Dust (poussière)On appelle « dust » des UTXO si petites que les frais pour les dépenser dépassent leur valeur. Bitcoin Core fixe une limite (3x le coût d'inclusion) en dessous de laquelle une sortie est non-standard. Polluent l'UTXO set et nuisent à la confidentialité. Souvent reçus par dusting attack.
- dustrelayfeedustrelayfee est le paramètre de Bitcoin Core qui définit le tarif minimum pour considérer un output comme non-poussière. Par défaut 3 000 sats/kvB. C'est le seuil du dust limit. Modifiable par l'opérateur du nœud.
- ScriptPubKeyLe scriptPubKey est le script de verrouillage d'une UTXO. Il définit les conditions à satisfaire pour la dépenser (signature, hash, etc.). Tout output Bitcoin a un scriptPubKey. C'est la pièce centrale du modèle UTXO.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.