python必须连网开发吗_Python以太坊开发节点和网络选择

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

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

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

如何选择使用哪个节点?

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

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

本地节点:本地节点由你自己启动并控制。它的安全和你的环境安全性一样,在于你自身。当你在机器上运行geth或parity时,你就是在运行本地节点。

托管节点:托管节点由其他人控制。当连接到Infura时,连接到托管节点。

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

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

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

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

geth(go-ethereum) [1]

parity [2]

你可以在ethdocs.org[3] 中找到一个更完整的节点软件列表。

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

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

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

我可以用MetaMask作为节点吗?

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

默认情况下,MetaMask连接到一个Infura节点。也还可以设置MetaMask使用本地运行的节点。

如果你试图使用已在MetaMask中创建的帐户,请参阅如何使用Web3.Py中的MetaMask帐户 [5]?

我应该连接哪个网络?

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

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

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

所以我们简略的讲,选择这样的方式:

如果使用Parity,连接到Kovan

如果使用Geth,连接到Rinkeby

如果使用不同的节点,或测试挖掘,连接到Ropsten

他们的每一个网络都有自己版本的ether。生产网络即公有链以太ether必须购买,自然,测试链上的以太ether通常是免费的。看看测试网是如何获得以太的[7]?

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

文中标注的原文链接如下:

[1] https://ethereum.github.io/go-ethereum/

[2] https://www.parity.io/

[3] http://ethdocs.org/en/latest/ethereum-clients/

[4] https://web3py.readthedocs.io/en/stable/infura.io

[5] https://web3py.readthedocs.io/en/stable/troubleshooting.html#use-metamask-accounts

[6] https://ethereum.stackexchange.com/a/30072/1461

[7] https://web3py.readthedocs.io/en/stable/troubleshooting.html#faucets

[8] https://web3py.readthedocs.io/en/stable/providers.html#choosing-provider

从geth切换到parity遇到的那些坑 最近需要搭建以太坊节点,刚开始用的是geth,同步了1整天发现最新的70~80个块总是同步不下来,网上一查很多人遇到过这个问题,据说跟SSD的读写速度有关,无奈之下只能放弃,改用parity。 parity是一个geth类似的以太坊客户端程序,由以太坊黄皮书作者Gavin Woods领导,采用Rust语言编写。试用了一下体验还是挺棒的,同步Ropsten的数据只需要几个小时的时间。但是,par... 阅读详情

相关推荐

最好用的python以太坊开发框架Populus

欢迎学习Populus框架!Populus几乎拥有以太坊区块链开发所需的一切。 Populus有以下系统依赖关系: solidity编译器:智能合约是以solidity语言编写的,然后编译到以太坊虚拟机(EVM)的二进制代码中。 Geth:官方go语言的以太坊协议的实现。Geth客户端运行区块链节点,让我们与区块链进行交互,并可以在开发过程中运行并部署到测试区块链。 此外,杨树需要一些其...

mongo_node的专栏 1478

Windows下使用python-web3.py进行以太坊Dapp开发笔记–第1篇

1.环境准备 使用的环境包括: geth python3.7 web3.py solc geth的安装及简单实用 安装 地址:https://geth.ethereum.org/downloads/ 找到对应的操作系统安装最新的版本就好(一般这里如果安装最新的,下面的web3.py也需要最新版,不然可能会出现各种错误!!!) 我的版本是: 使用(这里仅介绍创建私链及geth命令行的简单使用) A.创建私链 a.创建一个文件夹btc,用以存放以太坊私链数据: b.创建json文件genesis.json,将文件内容改为下面所示并保存: { config:{ chainId:9, ho

python开发以太坊应用(使用web3)

目录 第一章,初识以太坊 第二章,以太坊之简易开发流程 第三章,以太坊之账户管理 第四章,以太坊之状态与交易 第五章,以太坊之智能合约 第六章,以太坊之过滤器 正文 ** 第一章,初识以太坊 ** 第一章 属于概述性的内容,暂时不写。以后补充上来。 ** 第二章,以太坊之简易开发流程 ** 在这一章,我们将完成一个简单的控制台应用,学习如何在命令行python中访问以太坊节点,并打...

语雨听风的博客 9840

python以太坊开发节点网络选择

以太坊节点 为什么我需要连接到一个节点以太坊协议定义了一种方法,用于人们通过网络与智能合约相互作用。为了获得关于合约、账户余额新交易状态等最新的信息,协议需要与网络上的节点进行连接。这些节点不断地共享最新的数据。 Web3.Py是用于连接这些节点Python库。它不在内部运行它自己的节点。 如何选择使用哪个节点? 由于以太坊的特点,这在很大程度上由个人的偏好来决定,但它会对安全性...

mongo_node的专栏 683

使用Python查询以太坊数据的后端

总结一下,通过使用PythonWeb3.py库,我们可以方便地连接到以太坊网络,并查询各种以太坊数据。Web3.py是一个用于与以太坊交互的Python库,它提供了一组丰富的功能API,用于连接到以太坊网络、查询区块链数据、执行交易等操作。然后,我们检查连接状态,如果成功连接到以太坊网络,则打印"已连接到以太坊网络",否则打印"无法连接到以太坊网络"。除了查询最新的区块高度,Web3.py还提供了许多其他功能API,用于查询以太坊网络上的各种数据。首先,我们需要安装Web3.py库。

UgmbRuby的博客 285

探索以太坊世界的利器:etherscan-python

探索以太坊世界的利器:etherscan-python 去发现同类优质开源项目:https://gitcode.com/ 在区块链的世界里,数据是至关重要的。而以太坊(Ethereum)作为全球最大的去中心化应用平台之一,其生态系统中的信息繁多且复杂。为了更便捷地访问利用这些数据,我们为你推荐一个强大的工具——etherscan-python,这是一个专为Python开发者打造的以太坊区块浏览器...

gitblog_00020的博客 517

Python角度了解以太坊

区块链基础以太坊(Ethereum)的底层是区块链技术,而区块链简单而言就是由Hash值串联起来的链表结构,链表中的节点会记录交易信息,如果将节点中的信息以JSON格式描述,看起来是这个样...

weixin_30230009的博客 1192

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计02

编号类型模型配方企业资本运作的方法/规则/条件/依据及所有的步骤(​风险处理/异常处理/危机应对关联知识法律法规裁决依据​​由发起人(通常是知名投资人、投行或产业资本)先设立一个只有现金、无实际业务的特殊目的收购公司(SPAC),通过IPO募集资金并在交易所上市。然后在规定时间内(通常24个月)寻找一家非上市公司进行合并(De-SPAC),使目标公司迅速实现上市,规避传统IPO的复杂流程不确定性。1.:在开曼或特拉华注册空壳公司,注入少量种子资金。2.

weixin_49199313的博客 226

Python以太坊交互实战

Python与链上交互 环境 安装 运行 Python与链上交互 环境 Linux VM-0-11-ubuntu 4.4.0-130-generic Python3.6 vim 8.0 安装 node npm 安装 testrpctruffle ,教程里面写的很清楚 安装web3.py $ sudo pip3.6 install web3 需...

北大虫师的博客 2604

Python以太坊智能合约开发指南

以太坊上获得一个基本的智能合约是一个很简单的事,只需google查询“ERC20代币教程”,你会发现有关如何做到这一点的大量信息。以编程方式与合约交互完全是另一回事,如果你是一个Python程序员,那么教程就很少。所以写这个Python中的以太坊智能合约开发指南。 按我的统计对我们来说幸运的是,2017年Web3.py的第4版发布,这意味着现在比以往更容易运行python脚本并观察区块链上发生的...

weixin_33857230的博客 1953

python利用web3.py开发以太坊应用dapp的实战教程

以太坊作为最流行区块链平台,最大的特点是运行各种智能合约。我们已经出过node.js、java、php的以太坊开发实战教程,这一次是pythonPython官方提供了一系列的Python包用于支持在Python应用中访问以太坊,其中最流行的就是web3.py —— 对JSON RPC接口的Python封装包。在本课程中,我们将主要使用web3.py,同时结合一些其他的包,来开发支持以太坊的Pyt...

weixin_33922672的博客 935

python通过testrpc访问以太坊数据入门

搭建基于python以太坊客户端testrpc的开发环境 系统:Ubuntu 16.04 1.安装nodejs testrpc的安装需要使用nodejs中的npm命令。所以要先安装nodejs。 下载: nodejs官网:http://www.nodejs.org/ 从官网上找到对应的版本下载。笔者编写本文时最新的ubuntu64位版本为6.11.0

Lian_Dao的博客 6274

以太坊开发入门,完整入门

翻译自:https://medium.com/@mattcondon/getting-up-to-speed-on-ethereum-63ed28821bbe从入门到精通,干货篇。必读,如果你:是一个专业的程序员如果你想了解以太坊当前可以做到什么程度,通过什么,如何做到。预备知识:    1. 你需要知道区块链的概念及实现一个无需信任的电子货币的运作原理。可以先看看长版(https://www.y

架构文摘 8079

以太坊连载(十):以太坊GO、JAVA、PYTHON、RUBY、JS客户端介绍

go-ethereum go-ethereum客户端通常被称为geth,它是个命令行界面,执行在Go上实现的完整以太坊节点。通过安装运行geth,可以参与到以太坊前台实时网络并进行以下操作: 挖掘真的以太币在不同地址间转移资金创建合约,发送交易探索区块历史及很多其他 链接: 网站: http://ethereum.github.io/go-ethereum/Github:

关于代码的那些事 5774

python智能合约编程_以太坊智能合约编程(1):概述

译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队。如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下角Newsletter订阅邮件。本文的翻译获得了ConsenSys创始人Lubin先生的授权。有些人说以太坊太难对付,于是我们(译注:指Consensys, 下同)写了这篇文章来帮助大家学习如何利用以太坊编写智能合约应用。这里所用到的工具...

weixin_28829903的博客 658

python开发以太坊应用(1)

1.node安装ganache-cli组件、 2.运行 ganache-cli 会看到创建了一些以太坊账号 3. 安装MetaMask是一款在浏览器上使用的插件类型的以太坊钱包 4.在 MetaMask导入2步生成的账号,查看账户余额 5.尝试使用MetaMask给另外一个账号转账 ...

liubag的专栏 9268

Python 在 Graph 中查询以太坊数据

本文主要介绍如何在Python中使用The Graph来查询以太坊数据。The Graph项目是一个用于查询去中心化网络的索引系统。你可以使用The Graph来查询Ethereum、IPFS等系统。在我们开始之前,让我们先来看看一些定义。GraphQL是一种查询语言The Graph是一个使用GraphQL查询语言的区块链项目。该项目允许任何人建立发布一个称为sub...

Python中文社区 8835

【重磅推荐】Python之web3.py或Flask-web3框架开发以太坊之案例总结(比js容易很多......缺点是无法Metamask集成)

关于web3.py集成Metamask的问题,web3.py官方也明确指明:只是把测试网络的账号秘钥导入,然后连接Metamask的测试网络进行转账,似乎无法集成Metamask。毕竟Metamask是支持js浏览器的用法,也正常!如果要开发基于Metamask的应用,直接用web3.js即可! 注:使用web3.js的时候,Metamask会自动嵌入一段js代码进入网站,所以我们网站可以...

weixin_43343144的博客 2402

以太坊智能合约编程之菜鸟教程

手把手带你走上智能合约编程之路 译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队。如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下角Newsletter订阅邮件。本文的翻译获得了ConsenSys创始人Lubin先生的授权。 有些人说以太坊太难对付,于是我们(译注:指Consensys, 下同)写了这篇文章来帮助大家学习如何利用以太

陈建慧程序人生 9万+
上一篇: mybatisplus多表关联查询_ET工具_KETTLE多表关联
下一篇: linux traceroute命令详解_详解Linux系统路由跟踪指令traceroute语法、工作原理和实例说明...
weixin_39708708
博客等级 码龄9年 20粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值