测试网络是模拟区块链主网的替代网络,其创建目的是为了测试和试验主网区块链的功能,以减少实际运行式产生的错误,例如真实资金的损失。 这些区块链测试网可以比作传统 Web 开发中的「模拟环境」,开发人员可以在测试网中调试协议升级和智能合约,然后再部署到主网。
根据这些网络跟主网之间的相似程度,一些测试网络使用与主网络相同的底层技术和共识机制,而一些测试网络使用与主网不同的技术和共识机制。 需要注意的一个重要区别是,从测试网络获得的代币没有经济价值。
Olympic 测试网 – 2015 年初
有史以来第一个公共以太坊测试网络被称为 Olympic,并在以太坊主网正式启动之前发布。 Olympic 测试网是一个工作量证明测试网络,是为了在以太坊主网络正式公开发布之前,进行第九次也是最后一次测试。
Olympic 测试网通过激励应用程序开发人员、数据提供商和交易所发送高负荷交易,对网络进行压力测试,尝试将测试网络推向极限状态。
Olympic 测试网络被称为以太坊 0.9,网络 ID 为 0。在以太坊主网络成功公开发布后,它于 2015 年 7 月停止。
Morden 测试网 ——2015 年 7 月
在以太坊公共主网启动后,需要一个新的公共测试网络与主网携手并进。 于是 Morden 测试网,另一个工作量证明测试网络诞生了。
该网络的 ID 为 2,在 2016 年 11 月被弃用之前的一年多的时间里,它是唯一的以太坊测试网络。Morden 测试网主要用于测试两个最主要的以太坊客户端 Geth和Parity之间的垃圾数据和一些仅测试网的共识问题 。
虽然 Morden 网络已被以太坊团队放弃,但它仍然活跃在 Ethereum Classic 社区中,并更名为 Morden Classic 测试网络。
Ropsten 测试网 - 2016 年 11 月
Ropsten是以太坊的第三个也是最后一个工作量证明测试网络。它在主网升级后推出,这个新的测试网络是以瑞典斯德哥尔摩的一个地铁站命名。
Ropsten 测试网络支持所有主要的以太坊客户端,并且是唯一可用的工作证明共识机制测试网络。
2017 年 2 月,Ropsten 测试网络遭受了一次严重的拒绝服务攻击。 这次攻击导致网络速度减慢并消耗过多的磁盘空间,使得以太坊客户端很难与 Ropsten 网络同步。 同时逐渐将 Gas 限制从 470 万增加到大约 90 亿,每当发送大笔交易时都会使网络瘫痪并产生大量垃圾区块。
Ropsten 团队在 2017 年 3 月通过社区捐赠的 GPU 哈希算力成功地恢复了网络,清除了因攻击而积累的所有垃圾区块。
Kovan 测试网 - 2017 年 3 月
2017 年 2 月对 Ropsten 测试网络的攻击导致了其他几个测试网络的诞生。
Kovan测试网由 Parity 团队创建。 Kovan 和攻击后启动的其他测试网络一样,主要为了满足开发人员测试其应用程序的稳定且与客户端兼容的测试网络的需求而诞生的。
Kovan 测试网络使用权威证明共识机制,为了保证安全,该机制通过维护一小部分受信任的签名者和验证者而牺牲了去中心化。这些签名者和验证者通过质押他们的声誉来在网络中创建新区块。
由于这些验证者的身份是已知的,为了保护他们的声誉,他们会积极维护网络。
与 Ropsten 一样,Kovan 测试网络是以新加坡的一个地铁站命名的。它的网络 ID 为 42,创建一个新块大约需要 4 秒。该测试网络没有获得一些主要的以太坊客户端(例如 Geth)的支持,并且不能完全再现当前的生产环境(PoW 主网)。
尽管 Kovan 测试网络与 Ropsten 测试网络相比是一个更稳定、更快速的测试环境,因为不需要 CPU 密集型挖矿来维持网络,但业内许多人仍然认为它是:
一个不优雅的解决方案,因为以太坊应该有一个动态的区块限制。不可移植,因为其他客户端需要自己实现新的分叉逻辑。与同步模式不兼容
Kovan 网络今天仍然活跃,并且仍然是社区中许多团队最喜欢的测试网。
Rinkeby 测试网 - 2017 年 4 月
由于 Kovan 测试网络是因为 Ropsten 攻击而迅速启动,以太坊团队创建了 Rinkeby 测试网作为长期解决方案,该解决方案使用Clique POA(权威证明)。
该网络也是以斯德哥尔摩的一个地铁站命名的,网络 ID 为 4,出快间隔时间为 15 秒。
新的权威证明网络易于实施并嵌入到任何的以太坊客户端中。它还允许使用现有的同步技术,如 Fast、Light 和 Warp,而无需客户端开发人员向应用添加自定义逻辑。
它将通过以下方式维护随时间变化的受信任签名者列表:
首先,将区块头中的 32 字节「extra-data」字段重新用于保存 secp256k1 签名的 65 字节字段,允许任何获得区块的人根据授权签名者列表对其进行验证。这意味着区块头的「miner」部分已经过时。然后,重新利用刚过时的「miner」字段和权威证明过时的「nonce」字段,在常规区块中创建投票协议。 这两个字段初始值设置为零,但如果签名者希望对授权签名者列表进行更改,他们必须将「miner」字段设置为他们希望投票的签名者,并将「nonce」设置为 0 或 '0xff...f」 以表示投票赞成添加或踢出签名者。
在区块处理过程中,任何同步链的客户端都可以计票,从而通过大众投票维护动态变化的授权签名者列表。
尽管以太坊团队努力创建标准的权威证明协议,但 Rinkeby 仅得到 Geth 以太坊客户端的支持,这为创建另一个所有主要客户端都支持的测试网络留出了空间。
Gorli 测试网 – 2018 年 9 月
该测试网络作为一个黑客马拉松项目,由 Chainsafe 团队在 ETHBerli 上启动。 它试图通过 Go 语言重写 Parity 的 Aura Proof-of-Authority共识机制(主要用 Rust 编写)的方式来实现其功能。
当 Afri Scohedon 与 Chainsafe 团队一起创建「下一代」PoA 公共测试网络时,它成为了一个官方项目。该网络与所有主要的以太坊客户端兼容,包括 Geth、Parity、Hyperledger Besu、Nethermind 等。
团队采取的早期步骤包括:
在以太坊改进提案 (EIP-225) 中充分指定权威证明引擎,例如 Aura 或 Clique。在不同的客户端上实施这些引擎中的一个或多个。基于模拟主网络可用实现条件,引入一个简单的新权威证明测试网络。
通过这些步骤,Gorli 网络在 2019 年初成功启动。至今它仍然是唯一能够保证一致可用性的权威证明网络。
Gorli 网络的网络 ID 为 5,链 ID 为 5,平均出块时间为 15 秒。它的状态指示板和资源管理器可以在链接中查看。
关于测试网历史的最终想法
今天有许多可用的以太坊测试网络,每个都试图解决历史遗留的独特问题。本文仅涉及最流行和使用最广泛的测试网络,目前还有一些其他具备独特性质的网络,例如 Sokol。
在部署到主网之前,有人可能会问哪个选项是测试应用程序的最佳选项。 答案是没有一个「最佳选择」,因为这实际上取决于团队想要测试的功能,以及他们需要测试网络与以太坊主网络的相似程度。 作为其开发过程的一部分,大多数软件团队会选择并坚持使用其中一个或多个网络。