Author

Topic: Nombre de transactions dans un bloc / plus longue chaîne (Read 2577 times)

full member
Activity: 217
Merit: 100
L'implémentation de référence des noeuds bitcoin est le wallet officiel bitcoin. Le wallet comporte effectivement un mineur intégré mais il est désactivé par défault.
Dac !
Donc les noeuds sont des types qui utilisent le wallet officiel bitcoin sans en avoir activer le mineur. Ceux qui l'on activer son donc à la foie un noeud et un mineur. C'est ça ?
J'ai bien compris ce qui motivent les mineurs. Mais qu'est ce qui motivent les noeuds qui ne sont pas des mineurs ?

Les mineurs n'utilisent plus le logiciel embarqué dans le wallet depuis longtemps mais des logiciels et materiel dédié. Mais dans le principe, c'est bien ça.

Pour la motivation des personnes faisant tourner un noeud, je dirais qu'une partie des gens utilisant le wallet officiel ne savent pas réellement qu'ils sont des noeuds (ce qui était mon cas quand j'ai commencer à m'intéresser au bitcoin). Pour mon cas, je continue de faire tourner un noeud car je posséde un serveur fonctionnant 24/7 et j'en profite pour soutenir le réseau.

Sinon, il faudra demander aux autres leurs motivations...
member
Activity: 95
Merit: 10
L'implémentation de référence des noeuds bitcoin est le wallet officiel bitcoin. Le wallet comporte effectivement un mineur intégré mais il est désactivé par défault.
Dac !
Donc les noeuds sont des types qui utilisent le wallet officiel bitcoin sans en avoir activer le mineur. Ceux qui l'on activer son donc à la foie un noeud et un mineur. C'est ça ?
J'ai bien compris ce qui motivent les mineurs. Mais qu'est ce qui motivent les noeuds qui ne sont pas des mineurs ?
full member
Activity: 217
Merit: 100
Le mineur demande le travail à effectuer directement au noeud.

OK…
Moi qui pensais que les mineurs étaient les noeuds… J'ai encore beaucoup à fouiller pour tout comprendre :-)

Merci en tout cas

Les noeuds permettent de gerer la blockchain: ils vérifient que la blockchain n'est pas corrompue, que les blocs soumis par les mineurs sont valides, de resoudre les branches/tronc sur la blockchain... Un noeud permet aussi aux utilisateurs d'interagir avec le réseau bitcoin: envoyer des transactions, récupérer du travail pour les mineurs...

L'implémentation de référence des noeuds bitcoin est le wallet officiel bitcoin. Le wallet comporte effectivement un mineur intégré mais il est désactivé par défault. Les mineurs ne font pas parti à proprement parler du réseau bitcoin, mais sont en revanche indispensable (car sans eux, pas de sécurité).
member
Activity: 95
Merit: 10
Le mineur demande le travail à effectuer directement au noeud.

OK…
Moi qui pensais que les mineurs étaient les noeuds… J'ai encore beaucoup à fouiller pour tout comprendre :-)

Merci en tout cas
full member
Activity: 217
Merit: 100
Bonjour,


-Les transactions qui se trouvaient dans le bloc de la branche devront être insérer dans un nouveau bloc sur le tronc


OK, vu le nombre de mineurs, j'imagine le nombre d'insertions de transactions avortées puis recommencées… et aussi l'importance du flux permanent de communication entre les mineurs. En fait, celui qui a un peu de retard sur la vision de la chaîne de bloc. (Ho ! tiens ! Ça fait exotique de le dire en français  Grin) risque beaucoup de choisir des transactions déjà insérées par d’autres.

En fait, il n'y a pas de communication direct entre les mineurs. Les mineurs ne communiquent qu'avec leur noeud bitcoin (en général bitcoin-core). Le mineur demande le travail à effectuer directement au noeud. Lorsque le noeud détecte qu'un nouveau bloc a été ajouté dans la blockchain, le noeud va prévenir le mineur qu'il peut arrêter de travailler sur son bloc courant (car celui-ci contient très certainement des transactions qui viennent d'être validées par le dernier bloc de la blockchain, et le nouveau bloc doit contenir une référence sur le dernier bloc insérer dans la blockchain) et qu'il doit construire un autre bloc pour essayer de le valider. Pour construire son nouveau bloc, le mineur va récupérer une liste fraiche de transactions depuis le noeud. Cette liste ne contient plus les transactions qui viennent d'être validées.
Donc dans l'idéal, tous les noeuds informent au même moment tous les mineurs qu'ils doivent commencer le travail sur un nouveau bloc. Cela évite l'insertion d'une transaction déjà validé dans le bloc courant d'un mineur.

A l'heure actuel, le réseau bitcoin est suffisamment fluide pour éviter la majeur partie des problèmes de synchronisation (quelques secondes de retard n'est pas réellement impactant). En revanche, sur des monnaies alternatives qui utilise un temps de génération de bloc plus court (10 minutes pour bitcoin, 2.5 pour litecoin), les problèmes de synchronisation se font plus rapidement ressentir par les mineurs.


-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).

C'est à dire celui qui commence par le plus de "0" ?

C'est bien ça
member
Activity: 95
Merit: 10
Bonjour,


-Les transactions qui se trouvaient dans le bloc de la branche devront être insérer dans un nouveau bloc sur le tronc


OK, vu le nombre de mineurs, j'imagine le nombre d'insertions de transactions avortées puis recommencées… et aussi l'importance du flux permanent de communication entre les mineurs. En fait, celui qui a un peu de retard sur la vision de la chaîne de bloc. (Ho ! tiens ! Ça fait exotique de le dire en français  Grin) risque beaucoup de choisir des transactions déjà insérées par d’autres.



-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).

C'est à dire celui qui commence par le plus de "0" ?
sr. member
Activity: 333
Merit: 250
Je crois que le nombre max de transactions est de 7 par secondes vu la taille max 1mo, mais je ne sais plus où j'ai li ça.
hero member
Activity: 585
Merit: 500
Oui, mais temps qu'un bloc est "courant" c'est à dire qu'il n'est pas encore dans la bloc chain, pendant que le mineur travaille pour lui trouver un hash, qu'est ce qui empêche d'autres mineurs de choisir quelques transactions déjà choisies pour ce bloc courant ?
Il y a soit:
 - le dernier block valide qui est dans la chaine (à la fin)
 - les blocks que contituent les mineurs pour les ajouter à la fin de la chaine

Les blocks en cours de contitution ne peuvent pas contenir des transactions qui sont déjà présente dans la chaine principale.
Evidement, les nombreux blocks que contituent les mineurs contiennent quasiment tous les mêmes transactions.

Mais dès qu'un mineur trouvent un blocks, il ajoute le sien à la fin de la chaine, invalidant donc tous les autres.
Et le cycle recommence.

sinon autre question :
j'imagine que quand on mine, l'intérêt est de mettre le plus grand nombre de transactions possible dans son bloc courant (pour les fee). C'est à dire jusqu'à 1M. Non ?
Je ne sais pas s'il y a une strategie pour choisir les transactions. Mais je pense qu'il n'y en a pas suffisamment en 10 minutes pour constituer un block plein de 1Mo.
Il faut savoir aussi, c'est dès qu'un block est trouvé, un pool constitue un block pendant 1 millisecondes et demande à tout les mineurs de trouver un hash valide.
Pendant que les mineurs essaye de trouver le hash, le contenu du block ne peut pas changer.
Les transactions qui arrivent entre temps s’accumulent et serviront pour le block suivant.
member
Activity: 95
Merit: 10
Non, car des qu'un bloc est trouvé, les mineurs doivent constituer un block différent.
Introduire une transaction déjà dépensée dans un nouveau block rendrait le block invalide et ne serait pas accepter par le réseau.
Les mineurs ont intérêt à trouver le plus rapidement des blocks valides.

Oui, mais temps qu'un bloc est "courant" c'est à dire qu'il n'est pas encore dans la bloc chain, pendant que le mineur travaille pour lui trouver un hash, qu'est ce qui empêche d'autres mineurs de choisir quelques transactions déjà choisies pour ce bloc courant ?

sinon autre question :
j'imagine que quand on mine, l'intérêt est de mettre le plus grand nombre de transactions possible dans son bloc courant (pour les fee). C'est à dire jusqu'à 1M. Non ?
hero member
Activity: 585
Merit: 500
Non, car des qu'un bloc est trouvé, les mineurs doivent constituer un block différent.
Introduire une transaction déjà dépensée dans un nouveau block rendrait le block invalide et ne serait pas accepter par le réseau.
Les mineurs ont intérêt à trouver le plus rapidement des blocks valides.
member
Activity: 95
Merit: 10
Merci beaucoup pour ces explications.
Puisque les mineurs choisissent les transactions qu’ils mettent dans leur bloc courant, chacun de leur côté, de nombreuses transactions doivent se trouver dans plusieurs blocs. Non ?
full member
Activity: 217
Merit: 100
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.
sr. member
Activity: 322
Merit: 250
Il est où le bloc courant s'il n'est pas dans la bloc chaîne ?
Le bloc courant comprend toutes les transactions qui seront validées par le mineur.
member
Activity: 95
Merit: 10
Oui, bon ! Je me réponds tout seul, parce que je viens de réaliser…
Je me suis embrouillé jai mal posé ma question.

Oui c'est le pow cumuler qui compte .
On peut écraser le bloc courant si le pow total et supérieur à celui dans la bloc chaîne .

Je comprends mal la notion de bloc courant / bloc dans la bloc chaîne.

Il est où le bloc courant s'il n'est pas dans la bloc chaîne ?
member
Activity: 95
Merit: 10
Oui c'est le pow cumuler qui compte .
On peut écraser le bloc courant si le pow total et supérieur à celui dans la bloc chaîne .

Ha, dac !!
Mais alors pour cumuler le pow, chaque mineur doit passer le bloc à un autre qui y ajoute son pow et qui le passe à un prochain qui fait pareil… etc… C'est ça ?
C'est un travail de fou ! J'hallucine !!
Je n'arrive pas à comprendre quand le bloc est enregistré dans la bloc chaîne. Dès le premier mineur et chaque autre mineur vient ajouter son pow dans la bloc chaîne, c'est ça ?

Ça prend combien d'octets un pow ?

En tout cas merci à tous pour votre aide.

member
Activity: 95
Merit: 10
Oui, merci. C'est justement en le lisant que je me suis demandé ce qu'était "la plus longue chaine"
legendary
Activity: 1918
Merit: 1190
Oui c'est le pow cumuler qui compte .
On peut écraser le bloc courant si le pow total et supérieur à celui dans la bloc chaîne .
legendary
Activity: 1652
Merit: 1002
Bitcoin enthusiast!
1) Le(s) mineur(s) / la pool choisit quelle transaction il inclue dans les blocks qu'il mine
2) C'est un peu ça, la plus longue chaine signifie qu'il y a eu plus de calcul pour cette chaine

As tu lu le white paper de satoshi ? Si il y a un truc à lire c'est ça :
-> https://bitcoin.org/bitcoin.pdf
C'est en anglais mais ça reste accessible et c'est pas long (moins de 10 pages)
member
Activity: 95
Merit: 10
Bonjour,

J’ai deux questions… Oui, encore ! :-)

1) Qu’est-ce qui détermine le nombre de transactions dans un bloc ?
Est-ce le mineur qui le décide quand bon lui semble ? Un montant total de BTC de transactions ?

2) J’ai du mal à comprendre ce que veut dire : Bitcoin fait confiance à la "plus longue chaîne"
Chaîne de quoi ? Une fois qu’un bloc est né, et que le premier mineur a donc fait sa POW, j’ai cru comprendre qu’il transmettait ce bloc aux autres mineurs qui à leur tour vérifiaient son travail. Est-ce que les autres mineurs en questions ajoutent à leur tour leur propre POW au bloc ? Ce qui voudrait dire que la plus longue chaîne est le bloc qui contient le plus de POW ?

Merci pour votre aide à comprendre.
Jump to: