"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment utiliser le SDK Sui TypeScript

Comment utiliser le SDK Sui TypeScript

Publié le 2024-11-03
Parcourir:892

Sui est la chaîne du moment, et bien que Move soit le Saint Graal pour rédiger des contrats intelligents sur Sui, le support de TypeScript est appréciable. Vous pouvez interagir avec et utiliser Sui et la plupart des applications DeFi de l'écosystème avec TypeScript.

Dans ce tutoriel, je vais vous apprendre à interagir avec le réseau Sui via TypeScript. Vous apprendrez à lire l'état de la blockchain, à écrire des transactions dans la chaîne à partir de vos programmes TypeScript.

Premiers pas avec Sui et TypeScript

La seule condition préalable est que vous ayez besoin de connaissances de base en JS/TS pour exécuter ce didacticiel en douceur. Je vais vous expliquer tout le reste.

Tout d'abord, créez un nouveau projet TypeScript dans votre terminal et initialisez un nouveau projet Node.js.

mkdir SuiTS
cd SuiTS
npm init -y

Installez TypeScript en tant que dépendance de développement si vous ne l'avez pas déjà.

npm install typescript --save-dev
npm install ts-node //runs TS without the need for transpiling

Maintenant, vous pouvez initialiser un nouveau projet TypeScript. Cette commande créera un fichier tsconfig.json avec les options par défaut que vous pourrez personnaliser pour votre projet.

npx tsc --init

Ouvrez le tsconfig.json et collez ces configurations.

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "CommonJS",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "types": ["node"],
    "resolveJsonModule": true
  },
  "exclude": ["node_modules"],

  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js"
  }
}

Créez un répertoire src dans lequel vous ajouterez vos fichiers TypeScript.

mkdir src
touch src/index.ts

Enfin, installez le SDK Sui TypeScript avec cette commande.

npm i @mysten/sui.js

Vous êtes prêt. Vous pouvez commencer à écrire des programmes TypeScript qui interagissent avec la blockchain Sui.

Connexion à la blockchain Sui

Vous devez vous connecter à une blockchain Sui pour interagir avec la chaîne.

Tout d'abord, importez getFullnodeUrl et SuiClient à partir du module client SDK.

import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';

Maintenant, en fonction de la connexion souhaitée, vous pouvez utiliser getFullnodeUrl pour récupérer l'URL complète du nœud du réseau de test, du réseau principal, du réseau local ou du réseau de développement Sui ; Ensuite, utilisez SuiClient pour vous connecter à l'instance client.

import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';

const rpcUrl = getFullnodeUrl('mainnet');

const client = new SuiClient({ url: rpcUrl });

Pour tester votre connexion, vous pouvez utiliser getLatestSuiSystemState pour récupérer le dernier état du réseau.

// index.ts
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';

const rpcUrl = getFullnodeUrl("mainnet");

const client = new SuiClient({ url: rpcUrl });

async function getNetworkStatus() {
    const currentEpoch = await client.getLatestSuiSystemState();
    console.log(currentEpoch)
}

getNetworkStatus();

Maintenant, transpilez le code TypeScript en JavaScript et exécutez-le avec cette commande :

ts-node index.ts

Vous devez vous attendre à un résultat similaire à celui-ci lorsque vous exécutez la commande.

How to Use the Sui TypeScript SDK

Créer un portefeuille Sui

La création d'un portefeuille est une autre opération populaire qui peut être utile si vous construisez sur le réseau Sui.

Voici comment générer des paires de clés de portefeuille Sui et récupérer les clés privées et publiques de la paire de clés.

import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';

const rpcUrl = getFullnodeUrl("mainnet");

const client = new SuiClient({ url: rpcUrl });

// random Keypair
const keypair = new Ed25519Keypair();

const publicKey = keypair.getPublicKey();
const privatekey = keypair.getSecretKey();

console.log(privatekey.toString());
console.log(publicKey.toSuiAddress());

La fonction Ed25519Keypair crée une nouvelle paire de clés. Les méthodes getPublicKey et getPrivateKey vous donnent respectivement accès aux clés publiques et privées.

Voici la chaîne de sortie des clés privées et publiques que j'ai générées avec le programme :

suiprivkey1qq9r6rkysny207t5vr7m5025swh7w0wzra9p0553paprhn8zshqsx2rz64r
New Sui Address: 0xbd46d7582ced464ef369114252704b10317436ef70f196a33fcf2c724991fcba

Je finance ce portefeuille avec 0,25 Sui pour la prochaine série d'opérations. N'hésitez pas à vérifier et scanner le portefeuille. N'envoyez aucun fonds ; c'est juste un portefeuille factice.

Lecture des soldes du portefeuille Sui

Vous pouvez utiliser la fonction getCoins sur votre instance client pour récupérer les détails des pièces dans une adresse de portefeuille.

import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';

// use getFullnodeUrl to define the Devnet RPC location
const rpcUrl = getFullnodeUrl('mainnet');

// create a client connected to devnet
const client = new SuiClient({ url: rpcUrl });

async function getOwnedCoins() {
    const coins = await client.getCoins({
        owner: '0xbd46d7582ced464ef369114252704b10317436ef70f196a33fcf2c724991fcba',
    });
    console.log(coins);
}

getOwnedCoins();

La fonction renvoie des détails sur la pièce Sui seule et les détails. La sortie est en MIST, le jeton de gaz Sui. 1 SUI équivaut à 1 milliard de MIST.

How to Use the Sui TypeScript SDK

La fonction getAllCoins peut être utilisée de la même manière pour obtenir une liste de toutes les pièces d'un portefeuille.

async function getAllCoins() {
    // Get the list of owned coins (tokens) for the given owner address
    const ownedCoins = await client.getAllCoins({ owner: "0xbd46d7582ced464ef369114252704b10317436ef70f196a33fcf2c724991fcba" });

    // Access the coin data
    const coins = ownedCoins.data;

    // Iterate through the coins and print their details
    for (const coin of coins) {
        console.log(`Coin Type: ${coin.coinType}`);
        console.log(`Coin Object ID: ${coin.coinObjectId}`);
        console.log(`Balance: ${coin.balance}`);
        console.log('--------------------');
    }

    // If there is more data, handle pagination
    if (ownedCoins.hasNextPage) {
        console.log('More data available. Fetching next page...');
        // You can handle the next page using ownedCoins.nextCursor if needed
    }
}

getAllCoins();

Pour cet exemple, j'ai échangé du Sui contre $FUD sur Hop Aggregator, et voici le résultat après avoir exécuté le programme.

How to Use the Sui TypeScript SDK

Envoyer des pièces ou des objets

Enfin, la partie intéressante est que vous apprendrez à envoyer des transactions sur la blockchain.

Envoyons des jetons $FUD vers un autre portefeuille. Cela fonctionne pour toutes les pièces du réseau Sui.

import {getFullnodeUrl, SuiClient} from '@mysten/sui/client';
import {Ed25519Keypair} from '@mysten/sui/keypairs/ed25519';
import {Transaction} from '@mysten/sui/transactions';

// Set the RPC URL to connect to the Sui mainnet
const rpcUrl = getFullnodeUrl("mainnet");

const client = new SuiClient({url: rpcUrl});

// Create the keypair using the private key
const keypair = Ed25519Keypair.fromSecretKey("suiprivkey1qq9r6rkysny207t5vr7m5025swh7w0wzra9p0553paprhn8zshqsx2rz64r");

// FUD coin type
const FUD_TYPE = '0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD';

async function sendFUD() {
    const tx = new Transaction();

    // Fetch FUD coins owned by the sender
    const coins = await client.getCoins({owner: keypair.getPublicKey().toSuiAddress(), coinType: FUD_TYPE});

    if (coins.data.length === 0) {
        console.log("No FUD coins found in the wallet.");
        return;
    }

    // Choose the first available FUD coin and split it for the transfer (adjust amount if needed)
    const [coin] = tx.splitCoins(coins.data[0].coinObjectId, [100000000]); 

    tx.transferObjects([coin], '0xb0042cf2c5a16d0a240fc1391d570cd5fe06548f860583f1878c327db70f2a22');

    const result = await client.signAndExecuteTransaction({signer: keypair, transaction: tx});
    await client.waitForTransaction({digest: result.digest});

    console.log("Transaction successful. Digest:", result.digest);
}

sendFUD().then(console.log).catch(console.error);

Tout d'abord, j'ai vérifié que le portefeuille contenait des $FUD et je les ai divisés pour le transfert. Les tx.transferObjects transfèrent la pièce divisée à l'adresse spécifiée.

Enfin, vous devez signer la transaction avec client.signAndExecuteTransaction, et vous pouvez attendre la transaction avec waitForTransaction pour confirmer que la transaction a été effectuée

Conclusion

Vous avez appris à interagir avec la blockchain Sui à l'aide du SDK TypeScript officiel. Il y a tellement de choses que vous pouvez développer sur Sui avec vos connaissances nouvellement acquises, comme la création de portefeuilles et de robots.

Vous pouvez aller plus loin en apprenant à interagir avec les contrats Move sur Sui pour créer des dApps plus sophistiquées

Déclaration de sortie Cet article est reproduit sur : https://dev.to/goodylili/how-to-use-the-sui-typescript-sdk-2dep?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3