作者简介:云计算领域优质创作者新星计划第三季python赛道TOP1 阿里云ACE认证高级工程师
✒️个人主页:小鹏linux
个人社区:小鹏linux(个人社区)欢迎您的加入!
目录
1. 创世区块
2. 主网络与测试网络
3. 以太坊的测试网络
3.1 Morden(已退役)
3.2 Ropsten(区块链浏览器)
3.3 Kovan(区块链浏览器)
3.4 Rinkeby(区块链浏览器)
4. 连接测试网络
5. 获取测试网络上的以太币
1. 创世区块
众所周知,区块链是一个类似于链表的结构,每一个区块都具有唯一的Hash值,后一个区块通过记录前一个区块的Hash值,来表明父子关系。一条区块链可以无限延伸,然而却一定要有一个开端,一个让这条区块链从无到有的区块,这个区块的名字就叫创世区块(Genesis Block)。创世区块最显著的特征就是没有父区块,通常创世区块不是由矿工挖掘出来的,而是预先生成好并将创世区块的Hash写进了钱包软件的代码中。 在以太坊钱包的官方实现Geth的代码中,我们可以找到这个创世区块的Hash。 |
源代码:params/config.go |
var (MainnetGenesisHash = common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3") // Mainnet genesis hash to enforce below configs onTestnetGenesisHash = common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d") // Testnet genesis hash to enforce below configs on)
其中的0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3就是创世区块的Hash了。到区块链浏览器中看一下,果然如此,高度为0的创世区块。 |
等等,下面那个TestnetGenesisHash = 0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d是什么鬼,为什么区块链浏览器中查不到? |
2. 主网络与测试网络
前面说到一条区块链由一个创世区块开始,也就是说,一个创世区块可以创造和代表一条区块链。如果我们给钱包客户端设定不同的创世区块,它就将工作在不同的区块链上。 |
工作在同一条区块链上的全部节点,我们称之为一个网络。
绝大多数人在使用的网络被称为主网络(Mainnet),用户在其上交易、构建智能合约,矿工在其上wakuang。由于使用的人数众多,主网络的鲁棒性很强,能够对抗攻击,区块链也不易被篡改,因此主网络是具有功能的,其上的以太币是有价值的。 通常一种区块链只有一个主网络,比如比特币,莱特币,以太坊,都只有一个主网络。主网络之外可以有若干个测试网络。 既然已经有了一个主网络,为什么还要弄出测试网络呢? |
主网络中的以太币是有价值的,在主网络上直接进行钱包软件或者智能合约的开发将会是非常危险的,稍有不慎就会损失以太币,甚至影响整个主网络的运行。同时,因为主网络使用人数多,矿工更是不计其数,如果是在开发一个wakuang软件,用一台开发软件的笔记本电脑几乎不可能挖出一个区块,这就导致测试几乎不可行。 于是,出于测试和学习的目的,便会有一小部分节点,使用与主网络不同的创世区块,开启一条全新的区块链,并在上面wakuang和测试,这就是测试网络(Testnet)。 |
3. 以太坊的测试网络
以太坊可以搭建私有的测试网络,不过由于以太坊是一个去中心化的平台,需要较多节点共同运作才能得到理想的测试效果,因此并不推荐自行搭建测试网络。 以太坊公开的测试网络共有4个,目前仍在运行的有3个。每个网络都有自己的创世区块和名字,按开始运行时间的早晚,依次为: |
3.1 Morden(已退役)
Morden是以太坊官方提供的测试网络,自2015年7月开始运行。到2016年11月时,由于难度炸弹已经严重影响出块速度,不得不退役,重新开启一条新的区块链。Morden的共识机制为PoW。 |
3.2 Ropsten(区块链浏览器)
Ropsten也是以太坊官方提供的测试网络,是为了解决Morden难度炸弹问题而重新启动的一条区块链,目前仍在运行,共识机制为PoW。测试网络上的以太币并无实际价值,因此Ropsten的wakuang难度很低,目前在755M左右,仅仅只有主网络的0.07%。这样低的难度一方面使一台普通笔记本电脑的CPU也可以挖出区块,获得测试网络上的以太币,方便开发人员测试软件,但是却不能阻止攻击。 PoW共识机制要求有足够强大的算力保证没有人可以随意生成区块,这种共识机制只有在具有实际价值的主网络中才会有效。测试网络上的以太币没有价值,也就不会有强大的算力投入来维护测试网络的安全,这就导致了测试网络的wakuang难度很低,即使几块普通的显卡,也足以进行一次51%攻击,或者用垃圾交易阻塞区块链,攻击的成本及其低廉。 2017年2月,Ropsten便遭到了一次利用测试网络的低难度进行的攻击,攻击者发送了千万级的垃圾交易,并逐渐把区块Gas上限从正常的4,700,000提高到了90,000,000,000,在一段时间内,影响了测试网络的运行。攻击者发动这些攻击,并不能获得利益,仅仅是为了测试、炫耀、或者单纯觉得好玩儿。 |
3.3 Kovan(区块链浏览器)
为了解决测试网络中PoW共识机制的问题,以太坊钱包Parity的开发团队发起了一个新的测试网络Kovan。Kovan使用了权威证明(Proof-of-Authority)的共识机制,简称PoA。 PoW是用工作量来获得生成区块的权利,必须完成一定次数的计算后,发现一个满足条件的谜题答案,才能够生成有效的区块。 PoA是由若干个权威节点来生成区块,其他节点无权生成,这样也就不再需要wakuang。由于测试网络上的以太币无价值,权威节点仅仅是用来防止区块被随意生成,造成测试网络拥堵,完全是义务劳动,不存在作恶的动机,因此这种机制在测试网络上是可行的。 Kovan与主网络使用不同的共识机制,影响的仅仅是谁有权来生成区块,以及验证区块是否有效的方式,权威节点可以根据开发人员的申请生成以太币,并不影响开发者测试智能合约和其他功能。 Kovan目前仍在运行,但仅有Parity钱包客户端可以使用这个测试网络。 |
3.4 Rinkeby(区块链浏览器)
Rinkeby也是以太坊官方提供的测试网络,使用PoA共识机制。与Kovan不同,以太坊团队提供了Rinkeby的PoA共识机制说明文档,理论上任何以太坊钱包都可以根据这个说明文档,支持Rinkeby测试网络,目前Rinkeby已经开始运行。 |
4. 连接测试网络
目前开发人员最常用的测试网络是Rinkeby,我将演示一种最简单的连接和使用Rinkeby的方法。 下载以太坊钱包:https://link.zhihu.com/” />
5. 获取测试网络上的以太币
|