「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Sui TypeScript SDK の使用方法

Sui TypeScript SDK の使用方法

2024 年 11 月 3 日に公開
ブラウズ:646

Sui は現時点のチェーンであり、Sui でスマート コントラクトを作成するには Move が聖杯ですが、TypeScript のサポートは重要です。 TypeScript を使用すると、Sui とエコシステム上のほとんどの DeFi アプリを操作して使用できます。

このチュートリアルでは、TypeScript を介して Sui ネットワークと対話する方法を説明します。ブロックチェーンの状態を読み取り、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"
  }
}

TypeScript ファイルを追加する src ディレクトリを作成します。

mkdir src
touch src/index.ts

最後に、このコマンドでSui TypeScript SDKをインストールします。

npm i @mysten/sui.js

準備は完了です。 Sui ブロックチェーンと対話する TypeScript プログラムの作成を開始できます。

スイブロックチェーンへの接続

チェーンと対話するには、Sui ブロックチェーンに接続する必要があります。

まず、SDKクライアントモジュールからgetFullnodeUrlとSuiClientをインポートします。

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

ここで、希望する接続に応じて、getFullnodeUrl を使用して、Sui テストネット、メインネット、ローカルネット、または開発ネットの完全なノード URL を取得できます。次に、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 Network 上に構築する場合に便利です。

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 ウォレットの残高の読み取り

クライアント インスタンスで 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 は 10 億 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();

この例では、ホップ アグリゲーターでスイを $FUD と交換しました。プログラム実行後の出力は次のとおりです。

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 でトランザクションを待機して、トランザクションが完了したことを確認できます

結論

公式の TypeScript SDK を使用して、Sui ブロックチェーンを操作する方法を学びました。ウォレットやボットの構築など、新しく獲得した知識を使って、Sui で構築できることはたくさんあります。

Sui で Move コントラクトを操作してより洗練された dApps を構築する方法を学ぶことで、これをさらに進めることができます

リリースステートメント この記事は次の場所に転載されています: https://dev.to/goodylili/how-to-use-the-sui-typescript-sdk-2dep?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3