以太坊做爲最流行區塊鏈平臺,最大的特色是運行各類智能合約。咱們已經出過node.js、java、php的以太坊開發實戰教程,這一次是python。Python官方提供了一系列的Python包用於支持在Python應用中訪問以太坊,其中最流行的就是web3.py —— 對JSON RPC接口的Python封裝包。在本課程中,咱們將主要使用web3.py,同時結合一些其餘的包,來開發支持以太坊的Python應用。php
本教程的目的是幫助Python工程師快速掌握開發以太坊應用的技能,同時穿插 講解以太坊的一些核心概念,例如:帳戶、交易和智能合約等,大概的目錄結構是:java
將經過一個簡單的Python應用的開發來說解使用 Python進行以太坊應用開發的最簡流程,經過這一部分的學習,你就能夠在本身 的Python應用中引入基本的以太坊支持了。node
將詳細介紹以太坊的帳戶管理接口。若是你對開發中心化錢包應用感興趣,或者須要在本身的網站中動態建立帳戶(例如,你 但願爲網站增長對以太坊支付的支持),那麼這部份內容會有很大的幫助。python
講解以太坊的交易操做接口,同時也介紹一些 重要的概念,例如狀態、裸交易、gas等。這部份內容將幫助你理清Python 應用與以太坊交互的大多數問題。android
將經過一個ERC20代幣合約的開發、編譯、代碼生成、部署與交互 的完整流程,講解使用Python操做solitiy合約的方法。若是你但願爲本身的 應用增長代幣支持,這一部分的內容是必須的。程序員
講解以太坊的通知機制以及如何在Python中使用過濾器來監視 塊和交易的生成與合約事件的觸發。web
web3.py是以太坊官方維護的Python版rpc接口封裝庫,所以咱們優先 選擇它。下面是使用web3.py獲取節點版本信息的代碼:mongodb
from web3 import Web3, HTTPProvider
provider = Web3.HTTPProvider('http://localhost:8545')
w3 = Web3(provider)
複製代碼
Web3是web3.py的入口類,咱們與以太坊的交互,基本上是經過這個入口 來完成的,實例化Web3須要指定一個通訊服務提供器,即明確採用何種通訊 方式與哪個節點進行交互。json
web3.py目前實現了IPC、HTTP和Websocket這三種網絡服務提供器。 HTTPProvider則聲明瞭與以太坊節點旳鏈接採用HTTP協議,只須要指定 節點旳URL便可。因爲咱們使用本機的gaanche-cli仿真器,所以使用http://localhost:8545 這個URL。bash
Web3實例的manager屬性是一個RequestManager實例,它負責利用指定 的通訊服務提供器來進行json rpc交互,所以它是通訊傳輸無關的(provider agnostic)。 調用其request_blocking()方法來提交請求:
version = w3.manager.request_block('web3_clientVersion',[])
複製代碼
注意:request_block()返回的結果不是完整的json rpc響應,而僅僅是包含其result字段。
本教程地址:python以太坊
另外推薦一些以前的教程: