useKaspaRest
Pembungkus bertipe untuk Kaspa REST API resmi.
Gunakan composable ini ketika kamu butuh pembacaan bergaya explorer yang sulit atau tidak praktis lewat RPC langsung:
- mencari transaksi lewat txid
- mengambil riwayat alamat atau saldo
- memeriksa blok tanpa perlu mengelola langganan RPC sendiri
- bekerja dengan server Kaspa REST self-hosted yang memakai API client yang sama
Gunakan useRpc() jika kamu butuh state node live, subscription, event mempool, atau block template.
Kapan dipakai
useRpc() cocok untuk interaksi node real-time. useKaspaRest() cocok untuk workflow baca-heavy karena indeks REST biasanya lebih cepat dan lebih mudah dipakai:
- pencarian txid mengembalikan payload transaksi bertipe
- bentuk respons mengikuti schema REST, jadi hasilnya lebih dapat diprediksi
- cache kecil di memori mengurangi permintaan berulang dari tree komponen
- composable mengikuti network yang sedang aktif kecuali kamu menimpa
baseUrl
Pemilihan network
Secara default composable memilih host REST berdasarkan network Kaspa yang aktif:
mainnet->https://api.kaspa.orgtestnet-10->https://api-tn10.kaspa.orgtestnet-12->https://api-tn12.kaspa.org
Jika kamu memakai simnet, devnet, atau server REST self-hosted, berikan baseUrl secara eksplisit.
Impor
import { useKaspaRest } from 'vue-kaspa'Tanda tangan
function useKaspaRest(options?: KaspaRestOptions): UseKaspaRestReturnOpsi
interface KaspaRestOptions {
baseUrl?: string
staleTime?: number
cacheTime?: number
headers?: HeadersInit
fetcher?: typeof fetch
}Tipe return
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>
}Pemakaian dasar
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 lookup
getTransaction() adalah jalur praktis. Ia mencari berdasarkan transaction id dan mengembalikan null jika transaksinya tidak ditemukan.
getTransactionById() memakai endpoint REST khusus untuk lookup langsung.
const tx = await rest.getTransactionById('txid...', {
resolvePreviousOutpoints: 'full',
})
console.log(tx?.transactionId ?? tx?.transaction_id)
console.log(tx?.senderAddresses)Jika payload berisi input address yang sudah ter-resolve, senderAddresses akan diisi otomatis. Saat payload memiliki script data yang cukup, composable ini bisa menurunkan sender address dengan kaspa-wasm sebagai fallback.
Cache
Komposabel ini menyimpan cache permintaan identik yang berulang di memori.
staleTimemengatur kapan hasil cache masih dianggap segar.cacheTimemengatur berapa lama entri bertahan di memori.- Panggil
clearCache()untuk menghapus entri cache secara manual.
Endpoint eksperimental
Route REST berikut ditandai experimental di schema resmi dan dapat berubah tanpa pemberitahuan:
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
Route ini tetap dibungkus demi kenyamanan, tetapi anggap saja masih tidak stabil.
Endpoint families
Wrapper ini mencakup permukaan REST resmi yang utama:
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
Untuk endpoint yang belum dibungkus, gunakan request() secara langsung.
