主页 > imtoken钱包官网登录 > python和web3.py如何开发以太坊dapp

python和web3.py如何开发以太坊dapp

imtoken钱包官网登录 2024-01-26 05:13:31

作为最流行的区块链平台,以太坊的特点是运行各种智能合约。 我们发布了node.js、java、php的以太坊开发实战教程以太坊DApp开发实战入门,这次是python。 Python官方提供了一系列Python包来支持在Python应用中访问以太坊,其中最流行的是web3.py——JSON RPC接口的Python包。 在本课程中,我们将主要使用 web3.py,结合其他一些包,开发支持以太坊的 Python 应用程序。

本教程旨在帮助Python工程师快速掌握开发以太坊应用的技能,同时讲解以太坊的一些核心概念,如账户、交易、智能合约等。 大概的目录结构是:

你好,以太坊

通过一个简单的Python应用的开发,我们将讲解使用Python开发以太坊应用最简单的过程。 通过这部分学习,您可以将基本的以太坊支持引入到您自己的 Python 应用程序中。

帐户管理

下面详细介绍以太坊的账户管理界面。 如果你有兴趣开发集中式钱包应用,或者需要在你自己的网站动态创建账户(例如,你想在你的网站上添加对以太坊支付的支持),那么这部分将会有很大的帮助。

了解状态和交易

讲解以太坊的交易操作接口,同时介绍一些重要的概念,如状态、裸交易、gas等。本节将帮助您梳理Python应用与以太坊交互的大部分问题。

智能合约的开发与应用

通过一个ERC20代币合约的开发、编译、代码生成、部署、交互的完整过程,讲解使用Python操作solitiy合约的方法。 如果您想向您的应用程序添加令牌支持以太坊DApp开发实战入门,则此部分是必须的。

过滤器和事件

讲解以太坊的通知机制,以及如何在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 模拟器,因此请使用 :8545 URL。

Web3实例的manager属性是一个RequestManager实例,负责使用指定的通信服务提供者进行json rpc交互,因此是provider agnostic。 调用其 request_blocking() 方法提交请求:

version = w3.manager.request_block('web3_clientVersion',[])

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

本教程地址:python Ethereum。