以太坊测试网络 Ropsten、Kovan、Rinkeby

一条区块链由一个创世区块开始,也就是说,一个创世区块可以创造和代表一条区块链。如果我们给客户端设定不同的创世区块,它就将工作在不同的区块链上。工作在同一条区块链上的全部节点,我们称之为一个网络。

出于测试和学习的目的,使用与主网络不同的创世区块,开启一条全新的区块链,并在上面挖矿和测试,这就是测试网络(Testnet)

以太坊可以搭建私有的测试网络,不过由于以太坊是一个去中心化的平台,需要较多节点共同运作才能得到理想的测试效果,因此并不推荐自行搭建测试网络。

以太坊公开的测试网络共有4个,目前仍在运行的有3个。每个网络都有自己的创世区块和名字,按开始运行时间的早晚,依次为:

  • Morden(已退役)

Morden是以太坊官方提供的测试网络,自2015年7月开始运行。到2016年11月时,由于难度炸弹已经严重影响出块速度,不得不退役,重新开启一条新的区块链。Morden的共识机制为PoW。

Ropsten也是以太坊官方提供的测试网络,是为了解决Morden难度炸弹问题而重新启动的一条区块链,目前仍在运行,共识机制为PoW。测试网络上的以太币并无实际价值,因此Ropsten的挖矿难度很低,目前在755M左右,仅仅只有主网络的0.07%。这样低的难度一方面使一台普通笔记本电脑的CPU也可以挖出区块,获得测试网络上的以太币,方便开发人员测试软件,但是却不能阻止攻击。

PoW共识机制要求有足够强大的算力保证没有人可以随意生成区块,这种共识机制只有在具有实际价值的主网络中才会有效。测试网络上的以太币没有价值,也就不会有强大的算力投入来维护测试网络的安全,这就导致了测试网络的挖矿难度很低,即使几块普通的显卡,也足以进行一次51%攻击,或者用垃圾交易阻塞区块链,攻击的成本及其低廉。

2017年2月,Ropsten便遭到了一次利用测试网络的低难度进行的攻击,攻击者发送了千万级的垃圾交易,并逐渐把区块Gas上限从正常的4,700,000提高到了90,000,000,000,在一段时间内,影响了测试网络的运行。攻击者发动这些攻击,并不能获得利益,仅仅是为了测试、炫耀、或者单纯觉得好玩儿。

为了解决测试网络中PoW共识机制的问题,以太坊钱包Parity的开发团队发起了一个新的测试网络Kovan。Kovan使用了权威证明(Proof-of-Authority)的共识机制,简称PoA。

PoW是用工作量来获得生成区块的权利,必须完成一定次数的计算后,发现一个满足条件的谜题答案,才能够生成有效的区块。

PoA是由若干个权威节点来生成区块,其他节点无权生成,这样也就不再需要挖矿。由于测试网络上的以太币无价值,权威节点仅仅是用来防止区块被随意生成,造成测试网络拥堵,完全是义务劳动,不存在作恶的动机,因此这种机制在测试网络上是可行的。

Kovan与主网络使用不同的共识机制,影响的仅仅是谁有权来生成区块,以及验证区块是否有效的方式,权威节点可以根据开发人员的申请生成以太币,并不影响开发者测试智能合约和其他功能。

Kovan目前仍在运行,但仅有Parity钱包客户端可以使用这个测试网络。

Rinkeby也是以太坊官方提供的测试网络,使用PoA共识机制。与Kovan不同,以太坊团队提供了Rinkeby的PoA共识机制说明文档,理论上任何以太坊钱包都可以根据这个说明文档,支持Rinkeby测试网络,目前Rinkeby已经开始运行。

 

以太坊测试网络 Ropsten、Kovan、Rinkeby

目前开发人员最常用的测试网络是Rinkeby,我将演示一种最简单的连接和使用Rinkeby的方法。

1、下载以太坊钱包:ethereum/mist

根据使用的操作系统不同,在下图红框中选择合适的版本,下载解压。

155253_nXaD_2601303.png

MIST其实只是以太坊钱包的一个图形界面,后端还是官方的 Geth,只是可以使用图形化的方式操作,减少了出错的几率,降低使用门槛。MIST是使用 Electron 开发的,具有跨平台的能力,所以在各个系统上的界面和操作应该是基本一致的。

2、运行mist,选择测试网络。

17181447_21eb.png

可以看到我们是在测试网络Rinkeby上。

152859_4bIs_2601303.png

在测试网络上创建一个钱包地址,并给钱包加个密码。

153045_0cQW_2601303.png

提醒你保存好密码和keyfiles

153207_n2k8_2601303.png

一路“next”后,进入下面的界面。

153432_YHpp_2601303.png

等待测试网络的数据同步完成。

之后点击下面的“LAUNCH APPLICATION!”就可以进入主界面了。

注意:一定要确保左下角有个红色的Rinkeby字样,这表明你正在Rinkeby测试网络中。

点击右侧红框,就可以看到你的钱包地址的余额了,现在应该是0以太币。

17181447_QFQC.png

首次启动时,需要同步区块链,这需要一段时间,大约1小时左右。

3、获取测试网络上的以太币

Rinkeby测试网络使用的是PoA共识机制,我们不能通过挖矿来获取以太币。

想获取Rinkeby测试网络中的以太币,需要去申请,这个申请Rinkeby以太币的功能被称为水龙头(Faucet)。还真是挺形象的,水龙头会源源不断的产生以太币,并且受到权威节点控制,以确保不会被滥用。

进入这个水龙头的网站:Rinkeby: GitHub Faucet

181411_7pb7_2601303.png

为了确保不会出现有人滥用水龙头,无限生成Rinkeby以太币,水龙头需要借助github账号来确定申请者的身份和配额。没有Github账号的小伙伴记得要去注册一个,并且登陆。

进入https://gist.github.com/,把测试钱包账户的地址粘贴进去,并点击“Create public gist”,就像下图这样。

17181447_hkr0.png

点击之后,把浏览器上方的地址复制下来,粘贴到水龙头页面的输入框中。并点击“Give me Ether”,有三种选项,前面是获得的以太币数量,后面是冷却时间,在冷却时间过后才能进行下一次以太币申请

17181447_Z5gl.png

会提示你一会到账。如下图:

185742_EJOp_2601303.png

如果一切顺利,你会看到你的钱包地址已经多出了申请数量的以太币,我申请了3个以太币。

17181447_cT23.png

到Rinkeby的区块链浏览器查看一下,也能查到我的钱包地址

https://rinkeby.etherscan.io/address/0xb2faFfe0c568987672CF0fe004974e6b8f6298d8

如果申请的人数很多,需要排队等待一会儿,我自己在使用过程中,1分钟就到。

 

为什么申请测试网络的以太币如此繁琐呢?

以太币在以太坊平台中的设计功能是用来支付EVM中执行指令消耗的Gas,如果可以被无限制的产生,就会出现有恶意用户出于各种目的,用无限制的以太币换无限制的Gas,在EVM中执行超多的指令,并逐渐抬高区块Gas上限。EVM中的指令要在每一个以太坊节点中执行,这种攻击一旦出现,对网络将会产生很大的影响,所以测试网络中的以太币必须针对每个开发者限量供应。不过这个限量对正常的开发测试来说,几乎不会造成影响。

 

如果你看到了这里,并且成功的在自己的电脑上运行了钱包、连接测试网络、申请以太币,那么恭喜你,你已经做好了进一步学习和了解以太坊的准备。

 

以太坊测试网络 Ropsten、Kovan、Rinkeby

3.1 kovan 领取方式一

通过 https://faucet.kovan.network 领取,只能适合有 Github 账号的用户。

点击上面链接,通过 Github 账号登录。登录之后,粘贴输入你的 Metamask 账户地址。

然后点击 “Send me KETH”按钮,查看你的 Metamask 账户。正常的话,就可以收到 ETH 测试代币。

3.2 kovan 领取方式二

通过 https://gitter.im/kovan-testnet/faucet 领取。

点击上面网址进入网站,点击底部“SIGN IN TO START TALKING”进行登录。

支持 gitlab、github、twitter 三种方式登录,可以选择你已有账户登录。

登录之后,在最底部你头像旁边对话框粘贴输入你的 Metamask 账户地址。

我们在私链上通过geth生成账号地址后,会在你的私链存储位置生成 keystore 文件。如何获取你的账户地址对应的私钥呢? 1. 安装 keythereum 库keythereum 是以太坊提供的 ...