"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية استخدام Sui TypeScript SDK

كيفية استخدام Sui TypeScript SDK

تم النشر بتاريخ 2024-11-03
تصفح:815

Sui هي سلسلة اللحظة، وعلى الرغم من أن Move هو الكأس المقدسة لكتابة العقود الذكية على Sui، إلا أن دعم TypeScript مهم. يمكنك التفاعل مع Sui واستخدامه ومعظم تطبيقات DeFi على النظام البيئي باستخدام TypeScript.

سأعلمك في هذا البرنامج التعليمي كيفية التفاعل مع شبكة Sui عبر TypeScript. ستتعلم كيفية قراءة حالة blockchain، وكتابة المعاملات إلى السلسلة من برامج TypeScript الخاصة بك.

الشروع في العمل مع Sui وTypeScript

الشرط الوحيد هو أنك ستحتاج إلى معرفة أساسية بـ JS/TS لتشغيل هذا البرنامج التعليمي بسلاسة. سأرشدك خلال كل شيء آخر.

أولاً، قم بإنشاء مشروع TypeScript جديد في جهازك وقم بتهيئة مشروع Node.js جديد.

mkdir SuiTS
cd SuiTS
npm init -y

قم بتثبيت TypeScript باعتباره تابعًا للتطوير إذا لم يكن لديك بالفعل.

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

الآن، يمكنك تهيئة مشروع TypeScript جديد. سيقوم هذا الأمر بإنشاء ملف tsconfig.json مع الخيارات الافتراضية التي يمكنك تخصيصها لمشروعك.

npx tsc --init

افتح ملف tsconfig.json والصق هذه التكوينات.

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

قم بإنشاء دليل src حيث يمكنك إضافة ملفات TypeScript الخاصة بك.

mkdir src
touch src/index.ts

أخيرًا، قم بتثبيت Sui TypeScript SDK باستخدام هذا الأمر.

npm i @mysten/sui.js

أنت جاهز. يمكنك البدء في كتابة برامج TypeScript التي تتفاعل مع Sui blockchain.

الاتصال بـ Sui Blockchain

يجب عليك الاتصال بـ Sui blockchain للتفاعل مع السلسلة.

أولاً، قم باستيراد getFullnodeUrl وSuiClient من وحدة عميل SDK.

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

الآن، اعتمادًا على الاتصال المطلوب، يمكنك استخدام getFullnodeUrl لاسترداد عنوان URL الكامل للعقدة الخاصة بـ Sui testnet أو mainnet أو localnet أو devnet؛ ثم استخدم SuiClient للاتصال بمثيل العميل.

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

const rpcUrl = getFullnodeUrl('mainnet');

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

لاختبار اتصالك، يمكنك استخدام getLatestSuiSystemState لاسترداد أحدث حالة للشبكة.

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

الآن، قم بنقل كود TypeScript إلى JavaScript وتشغيله باستخدام هذا الأمر:

ts-node index.ts

يجب أن تتوقع إخراجًا مشابهًا لهذا عند تنفيذ الأمر.

How to Use the Sui TypeScript SDK

إنشاء محفظة سوي

يعد إنشاء محفظة عملية شائعة أخرى قد تكون مفيدة إذا قمت بالبناء على شبكة Sui.

إليك كيفية إنشاء أزواج مفاتيح محفظة Sui واسترداد المفاتيح الخاصة والعامة من Keypair.

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

تقوم وظيفة Ed25519Keypair بإنشاء زوج مفاتيح جديد. تتيح لك طريقتا getPublicKey وgetPrivateKey الوصول إلى المفاتيح العامة والخاصة، على التوالي.

إليك مخرجات السلسلة للمفاتيح الخاصة والعامة التي قمت بإنشائها باستخدام البرنامج:

suiprivkey1qq9r6rkysny207t5vr7m5025swh7w0wzra9p0553paprhn8zshqsx2rz64r
New Sui Address: 0xbd46d7582ced464ef369114252704b10317436ef70f196a33fcf2c724991fcba

أقوم بتمويل هذه المحفظة بـ 0.25 Sui لمجموعة العمليات التالية. لا تتردد في التحقق من المحفظة ومسحها ضوئيًا. لا ترسل أي أموال. إنها مجرد محفظة وهمية.

قراءة أرصدة محفظة Sui

يمكنك استخدام وظيفة getCoins على مثيل العميل الخاص بك لاسترداد تفاصيل حول العملات المعدنية في عنوان المحفظة.

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

تقوم الوظيفة بإرجاع تفاصيل حول عملة Sui وحدها والتفاصيل. الإخراج في MIST، رمز غاز Sui. 1 SUI يساوي 1 مليار MIST.

How to Use the Sui TypeScript SDK

يمكن استخدام وظيفة getAllCoins بنفس الطريقة للحصول على قائمة بجميع العملات المعدنية الموجودة في المحفظة.

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

في هذا المثال، قمت باستبدال بعض Sui مقابل $FUD على Hop Aggregator، وإليك النتيجة بعد تشغيل البرنامج.

How to Use the Sui TypeScript SDK

إرسال العملات المعدنية أو الأشياء

أخيرًا، الجزء المثير للاهتمام هو أنك ستتعلم إرسال المعاملات على blockchain.

دعنا نرسل بعض رموز FUD إلى محفظة أخرى. يعمل هذا مع أي عملات معدنية على شبكة 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);

أولاً، تأكدت من أن المحفظة تحتوي على بعض FUD وقمت بتقسيمها للتحويل. تقوم tx.transferObjects بنقل العملة المقسمة إلى العنوان المحدد.

أخيرًا، تحتاج إلى توقيع المعاملة مع client.signAndExecuteTransaction، ويمكنك انتظار المعاملة مع waitForTransaction لتأكيد إتمام المعاملة

خاتمة

لقد تعلمت كيفية التفاعل مع Sui blockchain باستخدام TypeScript SDK الرسمي. هناك الكثير مما يمكنك البناء عليه في Sui باستخدام معرفتك المكتسبة حديثًا، مثل إنشاء المحافظ والروبوتات.

يمكنك المضي قدمًا في هذا من خلال تعلم كيفية التفاعل مع عقود النقل على Sui لإنشاء تطبيقات dApps أكثر تطورًا

بيان الافراج تم نشر هذه المقالة على: https://dev.to/goodylili/how-to-use-the-sui-typescript-sdk-2dep?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3