python在以太坊开发中节点和网络如何选择?

以太坊节点

为何我须要链接到一个节点?html

以太坊协议定义了一种方法,用于人们经过网络与智能合约相互做用。为了得到关于合约、帐户余额和新交易状态等最新的信息,协议须要与网络上的节点进行链接。这些节点不断地共享最新的数据。python

Web3.Py是用于链接这些节点的Python库。它不在内部运行它本身的节点。git

如何选择使用哪一个节点?

因为以太坊的特色,这在很大程度上由我的的偏好来决定,但它会对安全性和可用性有重大影响。此外,节点软件正在快速发展,因此请须要对当前可选项进行研究。咱们不推荐任何特定的节点,但列出一些流行的选项和一些基本细节。github

最关键的决定之一是使用本地节点仍是托管节点。来看看本地VS托管节点的简单含义:web

  • 本地节点:本地节点由你本身启动并控制。它的安全和你的环境安全性同样,在于你自身。当你在机器上运行gethparity时,你就是在运行本地节点。
  • 托管节点:托管节点由其余人控制。当链接到Infura时,链接到托管节点。

本地节点比托管节点有更好的安全性。恶意托管节点能够给你提供不正确的信息,用IP地址记录你发送的交易,或者只是脱机运行。不正确的信息会引发各类各样的问题,甚至包括资产流失。浏览器

另外一方面,在本地节点上,你的机器正在逐个验证网络上的全部交易,并提供最新状态。不幸的是,这意味着使用大量的磁盘空间,有时显著的带宽和计算。另外,下载完整的区块链历史记录有很大的前期成本。安全

若是但愿让节点管理密钥(流行的选项),则必须使用本地节点。注意,即便在本身的机器上运行一个节点,你仍然要信任节点软件,并在该节点上建立的任何账户。网络

最流行的自运行节点选项是:ide

你能够在ethdocs.org中找到一个更完整的节点软件列表。学习

有些人认为,从零开始同步本地节点所需的时间过久,尤为是若是它们只是刚开始学习以太坊的话。解决这个问题的一种方法就是使用托管节点。

最流行的托管节点选项是Infura。你能够链接它,就像它是一个本地节点,有几个注意事项。它不能(也不该该)为你提供私钥,这意味着一些常见的方法,如w3.eth.sendTransaction() 不可直接使用。要向托管节点发送交易,请阅读有关本地私钥的工做

一旦决定要选择什么节点选项,就须要选择链接哪一个网络。一般,你在公有链和测试链之间进行选择。

我能够用MetaMask做为节点吗?

MetaMask不是一个节点。它是一个与节点交互的接口。大体上,若是你把Web3.Py变成浏览器扩展,MetaMask就和web3.py是差很少的。

默认状况下,MetaMask链接到一个Infura节点。也还能够设置MetaMask使用本地运行的节点。

若是你试图使用已在MetaMask中建立的账户,请参阅如何使用Web3.Py中的MetaMask账户?

我应该链接哪一个网络?

一旦你回答了我该如何选择使用哪个节点?你必须选择链接哪一个网络。对于某些场景来讲,这是很容易的:若是你有以太ether,你想消费它,或者你想与任何生产网络上的智能合约交互,那么你链接到以太坊公有链网络上。

若是你想测试这些东西而不使用真正的以太ether,那么你须要链接到测试链。有几个测试链可供选择。一个测试网络Ropsten,它是最相似于生产网络的。然而,当你想测试一个智能合约的时候,已经有垃圾邮件和攻击发生,这是有破坏性的。

有一些替代网络限制了垃圾邮件和攻击的破坏,可是它们对节点软件没有彻底标准化。geth运行本身的(Rinkeby),Parity运行本身(Kovan)。在这个Stackexchange Q&A.中看到一个完整的比较。

因此咱们简略的讲,选择这样的方式:

  • 若是使用Parity,链接到Kovan
  • 若是使用Geth,链接到Rinkeby
  • 若是使用不一样的节点,或测试挖掘,链接到Ropsten

他们的每个网络都有本身版本的ether。生产网络即公有链以太ether必须购买,天然,测试链上的以太ether一般是免费的。看看测试网是如何得到以太?

一旦肯定了链接哪一个网络,并为该网络设置节点,就须要决定如何链接它。在大多数节点中有一些选项。请参见选择如何链接到节点

分享咱们的python以太坊教程,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。

相关文章
相关标签/搜索