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

以太坊节点

为什么我需要连接到一个节点?

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

Web3.Py是用于连接这些节点的Python库。它不在内部运行它自己的节点。

如何选择使用哪个节点?

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

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

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

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

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

如果希望让节点管理密钥(流行的选项),则必须使用本地节点。注意,即使在自己的机器上运行一个节点,你仍然要信任节点软件,并在该节点上创建的任何帐户。

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

你可以在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进行区块链以太坊开发的详解。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–资产会计(162)-19定期处理-AFAB折旧过帐运行

4.7.3 AFAB折旧过帐运行 起初过帐至固定资产会更改资产会计中的计划折旧。然而,资产负债表和损益表的累计折旧科目和折旧科目并不会立即更新。直到执行定期折...

3857
来自专栏币聪财经

币聪早报:以太坊dApp浏览器采取措施提高钱包安全性

Paul Camechon在Medium中写道:“由于用户隐私问题,MetaMask和其他dApp浏览器已经承诺在11月2日停止向用户浏览器注入Web3,这意味...

943
来自专栏飞雪无情的博客

从Hexo迁移到Hugo-送漂亮的Hugo Theme主题

自从Hugo出来后,作为Go语言(golang)的重度用户的重度用户,一直想把自己的博客迁移到Hugo,但是一直没有行动,主要原因在于,我的博客使用的一款主题m...

4931
来自专栏Python中文社区

Python写ARP局域网主机存活扫描与ARP欺骗工具

專 欄 ❈exploit,Python中文社区专栏作者,入坑Python一年。希望与作者交流或者对文章有任何疑问的可以与作者联系: QQ:1585173691...

5585
来自专栏IT技术精选文摘

分布式系统一致性保障方案总结

引言 在互联网系统中,理想的情况下,肯定是希望系统能够同时满足“一致性”、“可用性”和“分区容忍性”。 但是基于熟悉的CAP定律也好,还是BASE理论, 我们知...

32110
来自专栏丑胖侠

以太坊实践经验之《eth.blockNumber结果为0》

问题场景 在使用以太坊ETH的过程中遇到这样一个问题,就是通过rpc 控制台调用eth.blockNumber获得的返回结果为0。如果没有产生区块或没有同步到区...

5187
来自专栏区块链入门

链安科技:智能合约call、delegatecall底层函数使用需谨慎

2018年5月11日ATN Token遭受恶意攻击(详见:https://atn.io/resource/aareport.pdf),攻击者利用DSAuth库与...

1092
来自专栏jouypub

Maven引入外部jar的几种方法

简书主页:https://www.jianshu.com/u/756c9c8ae984

2534
来自专栏听雨堂

微信小程序自定义数据分析试水

昨晚收到小程序自定义分析的内测邀请,简单试用了一下。说明挺长的,大概是这个意思: 一、定义一系列事件,对其进行统计 事件可以对页面中的这些事件进行追踪 clic...

2937
来自专栏jouypub

MySQL时间格式TIMESTAMP和DATETIME的区别

简书主页:https://www.jianshu.com/u/756c9c8ae984

6165

扫码关注云+社区

领取腾讯云代金券