以太坊作为最流行区块链平台,最大的特点是运行各种智能合约。我们已经出过node.js、java、php的以太坊开发实战教程,这一次是python。Python官方提供了一系列的Python包用于支持在Python应用中访问以太坊,其中最流行的就是web3.py —— 对JSON RPC接口的Python封装包。在本课程中,我们将主要使用web3.py,同时结合一些其他的包,来开发支持以太坊的Python应用。
本教程的目的是帮助Python工程师快速掌握开发以太坊应用的技能,同时穿插 讲解以太坊的一些核心概念,例如:账户、交易和智能合约等,大概的目录结构是:
Hi,以太坊
将通过一个简单的Python应用的开发来讲解使用 Python进行以太坊应用开发的最简流程,通过这一部分的学习,你就可以在自己 的Python应用中引入基本的以太坊支持了。
账户管理
将详细介绍以太坊的账户管理接口。如果你对开发中心化钱包应用感兴趣,或者需要在自己的网站中动态创建账户(例如,你 希望为网站增加对以太坊支付的支持),那么这部分内容会有很大的帮助。
理解状态与交易
讲解以太坊的交易操作接口,同时也介绍一些 重要的概念,例如状态、裸交易、gas等。这部分内容将帮助你理清Python 应用与以太坊交互的大多数问题。
智能合约的开发与应用
将通过一个ERC20代币合约的开发、编译、代码生成、部署与交互 的完整流程,讲解使用Python操作solitiy合约的方法。如果你希望为自己的 应用增加代币支持,这一部分的内容是必须的。
过滤器与事件
讲解以太坊的通知机制以及如何在Python中使用过滤器来监视 块和交易的生成与合约事件的触发。
web3.py示例
web3.py是以太坊官方维护的Python版rpc接口封装库,因此我们优先 选择它。下面是使用web3.py获取节点版本信息的代码:
from web3 import Web3, HTTPProvider
provider = Web3.HTTPProvider('http://localhost:8545')
w3 = Web3(provider)
- 1
- 2
- 3
- 4
Web3是web3.py的入口类,我们与以太坊的交互,基本上是通过这个入口 来完成的,实例化Web3需要指定一个通信服务提供器,即明确采用何种通信 方式与哪一个节点进行交互。
web3.py目前实现了IPC、HTTP和Websocket这三种网络服务提供器。 HTTPProvider则声明了与以太坊节点旳连接采用HTTP协议,只需要指定 节点旳URL即可。由于我们使用本机的gaanche-cli仿真器,因此使用http://localhost:8545 这个URL。
Web3实例的manager属性是一个RequestManager实例,它负责利用指定 的通信服务提供器来进行json rpc交互,因此它是通信传输无关的(provider agnostic)。 调用其request_blocking()方法来提交请求:
version = w3.manager.request_block('web3_clientVersion',[])
- 1
注意:request_block()返回的结果不是完整的json rpc响应,而仅仅是包含其result字段。
本教程地址: python以太坊。
相关推荐
1.环境准备 使用的环境包括: geth python3.7 web3.py solc ...创建一个文件夹btc,用以存放以太坊私链数据: b.创建json文件genesis.json,将文件内容改为下面所示并保存: { config:{ chainId:9, ho
此外,gnosis-py还提供了`safe_app`模块,用于与Gnosis Safe应用接口进行交互,这些应用通常运行在以太坊DApp浏览器上。这使得开发者能够构建自己的DApp,与Gnosis Safe集成,为用户提供更丰富的功能。 在开发过程...
总的来说,`py_solc_x-0.4.1-py3-none-any.whl`是Python开发者进入以太坊智能合约开发领域的有力工具,它简化了与Solidity编译器的交互,并为Python环境中的以太坊开发提供了便利。对于想要构建基于以太坊的DApp或者...
《Python库Populus详解——构建以太坊智能合约与DApp开发》 在区块链技术领域,尤其是以太坊生态系统中,Python库Populus扮演着重要角色。它为开发者提供了便捷的方式来构建、部署和测试以太坊智能合约,以及创建...
web3.py是Python中的一个以太坊开发库,它提供了与以太坊区块链交互的接口。你可以通过以下命令安装: ```bash pip install web3 ``` Geth是用于与以太坊网络通信的客户端,你可以从官方网站下载并按照指导安装。...
该软件包旨在供开发人员构建与以太坊客户端交互的Flask应用程序。 要求 的Python> = 3.5 一个简单的例子 >> > from flask import Flask , jsonify >> > from flask_web3 import current_web3 , FlaskWeb3 # Declare...