以太坊作为最流行区块链平台, 最大的特点是运行各种智能合约. 我们已经出过 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 以太坊 http://xc.hubwiz.com/course/5b40462cc02e6b6a59171de4?affid=730bbk .
来源: http://www.bubuko.com/infodetail-2706231.html