geth --testnet
以太坊測試網(Testnets)
什麼是測試網?
測試網路(簡稱testnet)用於模擬以太網主網的行為。有一些公開的測試網路可以替代以太坊區塊鏈。這些網路上的貨幣毫無價值,但它們仍然很有用,因為合約和協議變更的功能可以在不中斷以太網主網或使用真實貨幣的情況下進行測試。當主網(簡稱mainnet)即將包含對以太坊協議的任何重大改變時,其測試主要在這些測試網路上完成。這些測試網路也被大量開發人員用於在部署到主網之前測試應用程式。
使用 Testnets
你可以連接到公共可用的測試網路或創建你自己的私人測試網路。首先,讓我們使用公共測試網來更簡單地起步。要使用公共測試網路,需要一些測試網路以及到該網路的連接。對於testnet ether,使用“faucet”,faucet緩慢地分配測試ether,向任何詢問的人“滴送”少量ether。要連接到一個測試網路,你需要一個以太坊客戶端,完整的客戶端,比如geth,或者完整的客戶端的網關,比如MetaMask。
獲取測試以太網
由於測試網不以真正的金錢運作,礦工保護測試網的動機很弱。因此,測試網必須保護自己免受濫用和攻擊。因此,為這些測試網創建了水龍頭,以受控的方式向開發人員分發免費的測試ether(大多數faucet每隔幾秒左右"滴注"ether)。這種以太網的受控分配可防止用戶濫用鏈,因為提供有限的ether供應可防止他們向鏈中寫入過多內容或執行太多交易。另外,一些testnets已經實施了認證證明(Proof of Authentication)方案,使用faucet需要具有適當社交媒體網站的認證的憑證。
連接到Testnets
Metamask
Metamask完全支持Ropsten,Kovan和Rinkeby測試網,但也可以連接到其他測試網和本地網。在Metamask中,只需單擊“main network”下拉菜單,即可切換網路。MetaMask還提供了一個“buy”測試ether的選項,該選項將你引導至你可以請求免費測試以太網的faucet。如果使用Ropsten測試網,則可以從Ropsten測試faucet服務中獲取ether。你可以從此頁面訪問此faucet。它需要Metamask擴展才能工作。https://faucet.metamask.io/
Infura
當MetaMask連接到測試網路時,它使用Infura服務提供商來訪問JSON-RPC接口。Infura誕生的目的是為ConsenSys內部項目提供穩定可靠的RPC訪問。除了JSON-RPC API之外,Infura還提供REST(表述性狀態轉移)API、IPFS(星際檔案系統,即去中心化儲存)API和Websockets(即流式傳輸)API。
Infura為Ethereum主網,Ropsten、Kovan、Rinkeby和INFURAnet(用於Infura的定製測試網路)提供網關API。
要通過MetaMask使用Infura進行較低級別的活動,你不需要帳戶。要直接使用API,你需要註冊一個帳戶並使用Infura提供的API密鑰。
有關Infura的更多資訊,請訪問:
Remix集成開發環境(IDE)
Remix IDE可用於在主網和測試網上部署和交互智能合約,包括Ropsten、Rinkeby和Kovan(Web3提供者使用Infura地址和API密鑰或通過Injected Web3使用MetaMask中選擇的網路)和Ganache( Web3提供端點http://localhost:8545)
Geth
Geth本身支持Ropsten和Rinkeby網路。要連接到Ropsten網路,請使用命令行參數:
這將開始同步Ropsten區塊鏈。名為 testnet 的新目錄將在你的主Ethereum數據目錄中創建。一個 keystore 目錄將在 testnet 內部創建,並將儲存你的testnet帳戶的私鑰。在撰寫本文時,Ropsten區塊鏈比以太坊主區塊鏈小得多:大約14GB的數據。由於測試網需要的資源較少,因此首先在測試網上設置並測試你的程式碼會更簡單。
與testnet的交互與mainnet類似。你可以使用控制台啟動Geth testnet,方法是運行:
geth --testnet console
這使得執行操作成為可能,例如開設新賬戶、檢查餘額、檢查其他以太坊地址的餘額等。
在Geth控制台之外運行時,只需將--testnet
參數添加到命令行指令中,就可以執行類似於在主網上執行的操作。作為列舉所有可用的testnet帳戶及其地址的範例,請運行:
geth --testnet account list
Tip
|
雖然小得多,但測試網仍需要一些時間才能完全同步。 |
你可以通過在geth交互式控制台中運行以下命令來檢查geth是否已完成同步測試網路:
eth.getBlock("latest").number
一旦你的testnet節點完全同步,這應該返回一個非0的數字。你可以將該編號與已知的testnet區塊瀏覽器中的最新區塊進行比較,例如https://ropsten.etherscan.io/
同樣,要連接到Rinkeby測試網路,請使用命令行參數:
geth --rinkeby
Parity
Parity客戶端支持Ropsten和Kovan測試網路。你可以用chain參數選擇你要連接的網路。例如,要同步Ropsten測試網路:
parity --chain ropsten
同樣,要同步Kovan測試網路,請使用:
parity --chain kovan
深入以太坊Testnets
在這個階段你可能會想:“我明白我為什麼要使用測試網路,但為什麼會有這麼多呢?”
工作量證明(挖礦)Proof-of-Work (Mining) 與 權威證明(聯合簽名)Proof-of-Authority (Federated Signing)
Ropsten
如果你想開始在Ropsten網路上測試合約,有幾個faucet可以供給你Ropsten的ether。如果faucet不起作用,請嘗試不同的faucet。
-
http://faucet.ropsten.be:3001/ 這個faucet提供了應該排隊接收測試以太的地址的可能性。
-
bitfwd Ropsten Faucet https://faucet.bitfwd.xyz/。
-
Kyber Network Ropsten Faucet https://faucet.kyber.network/。
-
MetaMask Ropsten Faucet https://faucet.metamask.io/
-
Ropsten Testnet Mining Pool http://pool.ropsten.ethereum.org/
-
Etherscan Ropsten Pool https://ropsten.etherscan.io/
Rinkeby
Rinkeby水龍頭位於https://faucet.rinkeby.io/。 要請求測試ether,有必要在Twitter,Google Plus或Facebook上發佈公開資訊。https://www.rinkeby.io/ https://rinkeby.etherscan.io/
以太坊經典Testnets
Morden
以太坊經典目前運行著Morden測試網的一個變體,與以太坊經典活躍網路保持功能相同。你可以通過gastracker RPC或者為geth
或parity
提供一個標誌來連接它.
Faucet: http://testnet.epool.io/
Gastracker RPC: https://web3.gastracker.io/morden
Block Explorer: http://mordenexplorer.ethertrack.io/home
Geth flag: geth --chain=morden
Parity flag: parity --chain=classic-testnet
以太坊測試網的歷史
Olympic, Morden to Ropsten, Kovan, Rinkeby
Olympic testnet (Network ID: 0) 是Frontier首個公共測試網(簡稱Ethereum 0.9)。它於2015年初推出,2015年中期被Morden取代時棄用。
Ethereum’s Morden testnet (Network ID: 2) 與Frontier一起發佈,從2015年7月開始運行,直到2016年11月不再使用。雖然任何使用以太坊的人都可以創建測試網,但Morden是第一個“官方”公共測試網,取代了Olympic測試網。由於臃腫區塊鏈的長同步時間以及Geth和Parity客戶端之間的共識問題,測試網路重新啟動並重新生成為Ropsten。
Ropsten (Network ID: 3) 是一個針對Homestead的公共跨客戶端測試網,於2016年晚些時候推出,並作為公共測試網順利運行至2017年2月底。根據Ethereum的核心開發人員PéterSzilágyi的說法,二月的時候,“惡意行為者決定濫用低PoW,並逐步將gas限制提高到90億(從普通的470萬),發送巨大交易損害了整個網路”。Ropsten在2017年3月被恢復。https://github.com/ethereum/ropsten
Kovan (Network ID: 42) 是由Parity的權威證明(PoA)共識演算法驅動的Homestead的公共Parity測試網路。該測試網不受垃圾郵件攻擊的影響,因為ether供應由可信方控制。這些值得信賴的各方是在Ethereum上積極開發的公司。 儘管看起來這應該是以太坊測試網問題的解決方案,但在以太坊社區內似乎存在關於Kovan測試網的共識問題。https://github.com/kovan-testnet/proposal
Rinkeby (Network ID: 4) 是由Ethereum團隊於2017年4月開始的Homestead發佈的Geth測試網路,並使用PoA共識協議。以斯德哥爾摩的地鐵站命名,它幾乎不受垃圾郵件攻擊的影響(因為以太網供應由受信任方控制)。請參閱EIP 225:https://github.com/ethereum/EIPs/issues/225
工作量證明(挖礦)Proof-of-Work (Mining) 與 權威證明(聯合簽名)Proof-of-Authority (Federated Signing)
Proof-of-Work 是一種協議,必須執行挖礦(昂貴的計算機計算)以在區塊鏈(分佈式賬本)上創建新的區塊(去信任的交易)。 缺點:能源消耗。集中的雜湊算力與集中的採礦農場,不是真正的分佈式。挖掘新塊體所需的大量計算能力對環境有影響。
Proof-of-Authority 是一種協議,它只將造幣的負載分配給授權和可信的簽名者,他們可以根據自己的判斷並隨時以發幣頻率分發新的區塊。https://github.com/ethereum/EIPs/issues/225 優點:具有最顯赫的身份的區塊鏈參與者通過演算法選擇來驗證塊來交付交易。
運行本地測試網
Ganache: 以太坊開發的個人區塊鏈
你可以使用Ganache部署合約,開發應用程式並運行測試。它可用作Windows,Mac和Linux的桌面應用程式。
Ganache CLI: Ganache 作為命令行工具。
這個工具以前稱為“ethereumJS TestRPC”。
$ npm install -g ganache-cli
讓我們開始以太坊區塊鏈協議的節點模擬。
* []檢查--networkId
和--port`flag values是否與truffle.js中的配置相匹配
* []檢查
--gasLimit`flag values是否與https://ethstats.net上顯示的最新主網gas極限(即8000000 gas)相匹配,以避免不必要地遇到gas'異常。請注意,4000000000的“--gasPrice”代表4 gwei的gas價格。
* []可以輸入一個
--mnemonic’flag values來恢復以前的高清錢包和相關地址
$ ganache-cli \ --networkId=3 \ --port="8545" \ --verbose \ --gasLimit=8000000 \ --gasPrice=4000000000;