Author

Topic: Durée de vie d'une transaction non confirmée (Read 1764 times)

sr. member
Activity: 354
Merit: 251
coinorama.net
January 21, 2014, 05:05:51 PM
#10
Chaque noeud gère son propre mempool, et y inclue toutes les transactions valides dont il entend parler.

(...)

Après un certain temps, il n'est donc pas exclu que le réseau "oublie" l'existence d'une transaction non-confirmée, mais cela peut prendre beaucoup de temps.

Tu veux dire qu'avec un peu de chances, un nœud pourrait valider la transaction, pendant qu'un autre qui l'aurait "oublié" accepterait de valider une deuxième transaction vers un autre compte ? Il faut tomber pile au bon moment, c'est sûr, mais ça me semble contraire au principe de la double dépense. J'aimerais avoir l'explication d'un spécialiste, sur ce point là.
tout dépend donc si le noeud du mineur a reçu X ou Y en premier.

Si j'ai bien compris c'est un peu plus compliqué que l'ordre d'arrivée, entre autre la taille de la transaction le présence de frais selon le parametrage du miner qui fait un peu ce qu'il veut pour remplir son block ...

Le mineur pioche dans le mempool au moment de la construction du bloc.
Selon mon exemple, quelques soient les critères du mineur, il ne pourra piocher que X ou Y car son mempool ne contiendra que l'une des deux.
Jette un oeil à l'implémentation de référence : https://github.com/bitcoin/bitcoin/blob/master/src/miner.cpp
C'est la fonction CreateNewBlock() qui va piocher dans le mempool, ensuite la fonction TxPriorityCompare() est utilisée pour classer les transactions par ordre de "priorité".
(la fonction ComputePriority() qui calcule les priorités est là : https://github.com/bitcoin/bitcoin/blob/master/src/core.cpp )
newbie
Activity: 47
Merit: 0
Chaque noeud gère son propre mempool, et y inclue toutes les transactions valides dont il entend parler.

(...)

Après un certain temps, il n'est donc pas exclu que le réseau "oublie" l'existence d'une transaction non-confirmée, mais cela peut prendre beaucoup de temps.

Tu veux dire qu'avec un peu de chances, un nœud pourrait valider la transaction, pendant qu'un autre qui l'aurait "oublié" accepterait de valider une deuxième transaction vers un autre compte ? Il faut tomber pile au bon moment, c'est sûr, mais ça me semble contraire au principe de la double dépense. J'aimerais avoir l'explication d'un spécialiste, sur ce point là.
tout dépend donc si le noeud du mineur a reçu X ou Y en premier.

Si j'ai bien compris c'est un peu plus compliqué que l'ordre d'arrivée, entre autre la taille de la transaction le présence de frais selon le parametrage du miner qui fait un peu ce qu'il veut pour remplir son block ...

Pour revenir à mes transactions, certaines disparaissent de blockchain.info en deux ou trois jours, d'autres sont toujours la au bout d'une semaine.
sr. member
Activity: 354
Merit: 251
coinorama.net
Chaque noeud gère son propre mempool, et y inclue toutes les transactions valides dont il entend parler.

(...)

Après un certain temps, il n'est donc pas exclu que le réseau "oublie" l'existence d'une transaction non-confirmée, mais cela peut prendre beaucoup de temps.

Tu veux dire qu'avec un peu de chances, un nœud pourrait valider la transaction, pendant qu'un autre qui l'aurait "oublié" accepterait de valider une deuxième transaction vers un autre compte ? Il faut tomber pile au bon moment, c'est sûr, mais ça me semble contraire au principe de la double dépense. J'aimerais avoir l'explication d'un spécialiste, sur ce point là.

N'étant pas spécialiste, je marche sur des oeufs... Voici tout de même les infos que j'ai glané (et superficiellement vérifiées dans le code source de bitcoind) :
Théoriquement oui, tu peux propager à un bout du réseau une transaction X et propager à l'autre bout une transaction Y. Je crois que les noeuds qui auront connaissance de X rejetteront Y, et inversement.
Au final, seule la transaction qui sera effectivement inclue dans un bloc (et ça ne peut pas être les deux à la fois) sera définitive, tout dépend donc si le noeud du mineur a reçu X ou Y en premier.
Lorsqu'un nouveau bloc est accepté, le mempool est mis à jour : les transactions confirmées sont retirées, les transactions qui contredisent les transactions confirmées le sont également.


C'est une petite transaction tant en montant qu'en taille.
J'arrive à une semaine.

As-tu essayé de remettre à zéro l'historique de ton client (s'il le permet) ?
Vois-tu toujours la transaction sur blockchain.info ?
Perso, ça ne m'est jamais arrivé ; tu trouveras peut-être de l'aide sur : http://www.reddit.com/r/bitcoinbeginners
member
Activity: 121
Merit: 34
Chaque noeud gère son propre mempool, et y inclue toutes les transactions valides dont il entend parler.

(...)

Après un certain temps, il n'est donc pas exclu que le réseau "oublie" l'existence d'une transaction non-confirmée, mais cela peut prendre beaucoup de temps.

Tu veux dire qu'avec un peu de chances, un nœud pourrait valider la transaction, pendant qu'un autre qui l'aurait "oublié" accepterait de valider une deuxième transaction vers un autre compte ? Il faut tomber pile au bon moment, c'est sûr, mais ça me semble contraire au principe de la double dépense. J'aimerais avoir l'explication d'un spécialiste, sur ce point là.
newbie
Activity: 47
Merit: 0
C'est une petite transaction tant en montant qu'en taille.

J'arrive à une semaine.
sr. member
Activity: 354
Merit: 251
coinorama.net
Bonjour,
J'ai une transaction non confirmée, (une petite erreur en comptant les 0 pour les frais).
Pendant combien de temps peut elle rester non confirmée ?
Va t elle être oubliée ?

Tu as envoyé des Bitcoins sans frais de transaction c'est ça ?
Une transaction n'est jamais oublié mais elle peut ne jamais se confirmer.

Il y a un détail technique qui m’échappe : une transaction est confirmée quand elle est stockée dans un block par un miner ?
Mais alors les transactions non confirmées elles sont mémorisées ou ?

Salut,
Les transactions non-confirmées sont stockées en RAM, dans le mempool (c'est ce qui s'affiche en continu blockchain.info sur sa home).
Chaque noeud gère son propre mempool, et y inclue toutes les transactions valides dont il entend parler.
Le nombre de transactions sans frais est limité pour mitiger le risque de DoS. Au delà, une purge du mempool a déjà été évoquée,  mais je ne crois pas que ça ait été implémenté.
L'état du mempool n'est pas persistant (AFAIK) ; après un redémarrage de bitcoind, le mempool est vierge. Après un certain temps, il n'est donc pas exclu que le réseau "oublie" l'existence d'une transaction non-confirmée, mais cela peut prendre beaucoup de temps.

À moins que ta transaction soit énorme, même sans frais, elle sera très probablement confirmée. Depuis combien de temps attends-tu ?
newbie
Activity: 47
Merit: 0
Bonjour,
J'ai une transaction non confirmée, (une petite erreur en comptant les 0 pour les frais).
Pendant combien de temps peut elle rester non confirmée ?
Va t elle être oubliée ?

Tu as envoyé des Bitcoins sans frais de transaction c'est ça ?
Une transaction n'est jamais oublié mais elle peut ne jamais se confirmer.

Il y a un détail technique qui m’échappe : une transaction est confirmée quand elle est stockée dans un block par un miner ?
Mais alors les transactions non confirmées elles sont mémorisées ou ?


Recomme la meme transaction mais avec des fees

Justement la "source" de la transaction est considérée comme dépensée par cette transaction non confirmée.
sr. member
Activity: 476
Merit: 250
Recomme la meme transaction mais avec des fees
legendary
Activity: 2156
Merit: 1131
Bonjour,
J'ai une transaction non confirmée, (une petite erreur en comptant les 0 pour les frais).
Pendant combien de temps peut elle rester non confirmée ?
Va t elle être oubliée ?

Tu as envoyé des Bitcoins sans frais de transaction c'est ça ?
Une transaction n'est jamais oublié mais elle peut ne jamais se confirmer.
newbie
Activity: 47
Merit: 0
Bonjour,

J'ai une transaction non confirmée, (une petite erreur en comptant les 0 pour les frais).
Pendant combien de temps peut elle rester non confirmée ?
Va t elle être oubliée ?
Jump to: