測試網
在區塊鏈技術中,測試網(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]。
區塊鏈大小 編輯
如前所述,測試網(Testnet)的區塊鏈與主網(Mainnet)是獨立的,但其活躍程度遠不如比特幣主網。目前,比特幣區塊鏈的大小接近 182 GB,而測試網的區塊鏈僅略高於 19 GB。如圖表所示,測試網的 2100 萬硬性限制即將被發行完畢,而比特幣主網預計要到 2140 年才能完成。
造成這一差異的原因在於之前提到的 Testnet3 功能:當挖礦難度增加時,它會自動重置,從而允許更多區塊在更短時間內被開採。這顯著降低了平均每個區塊的時間。例如,在比特幣主網中,開採 100 個區塊可能需要大約 1000 分鐘,而在測試網上,這一過程可能僅需要 100 至 200 分鐘(這一估計基於圖表的觀察)。
當測試網的 2100 萬硬性限制完全發行後,預計將會啟動一個新的測試網 Testnet4。因為測試網的目標是始終保持沒有實際價值,並不斷生成測試幣,供開發者用於改進比特幣及其生態系統。
水龍頭(Faucets) 編輯
測試網的水龍頭與主網的水龍頭有所不同。在測試網上,水龍頭會故意提供測試幣。一旦你使用完這些測試幣,將它們返還給提供測試幣的水龍頭是一個良好的行為,這樣其他開發者也可以使用這些測試幣。
以下是一些測試網水龍頭的例子:
回歸測試(RegTest) 編輯
比特幣核心軟件(Bitcoin Core)在其默認配置中還包含另一種網絡,稱為 RegTest(回歸測試),可以通過命令行參數啟動:
bitcoind -regtest -daemon
(比特幣服務器啟動)[9]。
RegTest 是 Bitcoin Core 0.9.0 版本中新增的功能,於 2014 年 3 月發布,作為一種替代測試模式而創建。
該網絡可用於創建具有與測試網(Testnet)相同特性的區塊鏈,但僅限於用戶選擇的節點之間運行。也就是說,通過這種模式可以創建私人區塊鏈,並在完全可控的環境中操作[10]。
漏洞 編輯
在測試網上曾成功進行了一筆雙花交易,其中 0.1 BTC 被複製並被雙重消費。具體而言,0.1 BTC 被複製為花費 0.099 BTC,同時支付 0.101 BTC 的費用,最終變成了 0.2 BTC[11]。
在比特幣核心軟件中發現了一些漏洞,這些漏洞可能允許礦工通過向區塊鏈發送一個「惡意」區塊來破壞比特幣的關鍵基礎設施(節點)[12]。
在比特幣網絡中發現了一個漏洞,該漏洞可能被利用來人為增加比特幣的供應量。後來,這個漏洞被複製到測試網上,顯示它可能被用來改變比特幣的整體貨幣政策。
參考鏈接 編輯
- ↑ 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
- ↑ Bitcoin - Open source P2P money
- ↑ Bitcoin Core version 0.9.0 released 19 March 2014
- ↑ Bitcoin Bug Exploited on Testnet, Chain-Split Ongoing 27th September 2018
- ↑ Bitcoin hard fork nightmare becomes reality after testnet splits Story by David Canellis