Sui.

Publication

Partagez vos connaissances.

article banner.
21Savage.
Aug 11, 2025
Article

Automatiser les transactions Sui à l'aide de kits de développement logiciel

Lorsque vous commencez à utiliser Sui, exécuter des transactions manuellement, que ce soit à partir de l'interface de ligne de commande ou via l'interface utilisateur d'un portefeuille, vous pouvez parfaitement vous sentir bien. Vous écrivez votre module Move, vous le déployez sur devnet, puis vous exécutez les fonctions une par une, en signant chaque transaction au fur et à mesure qu'elle apparaît. C'est simple, direct et honnêtement, c'est une excellente façon d'apprendre.

Mais voici le hic : une fois que vous passez de la phase de « jeu » à la création d'une applicationréelle, les transactions manuelles deviennent un véritable goulot d'étranglement. Imaginez une DApp qui nécessite 5 à 10 transactions d'affilée, par exemple la création d'un NFT, la définition de métadonnées, son transfert vers un autre compte et l'enregistrement de l'action dans un registre partagé. Le faire manuellement avec des instructions de portefeuille constantes serait un cauchemar pour vos utilisateurs et un énorme ralentissement pour vous en tant que développeur.

C'est là qu'intervient**l'automatisation via le SDK Javascript. Le SDK vous permet d'interagir avec le réseau Sui par programmation. Cela signifie que votre code peut préparer, signer et envoyer des transactions sans intervention manuelle constante, et qu'il peut même gérer les erreurs avec élégance en réessayant en cas de problème.


###Étape 1 — Configuration de votre environnement

Avant de pouvoir automatiser quoi que ce soit, vous devez installer le SDK JavaScript et un fournisseur pour communiquer avec le réseau. Installez-le avec :

npm install @mysten/sui.js

Configurez ensuite votre connexion :

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

const provider = new JsonRpcProvider();
const keypair = Ed25519Keypair.generate(); // or load from existing keys
const signer = new RawSigner(keypair, provider);

providerIl s'agit de votre lien vers la blockchain, et signerc'est ce que vous utiliserez pour signer des transactions en code au lieu de vous fier à des invites contextuelles.


###Étape 2 — Actualisation de l'état de l'objet avant chaque transaction

L'une des causes les plus courantes d'échec des transactions automatisées dans Sui est le problème de l'incompatibilité entre les versions de l'objet. Chaque fois qu'un objet change, son numéro de version est incrémenté. Si votre script saisit les données d'un objet, attend un moment, puis essaie de les utiliser, il y a de fortes chances que la version soit obsolète, surtout si l'objet est partagé ou si votre système gère plusieurs transactions.

La solution est simple mais cruciale :actualisez toujours les données de votre objet juste avant d'envoyer la transaction.

const freshObject = await provider.getObject({
  id: objectId,
  options: { showContent: true }
});

Cela garantit que vous travaillez avec la dernière version et réduit les erreurs frustrantes « la version de l'objet a été modifiée ».


###Étape 3 — Regrouper les transactions

Un autre avantage considérable de l'automatisation est la possibilité de regrouper plusieurs opérations connexes en une seule transaction. Sur Sui, vous pouvez composer plusieurs appels en un seul bloc de transaction, ce qui réduit le nombre de signatures et améliore l'efficacité.

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

const tx = new TransactionBlock();
tx.moveCall({
  target: `${packageId}::module::function1`,
  arguments: [tx.pure(arg1), tx.pure(arg2)]
});
tx.moveCall({
  target: `${packageId}::module::function2`,
  arguments: [tx.pure(arg3)]
});

const result = await signer.signAndExecuteTransactionBlock({
  transactionBlock: tx
});
console.log(result);

Au lieu de demander à l'utilisateur de confirmer deux transactions distinctes, vous n'en envoyez qu'une, ce qui permet de gagner du temps et de réduire les frictions.


###Étape 4 — Implémentation d'une logique de nouvelle tentative avec retard exponentiel

Même avec un code parfait, les transactions échouent parfois. Des problèmes réseau, des délais RPC ou une indisponibilité temporaire des terminaux peuvent interrompre votre flux. Si vous développez une automatisation de niveau production, vous ne pouvez pas simplement abandonner en cas d'échec, vous devez recommencer.

Une approche efficace est leretardement exponentiel : réessayez la transaction échouée après une courte attente, en doublant le délai à chaque fois jusqu'à ce que vous réussissiez ou que vous atteigniez une limite de nouvelles tentatives.

async function executeWithRetry(executeFn, maxRetries = 5) {
  let attempt = 0;
  let delay = 1000; // 1 second
  while (attempt < maxRetries) {
    try {
      return await executeFn();
    } catch (err) {
      console.warn(`Attempt ${attempt + 1} failed: ${err.message}`);
      attempt++;
      await new Promise(res => setTimeout(res, delay));
      delay *= 2; // exponential increase
    }
  }
  throw new Error('Transaction failed after max retries');
}

Ainsi, un problème de réseau temporaire ne perturbera pas l'ensemble de votre processus.


###Étape 5 — Gestion sécurisée des clés à des fins d'automatisation

L'un des aspects délicats de l'automatisation des transactions est que votre script a besoin d'une capacité de signature. Cela signifie que vous chargez la clé privée d'un portefeuille dans votre script ou que vous utilisez un service de signature sécurisé. Ne codez jamais de clés privées en dur dans votre base de code : stockez-les dans des variables d'environnement ou utilisez un coffre-fort sécurisé (par exemple, AWS Secrets Manager, HashiCorp Vault).

Si votre application s'exécute dans un contexte de navigateur, intégrez-la à des adaptateurs de portefeuille au lieu de conserver directement les clés. Dans un backend, il est plus sûr d'utiliser un compte de service verrouillé avec un minimum d'autorisations.


###Étape 6 — Réduire les frictions entre les utilisateurs

Lorsque votre automatisation est en place, la plus grande victoire revient à vos utilisateurs. Au lieu d'approuver chaque étape, ils l'approuvent une seule fois et l'application s'occupe du reste. Par exemple :

  • Une place de marché peut gérer la mise en vente, la mise à jour des métadonnées et le transfert d'actifs en un seul clic.
  • Un jeu peut regrouper plusieurs mises à jour d'objets liées au gameplay en une seule transaction par tour.

Moins vous interrompez vos utilisateurs, plus leur expérience est fluide et plus ils sont susceptibles de continuer à utiliser votre application.


###Étape 7 — Tester avant le déploiement

Testez toujours votre automatisation surdevnetoutestnetavant de toucher le réseau principal. Les scripts d'automatisation peuvent envoyer rapidement de nombreuses transactions, et une erreur de logique peut vous coûter des jetons ou endommager les états des objets partagés. Utilisez des adresses de test, imprimez des hachages de transactions et vérifiez les modifications provider.getObject()après chaque exécution.


###Étape 8 — Surveillance et enregistrement

Une fois que votre automatisation est en ligne, configurez une journalisation appropriée. Gardez une trace du hachage des transactions, de l'horodatage, de la consommation de gaz et de toute défaillance. Au fil du temps, cela vous aidera à ajuster les budgets de gaz, à identifier les modèles de pannes et à optimiser les intervalles entre les nouvelles tentatives.


En fin de compte, automatiser les transactions Sui ne consiste pas seulement à écrire moins de code ou à éviter les clics répétitifs, il s'agit defiabiliser votre application. En récupérant de nouvelles données sur les objets, en regroupant les appels associés, en ajoutant une logique de nouvelle tentative et en gérant les clés en toute sécurité, vous configurez votre DApp pour des opérations fluides et évolutives. Le résultat est une expérience où tout fonctionne parfaitement, à la fois pour vous et pour vos utilisateurs. Et sur la blockchain, c'est une sensation rare et précieuse.

  • Sui
  • SDKs and Developer Tools
1
Partager
Commentaires
.

Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

1171Publications3681Réponses
Sui.X.Peera.

Gagne ta part de 1000 Sui

Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.

Campagne de RécompensesAoût