您的位置:新浦京赌场娱乐场 > 产品评测 > Metamask隐私模式,重要!

Metamask隐私模式,重要!

2019-08-12 23:11

当你使用Metamask测试以太坊DApp时,如果出现莫名其妙的问题,检查一下web3.eth.accounts是否可以获取到账户,如果不能获取的话,那么最大的可能是你使用了新版的Metamask,并且默认启用了隐私模式。

以太坊

有两种办法来让你的DApp可以正常访问Metamask管理的账户:关闭隐私模式,或者修改JavaScript代码使其兼容Metamask的隐私模式。

在前一篇我们了解了学习以太坊的重要性,以及开发以太坊必须掌握的基础知识,这一篇我们通过开发一个简单的智能合同,循序渐进地掌握其开发流程。

> 如果希望快速掌握以太坊智能合约与DApp开发,可以访问汇智网的在线互动课程。一、关闭隐私模式

学习目标:

在metamask中首先进入设置,然后点击**security & privacy**,

1、以太坊开发环境搭建

在隐私模式菜单,选择**关闭隐私模式**即可:

2、准备账户

图片 1

3、用Solidity开发一个智能合同

二、兼容隐私模式

4、编译合同代码

在2018年11月,Metamask刚引入隐私模式时,该选项默认是关闭的。但是在

5、部署运行合同代码

最新的版本中,已经默认开启了隐私模式。要求每个用户都手动关闭隐私模式

以太坊开发环境搭建

是不现实的,因此更好的方案是修改我们的JavaScript代码来兼容隐私模式:

1、Solidity编译器,因为选择用Solidity语言来开发智能合同,官方提供了基于web的编译器Browser-Solidity,所以不需要进行单独的安装和配置。如果自己有兴趣安装独立的编译器,可参考官方教程。

```

2、安装以太坊客户端——geth(官方还提供了以太坊钱包),为了体验以太坊开发的每一个流程的细节,我们选择命令行客户端,以Mac为例,执行以下命令——

window.addEventListener('load', async () => {

brew tap ethereum/ethereum

// Modern dapp browsers...

brew install ethereum

if (window.ethereum) {

其它平台类似(windows、linux),可参考官方教程。

window.web3 = new Web3;

3、用geth启动客户端

try {

在Mac下打开命令行终端,执行以下命令

// Request account access if needed

geth --datadir testDir --dev console 2>>mytest.log

await ethereum.enable();

启动成功

// Acccounts now exposed

出现上图运行结果,代表启动成功。

web3.eth.sendTransaction({/* ... */});

命令参数说明:

} catch {

--dev 启用开发者网络(模式),在此模式下,默认预分配一个开发者账户并且会自动开启挖矿。

// User denied account access...

--datadir 后面的参数是区块数据及秘钥存放目录,这里指定目录名为 testDir。执行命令后,当前目录下新建一个testDir目录来存放数据。

}

console 表示进入控制台

}

2>> mytest.log 表示把控制台日志输出到mytest.log文件

// Legacy dapp browsers...

如果想看到实时的运行日志,可以新开一个命令行终端,然后执行以下命令

else if (window.web3) {

tail -f mytest.log

window.web3 = new Web3(web3.currentProvider);

准备账户

// Acccounts always exposed

为了能够部署智能合同代码,需要一个外部账户(合约账户只能运行不能部署合同代码),在命令行控制台执行以下命令

web3.eth.sendTransaction({/* ... */});

查看账户

}

eth.accounts

本文由新浦京赌场娱乐场发布于产品评测,转载请注明出处:Metamask隐私模式,重要!

关键词: