DAPP实现Metamask自动添加网络和切换网络

这篇具有很好参考价值的文章主要介绍了DAPP实现Metamask自动添加网络和切换网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.DAPP实现Metamask自动添加网络/切换网络:

实现方法调用matamask的wallet_switchEthereumChain方法

    async addNetwork() {
        // console.log("当前链接的节点为:", getInjectedProviderName())
        if (getInjectedProviderName() !== "MetaMask") {
            throw "This Network is Error";
        }
        let chain_info = ChainInfo[ChainId];

        try {
            await this.web3.currentProvider.request({
                method: 'wallet_switchEthereumChain',
                params: [{ chainId: this.web3.utils.numberToHex(chain_info.chainId), }],
            });
        } catch (switchError: any) {
            // This error code indicates that the chain has not been added to MetaMask.
            if (switchError.code === 4902) {
                await this.web3.currentProvider.request({
                    method: 'wallet_addEthereumChain',
                    params: [
                        {
                            chainId: this.web3.utils.numberToHex(chain_info.chainId),
                            chainName: chain_info.chainParams.chainName,
                            rpcUrls: chain_info.chainParams.rpcUrls,
                            blockExplorerUrls: chain_info.chainParams.blockExplorerUrls,
                            nativeCurrency: chain_info.chainParams.nativeCurrency
                        },
                    ],
                });
            }
        }
    }

2.常用的Metamask网络列表

下面为常用的网络列表和区块浏览器地址:文章来源地址https://www.toymoban.com/news/detail-505967.html

 const CHAIN_DATA_LIST = {
    1: {
        chainId: 1,
        chain: "ETH",
        network: "mainnet",
        networkId: 1,
        chainParams: {
            chainName: "Ethereum Chain Mainnet", // 添加到钱包后显示的网络名称
            rpcUrls: [
                'https://mainnet.infura.io/v3/', // rpc地址
            ],
            // iconUrls: [
            //     'https://testnet.hecoinfo.com/favicon.png' // 网络的图标
            // ],
            blockExplorerUrls: [
                'https://etherscan.io' // 网络对应的区块浏览器
            ],
            nativeCurrency: {  // 网络主币的信息
                name: 'ETH',
                symbol: 'ETH',
                decimals: 18
            }
        }
    },
    2: {
        chainId: 2,
        chain: "EXP",
        network: "expanse",
        networkId: 1
    },
    3: {
        chainId: 3,
        chain: "ETH",
        network: "ropsten",
        networkId: 3,
        chainParams: {
            chainName: "Ethereum Chain Ropsten",
            rpcUrls: [
                'https://ropsten.infura.io/',	
            ],
            blockExplorerUrls: [
                'https://ropsten.etherscan.io'
            ],
            nativeCurrency: {
                name: 'RopstenETH',
                symbol: 'RopstenETH',
                decimals: 18
            }
        }
    },
    4: {
        chainId: 4,
        chain: "ETH",
        network: "rinkeby",
        networkId: 4,
        chainParams: {
            chainName: "Ethereum Chain Rinkeby",
            rpcUrls: [
                'https://rinkeby.infura.io/v3/',
            ],
            blockExplorerUrls: [
                'https://rinkeby.etherscan.io'
            ],
            nativeCurrency: {
                name: 'RinkebyETH',
                symbol: 'RinkebyETH',
                decimals: 18
            }
        }
    },
    5: {
        chainId: 5,
        chain: "ETH",
        network: "goerli",
        networkId: 5,
        chainParams: {
            chainName: "Ethereum Chain Goerli",
            rpcUrls: [
                'https://goerli.infura.io/v3/',
            ],
            blockExplorerUrls: [
                'https://goerli.etherscan.io'
            ],
            nativeCurrency: {
                name: 'GoerliETH',
                symbol: 'GoerliETH',
                decimals: 18
            }
        }
    },
    6: {
        chainId: 6,
        chain: "ETC",
        network: "kotti",
        networkId: 6
    },
    8: {
        chainId: 8,
        chain: "UBQ",
        network: "ubiq",
        networkId: 88
    },
    9: {
        chainId: 9,
        chain: "UBQ",
        network: "ubiq-testnet",
        networkId: 2
    },
    11: {
        chainId: 11,
        chain: "META",
        network: "metadium",
        networkId: 11
    },
    12: {
        chainId: 12,
        chain: "META",
        network: "metadium-testnet",
        networkId: 12
    },
    18: {
        chainId: 18,
        chain: "TST",
        network: "thundercore-testnet",
        networkId: 18
    },
    30: {
        chainId: 30,
        chain: "RSK",
        network: "rsk",
        networkId: 30
    },
    31: {
        chainId: 31,
        chain: "RSK",
        network: "rsk-testnet",
        networkId: 31
    },
    42: {
        chainId: 42,
        chain: "ETH",
        network: "kovan",
        networkId: 42
    },
    56: {
        chainId: 56,
        chain: "BSC",
        network: "binance",
        networkId: 56,
        chainParams: {
            chainName: "Binance Smart Chain Mainnet", // 添加到钱包后显示的网络名称
            rpcUrls: [
                'https://bsc-dataseed.binance.org/', // rpc地址
            ],
            blockExplorerUrls: [
                'https://bscscan.com' // 网络对应的区块浏览器
            ],
            nativeCurrency: {  // 网络主币的信息
                name: 'BNB',
                symbol: 'BNB',
                decimals: 18
            }
        }
    },
    60: {
        chainId: 60,
        chain: "GO",
        network: "gochain",
        networkId: 60
    },
    61: {
        chainId: 61,
        chain: "ETC",
        network: "etc",
        networkId: 1
    },
    62: {
        chainId: 62,
        chain: "ETC",
        network: "etc-morden",
        networkId: 2
    },
    63: {
        chainId: 63,
        chain: "ETC",
        network: "etc-testnet",
        networkId: 7
    },
    64: {
        chainId: 64,
        chain: "ELLA",
        network: "ellaism",
        networkId: 64
    },
    76: {
        chainId: 76,
        chain: "MIX",
        network: "mix",
        networkId: 76
    },
    77: {
        chainId: 77,
        chain: "POA",
        network: "poa-sokol",
        networkId: 77
    },
    88: {
        chainId: 88,
        chain: "TOMO",
        network: "tomochain",
        networkId: 88
    },
    97: {
        chainId: 97,
        chain: "BSCT",
        network: "binance-test",
        networkId: 97
    },
    99: {
        chainId: 99,
        chain: "POA",
        network: "poa-core",
        networkId: 99
    },
    100: {
        chainId: 100,
        chain: "XDAI",
        network: "xdai",
        networkId: 100
    },
    101: {
        chainId: 101,
        chain: "ETI",
        network: "etherinc",
        networkId: 1
    },
    108: {
        chainId: 108,
        chain: "TT",
        network: "thundercore",
        networkId: 108
    },
    162: {
        chainId: 162,
        chain: "PHT",
        network: "sirius",
        networkId: 162
    },
    163: {
        chainId: 163,
        chain: "PHT",
        network: "lightstreams",
        networkId: 163
    },
    211: {
        chainId: 211,
        chain: "FTN",
        network: "freight",
        networkId: 0
    },
    269: {
        chainId: 269,
        chain: "HPB",
        network: "hpb",
        networkId: 100
    },
    385: {
        chainId: 385,
        chain: "CRO",
        network: "lisinski",
        networkId: 385
    },
    820: {
        chainId: 820,
        chain: "CLO",
        network: "callisto",
        networkId: 1
    },
    821: {
        chainId: 821,
        chain: "CLO",
        network: "callisto-testnet",
        networkId: 2
    },
    137: {
        chainId: 137,
        chain: "MATIC",
        network: "matic",
        networkId: 137
    },
    80001: {
        chainId: 80001,
        chain: "MUMBAI",
        network: "mumbai",
        networkId: 80001
    },
    246529: {
        chainId: 246529,
        chain: "ARTIS sigma1",
        network: "artis-s1",
        networkId: 246529
    },
    246785: {
        chainId: 246785,
        chain: "ARTIS tau1",
        network: "artis-t1",
        networkId: 246785
    }
};

到了这里,关于DAPP实现Metamask自动添加网络和切换网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用nvm实现nodejs版本管理(版本删除,版本切换,版本添加)

    为何使用nvm进行管理node 在开发项目的过程中,遇到同时维护两个或者更多的项目,由于不同项目所用的node环境不同,单纯的安装最新版本的node或者低版本node,不能适用所有的项目,这样就想如果有个工具可以实现node版本的切换就方便多了,nvm就是管理node的一个很实用的工具 安装

    2023年04月09日
    浏览(79)
  • Python网络爬虫进阶:自动切换HTTP代理IP的应用

    前言 当你决定做一个网络爬虫的时候,就意味着你要面对一个很大的挑战——IP池和中间件。这两个东西听起来很大上,但其实就是为了让你的爬虫不被封杀了。下面我就来给你讲讲如何搞定这些东西。 第一步:创建爬虫IP池的详细过程 首先,你得有一批代理IP,这可不是随

    2024年01月19日
    浏览(50)
  • vue实现弹出框内嵌页面展示,添加tab切换展示实时加载

    最近做业务的时候,发现产品的原型图上有一个弹出框,上面包含了两个窗口要进行切换。 每个窗口都有分页列表展示、搜索、添加和删除,感觉就是两个完整的页面,如果全写在一个页面会很麻烦,还可能会出现一系列的问题,后期改起来比较麻烦,所以我就准备分开来写

    2024年02月16日
    浏览(37)
  • 无头浏览器puppeteer自动调用Dapp交易

    自动化调用dapp的方法一种是直接调用合约的方法进行交易,另一种是用无头浏览器通过操作dapp页面进行自动化交易。用到了puppeteer和@chainsafe/dappeteer两个库; puppeteer:无头浏览器 @chainsafe/dappeteer: 是封装好的在无头浏览器操作MataMask插件的库 以下是示例代码

    2024年02月17日
    浏览(40)
  • html 中video实现切换视频自动播放

    vue2实现的网页中播放视频,主要代码如下: 现在遇到的问题的,视频切换后要手动点击才能播放,是否可以实现切换视频后会自动播放不用手动点击 增加 autoplay 属性就可以了。 要实现切换视频后自动播放,您需要在 video 元素上使用 autoplay 属性。该属性会告诉浏览器在视频

    2024年01月22日
    浏览(38)
  • 基于zookeeper实现服务节点HA主备自动切换

    Spring Boot 主备切换可以采用数据库的主从同步、Zookeeper选举、Redis Sentinel等技术实现高可用。 其中,数据库的主从同步可以通过配置数据库的主从复制来实现。在主节点出现故障时,从节点可以自动接管并成为新的主节点。这种方式实现简单,但需要手动配置主从复制。 Zo

    2024年01月16日
    浏览(35)
  • 【Vue】输入框状态切换&自动获取输入框焦点の实现

    场景:点击 button 按钮展示输入框,并自动获取对话框焦点,失去焦点时展示 button 按钮 实现: 点击 button 按钮展示输入框,失去焦点时展示 button 按钮 在data中定义 visibility ,确定输入框的展示状态,默认为 false 定义 changeVisibility 方法,并给 button 绑定点击事件@ click=\\\"changeVi

    2024年02月12日
    浏览(36)
  • Mysql 搭建MHA高可用架构,实现自动failover,完成主从切换

    目录 自动failover MHA: MHA 服务 项目:搭建Mysql主从复制、MHA高可用架构 实验项目IP地址配置: MHA下载地址 项目步骤:  一、修改主机名 二、编写一键安装mha node脚本和一键安装mha mangaer脚本,并执行安装 三、搭建Mysql主从复制集群(注意所有的Mysql主从复制机器都需要打开二

    2024年02月13日
    浏览(40)
  • ganache私链部署智能合约+本地网络Dapp

    参考自(3条消息) 区块链投票应用:使用solidity+truffle+metamsk开发Dapp应用_一袋芋头的博客-CSDN博客下载了项目示例webpack之后   我们需要将里面的其他合约都删除,也可以直接删除这两个文件夹里的内容  然后就可以开始正片了(当然,你得先前就安装好环境) 开启ganache私链,

    2024年02月08日
    浏览(41)
  • Selenium添加Cookie来实现自动登录

    最近在学习写python的自动化脚本,但是发现测试工具打开之后的网页是没有用户自己打开浏览器时记录的cookie,简单来说也就是打开的网站不会自己登录,所以想要简单的实现下如何用cookie来登录 总的来说分两步 第一步获取你登录的cookie,以csdn为例 然后在控制台你就可以得到一

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包