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日
    浏览(80)
  • Python网络爬虫进阶:自动切换HTTP代理IP的应用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月08日
    浏览(43)
  • Xamarin.Android实现界面自动添加控件

    有时需要在APP中动态的添加控件,因此记录下在Xamarin中的实现步骤。 VS2022社区版 UI的代码如何 活动中的代码如下: 工程代码 界面中添加控件,就是通过 AddView 方法实现的,方法有如下的重载版本: 参数 child 就是要添加的控件元素; LayoutParams 代表待添加元素的样式。但也

    2024年02月15日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包