MetaMask 钱包使用

Posted 深入浅出区块链

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MetaMask 钱包使用相关的知识,希望对你有一定的参考价值。

MetaMask 钱包是 EVM 链开发者及用户最常使用的钱包, MetaMask 有移动端版本和浏览器插件(也称为扩展程序)版本, 本文介绍的浏览器版本。

MetaMask 插件下载

MetaMask 在 Chrome谷歌浏览器(同Microsoft Edge浏览器)、FireFox火狐浏览器 均提供了插件。

我们打开MetaMask钱包的官网首页 https://metamask.io/ 后,可以点接跳转到插件市场安装。

在下载时,请一定要仔细查看URL 链接, 确保是 metamask.io, 谨防钓鱼,调转到插件市场的界面如下:

然后,直接点击添加到 Chrome ( 由于我已经添加过,上图显示的从 Chrome 移除), 这是最简单的安装方法。

在中国大陆会有部分用户无法打开插件市场, 如果你也无法打开,可以选择去 GitHub 下载 Zip 安装。

Metamask 的 GitHub 插件地址是: https://github.com/MetaMask/metamask-extension/releases/, 进入之后,可以看到如下下载包:

根据自己的浏览器,需要对应的zip包,下载解压。

然后进入到浏览器的扩展程序界面, 进入方法为:点击功能图标-> 选更多工具 -> 扩展程序, 如下图:

进入扩展程序界面后,点“加载已解压的扩展程序”:

选择之前的解压包即可。

安装完成之后, 会在浏览器地址栏的右侧出现一个“小狐狸”的图标,点击这个图标就可以进入Metamask 界面。

创建钱包账号

单击浏览器中的MetaMask图标,如果是第一次使用, 我们需要创建钱包:

然后一步步按找界面提示,输入密码,备份助记词,生成钱包后,点击右侧“小狐狸”图标, 界面如下:

此时你就创建好了一个钱包, 如上图 Account1 下方就是钱包的地址,这里为:0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266

地址类似于银行卡账号,钱包之间转账就是使用该地址。

导入钱包账号

如果你之前在其他钱包创建过账号,或者要导入Hardhat Forge Anvil 模拟节点生成的钱包, 可以使用 MetaMask 的导入功能:

填入账号的私钥进行导入:

MetaMask 导入账号需要填入私钥,如果你之前的备份的是助记词,这需要使用助记词推导出私钥在填入,推荐使用 Chaintool 工具的助记词推导功能,如下图:

:::tip

ChainTool 是由一些爱好者组成的开源组织开发的一系列开源工具,ChainTool 所有工具均开源,提供开发者值得信赖的工具。

:::

另外一个建议是,开发不同的项目尽量使用不同的钱包,从而有更好的隐私效果。

给钱包账户充值

创建好账户后,在体验转账或交易之前, 我们需要先给账号充值,我们可以先去测试网的水龙头(Faucet)获取一些测试币。

这里使用 Goerli 测试网的水龙头:https://goerlifaucet.com/

填入自己的地址, 点击"Send Me ETH" 即可,若水龙头网站不可用,这里收集了一些水龙头网站地址。

获取到测试币之后,然后把网络切换Goerli网络就可以体验转账了。

连接不同的 EVM 区块链

MetaMask 可以连接很多个不同的网络, 点击如下图切换到不同的网络:

以太坊测试网 Goerli , Sepolia 是 MetaMask 默认支持的网络,现在 EVM 有众多的兼容链, 如果我们要添加其他的网络,可以上 Chainlist 一键添加。

添加本地网络

在开发的时候,经常要让 MetaMask 链接本地的网络,例如 Hardhat,在“网络选择”列表的最下方有一个“添加网络”, 手动输入 RPC URL 及链 ID, 这里以 Hardhat node 网络为例,输入信息如下:

读完这篇文章,你应该知道如何使用 MetaMask 了。

你可以来这里挑战一下。


原教程链接:https://decert.me/tutorial/solidity/tools/metamask
Decert.me -- 码一个未来

火狐浏览器添加MetaMask钱包和本地开启私有链开发

火狐浏览器添加MetaMask钱包

  • 因为对其配置了代理工具,所以直接使用谷歌引擎搜索MetaMask钱包即可

 第一次使用,立即开始设置

 点击我同意,进行密码的创建

 牢记助记词,助记词及其关键,将其存储在安全的地方

区块链-开发 Metamask 连接私有节点,且导入节点账号

  •  第一步,Metamask设置节点连接。
  • (前提:需要自己手动搭建以太坊私有节点,我用的是geth,且搭建在ubtuntu上,关于ubtuntu搭建geth,请参考我的其余文章)
  • 点击设置

开启相关设置选项

 进入Ubuntu系统 创建账号信息和进行挖矿操作

  • 连接到Geth节点后,接下来需要设置coinbase或etherbase账户。创建账户可以使用personal对象的newAccout方法,并设置密码(密码不可见)。
  • coinbase()是指矿工地址,也就是默认eth.accounts[0]的位置,所有挖到的币都被存储到这个账户中
  • 命令如下         personal.newAccount()
  • 如果需要更改原有的coinbase账户地址,可以通过address.miner对象的setEtherBase函数进行操作。这个操作将使用新的账户替换原有的coinbase账户。
  • 命令如下        miner.setEtherbase("0x19b4029dad20824db6dc201437f9cac2a7e1fc5c")
  • 执行查询命令,可看到设置的地址已经生效了。此时挖矿可以启动了。由于只有一个矿工,将获得全部的挖矿奖励,coinbase账户的以太币会逐步增加。
  • 查看当前的用户  eth.accounts

开始挖矿

  •  start中的参数代表了用于挖矿的线程数量。
  • 命令如下    miner.start(8)
  • 这时切换到之前创建私有链的命令行窗口中,可以看到挖矿过程的输出结果。这里是指我们当时创建的第一个窗口。如果是第一次挖矿,需要生成DAG相关文件,这个需要花费一定的时间。第二次以后就不需要了。

  • 当使用输入日志的方式时,可以输入命令tail -f geth.log 来跟踪挖矿进度
  • 查看正在挖矿的账户0已经获得的以太币和未挖矿的账户1的以太币余额。查看钱包的余额命令如下,将0改为1即可查看第二个账户的余额。
  • 查看钱包的余额  eth.getBalance(eth.accounts[0])
  • 挖到一个区块会奖励5个以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户。
  • getBalance()返回值的单位是wei,wei是以太币的最小单位,1个以太币=10的18次方个wei。要查看有多少个以太币,可以用web3.fromWei()将返回值换算成以太币
  • 停止挖矿,命令如下   miner.stop()

 进行交易

  • 从账户0到账户1转账,需要先解锁账户才能转账,否则会报错。
  • 解锁命令如下   personal.unlockAccount(eth.accounts[0])
  • 发起交易,由账户0转账200以太币到账户1,命令如下
personal.unlockAccount(eth.accounts[0])
amount = web3.toWei(200,'ether')
eth.sendTransaction(from:eth.accounts[0],to:eth.accounts[1],value:amount)
  • 此时交易已经提交到区块链,返回了交易的hash,但还未被处理,本地交易池中有一个待确认的交易,可以使用 eth.getBlock(“pending”, true).transactions 查看当前待确认交易。
  • 要使交易被处理,必须要挖矿。这里我们启动挖矿,然后等待挖到一个区块之后就停止挖矿。命令如下:

miner.start(1);admin.sleepBlocks(1);miner.stop();
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
  • 此时,交易已经生效,账户1应该已经收到了200个以太币了。
  •  解锁账户的密码均是 123456

交互式执行环境

  • 这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符。在这个环境里也内置了一些用来操作以太坊的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:
  • eth:包含一些跟操作区块链相关的方法;
  • net:包含一些查看p2p网络状态的方法;
  • admin:包含一些与管理节点相关的方法;
  • miner:包含启动和停止挖矿的一些方法;
  • personal:主要包含一些管理账户的方法;
  • txpool:包含一些查看交易内存池的方法;
  • web3:包含了以上对象,还包含一些单位换算的方法。

 常用命令:

  • personal.newAccount():创建账户;
  • personal.unlockAccount():解锁账户;
  • eth.accounts:枚举系统中的账户;
  • eth.getBalance():查看账户余额,返回值的单位是 Wei(Wei 是以太坊中最小货币面额单位,类似比特币中的聪,1 ether = 10^18 Wei);
  • eth.blockNumber:列出区块总数;
  • eth.getTransaction():获取交易;
  • eth.getBlock():获取区块;
  • miner.start():开始挖矿;
  • eth.mining  查看是否正在挖矿,如果是True表明正在执行
  • miner.stop():停止挖矿;
  • web3.fromWei():Wei 换算成以太币;
  • web3.toWei():以太币换算成 Wei;
  • txpool.status:交易池中的状态;
  • admin.addPeer():连接到其他节点;
  • eth.getBlock(区块的高度) 命令查看区块的信息 
  • eth.getTransaction("交易生成的hash序列")  查看交易的详细信息 
  • eth.blockNumber  查看区块数量
  • eth.getBlock("pending", true).transactions  #查看本地交易池,待提交的交易

参考链接

以上是关于MetaMask 钱包使用的主要内容,如果未能解决你的问题,请参考以下文章

huobi 提币到 metamask钱包看不到的问题

metamask-mascara-在线钱包使用

火狐浏览器添加MetaMask钱包和本地开启私有链开发

Web3:访问 MetaMask 钱包中的私钥

有啥方法可以向 Metamask 钱包发起断开请求?

如何使用 Metamask 正确更新和检索帐户信息