当前位置: 首页 > news >正文

以太坊数据开发-Web3.py-安装连接以太坊数据

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

官网:

https://web3py.readthedocs.io/

安装

pip install web3

anaconda可以在环境中openTerninal进行安装

使用

web3py需要通过数据提供商来获取数据,一般有如下几种方式:
1、测试供应商:测试使用,不是真实数据
2、远程供应商:常用的 Infura , Alchemy , QuickNode , or Chainstack
3、本地供应商:通过以太坊客户端将数据同步到本地供web3py使用

使用测试供应商数据测试

from web3 import Web3, EthereumTesterProvider
w3 = Web3(EthereumTesterProvider())
w3.is_connected()
True

使用远程供应商数据

不同远程供应商对比可以参考:https://zhuanlan.zhihu.com/p/514654991
我这里使用的是:alchemy
官网:alchemy.com
可以使用free版本,注册完成后在:https://dashboard.alchemy.com/查看自己的秘钥和通讯地址
在这里插入图片描述

from web3 import Web3
w3 = Web3(Web3.HTTPProvider('自己的连接'))
//查看某个地址的余额
print(w3.eth.get_balance('0xd83aB04432AF484Af5aCf9EEE30895C3607F78fD'))

也可以使用其他协议

w3 = Web3(Web3.WebsocketProvider('wss://<your-provider-url>'))

使用本地数据供应商数据

硬件要求很高, 但与以太坊交互的最安全方式是在自己的硬件上运行以太坊客户端。 对于本地运行的节点,IPC连接是最安全的选项,但HTTP和 WebSocket配置也可用。默认情况下,常用的Geth客户机 暴露端口 8545 以服务HTTP请求,暴露端口8546以服务WebSocket请求。连接 到该本地节点可以如下进行:
geth官网:https://geth.ethereum.org/
需要安装并完成数据同步后才能使用,成本很高,截止到22年9月,全节点需要12TB的存储空间。

磁盘空间通常是节点操作员的主要瓶颈。在撰写本文时(2022年9月),建议将2 TB SSD用于运行Geth的完整节点和共识客户端。Geth本身需要>650 GB的磁盘空间用于快照同步的完整节点,并且使用默认缓存大小时,增长速度约为14 GB/周。修剪会将总存储量降低到原来的650 GB。 归档节点需要额外的空间。一个将所有状态保留回Genesis的“完整”归档节点需要超过12 TB的空间。部分归档节点也可以通过在一些初始同步之后关闭垃圾收集器来创建-存储需求取决于保存了多少状态。

from web3 import Web3
# IPCProvider:
w3 = Web3(Web3.IPCProvider('./path/to/geth.ipc'))
# HTTPProvider:
w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))
# WebsocketProvider:
w3 = Web3(Web3.WebsocketProvider('wss://127.0.0.1:8546'))
w3.is_connected()
True

获取最新一个区块的数据

w3.eth.get_block('latest')
http://www.lryc.cn/news/4008.html

相关文章:

  • 【触摸屏功能测试】MQTT_STD本地调试说明-测试记录
  • 六十分之十三——黎明前
  • 【Call for papers】CRYPTO-2023(CCF-A/网络与信息安全/2023年2月16日截稿)
  • 线程的信号量和互斥量
  • 关于Linux,开源社区与国产化的本质区别
  • Win11下Linux子系统迁移方法及报错解决
  • python维护的一些基础方法
  • C语言 数组元素的指针
  • (C语言)指针进阶
  • DS期末复习卷(三)
  • Java链表模拟实现+LinkedList介绍
  • MySQL——单表、多表查询
  • 关于表的操作 数据库(3)
  • C++:红黑树
  • 每天一道算法题の中缀表达式
  • Dar语法基础-泛型
  • rt-thread------串口(一)配置
  • Android - 自动系统签名
  • SSH 服务详解 (八)-- vscode 通过 SSH 远程连接 linux 服务器
  • 【PTA Advanced】1060 Are They Equal(C++)
  • 仿真与测试:通过Signal Builder模块生成输入信号
  • 云计算培训靠谱吗?
  • 力扣SQL刷题10
  • 31 岁生日快乐,Linux!
  • 分布式ID生成方案
  • 合宙Air103|fbd数据库| fskv - 替代fdb库|LuatOS-SOC接口|官方demo|学习(16):类redis的fbd数据库及fskv库
  • 【论文精读】Deep Residual Learning for Image Recognition
  • Lesson2:基础语法、输出输入
  • android 9.0去掉前置摄像头闪光灯功能
  • 静态分析工具Cppcheck在Windows上的使用