本文尝试将以太坊测试网络相关的问题整理清楚
测试网络名称
以太坊公开的测试网络共有4个,目前仍在运行的有3个。每个网络都有自己的创世区块和名字,按开始运行时间的早晚,依次为:
Morden(已退役)
Morden是以太坊官方提供的测试网络,自2015年7月开始运行。到2016年11月时,由于难度炸弹已经严重影响出块速度,不得不退役,重新开启一条新的区块链。Morden的共识机制为PoW。
Ropsten(区块链浏览器)
Ropsten也是以太坊官方提供的测试网络,是为了解决Morden难度炸弹问题而重新启动的一条区块链,目前仍在运行,共识机制为PoW。测试网络上的以太币并无实际价值,因此Ropsten的挖矿难度很低,目前在755M左右,仅仅只有主网络的0.07%。这样低的难度一方面使一台普通笔记本电脑的CPU也可以挖出区块,获得测试网络上的以太币,方便开发人员测试软件,但是却不能阻止攻击。
PoW共识机制要求有足够强大的算力保证没有人可以随意生成区块,这种共识机制只有在具有实际价值的主网络中才会有效。测试网络上的以太币没有价值,也就不会有强大的算力投入来维护测试网络的安全,这就导致了测试网络的挖矿难度很低,即使几块普通的显卡,也足以进行一次51%攻击,或者用垃圾交易阻塞区块链,攻击的成本及其低廉。
2017年2月,Ropsten便遭到了一次利用测试网络的低难度进行的攻击,攻击者发送了千万级的垃圾交易,并逐渐把区块Gas上限从正常的4,700,000提高到了90,000,000,000,在一段时间内,影响了测试网络的运行。攻击者发动这些攻击,并不能获得利益,仅仅是为了测试、炫耀、或者单纯觉得好玩儿。
共识机制:PoW
申请测试ETH地址
http://faucet.ropsten.be:3001/
Kovan(区块链浏览器)
为了解决测试网络中PoW共识机制的问题,以太坊钱包Parity的开发团队发起了一个新的测试网络Kovan。Kovan使用了权威证明(Proof-of-Authority)的共识机制,简称PoA。
PoW是用工作量来获得生成区块的权利,必须完成一定次数的计算后,发现一个满足条件的谜题答案,才能够生成有效的区块。
PoA是由若干个权威节点来生成区块,其他节点无权生成,这样也就不再需要挖矿。由于测试网络上的以太币无价值,权威节点仅仅是用来防止区块被随意生成,造成测试网络拥堵,完全是义务劳动,不存在作恶的动机,因此这种机制在测试网络上是可行的。
Kovan与主网络使用不同的共识机制,影响的仅仅是谁有权来生成区块,以及验证区块是否有效的方式,权威节点可以根据开发人员的申请生成以太币,并不影响开发者测试智能合约和其他功能。
共识机制:Aura PoA,https://wiki.parity.io/Aura.html
申请测试ETH地址
https://gitter.im/kovan-testnet/faucet
Rinkeby(区块链浏览器)
Rinkeby也是以太坊官方提供的测试网络,使用PoA共识机制。与Kovan不同,以太坊团队提供了Rinkeby的PoA共识机制说明文档,理论上任何以太坊钱包都可以根据这个说明文档,支持Rinkeby测试网络,目前Rinkeby已经开始运行。
共识机制:Clique PoA,https://github.com/ethereum/EIPs/issues/225
网络状态:https://www.rinkeby.io/#stats
申请测试ETH地址
https://faucet.rinkeby.io/
其它
除了上述四个测试网络之外,其实还有各种测试网络比如Parity中的Olymnpic以及Infura的infuranet,不过上面3个测试网络在开发过程中与生产网络一致性最好的。
连接测试网络
1.钱包以及客户端连接
这个比较简单,基本上做一个设置切换即可,比如下图的metamask
2.Truffle连接
第一种是让Truffle连接本地的客户端节点,然后通过本地客户端切换测试网络。
第二种是使用Infura作为测试网络provider,具体配置方法可以见下面的文章
http://truffleframework.com/tutorials/using-infura-custom-provider