跳到主要内容

快上手

这里演示如何检测 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",
"",
);