web3与Metamask同步切换链

发布时间:2024-10-24 12:01

以前遇到一个需求:跨链转换代币,可能从以太链转到自己的链。再从自己的链转回以太链。
期望:当本地切换的时候,metamask的网络也跟着切换

推荐一个网络id和链名称的git库:https://github.com/ethereum-l...

大家都是老码农了,废话就不多说了。直接上代码

最完美的方式:

//添加网络 chainId 你需要切换的id
addOrChangeNetWork(chainId) {
        const toHex = (num) => {
            return \'0x\' + num.toString(16)
        }
        const chain = require(`@/moke/json/eip155-${chainId}.json`) 
        let net_data = {
            chainId: toHex(chain.chainId),
            chainName: chain.name,
            nativeCurrency: {
                name: chain.nativeCurrency.name,
                symbol: chain.nativeCurrency.symbol,
                decimals: chain.nativeCurrency.decimals
            },
            rpcUrls: chain.rpc,
            blockExplorerUrls: [chain.explorers && chain.explorers.length > 0 && chain.explorers[0].url ? chain.explorers[0].url : chain.infoURL]
        }
        web3.eth.getAccounts((error, accounts) => {
            window.ethereum
                .request({
                    method: \'wallet_addEthereumChain\',
                    params: [net_data, accounts[0]]
                })
                .then((result) => {
                    console.log(result, \'返回数据\')
                })
                .catch((error) => {
                    console.log(error,\'错误数据\')
                })
        })
    }

简单的方式:

window.ethereum.request({
    method: \'wallet_switchEthereumChain\',
    params: [
        {
            chainId: Web3.utils.numberToHex(1) //链id
        }
    ]
})

收工!

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号