快速开始
了解如何检测、连接和与 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