2017-10-04 3 views
0

J'ai exécuté la méthode de contrat avec le prix du gaz très bas - 1 gwei (transaction A). Après cela j'ai envoyé un peu d'eth à plusieurs portefeuilles du même compte (transaction B). Par conséquent, l'état de la transaction A était pending pendant environ 12 heures jusqu'à ce qu'il soit miné en raison du prix du gaz. Et j'ai trouvé que les transactions B ont calé jusqu'à ce que la transaction A a été minée (ils étaient également pending).Y a-t-il une file d'attente de transaction pour un portefeuille unique dans Ethereum?

Toutes les transactions ont été envoyées à partir du même portefeuille via MyEthereWallet. Si je comprends bien, les transactions sont exécutées de façon absolument indépendante. Alors, pourquoi les transactions B où extrait seulement après A? Ou il y a une file d'attente de transaction globale pour chaque portefeuille et les transactions sont extraites dans l'ordre où elles vont au système?

Répondre

0

J'ai trouvé la réponse here. Si bientôt, oui, il y a une sorte de file d'attente. Les transactions sont exécutées dans l'ordre où elles sont publiées sur le réseau ethereum.


Un peu plus de détails. Chaque compte a une propriété appelée nonce. Il contient le nombre de transactions envoyées sur le compte.

Suivant. Chaque transaction envoyée par compte a plusieurs propriétés. L'un d'entre eux est nonce du compte qui a envoyé la transaction.

Avant de vérifier la validité des transactions d'exécution - elles doivent avoir une signature valide, suffisamment de gaz et nonce valide - elles doivent être égales au nonce actuel du compte de l'expéditeur. Après la vérification de la validité, la transaction est en cours d'exécution. Après la réussite du compte d'exécution de la transaction, le compte nonce est incrémenté.

Par exemple, nonce de notre compte est 100. Nous publions deux transactions avec nonce 100 et 101. La deuxième transaction avec nonce 101 n'est pas valide jusqu'à ce que la première transaction est terminée et compte de nonce est incrémentée (et devenir 101).