《精通以太坊》-以太坊測試網(wǎng)絡(luò)

原文:Ethereum Test Networks (Testnets)

什么是testnet?

測試網(wǎng)絡(luò)(簡稱testnet)用于模擬以太坊主網(wǎng)的行為。有一些公開的測試網(wǎng)絡(luò)只是替代的以太坊區(qū)塊鏈。這些網(wǎng)絡(luò)上的貨幣毫無價值,但它們?nèi)匀挥杏?,因為可以在不破壞以太坊主網(wǎng)或使用真錢的情況下測試合約和協(xié)議變更的功能。當以太坊協(xié)議的任何重大變化即將被包含在主網(wǎng)絡(luò)(簡稱主網(wǎng)絡(luò))中時,其測試主要在這些測試網(wǎng)絡(luò)上完成。在將應(yīng)用程序部署到主網(wǎng)絡(luò)之前,大量開發(fā)人員還使用這些測試網(wǎng)絡(luò)來測試應(yīng)用程序。

使用Testnets

您可以連接到公共測試網(wǎng)絡(luò),也可以生成自己的專用測試網(wǎng)絡(luò)。首先,讓我們使用公共測試網(wǎng)絡(luò)來更容易地進行設(shè)置。要使用公共testnet,需要一些testnet以及與該網(wǎng)絡(luò)的連接。對于testnet ether,使用“水龍頭”,緩慢分配測試ether,向任何要求的人“分配”少量。要連接到testnet,您需要一個以太坊客戶端,可以是完整的客戶端(如geth),也可以是通向完整客戶端的網(wǎng)關(guān),例如MetaMask。

獲得測試以太

由于測試網(wǎng)絡(luò)不能用真錢操作,因此礦工保護測試網(wǎng)絡(luò)的動機很小。因此,測試網(wǎng)必須以不同方式保護自己免受濫用和攻擊。結(jié)果,為這些測試網(wǎng)絡(luò)創(chuàng)建了水龍頭,以便以受控的方式將免費的測試ether分配給開發(fā)人員(大多數(shù)水龍頭每隔幾秒左右分發(fā)一次ether)。這種受控的以太分配可防止用戶濫用鏈,因為提供有限的以太供應(yīng)會阻止用戶過多地寫入鏈或執(zhí)行過多的交易。此外,一些測試網(wǎng)已經(jīng)實現(xiàn)了身份驗證證明方案,其中使用水龍頭需要具有適當憑據(jù)的社交媒體站點的身份驗證。

連接到Testnets

Metamask

Metamask完全支持Ropsten、Kovan和Rinkeby測試網(wǎng)絡(luò),但也可以連接到其他測試網(wǎng)和本地網(wǎng)絡(luò)。在Metamask中,只需單擊“主網(wǎng)絡(luò)”下拉菜單即可切換網(wǎng)絡(luò)。MetaMask還提供“購買”測試以太的選項,它可以引導(dǎo)您進入可以請求免費測試以太的水龍頭。如果使用Ropsten測試網(wǎng),可以從Ropsten測試水龍頭服務(wù)獲得以太。您可以從此頁面訪問此水龍頭。它需要Metamask擴展才能工作。https://faucet.metamask.io/

Infura

當MetaMask連接到測試網(wǎng)絡(luò)時,它使用Infura服務(wù)提供程序進行JSON-RPC接口訪問。Infura產(chǎn)生的目的是為ConsenSys內(nèi)部項目提供穩(wěn)定可靠的RPC訪問。除了JSON-RPC API之外,Infura還提供REST(代表性狀態(tài)轉(zhuǎn)移)API,IPFS(行星際文件系統(tǒng),即分布式存儲)API和Websockets(即流式)API。

Infura為以太坊主網(wǎng)、Ropsten、Kovan、Rinkeby和INFURAnet(Infura的自定義測試網(wǎng))提供網(wǎng)關(guān)API。

要通過MetaMask使用Infura進行初級的操作,您不需要帳戶。要直接使用API??,您需要注冊一個帳戶并使用Infura提供的API密鑰。

有關(guān)Infura的更多信息,請訪問:

https://infura.io/

混合集成開發(fā)環(huán)境(IDE)

Remix IDE可用于在主網(wǎng)和測試網(wǎng)上部署和交互智能合約,包括Ropsten、Rinkeby和Kovan(使用Infura地址和API密鑰的Web3提供程序或通過Injected Web3使用MetaMask中選擇的網(wǎng)絡(luò))和Ganache( Web3 Provider Endpoint http://localhost:8545

https://github.com/ethereum/remix/blob/master/docs/run_tab.rst https://medium.com/swlh/deploy-smart-contracts-on-ropsten-testnet-through-ethereum-remix-233cd1494b4b

Geth

Geth本身支持Ropsten和Rinkeby網(wǎng)絡(luò)。要連接到Ropsten網(wǎng)絡(luò),請使用命令行參數(shù):

geth --testnet

這將開始同步Ropsten區(qū)塊鏈。將在主Ethereum數(shù)據(jù)目錄中創(chuàng)建名為testnet的新目錄。密鑰庫目錄將在testnet內(nèi)創(chuàng)建,并將存儲您的testnet帳戶的私鑰。在寫這篇文章時,Ropsten區(qū)塊鏈明顯小于主要的以太坊區(qū)塊鏈:大約14GB的數(shù)據(jù)。由于testnet需要的資源較少,因此首先在testnet上設(shè)置和測試代碼更為簡單。

與testnet交互類似于mainnet。您可以通過運行以下命令啟動Geth testnet:

geth --testnet console

這使得可以執(zhí)行諸如打開新帳戶、檢查余額、檢查其他以太坊地址的余額等操作。當在Geth控制臺外部運行時,可以執(zhí)行與在mainnet上類似的操作,只需將--testnet參數(shù)添加到命令行指令即可。以列出所有可用的testnet帳戶及其地址為例,運行:

geth --testnet account list
Tip 雖然要小得多,但測試網(wǎng)仍需要一段時間才能完全同步。

您可以通過在geth interactive console中運行以下命令來檢查geth是否已完成同步testnet:

eth.getBlock("latest").number

一旦您的testnet節(jié)點完全同步,這應(yīng)該返回0以外的數(shù)字。您可以將數(shù)字與已知testnet塊瀏覽器中的最新塊進行比較,例如https://ropsten.etherscan.io/

同樣,要連接到Rinkeby測試網(wǎng)絡(luò),請使用命令行參數(shù):

geth --rinkeby

Parity

Parity客戶端支持Ropsten和Kovan測試網(wǎng)絡(luò)。您可以使用chain參數(shù)選擇要連接的網(wǎng)絡(luò)。例如,要同步Ropsten測試網(wǎng)絡(luò):

parity --chain ropsten

同樣,要同步Kovan測試網(wǎng)絡(luò),請使用:

parity --chain kovan

以太坊測試網(wǎng)絡(luò)深入

在這個階段你可能會想:“我理解為什么我可能會使用測試網(wǎng)絡(luò)。但為什么會有這么多呢?”

https://www.ethnews.com/ropsten-to-kovan-to-rinkeby-ethereums-testnet-troubles

工作證明(采礦)與權(quán)威證明(聯(lián)合簽名)

https://github.com/ethereum/guide/blob/master/poa.md

Morden(The Original Testnet)

https://blog.ethereum.org/2016/11/20/from-morden-to-ropsten/

Ropsten

如果你想在Ropsten網(wǎng)絡(luò)上開始測試合約,你可以從幾個水龍頭中找到Ropsten ethers。如果水龍頭不起作用,請嘗試不同的水龍頭。

Rinkeby

Rinkeby水龍頭位于https://faucet.rinkeby.io/。要請求測試以太,有必要在Twitter、Google Plus或Facebook上發(fā)布公開信息。 https://www.rinkeby.io/ https://rinkeby.etherscan.io/

Kovan

Kovan testnet支持請求測試以太的各種方法。更多信息可以在位于https://github.com/kovan-testnet/faucet/blob/master/README.md的Kovan testnet GitHub倉庫中找到。

以太經(jīng)典測試網(wǎng)絡(luò)

Morden

以太坊經(jīng)典目前運行Morden testnet的一個變體,該變體的特性與Ethereum Classic的live network保持一致。你可以通過連接的gastracker RPC或通過提供一個flag,連接到geth或parity。

以太坊測試網(wǎng)絡(luò)的歷史

Olympic、Morden到Ropsten、Kovan、Rinkeby

Olympic testnet(網(wǎng)絡(luò)ID:0)是Frontier的首個公共測試網(wǎng)(簡稱以太坊0.9)。它于2015年初推出,并于2015年中期被Morden取代時棄用。

Ethereum的Morden testnet(網(wǎng)絡(luò)ID:2)與Frontier一起推出,從2015年7月開始運行,直到2016年11月被棄用。雖然任何使用以太坊的人都可以創(chuàng)建一個測試網(wǎng),但Morden是第一個“官方”公共測試網(wǎng)并取代了Olympic測試網(wǎng)。由于來自臃腫的區(qū)塊鏈的長同步時間以及Geth和Parity客戶之間的共識問題,testnet重新啟動并命名為Ropsten。

Ropsten(網(wǎng)絡(luò)ID:3)是Homestead的公共跨客戶端測試網(wǎng)絡(luò),于2016年底推出,并作為公共測試網(wǎng)絡(luò)順利運行至2017年2月底。根據(jù)以太坊的核心開發(fā)人員PéterSzilágyi的說法, 2月是“惡意行為者決定濫用低PoW并逐漸將封鎖gas限制擴大到90億(從正常的470萬),此時發(fā)送巨大的交易使整個網(wǎng)絡(luò)陷入癱瘓”。Ropsten于2017年3月恢復(fù).https://github.com/ethereum/ropsten

Kovan(網(wǎng)絡(luò)ID:42)是Homestead的公共Parity測試網(wǎng)絡(luò),由Parity的權(quán)威證明(PoA)一致性算法提供支持。testnet不受垃圾郵件攻擊,因為以太供應(yīng)由受信任方控制。那些受信任的組織是積極開發(fā)以太坊的公司。雖然看起來這應(yīng)該是以太坊的測試網(wǎng)絡(luò)問題的解決方案,但在以太坊社區(qū)中似乎存在關(guān)于Kovan測試網(wǎng)絡(luò)的共識問題。https://github.com/kovan-testnet/proposal

Rinkeby(網(wǎng)絡(luò)ID:4)是Homestead的公共Geth測試網(wǎng)絡(luò),由Ethereum團隊于2017年4月啟動并使用PoA共識協(xié)議。以Stockholm的地鐵站命名,它幾乎不受垃圾郵件攻擊(因為以太網(wǎng)供應(yīng)由受信任方控制)。請參閱EIP 225:https://github.com/ethereum/EIPs/issues/225

工作證明(采礦)與權(quán)威證明(聯(lián)合簽名)

https://github.com/ethereum/guide/blob/master/poa.md

TODO:寫出兩種機制的利弊

工作證明是一種協(xié)議,其中必須執(zhí)行挖掘(昂貴的計算機計算)以在區(qū)塊鏈(分布式分類帳本)上創(chuàng)建新區(qū)塊(無信任交易)。缺點:能源效率低下。集中的哈希能源與集中的采礦場,而不是真正的去中心化。挖掘新區(qū)塊所需的大量計算能力及其對環(huán)境的影響。

權(quán)威證明是一種協(xié)議,僅將授權(quán)負載分配給授權(quán)和可信賴的簽名者,并且這些簽名者可以自行決定在任何時間以怎樣的創(chuàng)建頻率來創(chuàng)建新區(qū)塊。https://github.com/ethereum/EIPs/issues/225 優(yōu)點:通過算法選擇擁有最多身份的區(qū)塊鏈參與者,以獲得驗證區(qū)塊以交付交易的權(quán)利。

https://www.deepdotweb.com/2017/05/21/generalized-proof-activity-poa-forking-free-hybrid-consensus/

運行本地測試網(wǎng)絡(luò)

Ganache:以太坊開發(fā)的個人區(qū)塊鏈

您可以使用Ganache部署合約,開發(fā)應(yīng)用程序并運行測試。它可用作Windows、Mac和Linux的桌面應(yīng)用程序。

網(wǎng)站:http://truffleframework.com/ganache

Ganache CLI:Ganache作為命令行工具

該工具以前稱為“ethereumJS TestRPC”。

https://github.com/trufflesuite/ganache-cli/

$ npm install -g ganache-cli

讓我們開始以太坊區(qū)塊鏈協(xié)議的節(jié)點模擬。

  • [ ]檢查--networkId和--port標志值是否與truffle.js中的配置--gasLimit相匹配
  • [ ]檢查標志值是否與https://ethstats.net上顯示的最新主網(wǎng)絡(luò)Gas Limit(即8000000 gas)相匹配,以避免遇到out of gas不必要地異常。請注意,--gasPrice400,000,000表示gas價格為4 gwei。
  • [ ]可選擇輸入--mnemonic標志值以恢復(fù)以前的HD錢包和相關(guān)地址
$ ganache-cli \
  --networkId = 3 \
  --port =“8545”
  --verbose \
  --gasLimit = 8000000 \
  --gasPrice = 4000000000;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文:Ethereum Clients 以太坊客戶端是一個軟件應(yīng)用程序,它實現(xiàn)以太坊規(guī)范并通過對等網(wǎng)絡(luò)與其他以太坊...
    Jisen閱讀 2,072評論 0 2
  • 原文:Introduction 控制和責(zé)任 像以太坊這樣的開放式區(qū)塊鏈是安全的,因為它們是去中心化的。這意味著以太...
    Jisen閱讀 6,392評論 0 7
  • 本文是對以太坊文檔 Ethereum Frontier Guide 和 Ethereum Homestead 的整...
    趁風(fēng)卷閱讀 9,767評論 0 16
  • 目標讀者: 專業(yè)的程序員; 想深入了解以太坊/區(qū)塊鏈及其生態(tài)的讀者; 如果你已經(jīng)有一定的以太坊技術(shù)基礎(chǔ),只想研究一...
    編程狂魔閱讀 1,741評論 0 11
  • 本文嘗試將以太坊測試網(wǎng)絡(luò)相關(guān)的問題整理清楚 測試網(wǎng)絡(luò)名稱 以太坊公開的測試網(wǎng)絡(luò)共有4個,目前仍在運行的有3個。每個...
    區(qū)塊鏈生存指南閱讀 4,896評論 1 6

友情鏈接更多精彩內(nèi)容