学习如何使用web3.Web3从以太坊网络读取数据
发布时间:2024-01-21 01:33:42
web3.Web3是一个用于与以太坊网络进行交互的Python库。它提供了一些方法和工具,帮助我们读取和发送交易、查询区块链状态等。
首先,我们需要安装web3库。你可以使用pip来安装它:
pip install web3
安装完成后,我们需要导入web3库,并创建一个Web3对象:
from web3 import Web3
# 连接以太坊网络
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'))
在这里,我们使用了Infura提供的公共节点来连接以太坊网络。你需要在https://infura.io/ 上注册一个账户,并创建一个项目来获取YOUR_INFURA_PROJECT_ID。
接下来,我们可以使用Web3对象来获取一些基本信息,比如最新的区块号:
block_number = w3.eth.block_number
print(f"最新的区块号: {block_number}")
我们也可以用区块号来获取区块的详细信息,比如区块的哈希值、时间戳、交易数量等:
block = w3.eth.get_block(block_number)
print(f"区块详细信息: {block}")
除了区块信息,我们还可以使用Web3对象来获取交易的详细信息,比如交易的发送方、接收方、交易哈希值等:
tx_hash = '0x2c5c4f6a26a01c52efd30ed2441e4995d1efc175d6e132fd34024839e7656889'
tx = w3.eth.get_transaction(tx_hash)
print(f"交易详细信息: {tx}")
如果你想获取一个地址的余额,你可以使用下面的代码:
address = '0x0000000000000000000000000000000000000000'
balance = w3.eth.get_balance(address)
print(f"地址 {address} 的余额为: {balance}")
除了读取数据,我们还可以使用Web3对象来发送交易。这里有一个简单的例子,演示如何使用Web3库来发送一笔ETH交易:
私钥 = '0x000000000000000000000000000000000000000000000000000...
def 发送交易(to, value):
nonce = w3.eth.getTransactionCount(address)
gas_price = w3.eth.gas_price
gas_limit = 21000
tx = w3.eth.account.sign_transaction({
'to': to,
'value': value,
'gas': gas_limit,
'gasPrice': gas_price,
'nonce': nonce
}, 私钥)
signed_tx = w3.eth.send_raw_transaction(tx.rawTransaction)
return signed_tx.hex()
to_address = '0x0000000000000000000000000000000000000000'
value = w3.toWei(1, 'ether')
tx_hash = 发送交易(to_address, value)
print(f"交易成功,交易哈希值: {tx_hash}")
以上是使用web3.Web3库从以太坊网络读取数据的一个简单例子。希望对你有所帮助!
