Publication
Partagez vos connaissances.
Pourquoi mes transactions sont-elles incluses après 2 blocs ?
J'utilise un nœud et j'ai remarqué que mes transactions sont toujours incluses deux blocs plus tard plutôt que dans le bloc suivant. J'ai vérifié en ligne et j'en ai trouvé d'autres avec le même problème mais aucune réponse. Cela pourrait-il être dû à des problèmes de connexion entre pairs ? J'ai même simplifié la création de nouveaux blocs, mais en raison de la latence, ma transaction entre toujours dans le bloc n+2. Est-ce que quelqu'un sait pourquoi cela se produit ?
- Polygon PoS
Réponses
3Ce n'est peut-être pas un problème de géolocalisation. Généralement, un bloc est créé et scellé en moins de 500 millisecondes. Un validateur publie un bloc, puis attend environ 2 secondes pour le publier. En raison de la latence de propagation, la transaction peut être incluse dans le bloc n+2. Je suis toujours en train d'étudier cette question et je vous tiendrai au courant dès que j'aurai plus d'informations.
Assurez-vous que vous êtes connecté à un nombre suffisant de pairs et que la connexion réseau de votre nœud est stable. Si la latence est un problème, cela peut être lié à la connectivité ou à la vitesse de synchronisation de votre nœud.
Le fait que vos transactions soient systématiquement incluses dans le blocn+2plutôt que dans le bloc suivant est probablement dû à des retards de propagation du réseau plutôt qu'à un problème fondamental lié à votre nœud. Sur des réseaux tels que Polygon, les blocs sont généralement créés et scellés en moins de 500 millisecondes, et les validateurs attendent environ 2 secondes avant de produire le bloc suivant. En raison de la latence du réseau, il est possible que votre transaction n'atteigne pas un validateur à temps pour être incluse dansn+1, et qu'elle apparaisse plutôt dansn+2. Cela peut être influencé par les connexions entre pairs, la vitesse de propagation des blocs, la synchronisation des relais de transactions et les conditions générales du réseau.
Pour diagnostiquer et résoudre ce problème, suivez les étapes suivantes :
###1. Vérifiez vos connexions entre homologues Votre nœud dépend de ses pairs pour recevoir de nouveaux blocs et relayer les transactions. Si le nombre de pairs de votre nœud est trop faible ou lent, la propagation des transactions peut prendre plus de temps, ce qui entraîne des retards.
Vous pouvez vérifier le nombre de pairs connectés à votre nœud en utilisant :
geth attach http://127.0.0.1:8545
> net.peerCount
Pour les nœuds basés sur Ethereum tels que Polygon, cette commande renverra le nombre de pairs. Si le nombre est faible (par exemple, inférieur à 10), votre nœud est peut-être mal connecté. Pour ajouter d'autres pairs, incluez-les manuellement à l'aide de la admin.addPeer()
commande :
> admin.addPeer("enode://your-peer-node")
Si votre nœud n'est pas bien connecté, pensez à ajouterbootnodesou à augmenter le nombre maximum de connexions entre pairs dans la configuration de votre client.
###2. Evaluer la latence du réseau et la synchronisation des blocs Même avec suffisamment de pairs, la latence du réseau peut retarder la réception des blocs. Vous pouvez mesurer le temps nécessaire à votre nœud pour reconnaître les nouveaux blocs en exécutant :
> eth.syncing
Si votre nœud est légèrement en retard, cela signifie qu'il reçoit des blocs plus tard que le reste du réseau. Comparez le dernier bloc de votre nœud avec un explorateur de blocs tel que PolygonScan :
> eth.blockNumber
S'il y a un délai important entre votre nœud et le réseau, envisagez d'optimiser votre connexion en hébergeant votre nœud sur unVPS à faible latenceou en utilisant uneconnexion Internet plus rapide.
###3. Surveiller la propagation des transactions Vos transactions n'atteignent peut-être pas les validateurs assez rapidement. Utilisez le mempool pour voir si votre transaction se propage efficacement :
> txpool.inspect
Si votre transaction apparaît dans le pool local mais n'est pas incluse dans le bloc suivant, il se peut qu'elle n'atteigne pas suffisamment de pairs rapidement. Vous pouvez utiliser des outils tels que Mempool Explorer pour vérifier si votre transaction est visible sur le réseau.
Pour rediffuser manuellement une transaction en attente, utilisez :
> eth.sendRawTransaction("0x-your-transaction-hash")
Cela garantit que la transaction est rediffusée à un plus grand nombre de pairs, augmentant ainsi ses chances d'inclusion dans le bloc suivant.
###4. Ajustez les frais d'essence si nécessaire Bien que les frais d'essence ne soient pas la cause principale, la baisse des frais d'essence peut parfois entraîner des retards. Comparez les frais de gaz de vos transactions avec ceux inclus dans les blocsn+1 :
> eth.getTransaction("0x-your-tx-hash")
Recherchez la gasPrice
valeur et comparez-la avec les transactions récentes des derniers blocs en utilisant :
> eth.getBlock("latest", true)
Si nécessaire, renvoyez la transaction avec des frais de gaz plus élevés en utilisant une transaction de remplacement (si elle est toujours en attente).
###5. Étudier la sélection des validateurs et le mécanisme de consensuel Si votre blockchain fonctionne surProof of Stake (PoS), la sélection du validateur peut influencer le calendrier des transactions. Certains validateurs ont une propagation des blocs plus rapide que d'autres, ce qui signifie que les transactions qui ne les atteignent pas rapidement peuvent être retardées.
Vérifiez quel validateur a inclus votre transaction en récupérant les détails du bloc :
> eth.getBlock(n+2, true)
Cela vous renverra les détails du validateur qui a traité votre transaction. Si les mêmes validateurs traitent fréquemment vos transactions, votre nœud est peut-être mieux connecté à des validateurs spécifiques alors qu'il en manque d'autres.
Si le problème persiste, vous n'êtes peut-être pas le seul à le rencontrer. Envisagez de discuter de votre problème sur le Forum de la communauté Polygon. D'autres opérateurs de nœuds ont peut-être rencontré un comportement similaire et pourraient fournir des informations supplémentaires.
Le problème est probablement dû à lavitesse de propagation des transactionset à lalatence du réseau. Si votre nœud ne diffuse pas les transactions assez rapidement ou reçoit des blocs avec de légers retards, les transactions peuvent atterrir dansn+2au lieu den+1.
Connaissez-vous la réponse ?
Veuillez vous connecter et la partager.
Polygon is a decentralised Ethereum scaling platform that enables developers to build scalable user-friendly dApps with low transaction fees without ever sacrificing on security.
- Comment ajouter Polygon Amoy Testnet sur MetaMask : un guide13
- Récupération de l'USDT envoyé à Smart Contract sur Polygon14
- Envoyer des pièces en USD depuis le portefeuille Ethereum vers PayPal avec Moonpay17
- Résolution des transactions non confirmées sur le réseau Polygon13
- Affichage des transactions pour les contrats B, C et D dans le contrat A17