„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So verwenden Sie das Sui TypeScript SDK

So verwenden Sie das Sui TypeScript SDK

Veröffentlicht am 03.11.2024
Durchsuche:652

Sui ist die Kette der Gegenwart, und obwohl Move der heilige Gral für das Schreiben intelligenter Verträge auf Sui ist, ist die TypeScript-Unterstützung von Bedeutung. Mit TypeScript können Sie mit Sui und den meisten DeFi-Apps im Ökosystem interagieren und diese nutzen.

In diesem Tutorial zeige ich Ihnen, wie Sie über TypeScript mit dem Sui-Netzwerk interagieren. Sie erfahren, wie Sie den Status der Blockchain lesen und Transaktionen aus Ihren TypeScript-Programmen in die Kette schreiben.

Erste Schritte mit Sui und TypeScript

Die einzige Voraussetzung ist, dass Sie grundlegende JS/TS-Kenntnisse benötigen, um dieses Tutorial reibungslos ausführen zu können. Ich erkläre Ihnen alles Weitere.

Erstellen Sie zunächst ein neues TypeScript-Projekt in Ihrem Terminal und initialisieren Sie ein neues Node.js-Projekt.

mkdir SuiTS
cd SuiTS
npm init -y

Installieren Sie TypeScript als Entwicklungsabhängigkeit, falls Sie es noch nicht haben.

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

Jetzt können Sie ein neues TypeScript-Projekt initialisieren. Dieser Befehl erstellt eine tsconfig.json-Datei mit Standardoptionen, die Sie für Ihr Projekt anpassen können.

npx tsc --init

Öffnen Sie tsconfig.json und fügen Sie diese Konfigurationen ein.

{
  "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"
  }
}

Erstellen Sie ein src-Verzeichnis, in dem Sie Ihre TypeScript-Dateien hinzufügen.

mkdir src
touch src/index.ts

Schließlich installieren Sie das Sui TypeScript SDK mit diesem Befehl.

npm i @mysten/sui.js

Alles ist erledigt. Sie können mit dem Schreiben von TypeScript-Programmen beginnen, die mit der Sui-Blockchain interagieren.

Verbindung zur Sui-Blockchain herstellen

Sie müssen eine Verbindung zu einer Sui-Blockchain herstellen, um mit der Kette interagieren zu können.

Importieren Sie zunächst getFullnodeUrl und SuiClient aus dem SDK-Clientmodul.

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

Jetzt können Sie je nach gewünschter Verbindung getFullnodeUrl verwenden, um die vollständige Knoten-URL des Sui-Testnetzes, Mainnets, Localnets oder Devnets abzurufen. Verwenden Sie dann den SuiClient, um eine Verbindung zur Client-Instanz herzustellen.

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

const rpcUrl = getFullnodeUrl('mainnet');

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

Um Ihre Verbindung zu testen, können Sie getLatestSuiSystemState verwenden, um den neuesten Status des Netzwerks abzurufen.

// 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();

Transpilieren Sie nun den TypeScript-Code in JavaScript und führen Sie ihn mit diesem Befehl aus:

ts-node index.ts

Sie sollten eine ähnliche Ausgabe erwarten, wenn Sie den Befehl ausführen.

How to Use the Sui TypeScript SDK

Erstellen einer Sui-Wallet

Das Erstellen einer Wallet ist ein weiterer beliebter Vorgang, der nützlich sein könnte, wenn Sie auf dem Sui-Netzwerk aufbauen.

Hier erfahren Sie, wie Sie Sui-Wallet-Schlüsselpaare generieren und die privaten und öffentlichen Schlüssel aus dem Schlüsselpaar abrufen.

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());

Die Funktion Ed25519Keypair erstellt ein neues Schlüsselpaar. Mit den Methoden getPublicKey und getPrivateKey erhalten Sie Zugriff auf den öffentlichen bzw. privaten Schlüssel.

Hier ist die String-Ausgabe der privaten und öffentlichen Schlüssel, die ich mit dem Programm generiert habe:

suiprivkey1qq9r6rkysny207t5vr7m5025swh7w0wzra9p0553paprhn8zshqsx2rz64r
New Sui Address: 0xbd46d7582ced464ef369114252704b10317436ef70f196a33fcf2c724991fcba

Ich finanziere dieses Wallet mit 0,25 Sui für die nächsten Operationen. Fühlen Sie sich frei, das Wallet zu verifizieren und zu scannen. Senden Sie keine Gelder; es ist nur eine Schein-Geldbörse.

Sui Wallet-Guthaben lesen

Sie können die getCoins-Funktion auf Ihrer Client-Instanz verwenden, um Details zu den Münzen in einer Wallet-Adresse abzurufen.

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();

Die Funktion gibt nur Details zur Sui-Münze und die Details zurück. Die Ausgabe erfolgt in MIST, dem Sui-Gas-Token. 1 SUI entspricht 1 Milliarde MIST.

How to Use the Sui TypeScript SDK

Die Funktion getAllCoins kann auf die gleiche Weise verwendet werden, um eine Liste aller Münzen in einem Wallet abzurufen.

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();

Für dieses Beispiel habe ich etwas Sui gegen $FUD auf Hop Aggregator eingetauscht, und hier ist die Ausgabe nach dem Ausführen des Programms.

How to Use the Sui TypeScript SDK

Senden Sie Münzen oder Gegenstände

Das Interessante daran ist schließlich, dass Sie lernen, Transaktionen auf der Blockchain zu senden.

Lassen Sie uns einige $FUD-Tokens an eine andere Wallet senden. Dies funktioniert für alle Münzen im Sui-Netzwerk.

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);

Zuerst habe ich überprüft, ob das Wallet etwas FUD hatte, und habe es für die Überweisung aufgeteilt. Die tx.transferObjects übertragen den geteilten Coin an die angegebene Adresse.

Schließlich müssen Sie die Transaktion mit „client.signAndExecuteTransaction“ signieren und können mit „waitForTransaction“ auf die Transaktion warten, um zu bestätigen, dass die Transaktion durchgeführt wurde

Abschluss

Sie haben gelernt, mit der Sui-Blockchain mithilfe des offiziellen TypeScript SDK zu interagieren. Es gibt so viel, was Sie mit Ihrem neu erworbenen Wissen auf Sui aufbauen können, wie zum Beispiel das Erstellen von Wallets und Bots.

Sie können noch weiter gehen, indem Sie lernen, wie Sie mit Move-Verträgen auf Sui interagieren, um anspruchsvollere dApps zu erstellen

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/goodylili/how-to-use-the-sui-typescript-sdk-2dep?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3