Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
以太坊作为最流行区块链平台,最大的特点是运行各种智能合约。我们已经出过node.js、java、php的以太坊开发实战教程,这一次是python。Python官方提供了一系列的Python包用于支持在Python应用中访问以太坊,其中最流行的就是web3.py——对JSONRPC接口的Python封装包。在本课程中,我们将主要使用web3.py,同时结合一些其他的包,来开发支持以太坊的Python应用。
: e1 r/ {' A5 L$ O! Y' ~3 c: z8 Z
    本教程的目的是帮助Python工程师快速掌握开发以太坊应用的技能,同时穿插讲解以太坊的一些核心概念,例如:账户、交易和智能合约等,大概的目录结构是:- x* g* x% z  N4 o! J- j
# U7 q' a; e/ M1 B; A
    Hi,以太坊
7 F3 P+ ^. n" W8 z( u$ D% X% H
- [0 q* Z* v0 B$ ~6 q# X    将通过一个简单的Python应用的开发来讲解使用Python进行以太坊应用开发的最简流程,通过这一部分的学习,你就可以在自己的Python应用中引入基本的以太坊支持了。
* e* U( }% `" q  `' ]
6 v* S3 G* F# T+ m: E% t- L: v    账户管理0 D, ?$ `/ i0 k$ o5 |+ d0 W; g
' S0 ^$ J- r$ o9 A
    将详细介绍以太坊的账户管理接口。如果你对开发中心化钱包应用感兴趣,或者需要在自己的网站中动态创建账户(例如,你希望为网站增加对以太坊支付的支持),那么这部分内容会有很大的帮助。
, C4 |3 {: C; v+ h6 D
4 p1 _2 [* y$ ^% h, J, ~) C3 L    理解状态与交易# \' O5 D/ T/ H6 J4 X

5 U+ m) ]6 c; }  j/ D# b    讲解以太坊的交易操作接口,同时也介绍一些重要的概念,例如状态、裸交易、gas等。这部分内容将帮助你理清Python应用与以太坊交互的大多数问题。8 W) q& `  `) M/ r* t" P% ~

  i9 I8 D% {7 f' |3 d4 b  ]  P/ ~    智能合约的开发与应用
' e  `2 {8 c9 a! U. `; t3 X7 ?; S$ L, k: {: C
    将通过一个ERC20代币合约的开发、编译、代码生成、部署与交互的完整流程,讲解使用Python操作solitiy合约的方法。如果你希望为自己的应用增加代币支持,这一部分的内容是必须的。9 D9 E4 E3 e; @- M) G5 V' G4 [# J

$ L5 [2 f: C1 X/ |$ G6 g8 I& h. z    过滤器与事件. a, Z, g' _! s3 d3 R1 r; r0 f
; ]2 ]1 P/ ~  \2 ]
    讲解以太坊的通知机制以及如何在Python中使用过滤器来监视块和交易的生成与合约事件的触发。
/ P) {. A' m) a' f4 T: [' Q! M9 P) ^2 a" V' e4 x6 i: e4 }
    web3.py示例( ^' y$ k; l# A- [, r- b; P; Z

6 e' N+ q5 H* K  o    web3.py是以太坊官方维护的Python版rpc接口封装库,因此我们优先选择它。下面是使用web3.py获取节点版本信息的代码:
+ a3 {0 ~" G0 ~/ F* L, Z+ o' ^  |7 d5 l
    fromweb3importWeb3,HTTPProvider/ G1 K- W+ X( p4 ?" w

: o8 ]8 a: r% Z    provider=Web3.HTTPProvider('http://localhost:8545')
8 P* {! M0 [- q9 Y4 Y& h- U# B: w+ b& F: B
    w3=Web3(provider)
8 J0 p0 D6 N. i
' D8 V" J- F3 i) \    Web3是web3.py的入口类,我们与以太坊的交互,基本上是通过这个入口来完成的,实例化Web3需要指定一个通信服务提供器,即明确采用何种通信方式与哪一个节点进行交互。" v, q3 v9 l( d: ~3 R; _0 C" C7 m
& Z2 \, @" a' l' S1 v7 W
    web3.py目前实现了IPC、HTTP和Websocket这三种网络服务提供器。HTTPProvider则声明了与以太坊节点旳连接采用HTTP协议,只需要指定节点旳URL即可。由于我们使用本机的gaanche-cli仿真器,因此使用http://localhost:8545这个URL。4 @2 ?5 d4 c% k: r/ B% ]: u
% G9 f0 T/ k8 b4 N: l
    Web3实例的manager属性是一个RequestManager实例,它负责利用指定的通信服务提供器来进行jsonrpc交互,因此它是通信传输无关的(provideragnostic)。调用其request_blocking()方法来提交请求:
$ T$ C" m9 u3 d+ \  F* n
- }, j6 d8 X" |' M6 I- ^    version=w3.manager.request_block('web3_clientVersion',[])
3 z  n. o( v; b  y: i2 V! A( R* g" r% g
    注意:request_block()返回的结果不是完整的jsonrpc响应,而仅仅是包含其result字段。
& t1 I8 n. G* V- N6 e8 i
- f! N+ v% n: s8 M$ H1 }8 W. N8 q. s/ h$ m% N) i4 \* ~
后续可参考:@常德小学生# e6 ~6 ]% v# D9 @' }- R# e
用 Python 中的 web3.py 库开发 Dapp
! E  i7 W& p: u; Q& A$ j  C; A5 y8 w+ e. X% ^
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

温室小书生室d 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13