什么是testnet?
測(cè)試網(wǎng)絡(luò)(簡(jiǎn)稱(chēng)testnet)用于模擬以太坊主網(wǎng)的行為黍翎。有一些公開(kāi)的測(cè)試網(wǎng)絡(luò)只是替代的以太坊區(qū)塊鏈。這些網(wǎng)絡(luò)上的貨幣毫無(wú)價(jià)值,但它們?nèi)匀挥杏茫驗(yàn)榭梢栽诓黄茐囊蕴恢骶W(wǎng)或使用真錢(qián)的情況下測(cè)試合約和協(xié)議變更的功能搬设。當(dāng)以太坊協(xié)議的任何重大變化即將被包含在主網(wǎng)絡(luò)(簡(jiǎn)稱(chēng)主網(wǎng)絡(luò))中時(shí),其測(cè)試主要在這些測(cè)試網(wǎng)絡(luò)上完成撕捍。在將應(yīng)用程序部署到主網(wǎng)絡(luò)之前拿穴,大量開(kāi)發(fā)人員還使用這些測(cè)試網(wǎng)絡(luò)來(lái)測(cè)試應(yīng)用程序。
使用Testnets
您可以連接到公共測(cè)試網(wǎng)絡(luò)忧风,也可以生成自己的專(zhuān)用測(cè)試網(wǎng)絡(luò)默色。首先,讓我們使用公共測(cè)試網(wǎng)絡(luò)來(lái)更容易地進(jìn)行設(shè)置狮腿。要使用公共testnet该窗,需要一些testnet以及與該網(wǎng)絡(luò)的連接。對(duì)于testnet ether蚤霞,使用“水龍頭”酗失,緩慢分配測(cè)試ether,向任何要求的人“分配”少量昧绣。要連接到testnet规肴,您需要一個(gè)以太坊客戶(hù)端,可以是完整的客戶(hù)端(如geth),也可以是通向完整客戶(hù)端的網(wǎng)關(guān)拖刃,例如MetaMask删壮。
獲得測(cè)試以太
由于測(cè)試網(wǎng)絡(luò)不能用真錢(qián)操作,因此礦工保護(hù)測(cè)試網(wǎng)絡(luò)的動(dòng)機(jī)很小兑牡。因此央碟,測(cè)試網(wǎng)必須以不同方式保護(hù)自己免受濫用和攻擊。結(jié)果均函,為這些測(cè)試網(wǎng)絡(luò)創(chuàng)建了水龍頭亿虽,以便以受控的方式將免費(fèi)的測(cè)試ether分配給開(kāi)發(fā)人員(大多數(shù)水龍頭每隔幾秒左右分發(fā)一次ether)。這種受控的以太分配可防止用戶(hù)濫用鏈苞也,因?yàn)樘峁┯邢薜囊蕴?yīng)會(huì)阻止用戶(hù)過(guò)多地寫(xiě)入鏈或執(zhí)行過(guò)多的交易洛勉。此外,一些測(cè)試網(wǎng)已經(jīng)實(shí)現(xiàn)了身份驗(yàn)證證明方案如迟,其中使用水龍頭需要具有適當(dāng)憑據(jù)的社交媒體站點(diǎn)的身份驗(yàn)證收毫。
連接到Testnets
Metamask
Metamask完全支持Ropsten、Kovan和Rinkeby測(cè)試網(wǎng)絡(luò)殷勘,但也可以連接到其他測(cè)試網(wǎng)和本地網(wǎng)絡(luò)此再。在Metamask中,只需單擊“主網(wǎng)絡(luò)”下拉菜單即可切換網(wǎng)絡(luò)玲销。MetaMask還提供“購(gòu)買(mǎi)”測(cè)試以太的選項(xiàng)输拇,它可以引導(dǎo)您進(jìn)入可以請(qǐng)求免費(fèi)測(cè)試以太的水龍頭。如果使用Ropsten測(cè)試網(wǎng)痒玩,可以從Ropsten測(cè)試水龍頭服務(wù)獲得以太。您可以從此頁(yè)面訪問(wèn)此水龍頭议慰。它需要Metamask擴(kuò)展才能工作蠢古。https://faucet.metamask.io/
Infura
當(dāng)MetaMask連接到測(cè)試網(wǎng)絡(luò)時(shí),它使用Infura服務(wù)提供程序進(jìn)行JSON-RPC接口訪問(wèn)别凹。Infura產(chǎn)生的目的是為ConsenSys內(nèi)部項(xiàng)目提供穩(wěn)定可靠的RPC訪問(wèn)草讶。除了JSON-RPC API之外,Infura還提供REST(代表性狀態(tài)轉(zhuǎn)移)API炉菲,IPFS(行星際文件系統(tǒng)堕战,即分布式存儲(chǔ))API和Websockets(即流式)API。
Infura為以太坊主網(wǎng)拍霜、Ropsten嘱丢、Kovan、Rinkeby和INFURAnet(Infura的自定義測(cè)試網(wǎng))提供網(wǎng)關(guān)API祠饺。
要通過(guò)MetaMask使用Infura進(jìn)行初級(jí)的操作越驻,您不需要帳戶(hù)。要直接使用API??,您需要注冊(cè)一個(gè)帳戶(hù)并使用Infura提供的API密鑰缀旁。
有關(guān)Infura的更多信息记劈,請(qǐng)?jiān)L問(wèn):
混合集成開(kāi)發(fā)環(huán)境(IDE)
Remix IDE可用于在主網(wǎng)和測(cè)試網(wǎng)上部署和交互智能合約,包括Ropsten并巍、Rinkeby和Kovan(使用Infura地址和API密鑰的Web3提供程序或通過(guò)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ò),請(qǐng)使用命令行參數(shù):
geth --testnet
這將開(kāi)始同步Ropsten區(qū)塊鏈懊渡。將在主Ethereum數(shù)據(jù)目錄中創(chuàng)建名為testnet的新目錄刽射。密鑰庫(kù)目錄將在testnet內(nèi)創(chuàng)建,并將存儲(chǔ)您的testnet帳戶(hù)的私鑰距贷。在寫(xiě)這篇文章時(shí)柄冲,Ropsten區(qū)塊鏈明顯小于主要的以太坊區(qū)塊鏈:大約14GB的數(shù)據(jù)。由于testnet需要的資源較少忠蝗,因此首先在testnet上設(shè)置和測(cè)試代碼更為簡(jiǎn)單现横。
與testnet交互類(lèi)似于mainnet。您可以通過(guò)運(yùn)行以下命令啟動(dòng)Geth testnet:
geth --testnet console
這使得可以執(zhí)行諸如打開(kāi)新帳戶(hù)阁最、檢查余額戒祠、檢查其他以太坊地址的余額等操作。當(dāng)在Geth控制臺(tái)外部運(yùn)行時(shí)速种,可以執(zhí)行與在mainnet上類(lèi)似的操作姜盈,只需將--testnet參數(shù)添加到命令行指令即可。以列出所有可用的testnet帳戶(hù)及其地址為例配阵,運(yùn)行:
geth --testnet account list
Tip | 雖然要小得多馏颂,但測(cè)試網(wǎng)仍需要一段時(shí)間才能完全同步。 |
---|
您可以通過(guò)在geth interactive console中運(yùn)行以下命令來(lái)檢查geth是否已完成同步testnet:
eth.getBlock("latest").number
一旦您的testnet節(jié)點(diǎn)完全同步棋傍,這應(yīng)該返回0以外的數(shù)字救拉。您可以將數(shù)字與已知testnet塊瀏覽器中的最新塊進(jìn)行比較,例如https://ropsten.etherscan.io/
同樣瘫拣,要連接到Rinkeby測(cè)試網(wǎng)絡(luò)亿絮,請(qǐng)使用命令行參數(shù):
geth --rinkeby
Parity
Parity客戶(hù)端支持Ropsten和Kovan測(cè)試網(wǎng)絡(luò)。您可以使用chain參數(shù)選擇要連接的網(wǎng)絡(luò)麸拄。例如派昧,要同步Ropsten測(cè)試網(wǎng)絡(luò):
parity --chain ropsten
同樣,要同步Kovan測(cè)試網(wǎng)絡(luò)拢切,請(qǐng)使用:
parity --chain kovan
以太坊測(cè)試網(wǎng)絡(luò)深入
在這個(gè)階段你可能會(huì)想:“我理解為什么我可能會(huì)使用測(cè)試網(wǎng)絡(luò)蒂萎。但為什么會(huì)有這么多呢?”
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ò)上開(kāi)始測(cè)試合約淮椰,你可以從幾個(gè)水龍頭中找到Ropsten ethers岖是。如果水龍頭不起作用帮毁,請(qǐng)嘗試不同的水龍頭。
http://faucet.ropsten.be:3001/
這個(gè)水龍頭提供了應(yīng)該接收測(cè)試以太的地址隊(duì)列的可能性豺撑。bitfwd Ropsten Faucet
Ropsten龍頭可在https://faucet.bitfwd.xyz/獲得烈疚。Kyber Network Ropsten Faucet
另一款Ropsten水龍頭可在https://faucet.kyber.network/上找到。MetaMask Ropsten Faucet
https://faucet.metamask.io/Ropsten Testnet 礦池
http://pool.ropsten.ethereum.org/Etherscan Ropsten Pool https://ropsten.etherscan.io/
Rinkeby
Rinkeby水龍頭位于https://faucet.rinkeby.io/聪轿。要請(qǐng)求測(cè)試以太爷肝,有必要在Twitter、Google Plus或Facebook上發(fā)布公開(kāi)信息陆错。 https://www.rinkeby.io/ https://rinkeby.etherscan.io/
Kovan
Kovan testnet支持請(qǐng)求測(cè)試以太的各種方法灯抛。更多信息可以在位于https://github.com/kovan-testnet/faucet/blob/master/README.md的Kovan testnet GitHub倉(cāng)庫(kù)中找到。
- https://medium.com/@Digix/announcing-kovan-a-stable-ethereum-public-testnet-10ac7cb6c85f
- https://kovan-testnet.github.io/website/
- https://kovan.etherscan.io/
以太經(jīng)典測(cè)試網(wǎng)絡(luò)
Morden
以太坊經(jīng)典目前運(yùn)行Morden testnet的一個(gè)變體音瓷,該變體的特性與Ethereum Classic的live network保持一致对嚼。你可以通過(guò)連接的gastracker RPC或通過(guò)提供一個(gè)flag,連接到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
以太坊測(cè)試網(wǎng)絡(luò)的歷史
Olympic纵竖、Morden到Ropsten、Kovan杏愤、Rinkeby
Olympic testnet(網(wǎng)絡(luò)ID:0)是Frontier的首個(gè)公共測(cè)試網(wǎng)(簡(jiǎn)稱(chēng)以太坊0.9)靡砌。它于2015年初推出,并于2015年中期被Morden取代時(shí)棄用珊楼。
Ethereum的Morden testnet(網(wǎng)絡(luò)ID:2)與Frontier一起推出通殃,從2015年7月開(kāi)始運(yùn)行,直到2016年11月被棄用厕宗。雖然任何使用以太坊的人都可以創(chuàng)建一個(gè)測(cè)試網(wǎng)画舌,但Morden是第一個(gè)“官方”公共測(cè)試網(wǎng)并取代了Olympic測(cè)試網(wǎng)。由于來(lái)自臃腫的區(qū)塊鏈的長(zhǎng)同步時(shí)間以及Geth和Parity客戶(hù)之間的共識(shí)問(wèn)題已慢,testnet重新啟動(dòng)并命名為Ropsten曲聂。
Ropsten(網(wǎng)絡(luò)ID:3)是Homestead的公共跨客戶(hù)端測(cè)試網(wǎng)絡(luò),于2016年底推出蛇受,并作為公共測(cè)試網(wǎng)絡(luò)順利運(yùn)行至2017年2月底句葵。根據(jù)以太坊的核心開(kāi)發(fā)人員PéterSzilágyi的說(shuō)法厕鹃, 2月是“惡意行為者決定濫用低PoW并逐漸將封鎖gas限制擴(kuò)大到90億(從正常的470萬(wàn))兢仰,此時(shí)發(fā)送巨大的交易使整個(gè)網(wǎng)絡(luò)陷入癱瘓”。Ropsten于2017年3月恢復(fù).https://github.com/ethereum/ropsten
Kovan(網(wǎng)絡(luò)ID:42)是Homestead的公共Parity測(cè)試網(wǎng)絡(luò)剂碴,由Parity的權(quán)威證明(PoA)一致性算法提供支持把将。testnet不受垃圾郵件攻擊,因?yàn)橐蕴?yīng)由受信任方控制忆矛。那些受信任的組織是積極開(kāi)發(fā)以太坊的公司察蹲。雖然看起來(lái)這應(yīng)該是以太坊的測(cè)試網(wǎng)絡(luò)問(wèn)題的解決方案请垛,但在以太坊社區(qū)中似乎存在關(guān)于Kovan測(cè)試網(wǎng)絡(luò)的共識(shí)問(wèn)題。https://github.com/kovan-testnet/proposal
Rinkeby(網(wǎng)絡(luò)ID:4)是Homestead的公共Geth測(cè)試網(wǎng)絡(luò)洽议,由Ethereum團(tuán)隊(duì)于2017年4月啟動(dòng)并使用PoA共識(shí)協(xié)議宗收。以Stockholm的地鐵站命名,它幾乎不受垃圾郵件攻擊(因?yàn)橐蕴W(wǎng)供應(yīng)由受信任方控制)亚兄。請(qǐ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ě)出兩種機(jī)制的利弊
工作證明是一種協(xié)議混稽,其中必須執(zhí)行挖掘(昂貴的計(jì)算機(jī)計(jì)算)以在區(qū)塊鏈(分布式分類(lèi)帳本)上創(chuàng)建新區(qū)塊(無(wú)信任交易)。缺點(diǎn):能源效率低下审胚。集中的哈希能源與集中的采礦場(chǎng)匈勋,而不是真正的去中心化。挖掘新區(qū)塊所需的大量計(jì)算能力及其對(duì)環(huán)境的影響膳叨。
權(quán)威證明是一種協(xié)議洽洁,僅將授權(quán)負(fù)載分配給授權(quán)和可信賴(lài)的簽名者,并且這些簽名者可以自行決定在任何時(shí)間以怎樣的創(chuàng)建頻率來(lái)創(chuàng)建新區(qū)塊菲嘴。https://github.com/ethereum/EIPs/issues/225 優(yōu)點(diǎn):通過(guò)算法選擇擁有最多身份的區(qū)塊鏈參與者饿自,以獲得驗(yàn)證區(qū)塊以交付交易的權(quán)利。
https://www.deepdotweb.com/2017/05/21/generalized-proof-activity-poa-forking-free-hybrid-consensus/
運(yùn)行本地測(cè)試網(wǎng)絡(luò)
Ganache:以太坊開(kāi)發(fā)的個(gè)人區(qū)塊鏈
您可以使用Ganache部署合約临谱,開(kāi)發(fā)應(yīng)用程序并運(yùn)行測(cè)試璃俗。它可用作Windows、Mac和Linux的桌面應(yīng)用程序悉默。
網(wǎng)站:http://truffleframework.com/ganache
Ganache CLI:Ganache作為命令行工具
該工具以前稱(chēng)為“ethereumJS TestRPC”城豁。
https://github.com/trufflesuite/ganache-cli/
$ npm install -g ganache-cli
讓我們開(kāi)始以太坊區(qū)塊鏈協(xié)議的節(jié)點(diǎn)模擬。
- [ ]檢查--networkId和--port標(biāo)志值是否與truffle.js中的配置--gasLimit相匹配
- [ ]檢查標(biāo)志值是否與https://ethstats.net上顯示的最新主網(wǎng)絡(luò)Gas Limit(即8000000 gas)相匹配抄课,以避免遇到out of gas不必要地異常唱星。請(qǐng)注意,--gasPrice400,000,000表示gas價(jià)格為4 gwei跟磨。
- [ ]可選擇輸入--mnemonic標(biāo)志值以恢復(fù)以前的HD錢(qián)包和相關(guān)地址
$ ganache-cli \
--networkId = 3 \
--port =“8545”
--verbose \
--gasLimit = 8000000 \
--gasPrice = 4000000000;