你的以太坊节点
## 为什么我需要连接到一个节点?
以太坊协议为人们定义了一种通过网络与智能合约以及相互之间进行交互的方式。为了获得有关合约、余额和新交易状态的最新信息,该协议需要连接到网络上的节点。这些节点不断地相互共享新数据。
Web3.py 是用于连接这些节点的 python 库。它不在内部运行自己的节点。 ## 我如何选择使用哪个节点?
由于以太坊的性质,这在很大程度上是一个个人偏好的问题,但它对安全性和可用性有重大影响。此外,节点软件发展很快,所以请自行研究当前的选项。我们不会提倡任何特定的节点,但列出一些流行的选项和每个选项的一些基本细节。
一个关键的决定是使用本地节点还是托管节点。快速总结在 本地 vs 托管节点 。
本地节点比托管节点需要更少的信任。一个恶意的托管节点可以给你不正确的信息,用你的 IP 地址记录你发送的事务,或者干脆下线。不正确的信息会导致各种问题,包括资产损失。
另一方面,通过本地节点,您的机器可以单独验证网络上的所有事务,并为您提供最新状态。不幸的是,这意味着占用大量的磁盘空间,有时还会占用大量的带宽和计算。此外,下载完整的区块链历史需要很高的前期时间成本。
如果您想让您的节点为您管理密钥(一个流行的选项),您必须使用一个本地节点。请注意,即使您在自己的计算机上运行节点,您仍然信任节点软件以及您在该节点上创建的任何帐户。
最流行的自运行节点选项有:
你可以在 ethdocs.org 找到更完整的节点软件列表。
有些人认为从头开始同步一个本地节点花费的时间太长,尤其是如果他们第一次探索以太坊的话。解决这个问题的一种方法是使用托管节点。
最流行的托管节点选项是 Infura 。您可以像连接本地节点一样连接它,但有一些注意事项。它不能(并且不应该为你托管私钥,也就是说一些常用的方法比如 w3.eth.send_transaction()
不能直接使用。要将事务发送到托管节点,请阅读关于使用本地私钥的。
一旦决定了您想要的节点选项,您需要选择要连接到哪个网络。通常,您会在主网络和一个可用的测试网络之间进行选择。见 应该连接哪个网络?T3】
我可以使用元掩码作为节点吗?
元掩码不是节点。它是与节点交互的接口。大致来说,就是把 Web3.py 变成浏览器扩展后得到的结果。
默认情况下,MetaMask 连接到一个 Infura 节点。您还可以设置元掩码来使用本地运行的节点。
如果您尝试使用已经在元掩码中创建的帐户,请参见 为什么我的 web3 实例没有连接到网络?T3】 ## 我应该连接到哪个网络?
一旦你回答了 我该如何选择使用哪个节点? 你要挑选连接哪个网络。这对于某些场景来说很容易:如果你有以太网并且你想花掉它,或者你想与任何生产智能合约交互,那么你连接到主以太网。
如果你想在不使用真实以太的情况下测试这些东西,那么你需要连接一个测试网络。有几个测试网络可供选择。其中一个测试网络 Ropsten 与生产网络最为相似。然而,垃圾邮件和挖掘攻击时有发生,这是破坏性的,当你想测试一个合约。
有一些替代网络限制了垃圾邮件攻击的损害,但它们没有跨节点软件标准化。Geth 经营自己的(Rinkeby)。参见本 Stackexchange Q & A 中的完整对比。
所以大致选择这样的方式:
- 如果使用奇偶校验,请连接到 Kovan
- 如果使用 Geth,连接到 Rinkeby
- 如果使用不同的节点或测试挖掘,请连接到 Ropsten
他们的每个网络都有自己的以太版本。当然,必须购买主网络以太网,但测试网络以太网通常是免费的。参见 如何为我的测试网络获取以太网?T3】
一旦您决定了要连接到哪个网络,并为该网络设置了节点,您就需要决定如何连接到该网络。大多数节点都有一些选项。参见 选择如何连接到您的节点 。