快上手
这里演示如何检测 UKey Wallet Algorand Provider、连接账户、启用 ARC-0001 接口,并配合 Algod/Indexer 客户端读取网络状态。
ℹ️
UKey Wallet Algorand Provider 同时支持传统接口和 ARC-0001 兼容接口,便于新旧项目接入。
找 Provider
// 检查 UKey Wallet Algorand provider
const provider = window.$ukey?.algo;
if (!provider) {
throw new Error("未检测到 UKey Wallet Algorand provider");
}
// 确认兼容性
console.log("isUKey:", provider.isUKey); // 布尔参考片段:true
连接(传统 API)
const { address } = await provider.connect();
console.log("连接结果:", address);
// 确认连接状态
console.log("isConnected:", provider.isConnected);
console.log("解析出的地址:", provider.address);
启用(ARC-0001)
const callResult = await provider.enable({
genesisID: "mainnet-v1.0",
genesisHash: "wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=",
});
console.log("当前账户信息:", callResult.accounts);
console.log("网络创世哈希:", callResult.genesisHash);
断连
await provider.disconnect();
console.log("连接已关闭");
事件流
看账户变化
provider.on("accountChanged", (address) => {
if (address) {
console.log("当前账户已切换为:", address);
} else {
console.log("连接已关闭");
}
});
监听连接
provider.on("connect", ({ address }) => {
console.log("连接结果:", address);
});
provider.on("disconnect", () => {
console.log("连接已关闭");
});
配合 Algod 客户端
从 Provider 获取客户端
// 读取预配置客户端
const algodClient = await provider.getAlgodv2Client();
const indexerClient = await provider.getIndexerClient();
// 调用方式如下该客户端
const status = await algodClient.status().do();
console.log("网络状态回报:", status);
手动设置客户端
import algosdk from "algosdk";
const algodClient = new algosdk.Algodv2(
"", // Token(公共节点可省略)
"https://mainnet-api.algonode.cloud",
"",
);
const indexerClient = new algosdk.Indexer(
"",
"https://mainnet-idx.algonode.cloud",
"",
);