Web3.py 入门笔记

embedded/2025/2/25 23:30:25/

Web3.py 学习笔记 📚

https://<a class=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 基础配置

python">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 查询账户余额

python">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 创建新钱包

python">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 查询区块信息

python">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 单位转换

python"># 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 地址验证

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

5. 监控交易示例 👀

python">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.ppmy.cn/embedded/167144.html

相关文章

AI基础:数据可视化简易入门(Matplotlib和Seaborn)

Matplotlib是一个Python的2D绘图库&#xff0c;它以各种硬拷贝和跨平台的交互式环境生成出版质量级别的图形。 Seaborn是基于Python且非常受欢迎的图形可视化库&#xff0c;在Matplotlib的基础上进行了更高级别的封装&#xff0c;使作图更加方便快捷。 1 Matplotlib 1.1 通过…

解锁健康密码,拥抱养生生活

在快节奏的现代生活中&#xff0c;人们愈发重视健康养生&#xff0c;追求身心的和谐与平衡。养生并非高深莫测的学问&#xff0c;而是融入日常生活的点滴智慧&#xff0c;从饮食、运动到心态&#xff0c;每一个选择都在为健康加分。 饮食是养生的基石。遵循 “五谷为养&#xf…

机器学习数学基础:37.偏相关分析

偏相关分析教程 一、偏相关分析是什么 在很多复杂的系统中&#xff0c;比如地理系统&#xff0c;会有多个要素相互影响。偏相关分析就是在这样多要素构成的系统里&#xff0c;不考虑其他要素的干扰&#xff0c;专门去研究两个要素之间关系紧密程度的一种方法。用来衡量这种紧…

使用django调用deepseek api,搭建ai网站

一、deepseek简介 DeepSeek是一家人工智能公司&#xff0c;专注于开发先进的人工智能模型和技术。以下是关于DeepSeek的一些详细介绍&#xff1a; 1.公司背景 DeepSeek由杭州深度求索人工智能基础技术研究有限公司开发&#xff0c;致力于通过创新的技术和算法&#xff0c;推…

使用 Docker 部署 Flask 应用

使用 Docker 部署 Flask 应用 一、引言 在现代软件开发中,应用的部署和环境管理是至关重要的环节。传统的部署方式常常会遇到 “在我机器上能运行,在你机器上不行” 的问题,而 Docker 的出现很好地解决了这个痛点。Docker 是一个用于开发、部署和运行应用程序的开放平台,…

在windows下安装windows+Ubuntu16.04双系统(上)

这篇文章的内容主要来源于这篇文章&#xff0c;给文章很详细的介绍了如何从windows下安装windowsubuntu16.04双系统。我刚开始装双系统都是参照这个方法&#xff0c;该作者前后更新了两个版本&#xff0c;在这里对其稍微进行整理一下。 一、准备&#xff1a;&#xff08;这里推…

PyTorch 源码学习:Dispatch Autograd Operators

对于 PyTorch 的动态计算图 (Dynamic Computation Graph) 模式来说&#xff0c;算子 (Operators) 注册、分发 (Dispatch) 机制和自动微分 (Autograd) 机制是至关重要的&#xff0c;了解这部分内容有助于更好地理解 PyTorch 动态计算图的运行机制。本文分享自己在学习 PyTorch 源…

【深度学习】Pytorch的深入理解和研究

一、Pytorch核心理解 PyTorch 是一个灵活且强大的深度学习框架&#xff0c;广泛应用于研究和工业领域。要深入理解和研究 PyTorch&#xff0c;需要从其核心概念、底层机制以及高级功能入手。以下是对 PyTorch 的深入理解与研究的详细说明。 1. 概念 动态计算图&#xff08;D…