Web3.py 入门笔记

Web3.py 学习笔记 📚

https://web3py.readthedocs.io/en/stable/

1. Web3.py 简介 🌟

Web3.py 是一个 Python 库,用于与以太坊区块链进行交互。它就像是连接 Python 程序和以太坊网络的桥梁。

官方文档

1.1 主要功能

  • 查询区块链数据(余额、交易等)
  • 发送交易
  • 与智能合约交互
  • 管理以太坊账户

2. 安装和配置 🔧

2.1 安装

# 使用 pip 安装
pip install web3# 或使用 conda 安装
conda install -c conda-forge web3

2.2 基础配置

from web3 import Web3# 连接到以太坊网络(这里使用 Infura 提供的节点)
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR-PROJECT-ID'))# 检查是否连接成功
print(f"是否连接成功: {w3.is_connected()}")

3. 基础操作示例 💡

3.1 查询账户余额

def check_eth_balance(address):# 确保地址格式正确if not w3.is_address(address):return "无效的以太坊地址"# 获取余额(单位:Wei)balance_wei = w3.eth.get_balance(address)# 转换为 ETH(1 ETH = 10^18 Wei)balance_eth = w3.from_wei(balance_wei, 'ether')return f"地址余额: {balance_eth} ETH"# 使用示例
address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
print(check_eth_balance(address))

3.2 创建新钱包

from eth_account import Account
import secretsdef create_new_wallet():# 生成随机私钥private_key = secrets.token_hex(32)account = Account.from_key(private_key)return {"address": account.address,"private_key": private_key}# 使用示例
wallet = create_new_wallet()
print(f"钱包地址: {wallet['address']}")
print(f"私钥: {wallet['private_key']}")

3.3 查询区块信息

def get_block_info(block_number='latest'):# 获取区块信息block = w3.eth.get_block(block_number)info = {"区块号": block.number,"时间戳": block.timestamp,"交易数量": len(block.transactions),"矿工地址": block.miner,"难度": block.difficulty}return info# 使用示例
print(get_block_info())

4. 实用工具函数 🛠️

4.1 单位转换

# Wei 转换为 ETH
wei_amount = 1000000000000000000  # 1 ETH
eth_amount = w3.from_wei(wei_amount, 'ether')
print(f"{wei_amount} Wei = {eth_amount} ETH")# ETH 转换为 Wei
eth_amount = 2.5
wei_amount = w3.to_wei(eth_amount, 'ether')
print(f"{eth_amount} ETH = {wei_amount} Wei")

4.2 地址验证

def is_valid_address(address):"""验证以太坊地址是否有效"""return w3.is_address(address)# 使用示例
address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
print(f"地址是否有效: {is_valid_address(address)}")

5. 监控交易示例 👀

def monitor_transactions(address, num_blocks=10):"""监控指定地址的最近交易"""current_block = w3.eth.block_numberfor block_num in range(current_block - num_blocks, current_block + 1):block = w3.eth.get_block(block_num, full_transactions=True)for tx in block.transactions:if tx['from'].lower() == address.lower() or tx['to'].lower() == address.lower():print(f"\n发现交易:")print(f"交易哈希: {tx['hash'].hex()}")print(f"从: {tx['from']}")print(f"到: {tx['to']}")print(f"数量: {w3.from_wei(tx['value'], 'ether')} ETH")# 使用示例
address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
monitor_transactions(address)

6. 注意事项 ⚠️

  1. 安全提示:

    • 永远不要在代码中直接写入私钥
    • 使用环境变量存储敏感信息
    • 重要操作先在测试网络验证
  2. 性能建议:

    • 批量查询时注意请求频率
    • 适当使用缓存
    • 处理好异常情况
  3. 成本考虑:

    • 注意 gas 费用
    • 监控网络拥堵情况
    • 合理设置 gas 价格

7. 常见问题解答 ❓

  1. 连接失败:

    • 检查网络连接
    • 验证 Infura Project ID
    • 确认节点服务是否可用
  2. 交易失败:

    • 确保有足够的 ETH 支付 gas
    • 检查 nonce 值是否正确
    • 验证 gas 价格是否合理

8. 学习资源 📚

  1. 官方文档:

    • Web3.py 文档
    • 以太坊开发者文档
  2. 工具网站:

    • Etherscan - 交易浏览器
    • Infura - 节点服务
    • Remix - 在线 IDE
  3. 测试网络:

    • Goerli
    • Sepolia
    • Mumbai(Polygon 测试网)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23943.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何选择工控产线安全软件?

在当今数字化时代,信息安全的重要性不言而喻。随着工业控制系统(ICS)的广泛应用,主机的安全加固成为了保障企业生产运营稳定的关键环节。MCK-T主机加固系统软件,凭借其卓越的性能和全面的安全防护功能,成为…

系统调用过程

注意:本系统调用过程基于32位操作系统 中断服务程序的寻址过程 1.用户态程序产生系统调用write(); 2.产生中断指令ENTER_KERNEL(int $0x80128),CPU收到中断指令去查询中断向量表,找出中断号0x80对应的中断服务程序的内存基地址(0…

PHP入门基础学习七(函数3)

九、数组函数 1、合并两个数组 合并两个数组,其中一个当健名,一个当值 注意: array_combine 函数,通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。 2.1、排序函数 对于数组的排序,除了可使用前面讲解的排序算法实现外,PHP还提供了内置…

pycharm管理虚拟环境

不借用Anoconda 1.检查pip所在位置, 因为pip的默认安装路径是python的安装目录下的依赖库路径D:\Program Files\Python397\Lib\site-packages。项目如果用之前pycharm创建的环境是无法加载这个路径的库的。 2.安装时指定安装路径 千万要注意指定安装路径为项目的…

DeepSeek 助力 Vue 开发:打造丝滑的 复选框(Checkbox)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

FMT源码 - module

module 功能模块 1、uMCN uMCN 是 类似于 PX4里面的 uORB 模块。 mcn listmcn echo sensor_imu0mcn echo <topic> [options]options:-n, --number Set topic echo number, e.g, -n 10 will echo 10 times. (朝终端打印的次数)-p, --period Set topic echo peri…

城电科技|会追日的智能花,光伏太阳花开启绿色能源新篇章

当艺术与科技相遇&#xff0c;会碰撞出怎样的火花&#xff1f;城电科技推出的光伏太阳花&#xff0c;以其独特的设计与智能化的功能&#xff0c;给出了答案。这款产品不仅具备太阳能发电的实用功能&#xff0c;更是一件充满科技属性的艺术性光伏产品&#xff0c;吸引了广泛关注…

湖北中医药大学谱度众合(武汉)生命科技有限公司研究生工作站揭牌

2025年2月11日&#xff0c;湖北中医药大学&谱度众合&#xff08;武汉&#xff09;生命科技有限公司研究生工作站揭牌仪式在武汉生物技术研究院一楼101会议室举行&#xff0c;湖北中医药大学研究生院院长刘娅教授、基础医学院院长孔明望教授、基础医学院赵敏教授、基础医学院…

计算机网络————(一)HTTP讲解

基础内容分类 从TCP/IP协议栈为依托&#xff0c;由上至下、从应用层到基础设施介绍协议。 1.应用层&#xff1a; HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程&#xff1a…

货车一键启动无钥匙进入手机远程启动的正确使用方法

一、移动管家货车无钥匙进入系统的使用方法 基本原理&#xff1a;无钥匙进入系统通常采用RFID无线射频技术和车辆身份识别码识别系统。车钥匙需要随身携带&#xff0c;当车钥匙靠近货车时&#xff0c;它会自动与货车的解码器匹配。开门操作&#xff1a;当靠近货车后&#xff0…

2.2logstash规则配置

工作流程 Logstash工作的三个阶段&#xff1a; input数据输入端&#xff0c;以接收来自任何地方的源数据 * file&#xff1a;从文件中读取 * syslog&#xff1a;监听在514端口的系统日志信息, 并解析成RFC3164格式 * redis&#xff1a;从redis-server list中获取 * beat&a…

Java进阶:Zookeeper相关笔记

概要总结&#xff1a; ●Zookeeper是一个开源的分布式协调服务&#xff0c;需要下载并部署在服务器上(使用cmd启动&#xff0c;windows与linux都可用)。 ●zookeeper一般用来实现诸如数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能。 ●有多台服…

GB 44497-2024《智能网联汽车 自动驾驶数据记录系统》标准解读

GB 44497-2024《智能网联汽车 自动驾驶数据记录系统》是由工业和信息化部提出并归口的强制性国家标准&#xff0c;由国家市场监督管理总局、国家标准化管理委员会于2024年8月23日批准发布(国家标准公告2024年第18号文)&#xff0c;将于2026年1月1日起实施。标准规定了智能网联汽…

在低功耗MCU上实现人工智能和机器学习

作者&#xff1a;Silicon Labs 人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;技术不仅正在快速发展&#xff0c;还逐渐被创新性地应用于低功耗的微控制器&#xff08;MCU&#xff09;中&#xff0c;从而实现边缘AI/ML解决方案。这些MCU是许多嵌入式…

[数据结构笔记]数据结构必要的C语言基础

数据结构必要的C语言基础 使用C语言学习数据结构之前有一些必要了解的基础&#xff0c;许多同学在初学数据结构时因为对这些知识不熟&#xff0c;导致了对数据结构的畏惧心理。实际上很大一部分来自C语言的基础 C语言 结构体与指针 ​ 在一些场景中&#xff0c;如果传递给函…

Java进阶(一)

文章目录 前言一、常用类 1.Object类常用方法 toString方法equals方法fianlize()方法 2. String类 String字符串的储存原理内存图分析String常用的构造方法String常用方法3. StringBuilder/StringBuffer类 4. 基本类型包装类 简介包装类类的常用方法&#xff08;以Integer为例…

蓝桥杯单片机组第十二届省赛第二批次

前言 第十二届省赛涉及知识点&#xff1a;NE555频率数据读取&#xff0c;NE555频率转换周期&#xff0c;PCF8591同时测量光敏电阻和电位器的电压、按键长短按判断。 本试题涉及模块较少&#xff0c;题目不难&#xff0c;基本上准备充分的都能完整的实现每一个功能&#xff0c;并…

微信小程序调用火山方舟(字节跳动火山引擎)中的DeepSeek大模型

一、注册火山引擎账号&#xff0c;创建API Key和model&#xff08;接入点ID&#xff09; 1.注册并登陆火山引擎账号&#xff0c;网址为&#xff1a;https://console.volcengine.com/ 2.根据登陆后的页面提示进行实名认证&#xff0c;实名认证后才能创建API Keyt和创建接入点。…

全星FMEA软件系统是一款高效、智能的失效模式及影响分析工具,广泛应用于汽车、电子、机械等行业

全星FMEA软件系统是一款高效、智能的失效模式及影响分析工具&#xff0c;广泛应用于汽车、电子、机械等行业。该系统基于2019版FMEA手册开发&#xff0c;严格遵循七步方法&#xff0c;能够全面识别潜在风险并提前制定应对措施。 全星FMEA软件系统功能特点 自动化分析&#xff…

ROS的action通信——实现阶乘运算(一)

在ROS中除了常见的话题(topic&#xff09;通信、服务(server)通信等方式&#xff0c;还有action通信这一方式&#xff0c;由于可以实时反馈任务完成情况&#xff0c;该通信方式被广泛运用于机器人导航等任务中。本文将通过三个小节的分享&#xff0c;实现基于action通信的阶乘运…