通过 web3.py 用 Python 存取 Ethereum

以太坊数据开发-Web3.py-安装连接以太坊数据 Web3.py是连接以太坊的python库,它的API从web3.js中派生而来。如果你用过web3.js,你会对它的API很熟悉。但惭愧的是,作为一个以太坊上Dapp的开发者,我几乎没有直接使用过web3.js,也没有看过它的API。 阅读详情

想要通过 Python 存取 Ethereum,从 Ethereum 官方的 Github 中可以看到有两种模块可以达成:web3.py 和 pyethereum 。就我目前的理解来说,两者的差别在于 web3.py 主要是作为外部存取 Ethereum 的客户端,也就是说 web3.py 函数库本身不会成为区块链节点,也不会进行区块链同步,而是连接一个区块链上的节点,把区块链当成是外部资料库一样取用而已;而 pyethereum 则比较像是 geth 那样,是用来把自己做成一个区块链节点,会正常进行区块同步,也可以作为矿工开始挖矿。

在本篇当中,因为是想要一个轻量级的客户端来与区块链互动,并不想要准备庞大的储存空间来存放区块链的资料,因此会以 web3.py 为主。

  • 配置 web3.py 执行环境

  • 通过 web3.py 连结 Ethereum 节点

  • 存取区块链上的 ERC20 合约

  • 签署并送出交易

配置 web3.py 执行环境

web3.py 可以直接通过 pip 安装。



1.  `pip install web3`
    


需注意的是,在 Windows 上想安装时,会需要事先安装 Visual C++ Builder,否则在安装的最后阶段会因为无法编译而失败。

通过 web3.py 连结 Ethereum 节点

web3.py 因为自身不会作为一个区块链的节点存在,因此它需要有一个节点用来存取区块链上的资料。一般来说最安全的方式应该是自己使用 geth 或者 parity 来自建节点,不过如果在不想要自建节点的状况时,可以考虑看看 infura 提供的 HTTP 节点服务。

以 infura 现在的 API 来说,如果要连结 Ropsten 测试链,连结的网址是 https://ropsten.infura.io/v3/api_key,其中 api_key 要去注册帐号才取得。以下的程序仿照了 web3.py 内建的 auto.infura 的作法,会从环境变数读取 INFURA_API_KEY 这个参数来组出 infura.io 的 HTTP 位址,用来建立跟 Ropsten 测试链的连线。



1.  `import os`
    
2.    
    
3.  `from web3 import (`
    
4.      `HTTPProvider,`
    
5.      `Web3,`
    
6.  `)`
    
7.    
    
8.  `INFURA_ROPSTEN_BASE_URL = 'https://ropsten.infura.io/v3'`
    
9.    
    
10.  `def load_infura_url():`
    
11.      `key = os.environ.get('INFURA_API_KEY', '')`
    
12.      `return "%s/%s" % (INFURA_ROPSTEN_BASE_URL, key)`
    
13.    
    
14.  `w3 = Web3(HTTPProvider(load_infura_url()))`
    


存取区块链上的 ERC20 合约

在开始存取合约之前,需要先谈谈什么是 ABI 。在 Ethereum 中,因为合约都是以编译过的 binary code 形式存在,因此其实函数库没办法直接知道合约传输的内容到底是什么,因为合约的回传值全都是 binary。因此在操作合约之前,需要提供一份 ABI 文件,告诉函数库如何使

web3.py的配置和启动以及web3.is_connected()报错: False 我在linux中用conda create了一个虚拟环境,并激活的虚拟环境。我在linux的python项目虚拟环境中下载:验证 pip list 看到是1.10.0版本。2、导入web3和测试提供商。 阅读详情

相关推荐

使用Web3.py构建、签署、发送以太坊交易

无论是普通转账,还是智能合约的写入,都可以认为是一笔交易(Transaction)。在区块链世界,可导致区块链数据发生变化的数据,可简单理解为一笔“交易”。相反,send_raw_transaction处理的,反而是对以上文本数据进行签署后,生成的数据(二进制或16进制形式)。B. 构建build_transaction() + 签署sign_transaction + 发送send_raw_transaction()A. 使用transact(), 底层还是自动调用的send_transaction()

Iwerehappy的博客 1446

Web3.py使用详解

安装 pip install web3 使用Web3 测试提供商 from web3 import Web3, EthereumTesterProvider w3 = Web3(EthereumTesterProvider()) 本地提供商 from web3 import Web3 # IPCProvider: w3 = Web3(Web3.IPCProvider('./path/to/geth.ipc')) # HTTPProvider: w3 = Web3(Web3.HTTPPr

培根芝士的专栏 1万+

web.py中文版用户手册

web.py 是一个轻量级Python web框架,它简单而且功能强大。web.py是一个开源项目。该框架由美国作家、Reddit联合创始人、RSS规格合作创造者、著名计算机黑客Aaron Swartz开发web.py目前已被很多家大型网站所使用。

以太坊智能合约项目开发——Web3.py库安装及错误解决方案

一、Web3.py库介绍 二、Web3.py库安装 安装前提 安装python以上版本,人家网站上就这么要求的,不同版本之间可能差别较大; 安装有pip:安装python的时候一般都同时安装了; 安装命令 pip install web3 按理说输入安装命令就能安装成功,但是……还是没有一次成功。(我觉得我无论安装什么都会出点幺蛾子) 经过仔细研究报错语句,然后开始寻找解决办法,并从这篇文章 ...

茶花语的博客 5620

Web3.py 学习(一)

一、什么是web3.py        Web3.py is a python library for interacting with Ethereum. Its API is derived from the Web3.js Javascript API and should be familiar to anyone wh...

天草降临的博客 7016

pythonWeb3.py从入门到精通

​ 作为连接 Python 与以太坊区块链的重要桥梁,为开发者提供了丰富而强大的功能,极大地推动了以太坊区块链应用的开发进程。通过 Web3.py开发者能够轻松实现与以太坊节点的连接,无论是使用 HTTP、WebSocket 还是 IPC 连接方式,都能根据具体的应用场景和需求灵活选择,从而高效地获取区块链数据,如账户余额、交易信息等。

大雨淅淅的博客 1640

零基础用python开发区块链(五web3进阶)

web3.py是一个功能强大的 Python 库,用于与以太坊区块链进行交互。它提供了一系列功能,使得开发者可以轻松地与以太坊网络进行交易、查询数据、调用智能合约、管理账户、监听事件等。下面是web3.py

2331

pythonweb3 与智能合约的交互、编译等使用

最初的 API 源自Web3.js Javascript API,但后来不断发展以满足 Python 开发人员的需求和物质享受。它常见于去中心化应用程序 (dapps)中,帮助发送交易、与智能合约交互、读取块数据以及各种其他用例。web3.py是一个用于与以太坊交互的 Python 库。本人在合约审计于模糊测试中需要验证一些基础信息,学习了一下。调用合同函数或访问合同变量。

风华浪浪的博客 4163

最全整理!37 个 Python Web 开发框架总结!

大家好,用了 2 周的时间整理了 Python 中所有的网站开发库(下文简称:Web 框架),供大家学习参考。Q:Web 框架到底是什么?A:Web 框架主要用于网站开发开发者在基于 Web 框架实现自己的业务逻辑。Web 框架实现了很多功能,为实现业务逻辑提供了一套通用方法。Q:Web 框架有什么作用?A:使用 Web 框架,很多的业务逻辑外的功能不需要自己再去完善,而是使用框架已有的功能就可以。Web 框架使得在进行 网站开发的时候,减少了工作量。Q:我们为什么要使用 Web 框架?

m0_59596937的博客 2万+

Web3.py 入门笔记

Web3.py 是一个 Python 库,用于与以太坊区块链进行交互。它就像是连接 Python 程序和以太坊网络的桥梁。

Minner 1284

Web3

Web3.py api文档:https://web3py.readthedocs.io/en/stable/index.html 1. 安装 注意安装时如果出错,可能需要安装c++ pip install web3 2. 使用 2.1 连接 RPC RPC是远端过程调用。每个类evm的公链都有很多RPC,当你不知道某公链的RPC,可以去 chainlist.org 搜索,连接小狐狸钱包即可很快速的添加你想要的公链RPC。 Chain RPC Ethereum https://cloud

Niiuu的博客 4507

Python使用web3.py操作以太坊Geth

Python使用web3.py操作以太坊Geth 1、启动geth # --datadir 数据文件夹 # --networkid 创世文件中的chainid # --rpc 开启api接口 # --rpcapi="db,eth,net,web3,personal,miner" api接口的权限 # --rpcaddr=127.0.0.1 rpc的host,不需要加引号 # --allow-insecure-unlock 默认禁止了HTTP通道解锁账户,输入此参数开启,不然http无法解开帐户

出去玩去的博客 593

零基础用python开发区块链(三web3.py

web3.py是一个 Python 库,用于与以太坊区块链进行交互。它支持以太坊的各种功能,例如查询区块、发送交易、调用智能合约、与钱包交互等。web3.py是基于 JavaScript 库web3.js的 Python 版本,广泛应用于构建以太坊 DApps 和与区块链交互的脚本。

2088

Python知识点:基于Python工具,如何使用Web3.py进行以太坊智能合约开发

智能合约是区块链技术的核心应用之一,它允许在没有中介的情况下,通过代码自动执行合同条款。以太坊是目前最流行的智能合约平台之一,而Web3.py是用于与以太坊区块链交互的Python库。本文将详细介绍如何使用Web3.py进行以太坊智能合约的开发

杰哥在此的专栏 1444

Python 中的 web3.py开发 Dapp

什么是 DApp“DApp”代表去中心化应用程序。与传统应用程序一样,去中心化应用程序也有前端(客户端)和后端(服务器端)。DApp 的用户界面可以用任何语言编写(就像传统应用程序一样),...

Python中文社区 8216

Python3----第十五章 PythonWeb

【代码】Python3----第十五章 PythonWeb

weixin_44119674的博客 163

猫头虎 分享:PythonWeb3.py 的简介、安装、用法详解入门教程

在这篇博文中,我将详细介绍 PythonWeb3.py 的简介安装步骤以及使用方法。我会结合实际开发中遇到的问题,以猫头虎博主的身份为大家深入剖析这一强大的工具。此外,我会通过代码示例,帮助大家理解和掌握Web3.py 的核心功能,并提出一些常见问题的解决方案。最后,我还会对如何避免常见错误以及区块链开发的未来趋势做一个展望。Web3.py 是一个用来与以太坊区块链进行交互的 Python 库。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:CSDNWF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 8536

从零构建Python物体检测模型:基于YOLOv8的完整训练指南

物体检测是计算机视觉领域的核心技术之一,其核心目标是在图像或视频中精准定位并识别目标物体。相较于传统的图像分类(仅判断图像类别)

2601_96229599的博客 235
上一篇: 从零开始Python区块链搭建(一)
下一篇: Python web实战 | 细说 Django 的跨站点请求伪造(CSRF)保护
Python_P叔
博客等级 码龄3年 5358粉丝 827原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值