title: 1. HelloVitalik (6行代码) tags: web3py python ens vitalik web3.py极简入门: 1. HelloVitalik (6行代码) 我们最近在重新学 ,巩固一下细节,也写一个 ,供小白们使用。 推特:@0xAAScience0xXQ WTF Academy社群: 官网 wtf.academy | WTF Solidity教程 | discord | 微信群申请 所有代码和教程开源在github: github.com/WTFAcademy/WTF-web3py 这一讲,我们会介绍 库,python在线编辑器 ,并且我们会写第一个程序 :查询Vitalik的 余额,并输出在 中。 教程使用 web3.py 最新的 v6.11.
title: 1. HelloVitalik (6行代码) tags: - web3py - python - ens - vitalik
我们最近在重新学web3.py,巩固一下细节,也写一个WTF web3py极简入门,供小白们使用。
WTF Academy社群: 官网 wtf.academy | WTF Solidity教程 | discord | 微信群申请
所有代码和教程开源在github: github.com/WTFAcademy/WTF-web3py
这一讲,我们会介绍web3.py库,python在线编辑器colab,并且我们会写第一个程序HelloVitalik:查询Vitalik的ETH余额,并输出在console中。
教程使用 web3.py 最新的 v6.11.4 版本。
web3.py适用于以太坊和 EVM 区块链的Python Web3 SDK,提供了许多方便实用的函数,支持开发者与以太坊主网进行便捷的交互。
你可以使用本地VScode进行开发。你需要安装Python,以及Jupyter Notebook然后利用包管理工具pip安装web3.py库:
pip install web3

colab是一个在线Python编程的平台,你只需要有一个Google帐号,不需要配置Python环境就可以运行使用Jupyter Notebook运行Python代码。

这一讲,我们将用colab做演示。你需要有一个Google帐号并登录,然后点击File > New Notebook创建一个新项目,然后将代码写在自动生成的Untitled1.ipynb中即可。本地使用VScode的方法同理,相关配置方法请读者自行查阅资料。
Jupyter Notebook和Colab是一种交互式的编程环境,在这里代码被写在独立的Cell里并可以分步执行,适合对代码的逐步调试和修改。代码的运行结果也可以自动展示在Cell的输出部分中。运行独立的Cell可以通过选中Cell并点击运行按钮来运行,也可以使用快捷键Shift+Enter运行。
现在,让我们用web3.py编写第一个程序HelloVitalik:查询Vitalik的ETH余额,并输出在NoteBook中。整个程序只需要4行,非常简单!
注意:在Colab上第一次运行可能会提示ModuleNotFoundError: No module named 'web3',这是因为web3.py库还没有安装,只需要在任意一个Cell,输入下列指令运行安装即可。
pip install web3

from web3 import Web3 w3 = Web3(Web3.HTTPProvider('https://rpc.ankr.com/eth')) print(w3.is_connected()) print(w3.eth.get_balance("vitalik.eth"))
我们逐行分析这个程序:
web3.py第一行的作用是导入已经安装好的web3.py库:
from web3 import Web3
在web3.py中,Provider类是一个为以太坊网络连接提供抽象的类,它提供对区块链及其状态的只读访问。Provider包括Test Provider, Local Provider, Remote Provider三种,这里我们初始化一个HTTPProvider用于连接以太坊网络。HTTPProvider接收一个String类型的参数,用于指定rpc地址,这里我们使用的是以太坊主网的公共rpc。
完成Provider的创建后,我们使用Provider实例作为参数初始化一个Web3实例。Web3实例是与以太坊交互的入口,我们使用变量w3存储这个实例。
w3 = Web3(Web3.HTTPProvider('https://rpc.ankr.com/eth'))
完成Web3实例的初始化后,我们需要测试实例是否能够成功连接到以太坊网络。is_connected()会返回一个布尔型变量,这里我们把他输出到控制台。返回为True代表连接成功。
print(w3.is_connected())
ETH余额我们可以利用Web3.eth实例的get_balance()函数来查询某个地址的ETH余额。由于web3.py支持ENS域名,我们不需要知道具体地址,用ENS域名vitalik.eth就可以查询到以太坊创始人豚林-vitalik的余额。
print(w3.eth.get_balance("vitalik.eth"))

这是WTF web3.py极简教程的第一讲,我们介绍了web3.py,并完成了第一个使用web3.py的程序HelloVitalik,查询Vitalik钱包的ETH余额。
课后作业:在第四步里我们获取了Vitalik地址的ETH余额,有没有合适的方法可以把输出的单位转化为ETH呢?
web3.py官方文档:https://web3py.readthedocs.io/en/stable/index.html