MetaMask是一款浏览器插件钱包,不需下载安装客户端,只需添加至浏览器扩展程序即可使用,非常方便,并且可以很方便的调试和测试以太坊的智能合约。

1.安装Google Chrome浏览器

首先下载安装包:

$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

由于在进行解压安装包的时候,可能会发生——“在处理时有错误发生: google-chrome-stable”这个错误,因此我们先执行一条额外的命令:执行:apt-get -f install 。最后执行以下命令:

$ dpkg -i google-chrome-stable_current_amd64.deb

完毕后可在Ubuntu中搜索Chrome关键字找到下载好的浏览器,打开并固定到图标栏。

2.下载MetaMask插件

Chrome浏览器中——获取更多扩展程序,搜索MetaMask即可(需要科学上网,自行解决,笔者用的是WindScribe),MetaMask的下载网址为https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=zh-CN 安装完毕后,在浏览器上会显示该插件的狐狸小图标,点击小狐狸图标,会出现MetaMask的主操作界面: 1

我们可以使用MetaMask钱包申请创建一个新的以太坊钱包,不过通过这种方式创建的钱包是通过助记词来作为钱包备份恢复手段的,只能通过MetaMask钱包来恢复。所以在这里我们不通过MetaMask钱包来创建以太坊账号,而是在MyEtherWallet网站上申请创建。打开https://www.myetherwallet.com/ ,在Create New Wallet面板中输入密码,然后下载保存Keystore文件,作为以后备份恢复钱包的手段。

保存备份好以太坊钱包账户后,打开MetaMask,先随便输入密码进入主界面,然后点击右上角图标进入子菜单,点击Import Account导入我们之前申请的MyEtherWallet钱包账户:

2

导入方式为JSON File,在这里有个坑,由于MetaMask插件在Ubuntu系统的Chrome浏览器中有未修复的bug,不能直接通过插件来导入Json文件。先打开extension://nkbihfbeogaeaoehlefnkodbefgpgknn/popup.html,在新标签的扩展程序页面中进行导入。

完成以后,我们可以看到之前创建好的钱包已经导入到MetaMask中,此时以太币余额为0eth。点击左上角图标切换到测试网络中(第一个是以太网主网络),然后点击BUY按钮,利用ROPSTEN TEST FAUCET获取测试币。由于是测试网络,所以购买不需要花费钱。

3

我们可以从faucet账户中获取到ether,点击1次获取1eher的币,也可以点击下面的黄色按钮向faucet账户转账1、10或者100个ether。然后再返回我们的MetaMask插件,就可以看到钱包中有了代币。

3.通过MetaMask钱包在remix编译器上运行Solidity智能合约

打开浏览器编译器Remix:http://remix.ethereum.org,先输入以下HelloWorld测试代码,该代码中包含1个update()函数,传递amount参数,可以向账户中转账。

4

打开右边工具栏中的Run选项卡,在Environment中切换成Injected Web3,这就是我们的MetaMask钱包里面的测试网络。相应地,账户地址也变成了我们之前创建的以太坊钱包地址0x80e…70df6,可以看到当前剩余测试代币数量为11.990(原本是12个的,转账操作消耗了gas)。

然后我们点击Run下方的Create按钮,会在浏览器左边弹出MetaMask的交易确认消息框:

5

原因是我们在以太坊测试网络中部署智能合约也要消耗一定量的gas矿工费,点击SUBMIT确定,稍等片刻,我们的智能合约就布署好了。

6

在合约地址下方会出现update()函数及其参数框,输入2,确认,可以看到这里的update()操作也是需要修改区块链上数据并且需要消耗手续费的,所以在浏览器左边继续弹出交易信息确认框,点击确认。在MetaMask中,还可以查看每一笔交易的信息:

7

那么,我们如何知道我们刚才点击的update()函数是否生效呢?在代码区的下方,是控制台,可以看到,交易完成后,在以太坊测试网络中会有新的区块产生,并且返回数据:

8

value的值为10^18Wei,即1ether(Wei是以太坊的最小单位,含义是为了纪念戴伟这个密码学专家大牛)。

到此为止,我们就完成了MetaMask钱包插件的安装及简单使用,当然,在后续开发过程中,我们也可以将MetaMask钱包的网络切换到公网或者自己创建的私链。