Quelques petits rappels pour commencer:
-Le réseaux bitcoin est composés de noeuds qui contiennent tous une même copie de la blockchain (ce n'est pas tout a fais vrai puisque deux noeuds peuvent avoir une copie légérement différente à un instant t à cause de la technologie P2P utilisée. Mais à au bout d'un certain temps, les copies sont ientiques. On vas considérer qu'elles le sont tout le temps pour simplifier).
-Chaque noeud du réseau connait toutes les transactions restantes à valider (les transactions qui ne sont pas encore incluses dans un bloc inscrit dans la blockchain).
Pour miner un bloc, un miner va:
-Construire lui même le bloc qu'il veut miner en insérant dans le bloc les transactions qu'il souhaite avec une limite de taille. Un bloc peut contenir jusqu'à 1 Mo de transaction (limite imposé par le code du client bitcoin mais qui pourra être revue par la suite). Les transactions à haute priorités (par exemple celle avec des frais de transactions) sont en général sélectionnées en priorité par les mineurs, mais il est tout a fais possible de construire un bloc valide sans aucune transaction.
-Une fois le bloc construit, le mineur va essayer de valider son bloc en effectuant des calculs de hash sur l'entête du bloc (le header). Une fois que le mineur à trouver un hash répondant aux critères du réseau, le mineur soumet son bloc au réseau bitcoin qui va l'insérer dans la blockchain (après vérification par tout ou partie des noeuds du réseau). Un bloc hash d'entête de bloc est valide si hash_de_entete < target. La valeur de target est défini par le réseau bitcoin.
Quelques remarques en vrac:
-On peut donc considérer que ce qui est appeler "bloc courant" dans les posts précédents est le bloc sur lequel le mineur travail.
-Le bloc courant pour un mineur est en général différent de celui d'un autre mineur (pas les même transactions sélectionnées par les mineurs).
-Si deux mineurs arrivent à valider leur bloc courant en même temps, le réseau va insérer les deux dans la blockchain. Il y aura donc un tonc et une branche sur la blockchain. Le réseaux ne va conserver que le tronc.
-Les transactions qui se trouvaient dans le bloc de la branche devront être insérer dans un nouveau bloc sur le tronc
-Pour définir lequel des deux blocs le réseau va définir comme la branche, le réseau regarde lequel des deux blocs à un hash d'entête avec la valeur la plus petite (donc le bloc qui a potentiellement nécessité le plus de travail).
-Ces explications sont simplifiées car à cause de la technologie P2P, tous les noeuds ne sont pas forcément parfaitement synchronisés et n'ont donc pas la même vision de la blockchain. Il se peut donc que des mineurs travail toujours sur la branche (qui pour eux est le tronc) et que de nouveau blocs soient ajoutés sur cette branche. Lorsque tout le monde se re-synchronise, les mineurs verront qu'ils ont travailler sur la branche et commenceront à travailler sur le tronc.
-Tous les blocs qui sont sur la branche sont dits "orphelins".
N'hésitez pas à me corriger s'il y a des erreurs.