Sui.

Publication

Partagez vos connaissances.

article banner.
Owen.
Owen486
Jun 30, 2025
Article

Erreurs courantes de Sui Blockchain : verrouillage des objets et limites de débit des robinets

Lorsqu'ils développent ou testent des applications sur la blockchain Sui, les développeurs rencontrent souvent deux problèmes courants :

1.Erreurs de verrouillage des objetslors de l'exécution de la transaction 2.Demandes de robinets à tarif limitélorsque vous essayez d'obtenir des jetons de test

Cet article explique ces deux problèmes en détail et propose des solutions pratiques pour vous aider à éviter toute frustration lors du développement.


##1. Erreur : objets réservés pour une autre transaction

🔍 Ce que cela signifie

Il se peut que vous rencontriez une erreur comme celle-ci :

JsonRpcError: Failed to sign transaction by a quorum of validators because one or more of its objects is reserved for another transaction.

Cela signifie qu'un ou plusieurs objets (par exemple, des pièces de gaz ou des objets partagés) impliqués dans votre transaction sont actuellement bloqués par une transaction soumise précédemment, même si elle n'est pas encore terminée.

Sui utilise uncontrôle de simultanéité optimiste, qui verrouille les objets jusqu'à ce qu'une transaction soit finalisée ou expire (environ 30 à 60 secondes). Si plusieurs transactions tentent d'utiliser le même objet avant la finalisation, elles échoueront avec cette erreur.


Comment vérifier si un objet est disponible

Utilisez la sui_getObjectméthode RPC pour inspecter l'état de l'objet :

curl --location --request POST 'https://fullnode.testnet.sui.io:443' \
--header 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "sui_getObject",
  "params": ["<object_id>"]
}'

Si la réponse contient "status": "Locked"ou"owner": "locked", attendez avant de réutiliser l'objet.


Meilleures pratiques pour éviter les problèmes de verrouillage des objets

1.Attendez la finalisation avant de soumettre de nouvelles transactions

Utilisation waitForTransactionà partir du SDK :

  import { JsonRpcProvider } from '@mysten/sui.js';

  const provider = new JsonRpcProvider('https://fullnode.testnet.sui.io:443');
  await provider.waitForTransaction('<tx_digest>');

2.Utilisez plusieurs pièces à gaz

Pour éviter toute dispute, divisez votre pièce d'essence :

  sui client split-coin --coin-id <gas_coin_id> --amounts <amt1> <amt2>

Utilisez ensuite une pièce de gaz différente pour chaque transaction.

3.Réessayez avec un arrêt exponentiel

Lorsque vous rencontrez des erreurs de verrouillage, réessayez après des délais croissants (par exemple, 1 s, 2 s, 4 s).

4.Surveiller via Explorer

Utilisez Sui Explorer pour suivre l'état de la transaction de verrouillage par résumé.


##2. Erreur : 429 demandes en trop — Limitation du débit du robinet

Ce que cela signifie

Lorsque vous demandez des jetons de test depuis le robinet Sui, vous pouvez voir :

API Error: 429 POST /v2/gas - “429 Too Many Requests”

Cela indique que vous avez dépassé la limite de débit, généralement en raison d'un trop grand nombre de demandes provenant de la même adresse IP ou du même compte dans un délai de 24 heures.


Solutions

Essayez d'autres robinets

Le robinet officiel (faucet.testnet.sui.io) a des limites strictes. Vous pouvez essayer d'autres services :

Ces robinets ont souvent des politiques plus clémentes ou des limites tarifaires distinctes.

Réutiliser les comptes de test

Au lieu de créer de nouveaux comptes à chaque fois, réutilisez les comptes existants pour réduire le nombre de demandes.

Exécuter un réseau de test local

Pour les développements et les tests intensifs, envisagez de gérer votre propre réseau Sui local :

sui start --local-rpc-address

Cela vous donne un contrôle total sur le gaz et évite les dépendances externes.

  • Sui
  • Transaction Processing
5
Partager
Commentaires
.