Web3.py 学习(一)

article/2025/10/14 23:58:10

一、什么是Web3.py

       Web3.py is a python library for interacting with Ethereum. Its API is derived from the Web3.js Javascript API and should be familiar to anyone who has used web3.js.

       Web3.py是连接以太坊的python库,它的API从web3.js中派生而来。如果你用过web3.js,你会对它的API很熟悉。但惭愧的是,作为一个以太坊上Dapp的开发者,我几乎没有直接使用过web3.js,也没有看过它的API。

       虽然我以前在本地环境(比如Ganache)中开发Dapp时已经使用过web3.py,但只是很简单的应用,并没有系统的学习过(部分原因是我也没有系统学过python,只是看了大约10个小时文档)。今天把web3.py的官方文档打开,准备系统的学习一下。

       笔者的学习环境为 Mac OS + python 3.7.3。

二、安装并测试web3.py

       我以前已经安装过了web3.py,所以就直接按照文档中的应用进行测试了。没想到会遇到一些问题,记录如下,以供出现同样问题的读者参考。

2.1 设置环境变量

       打开终端,默认就在~目录,运行 vim .bash_profile,按i插入,在最后一行增加:

export WEB3_INFURA_PROJECT_ID=your_infura_key

       这其中your_infura_key是连接infura节点所需要的key。如果没有,去https://infura.io/ 新建一个工程就可以得到了。

       按下esc,接着是:,然后wq保存退出。再运行source .bash_profile来使刚才的环境变量设置生效。

2.2 解决各种错误

       在终端中执行python3,进入解释器,或者运行IDLE应用程序也可。执行以下代码:

>>> from web3.auto.infura import w3
>>> w3.eth.blockNumber

然而,几秒的等待后,报如下错误:

certificate verify failed: unable to get local issuer certificate

       Google了一下,是因为python3.6和3.7不再依赖于Mac OS的openSSL,它使用自己的openSSL,解决办法有两种:
       1、运行python自带的安装程序

cd /Applications/Python\ 3.7/
./Install\ Certificates.command

       2、安装certifi

pip install certifi

       其实这两种方法是等效的。好了,这个问题就是这样解决的。

       重新执行脚本来获取当前块高度,然而又报错了:

websockets.exceptions.InvalidStatusCode: Status code not 101: 401

       继续Google,是讲websockets这个库6.0和7.0有区别。看来我的库是6.0的,这个好办,升级它:

pip install --upgrade websockets

       成功的将websockets从6.0升级到了8.0。然而升级的过程中又提示:

ERROR: web3 4.8.1 has requirement websockets<7.0.0,>=6.0.0, 
but you'll have websockets 8.1 which is incompatible.

       无语了,看来得继续升级我的web3.py。运行:

pip install --upgrade web3

       等待升级完成。好了,这下没有问题了。

2.3 连接以太坊节点

       在终端重新运行phthon3,进行解释器,然后执行:

>>> from web3.auto.infura import w3
>>> w3.eth.blockNumber

       短时间的等待后会输出当前区块高度,测试的时候为:9462097。

       查看最新区块详细信息:

>>> w3.eth.getBlock('latest')

       很快就会有输出,显示当前区块的一些信息,连接以太坊节点的测试通过。

三、连接本地以太坊

       平常我们使用本地开发环境(Ganache)时,怎么连接本地以太坊呢?文档中给出了一种方法,使用HTTPProvider

>>> w3 = Web3(HTTPProvider('http://localhost:8545'))

       不过我们可以不使用这个方法,推荐使用另一种:

>>> from web3.auto import w3
>>> w3.isConnected()
True
>>> w3.eth.blockNumber
46
>>> 

四、熟悉基础API

       熟悉基础API时我建议大家不要在终端执行python3来进入解释器,而是运行IDLE程序。因为在IDLE里,API是有提示的,如下图:
在这里插入图片描述
       这里提示输入一个数字和一个字符串,返回一个整数。注意,这个字符串是指以太坊上的单位,比如etherGwei等。

       文档中列出的基础API除了检查是否可编码外,平常开发中都会经常使用。

       Web3.py第一章总览就学习结束了。本次学习内容不多,重点是掌握web3.py的安装和连接以太坊节点的方法。同时也要对基础的API有一些了解,毕竟要经常使用的。

       期待下一次的学习。


http://chatgpt.dhexx.cn/article/i2sIbv9q.shtml

相关文章

Web基础(三)Python Web

文章目录 Python Web基础1. WSGI1.1 概述1.2 实现原理1、WSGI Server/gateway2、WSGI Application3、WSGI MiddleWare 1.3 测试 WSGI服务器代码简析 1.4 实现WSGI服务器1.5 生产环境中的Web服务器[Gunicorn](https://github.com/benoitc/gunicorn "Gunicorn")[uWSGI …

【小沐学Python】Python实现Web服务器(web2py)

&#x1f37a;基于Python的Web服务器系列相关文章编写如下&#x1f37a;&#xff1a; &#x1f388;【Web开发】Python实现Web服务器&#xff08;Flask快速入门&#xff09;&#x1f388;&#x1f388;【Web开发】Python实现Web服务器&#xff08;Flask案例测试&#xff09;&a…

Python——Web2py开发实战:开发一个自己的网站(新手入门级)

目录 一、web2py 二、使用步骤 1.找到一个可以帮助网站运营的工具——pythonanywhere 1&#xff09;创建账户&#xff1b; 2&#xff09;创建网站 3&#xff09; 网站管理 2.我的开端 1&#xff09;删除example app 2&#xff09;创建新的app sophia 3&#xff09;修改参数 4&a…

web2py框架

介绍&#xff1a; web2py是一种免费的、开源的web开发框架&#xff0c;采用python语言编写&#xff0c;并且可以使用python编程。 MVC模式&#xff1a;模型Model、视图View、控制器Controller 一、安装 pip install web2py 二、创建项目(Pycharm) 1.选择File->New Project-&…

web2py入门教程(1)

IDE&#xff1a;PyCharm 1、创建web2py项目 在下图左侧选中Web2Py&#xff0c;在右侧填写项目路径和应用名称&#xff0c;我这里是第一次创建&#xff0c;所以直接点击"Create"创建项目&#xff0c;此时会自动下载Web2Py项目框架&#xff08;如果不是第一次创建&am…

Gitlab 隐藏注册功能

1.用管理员账号登录 2.Admin Area 3.Settings 4.把Sign-up enabled的勾去掉 5.退出重新登录就可以看见只有登录没有注册选项了

GitLab屏蔽用户注册方法:

以管理员身份登录进GitLab平台 点击【Admin Area】 点击【Settings】 页面控制【Sign-up Restrictions】 默认的GitLab登录界面是有注册功能的 将【Sign-up enabled】的勾选框去掉&#xff0c;即取消掉注册功能 滚动到页面最底端&#xff0c;点击【Save】保存按钮&#xff0c…

gitlab安装注册记录——gitlab(一)

一、下载安装&#xff08;widows版本&#xff09; git下载地址&#xff1a;https://git-scm.com/download/win 官网下载速度慢的话可以到管家中下载&#xff0c;速度快 安装好右键就可看到 二、注册gitlab账户 官方网址&#xff1a;https://about.gitlab.com/ 如果注册过gi…

配置gitLab的邮件服务,并开启邮箱的验证通知功能

上一篇&#xff0c;讲了 在linux上搭建部署gitlab服务器 这篇讲一下 配置gitLab的邮件服务 为什么需要开启gitLab的邮件服务呢&#xff1f;我觉得至少有以下两个原因 1、搭建好gitLab服务器后&#xff0c;当有新的开发人员需要加入开发时&#xff0c;就可以注册账号了 但是…

GitLab之不允许用户注册-yellowcong

Gitlab默认是运行用户注册的&#xff0c;但是我们现在不想别人注册gitlab,解决的方案&#xff0c;就是在管理员里面配置允许注册。 注册界面 默认情况下&#xff0c;gitlab是允许用户注册的&#xff0c;但是现在我们需要关闭这个注册。 登录到管理 设置Settings,设置登录信…

2020-08-31 ubuntu18.04下安装gitlab,以及使用邮箱注册

最近在ubuntu18.04系统下安装gitlab&#xff0c;把安装之路记录下来 1、安装并配置必要的依赖关系 sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates 2、接下来&#xff0c;安装Postfix发送通知邮件&#xff0c;因为会用到服务器的外部DNS…

创建gitlab账号并加入群组

先说背景&#xff1a;我想创建个gitlab账号&#xff0c;并且申请加入一个已经存在的项目组&#xff0c;之前只使用过github&#xff0c;没有gitlab账号&#xff0c;所有我找到如下图片的网站&#xff0c;反复注册之后还是失败&#xff0c;用github账号登录&#xff0c;但项目组…

篇二:部署GitLab-创建令牌与GitLab凭证

篇二&#xff1a;部署GitLab ​ 在Kubernetes集群中完成GitLab服务的部署&#xff0c;完成后创建一个公开项目&#xff0c;这里起个名叫springcloud&#xff0c;以NodePort的方式映射了80端口到宿主机的30888&#xff0c;并在gtilab中上传项目。 3.1部署GitLab 下载并解压Je…

gitlab 屏蔽注册功能

以管理员身份登录进GitLab平台点击【Admin Area】 在sign-up Restrictions 取消sign-up enabled保存退出即可 默认的GitLab登录界面是有注册功能的 将【Sign-up enabled】的勾选框去掉&#xff0c;即取消掉注册功能

GitLab CI/CD 基础入门 Runner注册配置使用

特点 开源&#xff1a; CI/CD是开源GitLab社区版和专有GitLab企业版的一部分。(极狐)易于学习&#xff1a; 官方具有详细的学习操作文档。无缝集成&#xff1a; CI/CD是GitLab的一部分&#xff0c;支持从计划到部署,具有出色的用户体验。可扩展&#xff1a; 可以根据需要添加任…

记部署gitlab出现的问题

一、创建gitlab用户时&#xff0c;用户没收到邮件 排除步骤&#xff1a; 使用 gitlab.rb 里面配置的邮件地址向创建 gitlab 用户时配置的邮件地址发送邮件 收件方能正常收到邮件&#xff0c;排除收件方配置了拒收邮件的可能性。使用 gitlab-rails 命令进行测试 gitlab-rails …

Gitlab和gitlab-runner安装和注册

目录 Git和SVN的区别 Gitlab CI/CD工作原理及使用步骤 Gitlab安装 gitlab-runner安装和注册 GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务。 公司内部一般会在自己的内网进行搭建Gitlab服务管理…

gitlab如何创建用户并登录

为了大家后期能方便创建用户和使用gitlab&#xff0c;先给大家设置为中文 设置为中文后保存然后刷新页面即可设置为中文 接下来教大家怎么创建git用户并进行登录 创建完用户后需要配置一次密码 配置完密码后退出用户测试进行新用户登录 这里用刚创建的新用户来登录 第一次登…

Gitlab-Runner安装并注册

本文介绍Gitlab-Runner的安装运行&#xff08;包括docker方式安装运行及二进制直接运行&#xff09;&#xff0c;并介绍如何将Gitlab注册到Gitlab。同时还介绍了gitlab-runner的一些常用操作命令。 安装Gitlab-Runner gitlab-runner可以使用docker方式运行&#xff0c;也可以在…