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 钱包使用的主要内容,如果未能解决你的问题,请参考以下文章