Skip to Content
本页目录

Ethereum / EVM

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


Provider 检测

EIP-6963(推荐)

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

let onekeyProvider = null const onAnnounce = (event) => { if (event.detail.info.rdns === 'so.onekey.app.wallet') { onekeyProvider = event.detail.provider } } window.addEventListener('eip6963:announceProvider', onAnnounce) window.dispatchEvent(new Event('eip6963:requestProvider')) // Call from your Connect button after the user selects OneKey. async function connectOneKey() { if (!onekeyProvider) throw new Error('OneKey has not announced a provider yet') return onekeyProvider.request({ method: 'eth_requestAccounts' }) } // On component cleanup: // window.removeEventListener('eip6963:announceProvider', onAnnounce)

直接访问(回退方案)

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

事件

// Account changed provider.on('accountsChanged', (accounts) => { console.log('Account:', accounts[0]) }) // Network changed provider.on('chainChanged', (chainId) => { console.log('Chain:', chainId) window.location.reload() // Recommended }) // Connected provider.on('connect', (info) => { console.log('Connected to chain:', info.chainId) })

错误码

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

Chain ID

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

更多链请访问 chainlist.org 。

如需快速集成并使用 UI 组件,请使用 RainbowKit 或 Web3Modal。

最后更新于