Aller au contenu
buybitcoinsmart

Glossaire / Transactions et frais

Transaction standard

Qu'est-ce qu'une transaction standard ?
Une transaction standard est une transaction que les nœuds ordinaires acceptent de relayer et de conserver dans leur mempool, ce qui est une condition plus stricte que la simple validité au regard des règles de consensus.

Deux barrières distinctes protègent le réseau. Le consensus décide de ce qu'un bloc peut contenir et ne peut changer que par un fork ; la standardité décide de ce que votre nœud transmettra à ses pairs et change à chaque nouvelle version publiée. Une transaction qui échoue à la seconde barrière n'est pas invalide, elle est indésirable, et elle doit atteindre un mineur par un autre chemin.

Comment cela fonctionne

La standardité est une liste de conditions appliquée par chaque nœud pour son propre compte, et la version de cette liste propre à Bitcoin Core se trouve dans un seul fichier source, src/policy/policy.cpp.

Les conditions principales sont les suivantes. Chaque script de sortie doit correspondre à un modèle reconnu : paiement à hachage de clé publique, paiement à hachage de script, les trois types witness, multisig nu avec au plus trois clés, ou une seule sortie portant des données. La transaction ne peut pas dépasser 400 000 unités de poids, soit 100 000 octets virtuels, un quart d'un bloc complet. Sa version doit se situer dans la plage acceptée. Ses frais doivent atteindre le taux de relais minimum, 1 satoshi par octet virtuel par défaut. Aucune sortie ne peut être inférieure au seuil de poussière, 546 satoshis pour une sortie legacy et 294 pour une sortie SegWit native. Les scripts de déverrouillage ne doivent contenir que des poussées de données, sans opcode.

L'échec de l'une de ces conditions produit une erreur précise de sendrawtransaction, commençant généralement par les mots "non-mandatory-script-verify-flag" ou "scriptpubkey", et la transaction ne se propage jamais au-delà du nœud auquel vous l'avez soumise.

La couche de politique existe parce que le relais est gratuit et que les blocs ne le sont pas. N'importe qui peut inonder le réseau de transactions qui ne seront jamais minées, aussi les nœuds refusent de transporter des formes qui ressemblent à un abus, coûtent cher à valider ou ne peuvent pas réellement payer leur place. La politique est aussi ce qui tient les expérimentations à l'écart de la circulation générale jusqu'à ce que l'écosystème les juge sûres, et c'est pourquoi assouplir une règle de politique peut être aussi contesté qu'un soft fork alors même que cela ne demande aucune coordination.

Où vous le rencontrez

La plupart des gens rencontrent la standardité sous forme de message d'erreur, et les portefeuilles qui le produisent font généralement quelque chose d'inhabituel à dessein.

Tenter d'envoyer une sortie de 300 satoshis déclenchera la règle sur la poussière. Construire un multisig important en script nu plutôt qu'à l'intérieur d'un paiement à hachage de script déclenchera la règle sur les modèles. Joindre plus de données que ne l'autorise le réglage de transport de données d'un nœud déclenchera cette limite. Les trois donnent lieu à un rejet de votre propre nœud avant que quoi que ce soit n'atteigne le réseau.

Le non standard ne signifie pas impossible, et il existe désormais un marché pour contourner cela. Le 2 février 2023, le pool de minage Luxor a miné le bloc 774 628 contenant une seule transaction de 3,94 mégaoctets qu'aucun nœud n'aurait relayée, soumise directement au pool. Marathon a ensuite transformé la même idée en un produit appelé Slipstream en 2024, acceptant les transactions non standard et surdimensionnées pour une inclusion directe. Si vous êtes un acheteur ordinaire, vous n'aurez jamais besoin de cela, et se voir demander d'utiliser un tel service est un signal fort que quelque chose d'anormal se passe.

Transaction standard vs transaction valide au regard du consensus

La validité au regard du consensus est ce sur quoi tout le réseau doit s'accorder ; la standardité est ce à quoi un nœud individuel choisit de contribuer. Une transaction peut être valide au regard du consensus et non standard, auquel cas un mineur peut l'inclure et chaque nœud acceptera le bloc résultant sans se plaindre. L'inverse ne peut pas se produire : rien de ce qui enfreint le consensus n'est jamais relayé, car cela ne pourrait de toute façon jamais être miné. Dit simplement, la standardité est un filtre sur le chemin vers le mineur, et le consensus est la règle qui décide si l'historique a été étendu correctement.

À ne pas confondre avec

Questions fréquentes

Mon nœud a rejeté une transaction comme non standard. Est-elle invalide ?

Pas nécessairement. Non standard signifie que votre nœud refuse de la relayer, généralement en raison de sa taille, de la forme de son script, d'une sortie de taille poussière ou de frais trop faibles. Un mineur pourrait quand même l'inclure, mais il faudrait alors l'atteindre directement.

Qui décide quelles transactions sont standard ?

Chaque opérateur de nœud décide, en choisissant le logiciel et les réglages qu'il utilise. Bitcoin Core fournit un ensemble de valeurs par défaut et Bitcoin Knots en fournit un plus strict, et la politique effective du réseau est ce que la majorité des nœuds relayeurs acceptent de fait.

Termes associés

Plus de termes : Transactions et frais

Lire cette page en anglais