Skip to content

useNetwork

管理目前的活躍網路。切換網路會中斷目前的 RPC 連線並自動在新網路上重新連線。

匯入

ts
import { useNetwork } from 'vue-kaspa'

回傳型別

ts
interface UseNetworkReturn {
  currentNetwork: Readonly<Ref<KaspaNetwork>>
  networkId: Readonly<Ref<string | null>>
  isMainnet: ComputedRef<boolean>
  isTestnet: ComputedRef<boolean>
  daaScore: Readonly<Ref<bigint>>
  switchNetwork(network: KaspaNetwork): Promise<void>
  availableNetworks: readonly KaspaNetwork[]
}

屬性

屬性型別說明
currentNetworkReadonly<Ref<KaspaNetwork>>目前選定的網路
networkIdReadonly<Ref<string | null>>已連線節點回傳的網路 ID 字串(例如 'mainnet')。未連線時為 null
isMainnetComputedRef<boolean>currentNetwork === 'mainnet'
isTestnetComputedRef<boolean>currentNetwork === 'testnet-10''testnet-12'
daaScoreReadonly<Ref<bigint>>即時 DAA 分數——與 useRpc().virtualDaaScore 相同的值
availableNetworksreadonly KaspaNetwork[]所有 5 個網路名稱(與 AVAILABLE_NETWORKS 常數相同)

方法

方法說明
switchNetwork(network)切換至新網路:中斷 RPC、更新 currentNetwork、重新連線。

可用網路

網路說明
'mainnet'Kaspa 生產網路
'testnet-10'公共測試網路(v10 共識)
'testnet-12'公共測試網路(v11 共識,DAGKNIGHT)
'simnet'用於測試的本機模擬網路
'devnet'本機開發網路

基本用法

vue
<script setup lang="ts">
import { useNetwork } from 'vue-kaspa'

const network = useNetwork()
</script>

<template>
  <div>
    <p>Network: {{ network.currentNetwork.value }}</p>
    <p>DAA score: {{ network.daaScore.value }}</p>

    <button
      v-for="n in network.availableNetworks"
      :key="n"
      @click="network.switchNetwork(n)"
      :disabled="network.currentNetwork.value === n"
    >
      {{ n }}
    </button>
  </div>
</template>

切換網路

ts
const network = useNetwork()

// Switch to testnet-10
await network.switchNetwork('testnet-10')
// network.currentNetwork.value === 'testnet-10'
// RPC automatically reconnected to a testnet-10 node

switchNetwork() 是非同步的——它會等待中斷與重連序列完成。

網路感知的加密操作

地址格式是網路特定的。呼叫 useCrypto() 方法時請使用 currentNetwork.value

ts
const network = useNetwork()
const crypto = useCrypto()

// Always use the active network when generating/deriving addresses
const keypair = crypto.generateKeypair(network.currentNetwork.value)
// mainnet  → 'kaspa:qr...'
// testnet  → 'kaspatest:qr...'

const { receive } = crypto.derivePublicKeys(
  phrase,
  network.currentNetwork.value,
  10,
)

或使用計算屬性讓地址隨網路變更而同步:

ts
const network = useNetwork()
const crypto = useCrypto()

const exampleAddress = computed(() =>
  network.isTestnet.value
    ? 'kaspatest:qqc4gu8kzf5z9hpd8hg9qmcqv9qv8ywc79pu8n58p6mcqvyyw64qhgu3mhnzf'
    : 'kaspa:qqc4gu8kzf5z9hpd8hg9qmcqv9qv8ywc79pu8n58p6mcqvyyw64qhgu3mhnzf'
)

單例

currentNetwork模組層級狀態——在應用程式中所有 useNetwork() 實例之間共享。在一個元件中呼叫 switchNetwork() 會影響所有讀取 currentNetwork 的元件。

檢查 mainnet 與 testnet

ts
const network = useNetwork()

if (network.isMainnet.value) {
  // Production behavior
  console.log('Real KAS — be careful!')
}

if (network.isTestnet.value) {
  // testnet-10 or testnet-12
  console.log('Test KAS — free to experiment')
}

Released under the MIT License.