简介
web3.py
是一个 Python 库,用于与以太坊区块链进行交互。它支持以太坊的各种功能,例如查询区块、发送交易、调用智能合约、与钱包交互等。web3.py
是基于 JavaScript 库 web3.js
的 Python 版本,广泛应用于构建以太坊 DApps 和与区块链交互的脚本。
核心功能
- 账户管理:生成钱包、管理账户、签名消息和交易。
- 交易:发送和签署交易,查询交易状态。
- 智能合约:部署、调用合约,监听合约事件。
- 区块链数据:查询区块、交易、账户余额等数据。
安装 web3.py
首先,确保你已经安装了 Python 和 pip。然后安装 web3.py
:
pip install web3
连接到以太坊网络
web3.py
允许你连接到各种以太坊节点(如本地节点、Infura 或 Alchemy 提供的远程节点)。以下是如何连接到 Infura 节点的示例。
from web3 import Web3
# 使用 Infura 的 URL 连接到以太坊网络
infura_url = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'
w3 = Web3(Web3.HTTPProvider(infura_url))
# 检查是否连接成功
if w3.isConnected():
print("Connected to Ethereum network")
else:
print("Failed to connect")
在这里,将 YOUR_INFURA_PROJECT_ID
替换为你从 Infura 获取的项目 ID。
1. 查询账户余额
使用 web3.py
可以轻松查询以太坊地址的余额。
address = '0xYourEthereumAddress'
balance = w3.eth.get_balance(address)
# 以太坊的最小单位是 Wei,转换为 Ether
ether_balance = w3.fromWei(balance, 'ether')
print(f"Account balance: {ether_balance} ETH")
2. 发送 ETH 转账
以下是如何通过 web3.py
从一个账户向另一个账户转账 ETH 的示例。你需要提供私钥、发送方和接收方地址。
from web3 import Web3
# 连接到 Infura 节点
infura_url = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'
w3 = Web3(Web3.HTTPProvider(infura_url))
# 设置发送者地址和私钥
from_address = '0xYourFromAddress'
private_key = 'YourPrivateKey'
to_address = '0xRecipientAddress'
# 获取发送者地址的 nonce
nonce = w3.eth.getTransactionCount(from_address)
# 构建交易
tx = {
'nonce': nonce,
'to': to_add