blockchain : Combien de temps les mineurs passent-ils à la validation ?
manuellement. Alors, j’imaginais que ça leur prend 3 ou 4 minutes.
com décide quel est le prochain bloc exploité par une entreprise privée blockcypher.com,..).
Donc, ce que cela signifie également : décider quel sera le prochain bloc candidat n’est pas fait par le matériel de minage, mais par le logiciel. Cela signifie que l’un n’interfère pas avec l’autre – ils se produisent en parallèle. Le matériel exploite toujours quelque chose et le logiciel vérifie toujours les nouvelles transactions/blocs au fur et à mesure qu’ils arrivent. De temps en temps, le logiciel donnera un candidat de bloc mis à jour au matériel, en fonction de sa meilleure compréhension de ce que sont les blocs. les opérations sont disponibles.
Maintenant, combien de temps est consacré à la validation des blocs et des transactions ? Un temps considérable, mais il est important de souligner que la majeure partie n’est pas réellement sur le chemin critique pour la construction de nouveaux blocs. Le processus, en théorie, se déroule à peu près comme ceci :
- De nouvelles transactions sont reçues en permanence par le nœud du mineur. Ces transactions sont validées à la volée et stockées dans le mempool (un endroit pour les transactions non confirmées ; chaque nœud complet a son propre nœud indépendant). Les transactions typiques prennent moins d’une milliseconde à vérifier, mais les transactions plus importantes/plus complexes peuvent dépasser ce délai. Cela dépend aussi fortement du matériel utilisé, bien sûr
- À chaque instant, le mempool est maintenu cohérent avec le meilleur bloc que le nœud connaît. Cela signifie que la création d’un nouveau modèle de bloc est très rapide : il suffit de prendre les meilleures transactions du mempool (généralement, pour des raisons économiques, celles avec les frais les plus élevés par octet), autant qu’il y en a dans un bloc (1 million d’octets avant BIP141 ; 4 millions de poids depuis). Ces transactions sont déjà validées, elles n’ont donc pas besoin d’être validées à nouveau au moment de la production du candidat bloc
- De temps en temps, un nouveau bloc sera reçu. En règle générale, toutes ou presque toutes les transactions de ce bloc seront déjà dans le mempool lors de leur réception. Le protocole P2P est même optimisé pour cela (voir BIP152 blocs compacts), évitant même d’avoir à répéter ces transactions lors de la transmission du bloc. En raison de cette mise en cache, l’acceptation du bloc est très rapide, mais elle peut parfois être lente si de nombreuses transactions inconnues étaient incluses dans le bloc, pour une raison quelconque. Dans ce cas, cela prend des centaines de millisecondes, voire plusieurs secondes sur un matériel plus lent, pour valider un bloc
- Lorsqu’un nouveau bloc a été reçu et validé, le matériel doit en plus être informé au plus vite d’un nouveau candidat. Chaque milliseconde avant que cela soit fait signifie gaspiller les ressources du matériel : il travaille sur un candidat au-dessus du bloc précédent, ce qui est peu susceptible d’être accepté par le réseau (les nœuds n’acceptent généralement que le premier des deux blocs concurrents, à moins que le dernier est prolongé en premier). Afin d’accélérer cela, certains mineurs vont en effet faire basculer leur matériel sur un bloc vide au dessus du bloc nouvellement reçu, dès son arrivée, et avant d’attendre sa validation. C’est risqué : comme ils ne savent pas encore si le bloc reçu est valide, cela peut signifier passer à travailler sur un candidat qui s’appuie sur un bloc invalide, ce qui serait en soi une perte de temps. Au moment de l’activation de BIP66, cela a entraîné la construction d’une chaîne entière de blocs invalides, car les mineurs ont commencé à construire sur un bloc produit par un autre mineur non mis à niveau, sans savoir qu’il était invalide
La plupart sont les mêmes pour chaque nœud. Les non-mineurs ne passent évidemment pas de temps à construire des blocs candidats, mais à part cela, l’effort consacré à la validation des blocs et des transactions est le même pour tous ceux qui exécutent un nœud de validation complète, mineurs et non-mineurs.