跳到主要内容

快上手

这里演示如何检测 UKey Wallet Conflux Provider、请求账户、读取链信息和余额,并处理账户或网络变化事件。

ℹ️

UKey Wallet Conflux Provider 同时兼容 ConfluxPortal 和 Fluent 钱包接口,方便现有 Conflux DApp 迁移。


找 Provider

// 检查 UKey Wallet Conflux provider
const provider = window.$ukey?.conflux;

if (!provider) {
throw new Error("未检测到 UKey Wallet Conflux provider");
}

// 确认兼容性标记
console.log("isConfluxPortal:", provider.isConfluxPortal); // 布尔参考片段:true
console.log("isFluent:", provider.isFluent); // 布尔参考片段:true
console.log("isUKey:", provider.isUKey); // 布尔参考片段:true

请求授权

const accounts = await provider.request({
method: "cfx_requestAccounts",
});

console.log("连接结果:", accounts[0]);

检查连接

if (provider.isConnected()) {
const accounts = await provider.request({ method: "cfx_accounts" });
console.log("当前账户信息:", accounts);
}

读取链 ID

const chainId = await provider.request({ method: "cfx_chainId" });
console.log("返回的链 ID:", chainId); // 例如 '0x405' 表示主网

读取网络版本

const networkId = await provider.request({ method: "net_version" });
console.log("返回的网络 ID:", networkId); // 例如 '1029' 表示主网

读取余额

const balance = await provider.request({
method: "cfx_getBalance",
requestParams: [address, "latest_state"],
});

console.log("当前余额:", balance); // 以 Drip 为单位 (1 CFX = 10^18 Drip)

事件流

看账户变化

provider.on("accountsChanged", (accounts) => {
if (accounts.length === 0) {
console.log("连接已关闭");
} else {
console.log("当前账户已切换为:", accounts[0]);
}
});

监听链变更

provider.on("chainChanged", (chainId) => {
console.log("链已切换为:", chainId);
// 建议刷新页面
window.location.reload();
});

监听连接

provider.on("connect", ({ chainId, networkId }) => {
console.log("当前连接参数:", chainId, networkId);
});

provider.on("disconnect", () => {
console.log("连接已关闭");
});

地址样式

Conflux 使用 CIP-37 base32 地址。展示给用户时请保持网络前缀正确:

// 主网参考片段:cfx:...
// 测试网参考片段:cfxtest:...

// 主网地址参考值
const address = "cfx:aak2rra2njvd77ezwjvx04kkds9fzagfe6ku8scz91";

// 通过 js-conflux-sdk 在不同格式间转换
import { format } from "js-conflux-sdk";

const hexAddress = format.hexAddress(address);
const base32Address = format.address(hexAddress, 1029); // Network ID

网络

网络链 ID (十六进制)网络 ID
主网0x4051029
测试网0x11