«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как использовать Sui TypeScript SDK

Как использовать Sui TypeScript SDK

Опубликовано 3 ноября 2024 г.
Просматривать:457

Sui — это цепочка на данный момент, и хотя Move — это святой Грааль для написания смарт-контрактов на Sui, поддержка TypeScript значительна. Вы можете взаимодействовать и использовать Sui и большинство приложений DeFi в экосистеме с помощью TypeScript.

В этом уроке я научу вас взаимодействовать с сетью Sui через TypeScript. Вы научитесь читать состояние блокчейна, записывать транзакции в цепочку из своих программ 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.

Подключение к блокчейну Sui

Для взаимодействия с цепочкой необходимо подключиться к блокчейну Sui.

Сначала импортируйте getFullnodeUrl и SuiClient из клиентского модуля SDK.

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

Теперь, в зависимости от желаемого соединения, вы можете использовать getFullnodeUrl для получения полного URL-адреса узла тестовой, основной, локальной или devnet Sui; затем используйте 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.

Вот как сгенерировать пары ключей кошелька Sui и получить из пары ключей секретные и открытые ключи.

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, и вот результат после запуска программы.

How to Use the Sui TypeScript SDK

Отправляйте монеты или предметы

Наконец, самое интересное заключается в том, что вы научитесь отправлять транзакции через блокчейн.

Давайте отправим несколько токенов $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, используя официальный TypeScript SDK. Вы можете многого добиться от Sui, используя свои недавно приобретенные знания, например, создание кошельков и ботов.

Вы можете пойти дальше, научившись взаимодействовать с контрактами Move на Sui для создания более сложных dApps

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/goodylili/how-to-use-the-sui-typescript-sdk-2dep?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3