以太坊测试网(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)
https://github.com/ethereum/remix/blob/master/docs/run_tab.rsthttps://medium.com/swlh/deploy-smart-contracts-on-ropsten-testnet-through-ethereum-remix-233cd1494b4b
Geth
Geth本身支持Ropsten和Rinkeby网络。要连接到Ropsten网络,请使用命令行参数:
geth --testnet
这将开始同步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
上一篇:以太坊客户端
下一篇:许岑的幻灯片制作收费群