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

简介: 以太坊作为最流行区块链平台,最大的特点是运行各种智能合约。我们已经出过node.js、java、php的以太坊开发实战教程,这一次是python。

以太坊作为最流行区块链平台,最大的特点是运行各种智能合约。我们已经出过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应用开发,适合入门。
相关文章
|
2天前
|
存储 人工智能 数据挖掘
Python编程入门:从基础到实战
【9月更文挑战第10天】本文将引导你进入Python编程的世界,从基本语法到实际项目应用,逐步深入。我们将通过简单的例子和代码片段,帮助你理解并掌握Python编程的精髓。无论你是编程新手还是有一定经验的开发者,都能在这篇文章中找到有价值的信息。让我们一起开始Python编程之旅吧!
|
3天前
|
数据采集 开发者 Python
探索Python中的异步编程:从基础到实战
【9月更文挑战第9天】本文将带你进入Python异步编程的世界,从理解其核心概念开始,逐步深入到实际应用。我们将一起构建一个小型的异步Web爬虫,通过实践学习如何在不阻塞主线程的情况下并发处理任务,优化程序性能。文章不仅包含理论知识,还提供代码示例,让读者能够动手实践,深刻理解异步编程的力量。
25 12
|
1天前
|
存储 安全 数据安全/隐私保护
安全升级!Python AES加密实战,为你的代码加上一层神秘保护罩
【9月更文挑战第12天】在软件开发中,数据安全至关重要。本文将深入探讨如何使用Python中的AES加密技术保护代码免受非法访问和篡改。AES(高级加密标准)因其高效性和灵活性,已成为全球最广泛使用的对称加密算法之一。通过实战演练,我们将展示如何利用pycryptodome库实现AES加密,包括生成密钥、初始化向量(IV)、加密和解密文本数据等步骤。此外,还将介绍密钥管理和IV随机性等安全注意事项。通过本文的学习,你将掌握使用AES加密保护敏感数据的方法,为代码增添坚实的安全屏障。
15 8
|
1天前
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【9月更文挑战第12天】在Web开发中,安全漏洞如同暗礁,尤其对初学者而言,SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)是常见挑战。本文通过实战案例,展示如何利用Python应对这些威胁。首先,通过参数化查询防止SQL注入;其次,借助Jinja2模板引擎自动转义机制抵御XSS攻击;最后,使用Flask-WTF库生成和验证CSRF令牌,确保转账功能安全。掌握这些技巧,助你构建更安全的Web应用。
9 5
|
1天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的商城管理系统
是基于Python+Vue开发的商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的网上商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
14 5
|
1天前
|
大数据 数据挖掘 数据处理
Python数据流转的秘密武器:文件系统操作与高效I/O管理实战
【9月更文挑战第12天】在大数据时代,Python凭借其丰富的库和简洁的语法,成为数据处理的首选工具。本文通过实战案例,介绍如何利用Python的`pathlib`模块遍历复杂文件系统,以及通过高效I/O管理(如使用`with`语句和多线程)提升文本文件处理性能。通过这些技巧,你可以轻松从大量分散的文本文件中提取关键信息并整合成新的数据集,从而更好地支持数据分析工作。掌握这些技术,将助你在数据处理领域游刃有余。
11 4
|
1天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的反诈视频宣传管理系统
基于Python+Vue开发的反诈视频宣传管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的反诈宣传管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
13 4
|
2天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的鲜牛奶订购管理系统
基于Python+Vue开发的鲜牛奶订购管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的牛奶订购管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
9 0
|
2天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的民宿客房预订管理系统
基于Python+Vue开发的民宿客房预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的民宿客房预订管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
8 0
|
IDE 开发工具 Android开发
Python开发神器PyCharm,体验下吧
Python开发神器PyCharm,体验下吧
166 0
Python开发神器PyCharm,体验下吧