跳到主要内容

快上手

这里演示如何检测 UKey Wallet Sui Provider、请求授权、读取账户和网络状态,并在应用中监听变化。

ℹ️

UKey Wallet 实现 Sui Wallet Standard,可被兼容该标准的钱包工具和 DApp 检测到。


找 Provider

// 检查 UKey Wallet Sui provider
const provider = window.$ukey?.sui;

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

检查权限

// 确认当前是否已连接
const hasPermission = await provider.hasPermissions();

if (hasPermission) {
const accounts = await provider.getAccounts();
console.log("已连接的账户:", accounts);
}

请求授权连接

// 请求连接授权
const callResult = await provider.requestPermissions();

if (callResult) {
const accounts = await provider.getAccounts();
console.log("连接结果:", accounts[0].address);
}

读取账户

const accounts = await provider.getAccounts();

accounts.forEach((account) => {
console.log({
address: account.address, // Sui 账户地址
publicKey: account.publicKey, // 十六进制公钥字符串
});
});

读取当前链

const chain = await provider.getActiveChain();

console.log("当前链标识:", chain); // 例如 'sui:testnet'

检查连接状态

const isConnected = provider.isConnected();
console.log("连接结果:", isConnected);

断连

await provider.disconnect();

事件监听

看账户变化

provider.onAccountChange((account) => {
if (account) {
console.log("当前账户已切换为:", account.address);
} else {
console.log("连接已关闭");
}
});

监听网络变更

provider.onNetworkChange((network) => {
console.log("网络已切换为:", network);
});

使用 Sui Wallet Kit

React 项目可以使用 Sui Wallet Kit。UKey Wallet 会通过 Wallet Standard 自动出现在钱包列表中:

npm install @mysten/dapp-kit @mysten/sui.js @tanstack/react-query
import { SuiClientProvider, WalletProvider } from "@mysten/dapp-kit";
import { getFullnodeUrl } from "@mysten/sui.js/client";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";

const queryClient = new QueryClient();
const networks = {
mainnet: { url: getFullnodeUrl("mainnet") },
testnet: { url: getFullnodeUrl("testnet") },
};

function SuiWalletShell() {
return (
<QueryClientProvider client={queryClient}>
<SuiClientProvider networks={networks} defaultNetwork="mainnet">
<WalletProvider>
<YourApp />
</WalletProvider>
</SuiClientProvider>
</QueryClientProvider>
);
}

UKey Wallet 会通过 Sui Wallet Standard 自动被检测。