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.
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.
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.
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.
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.
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.
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
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
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