Solanaとの対話

決済フローを構築する前に、Solanaに接続し、ネットワークデータのクエリ方法を理解する必要があります。このガイドでは、@solana/kit TypeScript SDKとSolana CLIを使用した接続の確立と決済に必要なRPCメソッドの使用という基本事項を説明します。さらに、Solana Explorerを使用して決済を手動で検証し、アカウントを検査し、問題をデバッグする基本についても説明します。

Solanaへの接続

SolanaのRPC APIは、ネットワークとプログラム的に対話するための主要な方法です。RPC URLは、事実上ネットワークへのAPIキーです。

本番環境では公開RPCを使用しないでください

公開エンドポイント(api.mainnet-beta.solana.comapi.devnet.solana.com)はレート制限があり、SLAがなく、本番環境の決済フローには適していません。本番環境のデプロイには、RPCプロバイダーを使用してプライベートRPCエンドポイントを確保してください。

開発とテストには、レート制限付きの公開エンドポイントを使用できます。

ネットワークと対話するためのRPCクライアントを作成します。

import { createSolanaRpc, createSolanaRpcSubscriptions } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const rpcSubscriptions = createSolanaRpcSubscriptions(
"wss://api.mainnet-beta.solana.com"
);

開発には、devnet(https://api.devnet.solana.com)またはSurfpoolのようなローカルvalidatorを使用してください。

一般的なRPCメソッド

SolanaのJSON-RPC APIは、ネットワークをクエリするためのメソッドを公開しています。決済フローで最もよく使用するメソッドは次のとおりです。

アカウント情報の取得

Solana上のすべてのアカウントは、公開鍵によってアドレス指定可能です。getAccountInfo RPCメソッドを使用して、任意のアカウントに関する情報を取得します。getAccountInfoメソッドはAccountInfoオブジェクトを返し、これにはアカウントの公開鍵、SOL残高、データ、およびその他のメタデータが含まれます。

dataフィールドは、アカウントのデータをbase64エンコードした文字列です。@solana/kitパッケージのgetBase64Codecメソッドを使用してバイトにエンコードし、アカウントのデータに期待されるコーデック(既知の場合)を使用して読み取り可能なオブジェクトにデコードできます(例: トークンアカウントの場合はgetTokenCodec)。

const accountInfo = await rpc
.getAccountInfo(address("7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV"), {
encoding: "base64"
})
.send();
const dataBytes = getBase64Codec().encode(accountInfo.value.data);
const parsedTokenData = getTokenCodec().decode(dataBytes);
console.log(parsedTokenData);

トークン残高の取得

getTokenAccountBalance RPCメソッドを使用して、トークンアカウントの残高を確認します:

const balance = await rpc.getTokenAccountBalance(tokenAccountAddress).send();
console.log(balance.value.uiAmount); // Human-readable (e.g., 100.50)
console.log(balance.value.amount); // Base units (e.g., "100500000")

トランザクションの構築

すべてのトランザクションは、有効であること(古くないこと)を保証するために、最新のブロックハッシュが必要です。getLatestBlockhash RPCメソッドを使用して、支払いトランザクションを作成する前に取得してください:

const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();

ブロックハッシュは約60秒後に期限切れになります。署名と送信の直前に新しいものを取得してください。

トランザクションステータスの確認

getSignatureStatuses RPCメソッドを使用して、トランザクションが確定したことを確認します:

const status = await rpc.getSignatureStatuses([signature]).send();
const result = status.value[0];
// result.confirmationStatus: "processed" | "confirmed" | "finalized"

トランザクション詳細の取得

getTransaction RPCメソッドを使用して、確認済みトランザクションの完全な詳細を取得します:

const transaction = await rpc
.getTransaction(signature, { maxSupportedTransactionVersion: 0 })
.send();

トランザクション履歴

getSignaturesForAddress RPCメソッドを使用して、アドレスの最近のトランザクションを取得します:

const signatures = await rpc
.getSignaturesForAddress(walletAddress, { limit: 10 })
.send();

包括的な支払い監視については、webhookとリアルタイムトランザクション検出をカバーする支払いの受け入れを参照してください。

公開データの探索

Solanaの公開台帳は、すべてのトランザクション、トークンアカウント、ミントが完全に監査可能であることを意味します。ブロックエクスプローラーを使用すると、コードを書かずに手動で支払いを検証し、アカウントを検査し、問題をデバッグできます。

検索できる内容:

  • 支払いが決済されたことを確認
  • トークンアカウントの残高を検査
  • 失敗したトランザクションをデバッグ
  • ミントの詳細(供給量、小数点以下桁数、権限)を検索

一般的なエクスプローラー: Solana ExplorerSolanaFMSolscanOrb

リンク例:

Is this page helpful?

管理運営

© 2026 Solana Foundation.
無断転載を禁じます。
つながろう