Skip to Content

Ethereum / EVM

使用 OneKey 注入的 EIP-1193 Provider 构建 EVM dApp。所有 EVM 兼容链(Ethereum、Polygon、BSC、Arbitrum、Optimism、Base 等)共享同一个 Provider。


Provider 检测

EIP-6963(推荐)

现代多钱包检测,避免冲突:

const providers: any[] = [] window.addEventListener('eip6963:announceProvider', (e: any) => { providers.push(e.detail) }) window.dispatchEvent(new Event('eip6963:requestProvider')) // 通过 rdns 找到 OneKey const onekey = providers.find(p => p.info.rdns === 'so.onekey.app.wallet') const accounts = await onekey.provider.request({ method: 'eth_requestAccounts' })

直接访问(回退方案)

const provider = window.$onekey?.ethereum if (!provider) throw new Error('未检测到 OneKey') const accounts = await provider.request({ method: 'eth_requestAccounts' })

事件

// 账户变更 provider.on('accountsChanged', (accounts) => { console.log('账户:', accounts[0]) }) // 网络变更 provider.on('chainChanged', (chainId) => { console.log('链:', chainId) window.location.reload() // 推荐 }) // 已连接 provider.on('connect', (info) => { console.log('已连接到链:', info.chainId) })

错误码

错误码说明解决方案
4001用户拒绝优雅处理拒绝情况
4902未知链使用 wallet_addEthereumChain 添加链
-32602参数无效使用 0x 前缀的十六进制字符串
-32603内部错误检查请求格式

Chain ID

网络Chain ID十六进制
Ethereum 主网10x1
Polygon1370x89
BSC560x38
Arbitrum One421610xa4b1
Optimism100xa
Base84530x2105

更多链请访问 chainlist.org 

如需快速集成并使用 UI 组件,请使用 RainbowKitWeb3Modal

Last updated on