《精通以太坊》-以太坊测试网络

原文:Ethereum Test Networks (Testnets)

什么是testnet?

测试网络(简称testnet)用于模拟以太坊主网的行为。有一些公开的测试网络只是替代的以太坊区块链。这些网络上的货币毫无价值,但它们仍然有用,因为可以在不破坏以太坊主网或使用真钱的情况下测试合约和协议变更的功能。当以太坊协议的任何重大变化即将被包含在主网络(简称主网络)中时,其测试主要在这些测试网络上完成。在将应用程序部署到主网络之前,大量开发人员还使用这些测试网络来测试应用程序。

使用Testnets

您可以连接到公共测试网络,也可以生成自己的专用测试网络。首先,让我们使用公共测试网络来更容易地进行设置。要使用公共testnet,需要一些testnet以及与该网络的连接。对于testnet ether,使用“水龙头”,缓慢分配测试ether,向任何要求的人“分配”少量。要连接到testnet,您需要一个以太坊客户端,可以是完整的客户端(如geth),也可以是通向完整客户端的网关,例如MetaMask。

获得测试以太

由于测试网络不能用真钱操作,因此矿工保护测试网络的动机很小。因此,测试网必须以不同方式保护自己免受滥用和攻击。结果,为这些测试网络创建了水龙头,以便以受控的方式将免费的测试ether分配给开发人员(大多数水龙头每隔几秒左右分发一次ether)。这种受控的以太分配可防止用户滥用链,因为提供有限的以太供应会阻止用户过多地写入链或执行过多的交易。此外,一些测试网已经实现了身份验证证明方案,其中使用水龙头需要具有适当凭据的社交媒体站点的身份验证。

连接到Testnets

Metamask

Metamask完全支持Ropsten、Kovan和Rinkeby测试网络,但也可以连接到其他测试网和本地网络。在Metamask中,只需单击“主网络”下拉菜单即可切换网络。MetaMask还提供“购买”测试以太的选项,它可以引导您进入可以请求免费测试以太的水龙头。如果使用Ropsten测试网,可以从Ropsten测试水龙头服务获得以太。您可以从此页面访问此水龙头。它需要Metamask扩展才能工作。https://faucet.metamask.io/

Infura

当MetaMask连接到测试网络时,它使用Infura服务提供程序进行JSON-RPC接口访问。Infura产生的目的是为ConsenSys内部项目提供稳定可靠的RPC访问。除了JSON-RPC API之外,Infura还提供REST(代表性状态转移)API,IPFS(行星际文件系统,即分布式存储)API和Websockets(即流式)API。

Infura为以太坊主网、Ropsten、Kovan、Rinkeby和INFURAnet(Infura的自定义测试网)提供网关API。

要通过MetaMask使用Infura进行初级的操作,您不需要帐户。要直接使用API​​,您需要注册一个帐户并使用Infura提供的API密钥。

有关Infura的更多信息,请访问:

https://infura.io/

混合集成开发环境(IDE)

Remix IDE可用于在主网和测试网上部署和交互智能合约,包括Ropsten、Rinkeby和Kovan(使用Infura地址和API密钥的Web3提供程序或通过Injected Web3使用MetaMask中选择的网络)和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网络。要连接到Ropsten网络,请使用命令行参数:

geth --testnet

这将开始同步Ropsten区块链。将在主Ethereum数据目录中创建名为testnet的新目录。密钥库目录将在testnet内创建,并将存储您的testnet帐户的私钥。在写这篇文章时,Ropsten区块链明显小于主要的以太坊区块链:大约14GB的数据。由于testnet需要的资源较少,因此首先在testnet上设置和测试代码更为简单。

与testnet交互类似于mainnet。您可以通过运行以下命令启动Geth testnet:

geth --testnet console

这使得可以执行诸如打开新帐户、检查余额、检查其他以太坊地址的余额等操作。当在Geth控制台外部运行时,可以执行与在mainnet上类似的操作,只需将--testnet参数添加到命令行指令即可。以列出所有可用的testnet帐户及其地址为例,运行:

geth --testnet account list
Tip 虽然要小得多,但测试网仍需要一段时间才能完全同步。

您可以通过在geth interactive console中运行以下命令来检查geth是否已完成同步testnet:

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

以太坊测试网络深入

在这个阶段你可能会想:“我理解为什么我可能会使用测试网络。但为什么会有这么多呢?”

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

工作证明(采矿)与权威证明(联合签名)

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网络上开始测试合约,你可以从几个水龙头中找到Ropsten ethers。如果水龙头不起作用,请尝试不同的水龙头。

Rinkeby

Rinkeby水龙头位于https://faucet.rinkeby.io/。要请求测试以太,有必要在Twitter、Google Plus或Facebook上发布公开信息。 https://www.rinkeby.io/ https://rinkeby.etherscan.io/

Kovan

Kovan testnet支持请求测试以太的各种方法。更多信息可以在位于https://github.com/kovan-testnet/faucet/blob/master/README.md的Kovan testnet GitHub仓库中找到。

以太经典测试网络

Morden

以太坊经典目前运行Morden testnet的一个变体,该变体的特性与Ethereum Classic的live network保持一致。你可以通过连接的gastracker RPC或通过提供一个flag,连接到geth或parity。

以太坊测试网络的历史

Olympic、Morden到Ropsten、Kovan、Rinkeby

Olympic testnet(网络ID:0)是Frontier的首个公共测试网(简称以太坊0.9)。它于2015年初推出,并于2015年中期被Morden取代时弃用。

Ethereum的Morden testnet(网络ID:2)与Frontier一起推出,从2015年7月开始运行,直到2016年11月被弃用。虽然任何使用以太坊的人都可以创建一个测试网,但Morden是第一个“官方”公共测试网并取代了Olympic测试网。由于来自臃肿的区块链的长同步时间以及Geth和Parity客户之间的共识问题,testnet重新启动并命名为Ropsten。

Ropsten(网络ID:3)是Homestead的公共跨客户端测试网络,于2016年底推出,并作为公共测试网络顺利运行至2017年2月底。根据以太坊的核心开发人员PéterSzilágyi的说法, 2月是“恶意行为者决定滥用低PoW并逐渐将封锁gas限制扩大到90亿(从正常的470万),此时发送巨大的交易使整个网络陷入瘫痪”。Ropsten于2017年3月恢复.https://github.com/ethereum/ropsten

Kovan(网络ID:42)是Homestead的公共Parity测试网络,由Parity的权威证明(PoA)一致性算法提供支持。testnet不受垃圾邮件攻击,因为以太供应由受信任方控制。那些受信任的组织是积极开发以太坊的公司。虽然看起来这应该是以太坊的测试网络问题的解决方案,但在以太坊社区中似乎存在关于Kovan测试网络的共识问题。https://github.com/kovan-testnet/proposal

Rinkeby(网络ID:4)是Homestead的公共Geth测试网络,由Ethereum团队于2017年4月启动并使用PoA共识协议。以Stockholm的地铁站命名,它几乎不受垃圾邮件攻击(因为以太网供应由受信任方控制)。请参阅EIP 225:https://github.com/ethereum/EIPs/issues/225

工作证明(采矿)与权威证明(联合签名)

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

TODO:写出两种机制的利弊

工作证明是一种协议,其中必须执行挖掘(昂贵的计算机计算)以在区块链(分布式分类帐本)上创建新区块(无信任交易)。缺点:能源效率低下。集中的哈希能源与集中的采矿场,而不是真正的去中心化。挖掘新区块所需的大量计算能力及其对环境的影响。

权威证明是一种协议,仅将授权负载分配给授权和可信赖的签名者,并且这些签名者可以自行决定在任何时间以怎样的创建频率来创建新区块。https://github.com/ethereum/EIPs/issues/225 优点:通过算法选择拥有最多身份的区块链参与者,以获得验证区块以交付交易的权利。

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

运行本地测试网络

Ganache:以太坊开发的个人区块链

您可以使用Ganache部署合约,开发应用程序并运行测试。它可用作Windows、Mac和Linux的桌面应用程序。

网站:http://truffleframework.com/ganache

Ganache CLI:Ganache作为命令行工具

该工具以前称为“ethereumJS TestRPC”。

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

$ npm install -g ganache-cli

让我们开始以太坊区块链协议的节点模拟。

  • [ ]检查--networkId和--port标志值是否与truffle.js中的配置--gasLimit相匹配
  • [ ]检查标志值是否与https://ethstats.net上显示的最新主网络Gas Limit(即8000000 gas)相匹配,以避免遇到out of gas不必要地异常。请注意,--gasPrice400,000,000表示gas价格为4 gwei。
  • [ ]可选择输入--mnemonic标志值以恢复以前的HD钱包和相关地址
$ ganache-cli \
  --networkId = 3 \
  --port =“8545”
  --verbose \
  --gasLimit = 8000000 \
  --gasPrice = 4000000000;
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 原文:Ethereum Clients 以太坊客户端是一个软件应用程序,它实现以太坊规范并通过对等网络与其他以太坊...
    Jisen阅读 1,811评论 0 2
  • 原文:Introduction 控制和责任 像以太坊这样的开放式区块链是安全的,因为它们是去中心化的。这意味着以太...
    Jisen阅读 6,224评论 0 7
  • 本文是对以太坊文档 Ethereum Frontier Guide 和 Ethereum Homestead 的整...
    趁风卷阅读 9,484评论 0 16
  • 目标读者: 专业的程序员; 想深入了解以太坊/区块链及其生态的读者; 如果你已经有一定的以太坊技术基础,只想研究一...
    编程狂魔阅读 1,646评论 0 11
  • 本文尝试将以太坊测试网络相关的问题整理清楚 测试网络名称 以太坊公开的测试网络共有4个,目前仍在运行的有3个。每个...
    区块链生存指南阅读 4,594评论 1 6