Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
以太坊作为最流行区块链平台,最大的特点是运行各种智能合约。我们已经出过node.js、java、php的以太坊开发实战教程,这一次是python。Python官方提供了一系列的Python包用于支持在Python应用中访问以太坊,其中最流行的就是web3.py——对JSONRPC接口的Python封装包。在本课程中,我们将主要使用web3.py,同时结合一些其他的包,来开发支持以太坊的Python应用。6 h$ ~9 _: ?0 Y$ x; C
! I6 ]+ P' a) Y  R) N6 Y& E
    本教程的目的是帮助Python工程师快速掌握开发以太坊应用的技能,同时穿插讲解以太坊的一些核心概念,例如:账户、交易和智能合约等,大概的目录结构是:2 C& E$ p8 h& \+ d0 X5 A2 n8 s

6 e( i; P1 D# H5 v4 ^, v    Hi,以太坊
, N& @# z' _5 p& v
$ W5 M" w4 Y+ `    将通过一个简单的Python应用的开发来讲解使用Python进行以太坊应用开发的最简流程,通过这一部分的学习,你就可以在自己的Python应用中引入基本的以太坊支持了。
/ d( q6 N' f, U( t) m3 m1 p! f7 K
    账户管理
: v4 R( B: A# |" Q% O. X1 ^# i) K3 W% U/ H7 h
    将详细介绍以太坊的账户管理接口。如果你对开发中心化钱包应用感兴趣,或者需要在自己的网站中动态创建账户(例如,你希望为网站增加对以太坊支付的支持),那么这部分内容会有很大的帮助。
- g' d( s5 p) j; d' i2 K- _1 p5 n; E$ _6 p4 T- k% C2 n9 D4 B) W
    理解状态与交易
4 ]4 M1 B2 h8 S9 N' X* J8 q3 M: P! B3 F9 _3 f5 q5 \
    讲解以太坊的交易操作接口,同时也介绍一些重要的概念,例如状态、裸交易、gas等。这部分内容将帮助你理清Python应用与以太坊交互的大多数问题。
5 K. ^, ?5 l! G' w! c/ G3 j( g% |
$ U9 L  G; j& b; Q4 h1 U    智能合约的开发与应用/ q* q. G. b. V' ?0 v2 {  d
! t% D( Z3 y. F2 r, D) S
    将通过一个ERC20代币合约的开发、编译、代码生成、部署与交互的完整流程,讲解使用Python操作solitiy合约的方法。如果你希望为自己的应用增加代币支持,这一部分的内容是必须的。
$ \! ^1 R( X, s# R( H" s+ i7 F- K$ q6 p9 B. S
    过滤器与事件. h7 {% x$ W& {9 F

. r  x$ _7 O/ g2 P    讲解以太坊的通知机制以及如何在Python中使用过滤器来监视块和交易的生成与合约事件的触发。6 e$ o/ |+ D; q6 ~' W
7 U5 t" n: r6 \0 r- @
    web3.py示例4 D2 G- B" S. ?! n; J
  f' k2 j# ]1 m% K) x
    web3.py是以太坊官方维护的Python版rpc接口封装库,因此我们优先选择它。下面是使用web3.py获取节点版本信息的代码:' f  ?7 o! j& i7 p

6 G/ ^/ P; I( i7 h) L( K) B    fromweb3importWeb3,HTTPProvider
$ \5 b  i+ a, w& D3 H% Z' K& n4 `7 A4 ^, j) D8 j1 A1 m
    provider=Web3.HTTPProvider('http://localhost:8545')
) T& Y, Y' O* f# Z- E8 R# j% V
0 t% j9 R- B! q5 E  m) V" b1 x    w3=Web3(provider)- v# P, r* n* a4 i; \, i

0 y1 |. R. m. E% N' M; b: |% G8 s    Web3是web3.py的入口类,我们与以太坊的交互,基本上是通过这个入口来完成的,实例化Web3需要指定一个通信服务提供器,即明确采用何种通信方式与哪一个节点进行交互。
# Z& [) ^4 d! m& f- S% Z  I$ A: c* {8 R& _; b9 O: |! ]
    web3.py目前实现了IPC、HTTP和Websocket这三种网络服务提供器。HTTPProvider则声明了与以太坊节点旳连接采用HTTP协议,只需要指定节点旳URL即可。由于我们使用本机的gaanche-cli仿真器,因此使用http://localhost:8545这个URL。2 T5 F' O4 T5 l+ ?+ G

* ]8 s# y2 m/ r' z    Web3实例的manager属性是一个RequestManager实例,它负责利用指定的通信服务提供器来进行jsonrpc交互,因此它是通信传输无关的(provideragnostic)。调用其request_blocking()方法来提交请求:# u1 b, U0 ]* e1 Y* k4 b9 I. ?

% X7 G: k) d0 v. [' L    version=w3.manager.request_block('web3_clientVersion',[])8 X# p* k4 m8 [  J4 B

- d  N8 X8 K+ G    注意:request_block()返回的结果不是完整的jsonrpc响应,而仅仅是包含其result字段。
8 O/ `7 K: n4 F4 r2 |( h9 }, I
. M- e% {; S' m+ k9 V& G
! l3 t" i4 t9 d) i, c! ^6 Y. l后续可参考:@常德小学生
9 {/ j3 y5 i# l2 J$ Q# v; _* O( m用 Python 中的 web3.py 库开发 Dapp$ u, v# ^( J3 b; E) J1 }7 K

9 }1 A5 I( O6 C( l8 ]1 I6 i& X8 W
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13