测试网
在区块链技术中,测试网(testnet)是一个由与底层软件相同或更新版本的区块链实例构成的网络,用于测试和实验,且不会对真实资金或主链造成风险[1]。测试网代币与官方(主网)代币是独立且不同的,没有实际价值,可以通过水龙头(faucet)免费获得[2]。
测试网允许在没有资金损失风险的情况下开发区块链应用[3]。在比特币核心软件中发现了一个漏洞,使得矿工能够通过向区块链发送“坏区块”来摧毁比特币基础设施(节点)的重要部分[4]。这个网络与比特币的主网络(也称为 Mainnet)非常相似。这使得应用开发者或其他想要进行比特币测试的人能够在不使用真实比特币或担心破坏比特币主链的情况下进行实验。
虽然测试网与主网络相似,但它们并不兼容,这意味着你不能在测试网上使用代币,也不能在主网上使用测试网的币。测试网有自己的一套币,也称为“测试网币”。这些币没有任何实际价值,也不能进行交换。然而,这些币可以用于进行测试交易,确保测试按预期进行。
测试网的重要性在于,开发者和其他程序员可以在此实验新的代码和解决方案。通过这样做,他们不会“干扰”比特币主网络,也不需要使用有实际价值的比特币。更重要的是,如果提出的代码更改出错,它不会影响比特币主生态系统。测试网是分析新改进如何在比特币主网络中工作的理想场所,因为它是一个非常相似的网络,具有相似的规则和操作方式。在将任何更改部署到主网版本之前,它会先在测试网上进行实施,观察结果而不会带来重大后果。这也是为了测试将集成到比特币中的工具,验证这些工具是否能进行交易并与集成代码正常工作,确保代码在与真实比特币交易时完全功能正常。
主网与测试网的区别
- ADDRESSVERSION参数:测试网使用与比特币主网不同的值。在比特币中,使用的是0x00,而在测试网中使用的是0x6F。这个参数决定了地址的格式,因此测试网的地址与比特币主网的地址不同,这使得它们能够在视觉上被区分。
- 创世区块(Genesis Block):测试网使用与比特币主网不同的创世区块。创世区块是区块链开始创建的地方。
- IsStandard()验证:比特币代码中的IsStandard()验证在测试网上是禁用的,这允许在测试网上实验新的交易和新的想法。
- DNS种子:在测试网的初期,它使用不同的DNS种子。
- 地址格式:测试网的地址不以“1”或“3”开头(像比特币主网的地址那样),而是以“m”或“2”开头。
- 协议消息头:测试网的协议消息头是0x0B110907,而比特币主网使用的是0xF9BEB4D9。
- 节点端口:比特币程序是一个对等网络(Peer-to-peer)节点,需要与网络中的其他节点通信。默认情况下,它使用计算机的8333端口,但在测试网模式下,它使用18333端口,以便在同一计算机上同时操作两个模式。
- 最低难度:测试网的最低难度为1.0,相当于比特币主网的0.5难度。这意味着,测试网上的任何难度与比特币主网相比,难度是主网的一半。此外,如果20分钟内未找到区块,难度会自动重置。
- RPC协议端口:比特币程序也允许与其他程序进行通信,使用RPC协议的端口。默认情况下,测试网使用18332端口,而比特币主网使用8332端口[5]。
版本演变
目前,比特币的测试网已经发展到第三个版本,也被称为Testnet3。在比特币早期的第一个测试网(Testnet1)中,出现了意料之外的情况:测试网的币开始获得价值,并被用于与真实货币或比特币的交易。于是,开发者决定创建一个新的创世区块,Testnet2由此诞生。然而,Testnet2也存在问题:挖矿复杂度逐渐提高到需要较高成本的程度。
2012年以来,Testnet3开始运行。Testnet3的特点是可以在必要时自动重置挖矿难度,从而解决了之前版本中的问题[6]。
2015年12月21日,SegNet部署上线,用于测试由Pieter Wuille提出的隔离见证(Segregated Witness)提案[7]。
测试网币
尽管测试网币与比特币几乎完全相同,但如前所述,这种货币没有任何价值。这是因为测试网币非常容易获取。它的设计初衷是为开发者提供一个可供实验的环境,而无需承担经济损失。测试网币可以通过测试网中的水龙头免费获取,这些水龙头是专门为测试目的提供免费代币的地址。此外,测试网币也可以通过低计算成本的方式进行挖矿。
在Testnet3中添加了一些不同于比特币主网的机制。测试网被设计成当由于复杂性导致区块无法被挖出时,挖矿难度会自动降低到非常低的水平,使挖矿变得容易。
从主网和测试网的区块链浏览器中获得的图表可以看出两者在计算难度上的差异。在测试网中,挖矿难度的峰值大约在60兆字节范围内,并会周期性地降低到接近0;而在主网中,挖矿难度约为5.5太字节,并且趋势是持续上升。
创世区块
测试网使用了与主网不同的创世区块。测试网络 Testnet3 在重置时创建了一个新的创世区块,并释放了 0.7 个比特币作为起始区块奖励[8]。
参考链接
- ↑ Understanding Bitcoin: Cryptography, Engineering and Economics - Pedro Franco - Google Books
- ↑ Blockchain By Example: A developer's guide to creating decentralized ... - Bellaj Badr, Richard Horrocks, Xun (Brian) Wu - Google Books
- ↑ Hierarchical interactions between Ethereum smart contracts across Testnets | Proceedings of the 1st Workshop on Cryptocurrencies and Blockchains for Distributed Systems
- ↑ Bitcoin hard fork nightmare becomes reality after testnet splits Story by David Canellis
- ↑ GitHub - bitcoinbook/bitcoinbook: Mastering Bitcoin 3rd Edition - Programming the Open Blockchain
- ↑ segregated-witness-and-its-impact-on-scalability Pieter Wuille (sipa)
- ↑ GitHub - bitcoin/bips: Bitcoin Improvement Proposals
- ↑ Testnet, Mark III · gavinandresen/bitcoin-git@feeb761 · GitHub