オブジェクト データの取得方法
対象読者: 初めて Sui の読み取り操作を実装する開発者。
目標: Sui devnet から生のオブジェクト データを取得して検査する Node.js スクリプトを作成する。
概要
このチュートリアルでは、SuiClient を使用して読み取り操作を実行し、Sui devnet に特定の **NFT(非代替性トークン)**オブジェクトを照会して、そのオンチェーン属性を確認します。
作成するもの: ネットワークに接続し、ID 指定でオブジェクトをリクエストし、JSON レスポンスを表示する軽量な Node.js スクリプト。
前提条件
- Node.js: v18.0.0 以降。
- パッケージ マネージャー:
npmまたはyarn。 - ターミナル: 基本的なコマンドライン スキル。
ステップ 1: プロジェクトのセットアップ
-
新しいディレクトリを作成して移動します。
mkdir sui-data-fetcher && cd sui-data-fetcher -
Node プロジェクトを初期化し、ES モジュール用に構成します。
npm init -ynpm pkg set type="module" -
Sui TypeScript SDK をインストールします。
npm install @mysten/sui
ステップ 2: クライアントの初期化
index.js という名前のファイルを作成します。まずクライアントをインポートし、devnet に接続します。
import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';
// 構成
const NETWORK = 'devnet';
// 1. クライアントを初期化する
// getFullnodeUrl は 'devnet' 正しい RPC エンドポイントを自動的に解決します
const client = new SuiClient({
url: getFullnodeUrl(NETWORK),
});
console.log(`✅ Sui ${NETWORK} に接続しました`);
ステップ 3: クエリ ロジックの記述
既知の「devnet NFT」オブジェクトを照会します。
注記
devnetでは、ネットワークのワイプ(消去)中にオブジェクトが頻繁に削除されます。以下の ID で失敗する場合は、Sui Explorer で新しいオブジェクト ID を探す必要があるかもしれません。
index.js に以下のコードを追加します。
// devnet 上の既知のオブジェクト ID (NFT の例)
const TARGET_OBJECT_ID = '0x7d6539b7a423b035109b823e20c641c73defd23b8f3107b38d1d368688c2797c';
async function fetchObjectData() {
try {
console.log(`🔍 オブジェクトを照会中: ${TARGET_OBJECT_ID}...`);
// 2. 取得を実行する
const response = await client.getObject({
id: TARGET_OBJECT_ID,
// "options" はノードが返すデータの量を決定します。
// ペイロードを小さく保つため、コンテンツ(フィールド)を厳密にリクエストします。
options: {
showContent: true,
showType: true
}
});
// 3. レスポンスを処理する
if (response.error) {
throw new Error(`オブジェクトが見つかりません: ${response.error.code}`);
}
console.log('--- オブジェクト データ ---');
console.dir(response.data, { depth: null, colors: true });
} catch (err) {
console.error('❌ クエリに失敗しました:', err.message);
}
}
fetchObjectData();
ステップ 4: 実行と検証
ターミナルでスクリプトを実行します。
node index.js
出力の理解
以下のような JSON 構造が表示されるはずです。
{
"objectId": "0x7d...",
"version": "120",
"digest": "AuF...",
"type": "0x2::devnet_nft::DevNetNFT",
"content": {
"dataType": "moveObject",
"fields": {
"name": "Sui DevNet NFT",
"description": "An NFT created by the Sui DevNet",
"url": "ipfs://..."
}
}
}
digest: オブジェクトのバージョンを検証するハッシュ。type: 特定の Move 言語タイプ定義(Package::Module::Type)。content.fields: オンチェーンに保存されている実際のデータ(例:NFT の名前やアドレス)。
次のステップ
生のデータを正常に取得できましたが、コード内の options パラメーターに気付いたことでしょう。リクエストできるデータを正確に理解するには、API リファレンス ドキュメントを参照してください。