Skip to Content
dApp 接入

快速开始

了解如何检测、连接和与 Cardano 进行交互。

OneKey 实现了 CIP-30(Cardano dApp 连接器),确保与所有 Cardano dApp 兼容。它还提供 Nami 钱包兼容性。


Provider 检测

// OneKey 同时提供 onekey 和 nami 接口 const onekey = window.cardano?.onekey const nami = window.cardano?.nami // 检查可用性 if (!onekey) { throw new Error('未检测到 OneKey Cardano provider') } // 获取钱包信息 console.log('名称:', onekey.name) // 'OneKey' console.log('API 版本:', onekey.apiVersion) // '0.1.0' console.log('图标:', onekey.icon)

启用钱包

// 请求钱包访问 const api = await window.cardano.onekey.enable() // 现在可以使用完整的 API const networkId = await api.getNetworkId() console.log('网络:', networkId === 1 ? '主网' : '测试网')

检查是否已启用

const isEnabled = await window.cardano.onekey.isEnabled() if (isEnabled) { const api = await window.cardano.onekey.enable() // 使用 API... }

获取网络 ID

const api = await window.cardano.onekey.enable() const networkId = await api.getNetworkId() // 0 = 测试网, 1 = 主网 console.log('网络:', networkId)

获取余额

const balance = await api.getBalance() // 返回 CBOR 编码的值(十六进制字符串) console.log('余额 (CBOR):', balance) // 使用 cardano-serialization-lib 解码 import { Value } from '@emurgo/cardano-serialization-lib-browser' const value = Value.from_bytes(Buffer.from(balance, 'hex')) const lovelace = value.coin().to_str() console.log('余额:', parseInt(lovelace) / 1000000, 'ADA')

获取地址

// 获取已使用的地址(有交易历史的地址) const usedAddresses = await api.getUsedAddresses() console.log('已使用的地址:', usedAddresses) // 获取未使用的地址(新地址) const unusedAddresses = await api.getUnusedAddresses() console.log('未使用的地址:', unusedAddresses) // 获取找零地址 const changeAddress = await api.getChangeAddress() console.log('找零地址:', changeAddress) // 获取奖励/质押地址 const rewardAddresses = await api.getRewardAddresses() console.log('奖励地址:', rewardAddresses)

获取 UTxO

// 获取所有 UTxO const utxos = await api.getUtxos() console.log('UTxOs:', utxos) // 获取具有最小金额的 UTxO const utxosWithAmount = await api.getUtxos( '1000000' // 最小 1 ADA(以 lovelace 计,CBOR 编码) ) // 带分页 const paginatedUtxos = await api.getUtxos(undefined, { page: 0, limit: 10, })

事件处理

const api = await window.cardano.onekey.enable() // Nami 兼容的事件 API api.experimental.on('accountChange', (addresses) => { console.log('账户已变更:', addresses) })

Nami 兼容性

OneKey 提供 Nami 钱包兼容性:

// 通过 Nami 接口访问 const nami = window.cardano.nami const api = await nami.enable() // 与 OneKey 相同的 API const balance = await api.getBalance()
Last updated on