来源:小编 更新:2025-07-25 09:37:43
用手机看
你有没有想过,在这个数字化的时代,区块链技术正悄悄改变着我们的世界?而在这其中,以太坊和它的Python库web3.py可是扮演着超级重要的角色呢!想象你能够通过编程与区块链互动,是不是觉得有点酷炫?那就跟着我一起,深入探索一下这个神奇的领域吧!
以太坊,一个基于区块链技术的开放源代码平台,它不仅支持智能合约的创建和执行,还允许开发者在上面构建去中心化的应用(DApps)。简单来说,它就像一个超级强大的计算机,任何人都可以在上面运行程序,而且这些程序一旦部署,就几乎无法被篡改。
web3.py,一个Python库,它为开发者提供了一个简单易用的接口,让他们能够轻松地与以太坊区块链进行交互。这个库支持多种以太坊客户端,如Infura、Geth和Parity,使得开发者可以方便地连接到以太坊网络,发送交易、查询数据、部署智能合约等等。
首先,你需要安装Python环境,然后通过pip安装web3.py库。以下是一个简单的安装步骤:
```bash
pip install web3
安装完成后,你可以创建一个Python脚本,导入web3库,并连接到以太坊节点。以下是一个基本的示例:
```python
from web3 import Web3
连接到Infura节点
infura_url = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'
web3 = Web3(Web3.HTTPProvider(infura_url))
检查连接是否成功
if web3.isConnected():
print(\成功连接到以太坊网络\)
else:
print(\连接失败\)
在这个例子中,你需要替换`YOUR_INFURA_PROJECT_ID`为你的Infura项目ID。
使用web3.py发送交易非常简单。以下是一个发送以太币(ETH)的示例:
```python
from web3 import Web3
连接到Infura节点
infura_url = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'
web3 = Web3(Web3.HTTPProvider(infura_url))
检查连接是否成功
if web3.isConnected():
print(\成功连接到以太坊网络\)
else:
print(\连接失败\)
获取账户私钥
private_key = 'YOUR_PRIVATE_KEY'
创建账户对象
account = web3.eth.account.privateKeyToAccount(private_key)
发送交易
nonce = web3.eth.getTransactionCount(account.address)
gasPrice = web3.toWei('50', 'gwei')
to = 'RECIPIENT_ADDRESS'
value = web3.toWei('1', 'ether')
data = b''
构建交易
transaction = web3.eth.getTransactionBuilder().to(to).value(value).gasPrice(gasPrice).nonce(nonce).data(data).build()
签名交易
signed_txn = account.signTransaction(transaction)
发送交易
tx_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction)
print(\交易哈希:\, tx_hash.hex())
在这个例子中,你需要替换`YOUR_PRIVATE_KEY`和`RECIPIENT_ADDRESS`为你的私钥和收款地址。
使用web3.py部署智能合约也非常方便。以下是一个简单的示例:
```python
from web3 import Web3
连接到Infura节点
infura_url = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'
web3 = Web3(Web3.HTTPProvider(infura_url))
检查连接是否成功
if web3.isConnected():
print(\成功连接到以太坊网络\)
else:
print(\连接失败\)
编译智能合约
solidity_file = 'path/to/your/contract.sol'
compiled_sol = web3.eth.contract(solidity_file).compile()
获取合约字节码
bytecode = compiled_sol['bin']
获取账户私钥
private_key = 'YOUR_PRIVATE_KEY'
创建账户对象
account = web3.eth.account.privateKeyToAccount(private_key)
部署合约
nonce = web3.eth.getTransactionCount(account.address)
gasPrice = web3.toWei('50', 'gwei')
to = ''
value = 0
data = compiled_sol['bin']
构建交易
transaction = web3.eth.getTransactionBuilder().to(to).value(value).gasPrice(gasPrice).nonce(nonce).data(data).build()
签名交易
signed_txn = account.signTransaction(transaction)
发送交易
tx_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction)
print(\合约部署交易哈希:\, tx_hash.hex())
等待交易确认