Sui は現時点のチェーンであり、Sui でスマート コントラクトを作成するには Move が聖杯ですが、TypeScript のサポートは重要です。 TypeScript を使用すると、Sui とエコシステム上のほとんどの DeFi アプリを操作して使用できます。
このチュートリアルでは、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
コマンドを実行すると、次のような出力が表示されるはずです。
ウォレットの作成も人気のある操作で、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 スイを資金提供します。ウォレットを自由に確認してスキャンしてください。資金は送金しないでください。それは単なるダミーの財布です。
クライアント インスタンスで 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 に相当します。
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 と交換しました。プログラム実行後の出力は次のとおりです。
最後に、興味深いのは、ブロックチェーン上でトランザクションを送信する方法を学ぶことです。
いくつかの $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 を構築する方法を学ぶことで、これをさらに進めることができます
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3