useKaspaRest
Kaspa の公式 REST API を型付きで扱うためのラッパーです。
ライブ RPC では扱いにくい読み取り用途で使います:
- txid からトランザクションを検索する
- アドレス履歴や残高を取得する
- 自前の RPC 購読なしでブロックを確認する
- 同じ API で self-hosted の Kaspa REST サーバーを扱う
ライブのノード状態、購読、mempool イベント、ブロックテンプレートが必要なら useRpc() を使ってください。
使いどころ
useRpc() はリアルタイムのノード操作向けです。useKaspaRest() は、REST インデックスの方が速くて扱いやすい読み取りワークフロー向けです:
- txid 検索が型付きのトランザクションを返す
- レスポンス形状が REST スキーマと一致する
- 小さなメモリキャッシュで重複リクエストを減らせる
baseUrlを上書きしない限り、現在のネットワークを追従する
ネットワーク選択
デフォルトでは、現在の Kaspa ネットワークに応じて REST ホストを選びます:
mainnet->https://api.kaspa.orgtestnet-10->https://api-tn10.kaspa.orgtestnet-12->https://api-tn12.kaspa.org
simnet、devnet、または self-hosted REST サーバーを使う場合は baseUrl を明示してください。
インポート
import { useKaspaRest } from 'vue-kaspa'シグネチャ
function useKaspaRest(options?: KaspaRestOptions): UseKaspaRestReturnオプション
interface KaspaRestOptions {
baseUrl?: string
staleTime?: number
cacheTime?: number
headers?: HeadersInit
fetcher?: typeof fetch
}戻り値の型
interface UseKaspaRestReturn {
baseUrl: Readonly<Ref<string>>
cacheSize: ComputedRef<number>
clearCache(prefix?: string): void
request<T>(method, path, options?): Promise<T>
getTransaction(transactionId, options?): Promise<KaspaRestTransaction | null>
getTransactionById(transactionId, options?): Promise<KaspaRestTransaction | null>
searchTransactions(request, options?): Promise<KaspaRestTransaction[]>
getAddressBalance(address, options?): Promise<KaspaRestBalanceResponse>
getAddressBalanceHistory(address, dayOrMonth, options?): Promise<KaspaRestAddressBalanceHistory[]>
getAddressNames(options?): Promise<KaspaRestAddressName[]>
getAddressName(address, options?): Promise<KaspaRestAddressName>
getTopAddresses(options?): Promise<KaspaRestTopAddresses[]>
getAddressTransactionCount(address, options?): Promise<KaspaRestTransactionCount>
getFullTransactionsByAddress(address, options?): Promise<KaspaRestTransaction[]>
getFullTransactionsByAddressPage(address, options?): Promise<KaspaRestTransaction[]>
getUtxosByAddress(address, options?): Promise<KaspaRestUtxoResponse[]>
getUtxosByAddresses(addresses, options?): Promise<KaspaRestUtxoResponse[]>
getUtxoCountByAddress(address, options?): Promise<KaspaRestUtxoCountResponse>
getBalancesByAddresses(addresses, options?): Promise<KaspaRestBalancesByAddressEntry[]>
getBlock(hash, includeTransactions?): Promise<KaspaRestBlock>
getBlocks(options?): Promise<KaspaRestBlockResponse>
getBlocksFromBlueScore(options): Promise<KaspaRestBlock[]>
getBlockDag(options?): Promise<KaspaRestBlockdagResponse>
getNetwork(options?): Promise<KaspaRestBlockdagResponse>
getCoinSupply(options?): Promise<KaspaRestCoinSupplyResponse>
getBlockReward(options?): Promise<KaspaRestBlockRewardResponse>
getHalving(field?, options?): Promise<KaspaRestHalvingResponse>
getHashrate(options?): Promise<KaspaRestHashrateResponse>
getMaxHashrate(options?): Promise<KaspaRestMaxHashrateResponse>
getHashrateHistory(options?): Promise<KaspaRestHashrateHistoryResponse[]>
getHashrateHistoryFor(dayOrMonth, resolution?, options?): Promise<KaspaRestHashrateHistoryResponse[]>
getHealth(options?): Promise<KaspaRestHealthResponse>
getKaspadInfo(options?): Promise<KaspaRestKaspadInfoResponse>
getMarketcap(options?): Promise<KaspaRestMarketCapResponse | string>
getVirtualSelectedParentBlueScore(options?): Promise<KaspaRestBlueScoreResponse>
getFeeEstimate(options?): Promise<FeeEstimate>
getTransactionAcceptance(transactionIds, options?): Promise<KaspaRestTransactionAcceptance[]>
getTransactionsCount(options?): Promise<KaspaRestTransactionCountResponse>
getTransactionsCountFor(dayOrMonth, options?): Promise<KaspaRestTransactionCountResponse[]>
getVirtualChain(options?): Promise<KaspaRestVcBlock[]>
submitTransaction(tx, options?): Promise<KaspaRestSubmitTransactionResponse>
calculateTransactionMass(tx, options?): Promise<KaspaRestTxMass>
}基本的な使い方
import { useKaspaRest } from 'vue-kaspa'
const rest = useKaspaRest()
const tx = await rest.getTransaction('txid...')
const fullTx = await rest.getTransactionById('txid...')
const history = await rest.getFullTransactionsByAddress('kaspa:qr...')
const page = await rest.getFullTransactionsByAddressPage('kaspa:qr...', { limit: 25 })
const utxos = await rest.getUtxosByAddress('kaspa:qr...')
const fee = await rest.getFeeEstimate()Txid 検索
getTransaction() は手軽に使える検索パスです。transaction id で探し、見つからない場合は null を返します。
getTransactionById() は、直接検索用の専用 REST エンドポイントを使います。
const tx = await rest.getTransactionById('txid...', {
resolvePreviousOutpoints: 'full',
})
console.log(tx?.transactionId ?? tx?.transaction_id)
console.log(tx?.senderAddresses)ペイロードに解決済みの入力アドレスが含まれている場合、senderAddresses は自動で埋まります。ペイロードに十分な script data が含まれている場合は、フォールバックとして kaspa-wasm から送信元アドレスを導出できます。
キャッシュ
この composable は、同一の繰り返しリクエストをメモリ上にキャッシュします。
staleTimeは、キャッシュ済み結果をいつ新鮮とみなすかを決めます。cacheTimeは、エントリをメモリに保持する時間を決めます。clearCache()を呼ぶと、キャッシュ済みエントリを手動で削除できます。
実験的なエンドポイント
以下の REST ルートは公式スキーマ上で experimental 扱いになっており、予告なく変更される可能性があります:
GET /addresses/{kaspaAddress}/balance/{day_or_month}GET /addresses/distributionGET /addresses/topGET /addresses/active/count/GET /addresses/active/count/{day_or_month}GET /transactions/count/GET /transactions/count/{day_or_month}GET /virtual-chain
利便性のためにこのラッパーで公開していますが、安定版としては扱わないでください。
エンドポイント群
このラッパーは公式 REST の主要な範囲をカバーしています:
GET /addresses/{kaspaAddress}/balanceGET /addresses/{kaspaAddress}/balance/{day_or_month}experimentalGET /addresses/{kaspaAddress}/utxosPOST /addresses/utxosGET /addresses/{kaspaAddress}/utxos/countGET /addresses/{kaspaAddress}/nameGET /addresses/namesGET /addresses/topexperimentalPOST /addresses/activeGET /addresses/active/count/experimentalGET /addresses/active/count/{day_or_month}experimentalPOST /addresses/balancesGET /addresses/{kaspaAddress}/full-transactionsGET /addresses/{kaspaAddress}/full-transactions-pageGET /addresses/{kaspaAddress}/transactions-countGET /addresses/distributionexperimentalGET /blocksGET /blocks/{blockId}GET /blocks-from-bluescoreGET /info/blockdagGET /info/networkGET /info/blockrewardGET /info/coinsupplyGET /info/coinsupply/circulatingGET /info/coinsupply/totalGET /info/fee-estimateGET /info/halvingGET /info/hashrateGET /info/hashrate/historyGET /info/hashrate/history/{day_or_month}GET /info/hashrate/maxGET /info/healthGET /info/kaspadGET /info/marketcapGET /info/priceGET /info/virtual-chain-blue-scorePOST /transactionsPOST /transactions/acceptancePOST /transactions/massPOST /transactions/searchGET /transactions/{transaction_id}GET /transactions/count/experimentalGET /transactions/count/{day_or_month}experimentalGET /virtual-chainexperimental
まだラップされていないものは、request() を直接使ってください。
