wallet_switchEthereumChain
请求 UKey Wallet 切换到指定 EVM 网络。如果钱包中尚未添加该网络,请先通过 wallet_addEthereumChain 添加。
入参
参数为数组,数组内包含一个对象:
| 字段 | 类别 | 必填 | 说明 |
|---|---|---|---|
chainId | string | 是 | 目标链 ID,带 0x 前缀的十六进制 |
结果
成功时返回 null。
示范
try {
await window.$ukey.ethereum.request({
method: "wallet_switchEthereumChain",
requestParams: [{ chainId: "0x89" }], // Polygon 主网
});
console.log("现已切换到 Polygon");
} catch (error) {
if (error.code === 4902) {
// 如果链还没加进钱包,就先尝试补加
await window.$ukey.ethereum.request({
method: "wallet_addEthereumChain",
requestParams: [
{
/* 这里填链配置 */
},
],
});
}
}
常用链 ID
| 链 | 十六进制 | 十进制 |
|---|---|---|
| Ethereum | 0x1 | 1 |
| Polygon | 0x89 | 137 |
| BSC | 0x38 | 56 |
| Arbitrum | 0xa4b1 | 42161 |
| Optimism | 0xa | 10 |
| Base | 0x2105 | 8453 |
| Avalanche | 0xa86a | 43114 |
错误码
| 错误码 | 消息 | 说明 |
|---|---|---|
| 4001 | 用户取消了本次请求 | 用户取消了网络切换 |
| 4902 | 无法识别的链 ID | 钱包里尚未配置该链 |
说明
- 如果目标链未配置,会返回
4902,此时可引导用户添加网络。 - 用户可能需要在钱包中确认切换操作。
- 切换完成后会触发
chainChanged,请在事件中刷新链相关状态。 - 遵循 EIP-3326 规范。
window.$ukey.ethereum.on("chainChanged", (chainId) => {
console.log("现已切换到链:", chainId);
// 建议操作:刷新页面
window.location.reload();
});