Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
以太坊作为最流行区块链平台,最大的特点是运行各种智能合约。我们已经出过node.js、java、php的以太坊开发实战教程,这一次是python。Python官方提供了一系列的Python包用于支持在Python应用中访问以太坊,其中最流行的就是web3.py——对JSONRPC接口的Python封装包。在本课程中,我们将主要使用web3.py,同时结合一些其他的包,来开发支持以太坊的Python应用。9 }+ E0 g# y$ ~) K- s
9 t3 l' z4 a+ x! |4 x
    本教程的目的是帮助Python工程师快速掌握开发以太坊应用的技能,同时穿插讲解以太坊的一些核心概念,例如:账户、交易和智能合约等,大概的目录结构是:
. Z5 P3 }: m/ ^# h% a
; A& U7 J# N- @7 G    Hi,以太坊
1 x( K+ k7 v( U1 K! q4 l' i3 R0 A. W& ]5 w# Z& N! c
    将通过一个简单的Python应用的开发来讲解使用Python进行以太坊应用开发的最简流程,通过这一部分的学习,你就可以在自己的Python应用中引入基本的以太坊支持了。; z" f! @! L5 M! l9 P
" L5 S1 A6 r1 z6 j; x. o5 O9 y
    账户管理. q1 J  Y# X5 A, R: l

! G+ q  J7 c2 `+ q    将详细介绍以太坊的账户管理接口。如果你对开发中心化钱包应用感兴趣,或者需要在自己的网站中动态创建账户(例如,你希望为网站增加对以太坊支付的支持),那么这部分内容会有很大的帮助。8 ~* ^% u+ e8 t8 Z. }2 H

# k8 x: e* C" O  o0 F- J, c; h7 _    理解状态与交易( [/ X" V2 ~5 H$ a1 Z2 x

' M7 [1 w# X/ v/ Y0 @/ }$ v2 W    讲解以太坊的交易操作接口,同时也介绍一些重要的概念,例如状态、裸交易、gas等。这部分内容将帮助你理清Python应用与以太坊交互的大多数问题。; H. B1 |1 C" b$ Q" m( x; G
' V' H  I8 D, E7 \& ^
    智能合约的开发与应用! i4 {  i& N8 A7 d1 C$ U2 N* Z# v
: ^( Z( F" [; {. q+ w  ~5 `/ q
    将通过一个ERC20代币合约的开发、编译、代码生成、部署与交互的完整流程,讲解使用Python操作solitiy合约的方法。如果你希望为自己的应用增加代币支持,这一部分的内容是必须的。
9 \, X# O! }1 U8 I& O: r0 _1 [" o5 \- Z, U/ c1 S5 o
    过滤器与事件
% J1 \3 R4 O; v3 Z% q
* v1 C6 x: k: `) t9 v+ }" {    讲解以太坊的通知机制以及如何在Python中使用过滤器来监视块和交易的生成与合约事件的触发。) R: o0 `% |( B9 ]

! S  I9 F  |  S7 x$ z+ \/ X    web3.py示例* R: t) @  `7 d/ h
* O7 r* R% g5 h9 _% G% M
    web3.py是以太坊官方维护的Python版rpc接口封装库,因此我们优先选择它。下面是使用web3.py获取节点版本信息的代码:1 z3 _1 s6 z: P: b( J
! j+ h3 {: }. C1 ]
    fromweb3importWeb3,HTTPProvider
7 ]8 d8 a) M- z, w5 X, N4 c: m0 q& x3 Z6 e  P3 u% v
    provider=Web3.HTTPProvider('http://localhost:8545')- O4 W! `4 g- h+ ?  ^4 O

* B( z5 Z  y8 E0 k# F0 a    w3=Web3(provider)
  l+ K1 I* o: Y
. _  O& p/ L4 R5 ^& t7 t    Web3是web3.py的入口类,我们与以太坊的交互,基本上是通过这个入口来完成的,实例化Web3需要指定一个通信服务提供器,即明确采用何种通信方式与哪一个节点进行交互。
7 L- L8 U! _5 E! J9 P7 Q0 r  B- p4 I* U2 L3 r* }, J
    web3.py目前实现了IPC、HTTP和Websocket这三种网络服务提供器。HTTPProvider则声明了与以太坊节点旳连接采用HTTP协议,只需要指定节点旳URL即可。由于我们使用本机的gaanche-cli仿真器,因此使用http://localhost:8545这个URL。
: G: b4 S2 G6 h2 z1 [9 e$ ?: }) X+ V
    Web3实例的manager属性是一个RequestManager实例,它负责利用指定的通信服务提供器来进行jsonrpc交互,因此它是通信传输无关的(provideragnostic)。调用其request_blocking()方法来提交请求:: Q/ Y, k# i2 C0 U8 Q4 _

* |, V* n9 R- E$ _5 ^    version=w3.manager.request_block('web3_clientVersion',[])
- |: U. ]6 x8 ^2 z5 G
7 H3 ~% C* q3 V5 K/ k) m    注意:request_block()返回的结果不是完整的jsonrpc响应,而仅仅是包含其result字段。
- `* ]! U2 |4 `0 |8 h1 a
$ u8 ^. K8 ]+ u5 j# y
7 j5 a7 l! ^& a) P" V+ l后续可参考:@常德小学生  n' E, A# ?+ s' N; N# V
用 Python 中的 web3.py 库开发 Dapp
8 z% V+ {( X; y& n, M' F9 y+ U; u0 L4 E2 u0 H$ r
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13