"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como usar o SDK Sui TypeScript

Como usar o SDK Sui TypeScript

Publicado em 2024-11-03
Navegar:941

Sui é a cadeia do momento e, embora Move seja o Santo Graal para escrever contratos inteligentes em Sui, o suporte TypeScript é significativo. Você pode interagir e usar Sui e a maioria dos aplicativos DeFi no ecossistema com TypeScript.

Neste tutorial, ensinarei como interagir com a rede Sui via TypeScript. Você aprenderá como ler o estado do blockchain e gravar transações na cadeia a partir de seus programas TypeScript.

Primeiros passos com Sui e TypeScript

O único pré-requisito é que você precise de conhecimento básico de JS/TS para executar este tutorial sem problemas. Vou orientar você em todo o resto.

Primeiro, crie um novo projeto TypeScript em seu terminal e inicialize um novo projeto Node.js.

mkdir SuiTS
cd SuiTS
npm init -y

Instale o TypeScript como uma dependência de desenvolvimento, caso ainda não o tenha feito.

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

Agora, você pode inicializar um novo projeto TypeScript. Este comando criará um arquivo tsconfig.json com opções padrão que você pode personalizar para o seu projeto.

npx tsc --init

Abra o tsconfig.json e cole essas configurações.

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

Crie um diretório src onde você adicionará seus arquivos TypeScript.

mkdir src
touch src/index.ts

Finalmente, instale o Sui TypeScript SDK com este comando.

npm i @mysten/sui.js

Está tudo pronto. Você pode começar a escrever programas TypeScript que interagem com o blockchain Sui.

Conectando-se ao Blockchain Sui

Você deve se conectar a um blockchain Sui para interagir com a cadeia.

Primeiro, importe getFullnodeUrl e SuiClient do módulo cliente SDK.

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

Agora, dependendo da conexão desejada, você pode usar getFullnodeUrl para recuperar o URL completo do nó da testnet Sui, mainnet, localnet ou devnet; em seguida, use o SuiClient para conectar-se à instância do cliente.

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

const rpcUrl = getFullnodeUrl('mainnet');

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

Para testar sua conexão, você pode usar getLatestSuiSystemState para recuperar o estado mais recente da rede.

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

Agora, transpile o código TypeScript para JavaScript e execute-o com este comando:

ts-node index.ts

Você deve esperar uma saída semelhante a esta ao executar o comando.

How to Use the Sui TypeScript SDK

Criando uma carteira Sui

Criar uma carteira é outra operação popular que pode ser útil se você construir na Rede Sui.

Veja como gerar pares de chaves da carteira Sui e recuperar as chaves privadas e públicas do par de chaves.

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

A função Ed25519Keypair cria um novo par de chaves. Os métodos getPublicKey e getPrivateKey fornecem acesso às chaves pública e privada, respectivamente.

Aqui está a saída da string das chaves públicas e privadas que gerei com o programa:

suiprivkey1qq9r6rkysny207t5vr7m5025swh7w0wzra9p0553paprhn8zshqsx2rz64r
New Sui Address: 0xbd46d7582ced464ef369114252704b10317436ef70f196a33fcf2c724991fcba

Estou financiando esta carteira com 0,25 Sui para o próximo conjunto de operações. Sinta-se à vontade para verificar e escanear a carteira. Não envie quaisquer fundos; é apenas uma carteira fictícia.

Lendo saldos da carteira Sui

Você pode usar a função getCoins em sua instância do cliente para recuperar detalhes sobre as moedas em um endereço de carteira.

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

A função retorna detalhes apenas da moeda Sui e dos detalhes. A saída está em MIST, o token de gás Sui. 1 SUI equivale a 1 bilhão de MIST.

How to Use the Sui TypeScript SDK

A função getAllCoins pode ser usada da mesma maneira para obter uma lista de todas as moedas em uma carteira.

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

Para este exemplo, troquei um pouco de Sui por $FUD no Hop Aggregator, e aqui está o resultado após executar o programa.

How to Use the Sui TypeScript SDK

Envie moedas ou objetos

Finalmente, a parte interessante é que você aprenderá a enviar transações no blockchain.

Vamos enviar alguns tokens $FUD para outra carteira. Isso funciona para qualquer moeda na Rede 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);

Primeiro, verifiquei se a carteira tinha algum $FUD e dividi para a transferência. Os tx.transferObjects transferem a moeda dividida para o endereço especificado.

Finalmente, você precisa assinar a transação com client.signAndExecuteTransaction e pode aguardar a transação com waitForTransaction para confirmar que a transação foi realizada

Conclusão

Você aprendeu a interagir com o blockchain Sui usando o SDK TypeScript oficial. Há muito que você pode desenvolver no Sui com seu conhecimento recém-adquirido, como construir carteiras e bots.

Você pode ir mais longe aprendendo como interagir com contratos Move no Sui para construir dApps mais sofisticados

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/goodylili/how-to-use-the-sui-typescript-sdk-2dep?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3