社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  区块链

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

小智 • 5 年前 • 1187 次点击  

以太坊作为最流行区块链平台,最大的特点是运行各种智能合约。我们已经出过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)

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',[])

注意:request_block()返回的结果不是完整的json rpc响应,而仅仅是包含其result字段。

本教程地址: python以太坊

另外推荐一些之前的教程:

  • web3j,主要是针对java和android程序员围绕web3j库进行区块链以太坊开发的讲解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/20605
 
1187 次点击  
文章 [ 3 ]  |  最新文章 5 年前
小智
Reply   •   1 楼
小智    5 年前

大家可以留微信进群聊啊。

小智
Reply   •   2 楼
小智    5 年前

加qq群225222700交流以太坊技术。

小智
Reply   •   3 楼
小智    5 年前

另外推荐个博客吧:

以太坊博客