欢迎访问宙启技术站
智能推送

学习如何使用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库从以太坊网络读取数据的一个简单例子。希望对你有所帮助!